From 150cd910de017918f365a85cc25fdb56d9fd6696 Mon Sep 17 00:00:00 2001 From: Kilian Saffran Date: Thu, 11 Jul 2024 08:41:09 +0200 Subject: [PATCH] v240711 2 --- .gitignore | 3 +- 20240429_180128.xml | 8525 ----- tmp/node_modules/.bin/marked | 12 - tmp/node_modules/.bin/marked.cmd | 17 - tmp/node_modules/.bin/marked.ps1 | 28 - tmp/node_modules/.package-lock.json | 19 - tmp/node_modules/marked/LICENSE.md | 44 - tmp/node_modules/marked/README.md | 107 - tmp/node_modules/marked/bin/main.js | 279 - tmp/node_modules/marked/bin/marked.js | 15 - tmp/node_modules/marked/lib/marked.cjs | 2450 -- tmp/node_modules/marked/lib/marked.cjs.map | 1 - tmp/node_modules/marked/lib/marked.d.cts | 657 - tmp/node_modules/marked/lib/marked.d.ts | 657 - tmp/node_modules/marked/lib/marked.esm.js | 2432 -- tmp/node_modules/marked/lib/marked.esm.js.map | 1 - tmp/node_modules/marked/lib/marked.umd.js | 2456 -- tmp/node_modules/marked/lib/marked.umd.js.map | 1 - tmp/node_modules/marked/man/marked.1 | 111 - tmp/node_modules/marked/man/marked.1.md | 92 - tmp/node_modules/marked/marked.min.js | 6 - tmp/node_modules/marked/package.json | 108 - tmp/package-lock.json | 27 - tmp/package.json | 14 - tmp/tabulator-5.6.1.zip | Bin 2230122 -> 0 bytes tmp/tabulator-5.6.1/.babelrc.json | 3 - tmp/tabulator-5.6.1/.editorconfig | 6 - tmp/tabulator-5.6.1/.eslintignore | 3 - tmp/tabulator-5.6.1/.eslintrc.js | 28 - .../.github/ISSUE_TEMPLATE/bug_report.md | 58 - .../.github/ISSUE_TEMPLATE/documentation.md | 14 - .../.github/ISSUE_TEMPLATE/feature_request.md | 24 - .../.github/ISSUE_TEMPLATE/question.md | 12 - .../.github/workflows/bad-files-check.yml | 39 - .../.github/workflows/lint-and-test.yml | 31 - tmp/tabulator-5.6.1/.gitignore | 6 - tmp/tabulator-5.6.1/CODE_OF_CONDUCT.md | 46 - tmp/tabulator-5.6.1/CONTRIBUTING.md | 22 - tmp/tabulator-5.6.1/LICENSE | 21 - tmp/tabulator-5.6.1/README.md | 76 - tmp/tabulator-5.6.1/bower.json | 40 - tmp/tabulator-5.6.1/build/Bundler.js | 190 - tmp/tabulator-5.6.1/build/rollup.js | 6 - tmp/tabulator-5.6.1/dist/css/tabulator.css | 1277 - .../dist/css/tabulator.css.map | 1 - .../dist/css/tabulator.min.css | 2 - .../dist/css/tabulator.min.css.map | 1 - .../dist/css/tabulator_bootstrap3.css | 1480 - .../dist/css/tabulator_bootstrap3.css.map | 1 - .../dist/css/tabulator_bootstrap3.min.css | 2 - .../dist/css/tabulator_bootstrap3.min.css.map | 1 - .../dist/css/tabulator_bootstrap4.css | 1744 - .../dist/css/tabulator_bootstrap4.css.map | 1 - .../dist/css/tabulator_bootstrap4.min.css | 2 - .../dist/css/tabulator_bootstrap4.min.css.map | 1 - .../dist/css/tabulator_bootstrap5.css | 1771 - .../dist/css/tabulator_bootstrap5.css.map | 1 - .../dist/css/tabulator_bootstrap5.min.css | 2 - .../dist/css/tabulator_bootstrap5.min.css.map | 1 - .../dist/css/tabulator_bulma.css | 1444 - .../dist/css/tabulator_bulma.css.map | 1 - .../dist/css/tabulator_bulma.min.css | 2 - .../dist/css/tabulator_bulma.min.css.map | 1 - .../dist/css/tabulator_materialize.css | 1482 - .../dist/css/tabulator_materialize.css.map | 1 - .../dist/css/tabulator_materialize.min.css | 2 - .../css/tabulator_materialize.min.css.map | 1 - .../dist/css/tabulator_midnight.css | 1375 - .../dist/css/tabulator_midnight.css.map | 1 - .../dist/css/tabulator_midnight.min.css | 2 - .../dist/css/tabulator_midnight.min.css.map | 1 - .../dist/css/tabulator_modern.css | 1430 - .../dist/css/tabulator_modern.css.map | 1 - .../dist/css/tabulator_modern.min.css | 2 - .../dist/css/tabulator_modern.min.css.map | 1 - .../dist/css/tabulator_semanticui.css | 2102 -- .../dist/css/tabulator_semanticui.css.map | 1 - .../dist/css/tabulator_semanticui.min.css | 2 - .../dist/css/tabulator_semanticui.min.css.map | 1 - .../dist/css/tabulator_simple.css | 1321 - .../dist/css/tabulator_simple.css.map | 1 - .../dist/css/tabulator_simple.min.css | 2 - .../dist/css/tabulator_simple.min.css.map | 1 - .../dist/css/tabulator_site.css | 1406 - .../dist/css/tabulator_site.css.map | 1 - .../dist/css/tabulator_site.min.css | 2 - .../dist/css/tabulator_site.min.css.map | 1 - tmp/tabulator-5.6.1/dist/js/jquery_wrapper.js | 63 - tmp/tabulator-5.6.1/dist/js/tabulator.js | 28005 --------------- tmp/tabulator-5.6.1/dist/js/tabulator.js.map | 1 - tmp/tabulator-5.6.1/dist/js/tabulator.min.js | 3 - .../dist/js/tabulator.min.js.map | 1 - tmp/tabulator-5.6.1/dist/js/tabulator_esm.js | 28045 ---------------- .../dist/js/tabulator_esm.js.map | 1 - .../dist/js/tabulator_esm.min.js | 3 - .../dist/js/tabulator_esm.min.js.map | 1 - tmp/tabulator-5.6.1/package-lock.json | 5225 --- tmp/tabulator-5.6.1/package.json | 65 - tmp/tabulator-5.6.1/src/js/builds/esm.js | 14 - .../src/js/builds/jquery_wrapper.js | 63 - tmp/tabulator-5.6.1/src/js/builds/usd.js | 1 - .../src/js/core/ColumnManager.js | 750 - .../src/js/core/CoreFeature.js | 139 - .../src/js/core/FooterManager.js | 102 - tmp/tabulator-5.6.1/src/js/core/Module.js | 142 - tmp/tabulator-5.6.1/src/js/core/RowManager.js | 1135 - tmp/tabulator-5.6.1/src/js/core/Tabulator.js | 896 - .../src/js/core/TabulatorFull.js | 11 - tmp/tabulator-5.6.1/src/js/core/cell/Cell.js | 295 - .../src/js/core/cell/CellComponent.js | 79 - .../src/js/core/column/Column.js | 959 - .../src/js/core/column/ColumnComponent.js | 153 - .../src/js/core/column/defaults/options.js | 18 - .../src/js/core/defaults/options.js | 65 - .../src/js/core/modules/core.js | 3 - .../src/js/core/modules/optional.js | 36 - .../src/js/core/rendering/Renderer.js | 204 - .../rendering/renderers/BasicHorizontal.js | 27 - .../core/rendering/renderers/BasicVertical.js | 103 - .../renderers/VirtualDomHorizontal.js | 583 - .../rendering/renderers/VirtualDomVertical.js | 637 - .../src/js/core/row/PseudoRow.js | 47 - tmp/tabulator-5.6.1/src/js/core/row/Row.js | 463 - .../src/js/core/row/RowComponent.js | 94 - .../src/js/core/tools/Alert.js | 66 - .../js/core/tools/ComponentFunctionBinder.js | 32 - .../src/js/core/tools/DataLoader.js | 128 - .../src/js/core/tools/DeprecationAdvisor.js | 51 - .../src/js/core/tools/ExternalEventBus.js | 105 - .../src/js/core/tools/Helpers.js | 66 - .../src/js/core/tools/InteractionMonitor.js | 322 - .../src/js/core/tools/InternalEventBus.js | 162 - .../src/js/core/tools/ModuleBinder.js | 105 - .../src/js/core/tools/OptionsList.js | 45 - .../src/js/core/tools/Popup.js | 305 - .../src/js/core/tools/TableRegistry.js | 62 - .../src/js/modules/Accessor/Accessor.js | 116 - .../js/modules/Accessor/defaults/accessors.js | 1 - .../src/js/modules/Ajax/Ajax.js | 144 - .../src/js/modules/Ajax/defaults/config.js | 3 - .../Ajax/defaults/contentTypeFormatters.js | 45 - .../js/modules/Ajax/defaults/loaderPromise.js | 87 - .../js/modules/Ajax/defaults/urlGenerator.js | 44 - .../src/js/modules/Clipboard/Clipboard.js | 282 - .../Clipboard/defaults/pasteActions.js | 54 - .../Clipboard/defaults/pasteParsers.js | 130 - .../js/modules/ColumnCalcs/CalcComponent.js | 48 - .../src/js/modules/ColumnCalcs/ColumnCalcs.js | 588 - .../ColumnCalcs/defaults/calculations.js | 93 - .../src/js/modules/Comms/Comms.js | 52 - .../src/js/modules/DataTree/DataTree.js | 607 - .../src/js/modules/Download/Download.js | 149 - .../modules/Download/defaults/downloaders.js | 15 - .../Download/defaults/downloaders/csv.js | 61 - .../Download/defaults/downloaders/html.js | 5 - .../Download/defaults/downloaders/json.js | 34 - .../defaults/downloaders/jsonLines.js | 32 - .../Download/defaults/downloaders/pdf.js | 111 - .../Download/defaults/downloaders/xlsx.js | 102 - .../src/js/modules/Edit/Edit.js | 783 - .../src/js/modules/Edit/List.js | 1048 - .../src/js/modules/Edit/defaults/editors.js | 29 - .../Edit/defaults/editors/autocomplete.js | 12 - .../js/modules/Edit/defaults/editors/date.js | 138 - .../modules/Edit/defaults/editors/datetime.js | 125 - .../js/modules/Edit/defaults/editors/input.js | 77 - .../js/modules/Edit/defaults/editors/list.js | 7 - .../modules/Edit/defaults/editors/number.js | 110 - .../modules/Edit/defaults/editors/progress.js | 127 - .../js/modules/Edit/defaults/editors/range.js | 81 - .../modules/Edit/defaults/editors/select.js | 10 - .../js/modules/Edit/defaults/editors/star.js | 146 - .../modules/Edit/defaults/editors/textarea.js | 123 - .../Edit/defaults/editors/tickCross.js | 95 - .../js/modules/Edit/defaults/editors/time.js | 128 - .../src/js/modules/Edit/inputMask.js | 74 - .../src/js/modules/Export/Export.js | 646 - .../src/js/modules/Export/ExportColumn.js | 11 - .../src/js/modules/Export/ExportRow.js | 10 - .../src/js/modules/Filter/Filter.js | 904 - .../src/js/modules/Filter/defaults/filters.js | 108 - .../src/js/modules/Format/Format.js | 216 - .../js/modules/Format/defaults/formatters.js | 43 - .../Format/defaults/formatters/buttonCross.js | 3 - .../Format/defaults/formatters/buttonTick.js | 3 - .../Format/defaults/formatters/color.js | 4 - .../Format/defaults/formatters/datetime.js | 37 - .../defaults/formatters/datetimediff.js | 41 - .../Format/defaults/formatters/handle.js | 4 - .../Format/defaults/formatters/html.js | 3 - .../Format/defaults/formatters/image.js | 40 - .../Format/defaults/formatters/link.js | 82 - .../Format/defaults/formatters/lookup.js | 10 - .../Format/defaults/formatters/money.js | 44 - .../Format/defaults/formatters/plaintext.js | 3 - .../Format/defaults/formatters/progress.js | 133 - .../defaults/formatters/responsiveCollapse.js | 44 - .../defaults/formatters/rowSelection.js | 60 - .../Format/defaults/formatters/rownum.js | 14 - .../Format/defaults/formatters/star.js | 38 - .../Format/defaults/formatters/textarea.js | 4 - .../Format/defaults/formatters/tickCross.js | 22 - .../Format/defaults/formatters/traffic.js | 47 - .../js/modules/FrozenColumns/FrozenColumns.js | 300 - .../src/js/modules/FrozenRows/FrozenRows.js | 175 - .../src/js/modules/GroupRows/Group.js | 615 - .../js/modules/GroupRows/GroupComponent.js | 71 - .../src/js/modules/GroupRows/GroupRows.js | 640 - .../src/js/modules/History/History.js | 172 - .../js/modules/History/defaults/redoers.js | 31 - .../js/modules/History/defaults/undoers.js | 33 - .../HtmlTableImport/HtmlTableImport.js | 182 - .../src/js/modules/Import/Import.js | 194 - .../js/modules/Import/defaults/importers.js | 9 - .../Import/defaults/importers/array.js | 5 - .../modules/Import/defaults/importers/csv.js | 63 - .../modules/Import/defaults/importers/json.js | 8 - .../src/js/modules/Interaction/Interaction.js | 337 - .../src/js/modules/Keybindings/Keybindings.js | 173 - .../modules/Keybindings/defaults/actions.js | 156 - .../modules/Keybindings/defaults/bindings.js | 28 - .../src/js/modules/Layout/Layout.js | 60 - .../src/js/modules/Layout/defaults/modes.js | 12 - .../Layout/defaults/modes/fitColumns.js | 171 - .../modules/Layout/defaults/modes/fitData.js | 10 - .../Layout/defaults/modes/fitDataGeneral.js | 10 - .../Layout/defaults/modes/fitDataStretch.js | 40 - .../src/js/modules/Localize/Localize.js | 186 - .../src/js/modules/Localize/defaults/langs.js | 37 - .../src/js/modules/Menu/Menu.js | 304 - .../src/js/modules/MoveColumns/MoveColumns.js | 304 - .../src/js/modules/MoveRows/MoveRows.js | 636 - .../src/js/modules/Mutator/Mutator.js | 162 - .../js/modules/Mutator/defaults/mutators.js | 1 - .../src/js/modules/Page/Page.js | 881 - .../js/modules/Page/defaults/pageCounters.js | 8 - .../Page/defaults/pageCounters/pages.js | 33 - .../Page/defaults/pageCounters/rows.js | 40 - .../src/js/modules/Persistence/Persistence.js | 475 - .../modules/Persistence/defaults/readers.js | 29 - .../modules/Persistence/defaults/writers.js | 13 - .../src/js/modules/Popup/Popup.js | 231 - .../src/js/modules/Print/Print.js | 138 - .../js/modules/ReactiveData/ReactiveData.js | 408 - .../js/modules/ResizeColumns/ResizeColumns.js | 311 - .../src/js/modules/ResizeRows/ResizeRows.js | 112 - .../src/js/modules/ResizeTable/ResizeTable.js | 160 - .../ResponsiveLayout/ResponsiveLayout.js | 348 - .../src/js/modules/SelectRange/Range.js | 354 - .../js/modules/SelectRange/RangeComponent.js | 93 - .../src/js/modules/SelectRange/SelectRange.js | 870 - .../src/js/modules/SelectRow/SelectRow.js | 495 - .../src/js/modules/Sort/Sort.js | 477 - .../src/js/modules/Sort/defaults/sorters.js | 21 - .../modules/Sort/defaults/sorters/alphanum.js | 44 - .../js/modules/Sort/defaults/sorters/array.js | 54 - .../modules/Sort/defaults/sorters/boolean.js | 7 - .../js/modules/Sort/defaults/sorters/date.js | 10 - .../modules/Sort/defaults/sorters/datetime.js | 44 - .../modules/Sort/defaults/sorters/exists.js | 7 - .../modules/Sort/defaults/sorters/number.js | 40 - .../modules/Sort/defaults/sorters/string.js | 34 - .../js/modules/Sort/defaults/sorters/time.js | 10 - .../src/js/modules/Tooltip/Tooltip.js | 130 - .../src/js/modules/Validate/Validate.js | 305 - .../modules/Validate/defaults/validators.js | 150 - tmp/tabulator-5.6.1/src/scss/tabulator.scss | 1583 - .../src/scss/themes/bootstrap/functions4.scss | 118 - .../src/scss/themes/bootstrap/functions5.scss | 302 - .../bootstrap/tabulator_bootstrap3.scss | 288 - .../bootstrap/tabulator_bootstrap4.scss | 553 - .../bootstrap/tabulator_bootstrap5.scss | 585 - .../src/scss/themes/bootstrap/variables3.scss | 870 - .../src/scss/themes/bootstrap/variables4.scss | 930 - .../src/scss/themes/bootstrap/variables5.scss | 1641 - .../scss/themes/bulma/tabulator_bulma.scss | 266 - .../src/scss/themes/bulma/variables.scss | 198 - .../materialize/tabulator_materialize.scss | 275 - .../scss/themes/materialize/variables.scss | 70 - .../semanticui/tabulator_semanticui.scss | 587 - .../src/scss/themes/semanticui/variables.scss | 839 - .../themes/semanticui/variables_table.scss | 247 - .../src/scss/themes/tabulator_midnight.scss | 175 - .../src/scss/themes/tabulator_modern.scss | 248 - .../src/scss/themes/tabulator_simple.scss | 102 - .../src/scss/themes/tabulator_site.scss | 204 - tmp/tabulator-6.0.1.zip | Bin 2622919 -> 0 bytes tmp/tabulator-6.2.1.zip | Bin 2670397 -> 0 bytes 288 files changed, 2 insertions(+), 135470 deletions(-) delete mode 100644 20240429_180128.xml delete mode 100644 tmp/node_modules/.bin/marked delete mode 100644 tmp/node_modules/.bin/marked.cmd delete mode 100644 tmp/node_modules/.bin/marked.ps1 delete mode 100644 tmp/node_modules/.package-lock.json delete mode 100644 tmp/node_modules/marked/LICENSE.md delete mode 100644 tmp/node_modules/marked/README.md delete mode 100644 tmp/node_modules/marked/bin/main.js delete mode 100644 tmp/node_modules/marked/bin/marked.js delete mode 100644 tmp/node_modules/marked/lib/marked.cjs delete mode 100644 tmp/node_modules/marked/lib/marked.cjs.map delete mode 100644 tmp/node_modules/marked/lib/marked.d.cts delete mode 100644 tmp/node_modules/marked/lib/marked.d.ts delete mode 100644 tmp/node_modules/marked/lib/marked.esm.js delete mode 100644 tmp/node_modules/marked/lib/marked.esm.js.map delete mode 100644 tmp/node_modules/marked/lib/marked.umd.js delete mode 100644 tmp/node_modules/marked/lib/marked.umd.js.map delete mode 100644 tmp/node_modules/marked/man/marked.1 delete mode 100644 tmp/node_modules/marked/man/marked.1.md delete mode 100644 tmp/node_modules/marked/marked.min.js delete mode 100644 tmp/node_modules/marked/package.json delete mode 100644 tmp/package-lock.json delete mode 100644 tmp/package.json delete mode 100644 tmp/tabulator-5.6.1.zip delete mode 100644 tmp/tabulator-5.6.1/.babelrc.json delete mode 100644 tmp/tabulator-5.6.1/.editorconfig delete mode 100644 tmp/tabulator-5.6.1/.eslintignore delete mode 100644 tmp/tabulator-5.6.1/.eslintrc.js delete mode 100644 tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/documentation.md delete mode 100644 tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/question.md delete mode 100644 tmp/tabulator-5.6.1/.github/workflows/bad-files-check.yml delete mode 100644 tmp/tabulator-5.6.1/.github/workflows/lint-and-test.yml delete mode 100644 tmp/tabulator-5.6.1/.gitignore delete mode 100644 tmp/tabulator-5.6.1/CODE_OF_CONDUCT.md delete mode 100644 tmp/tabulator-5.6.1/CONTRIBUTING.md delete mode 100644 tmp/tabulator-5.6.1/LICENSE delete mode 100644 tmp/tabulator-5.6.1/README.md delete mode 100644 tmp/tabulator-5.6.1/bower.json delete mode 100644 tmp/tabulator-5.6.1/build/Bundler.js delete mode 100644 tmp/tabulator-5.6.1/build/rollup.js delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bulma.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bulma.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bulma.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_bulma.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_materialize.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_materialize.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_materialize.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_materialize.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_midnight.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_midnight.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_midnight.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_midnight.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_modern.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_modern.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_modern.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_modern.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_simple.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_simple.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_simple.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_simple.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_site.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_site.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_site.min.css delete mode 100644 tmp/tabulator-5.6.1/dist/css/tabulator_site.min.css.map delete mode 100644 tmp/tabulator-5.6.1/dist/js/jquery_wrapper.js delete mode 100644 tmp/tabulator-5.6.1/dist/js/tabulator.js delete mode 100644 tmp/tabulator-5.6.1/dist/js/tabulator.js.map delete mode 100644 tmp/tabulator-5.6.1/dist/js/tabulator.min.js delete mode 100644 tmp/tabulator-5.6.1/dist/js/tabulator.min.js.map delete mode 100644 tmp/tabulator-5.6.1/dist/js/tabulator_esm.js delete mode 100644 tmp/tabulator-5.6.1/dist/js/tabulator_esm.js.map delete mode 100644 tmp/tabulator-5.6.1/dist/js/tabulator_esm.min.js delete mode 100644 tmp/tabulator-5.6.1/dist/js/tabulator_esm.min.js.map delete mode 100644 tmp/tabulator-5.6.1/package-lock.json delete mode 100644 tmp/tabulator-5.6.1/package.json delete mode 100644 tmp/tabulator-5.6.1/src/js/builds/esm.js delete mode 100644 tmp/tabulator-5.6.1/src/js/builds/jquery_wrapper.js delete mode 100644 tmp/tabulator-5.6.1/src/js/builds/usd.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/ColumnManager.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/CoreFeature.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/FooterManager.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/Module.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/RowManager.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/Tabulator.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/TabulatorFull.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/cell/Cell.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/cell/CellComponent.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/column/Column.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/column/ColumnComponent.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/column/defaults/options.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/defaults/options.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/modules/core.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/modules/optional.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/rendering/Renderer.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/rendering/renderers/BasicHorizontal.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/rendering/renderers/BasicVertical.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/rendering/renderers/VirtualDomHorizontal.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/rendering/renderers/VirtualDomVertical.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/row/PseudoRow.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/row/Row.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/row/RowComponent.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/Alert.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/ComponentFunctionBinder.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/DataLoader.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/DeprecationAdvisor.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/ExternalEventBus.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/Helpers.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/InteractionMonitor.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/InternalEventBus.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/ModuleBinder.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/OptionsList.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/Popup.js delete mode 100644 tmp/tabulator-5.6.1/src/js/core/tools/TableRegistry.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Accessor/Accessor.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Accessor/defaults/accessors.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Ajax/Ajax.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/config.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/contentTypeFormatters.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/loaderPromise.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/urlGenerator.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Clipboard/Clipboard.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Clipboard/defaults/pasteActions.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Clipboard/defaults/pasteParsers.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/CalcComponent.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/ColumnCalcs.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/defaults/calculations.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Comms/Comms.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/DataTree/DataTree.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Download/Download.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/csv.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/html.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/json.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/jsonLines.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/pdf.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/xlsx.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/Edit.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/List.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/autocomplete.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/date.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/datetime.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/input.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/list.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/number.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/progress.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/range.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/select.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/star.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/textarea.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/tickCross.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/time.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Edit/inputMask.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Export/Export.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Export/ExportColumn.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Export/ExportRow.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Filter/Filter.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Filter/defaults/filters.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/Format.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/buttonCross.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/buttonTick.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/color.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/datetime.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/datetimediff.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/handle.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/html.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/image.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/link.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/lookup.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/money.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/plaintext.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/progress.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/responsiveCollapse.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/rowSelection.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/rownum.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/star.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/textarea.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/tickCross.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/traffic.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/FrozenColumns/FrozenColumns.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/FrozenRows/FrozenRows.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/GroupRows/Group.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/GroupRows/GroupComponent.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/GroupRows/GroupRows.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/History/History.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/History/defaults/redoers.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/History/defaults/undoers.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/HtmlTableImport/HtmlTableImport.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Import/Import.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/array.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/csv.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/json.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Interaction/Interaction.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Keybindings/Keybindings.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Keybindings/defaults/actions.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Keybindings/defaults/bindings.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Layout/Layout.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitColumns.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitData.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitDataGeneral.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitDataStretch.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Localize/Localize.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Localize/defaults/langs.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Menu/Menu.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/MoveColumns/MoveColumns.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/MoveRows/MoveRows.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Mutator/Mutator.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Mutator/defaults/mutators.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Page/Page.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters/pages.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters/rows.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Persistence/Persistence.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Persistence/defaults/readers.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Persistence/defaults/writers.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Popup/Popup.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Print/Print.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/ReactiveData/ReactiveData.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/ResizeColumns/ResizeColumns.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/ResizeRows/ResizeRows.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/ResizeTable/ResizeTable.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/ResponsiveLayout/ResponsiveLayout.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/SelectRange/Range.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/SelectRange/RangeComponent.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/SelectRange/SelectRange.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/SelectRow/SelectRow.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/Sort.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/alphanum.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/array.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/boolean.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/date.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/datetime.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/exists.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/number.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/string.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/time.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Tooltip/Tooltip.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Validate/Validate.js delete mode 100644 tmp/tabulator-5.6.1/src/js/modules/Validate/defaults/validators.js delete mode 100644 tmp/tabulator-5.6.1/src/scss/tabulator.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bootstrap/functions4.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bootstrap/functions5.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap3.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap4.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap5.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables3.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables4.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables5.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bulma/tabulator_bulma.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/bulma/variables.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/materialize/tabulator_materialize.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/materialize/variables.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/semanticui/tabulator_semanticui.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/semanticui/variables.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/semanticui/variables_table.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/tabulator_midnight.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/tabulator_modern.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/tabulator_simple.scss delete mode 100644 tmp/tabulator-5.6.1/src/scss/themes/tabulator_site.scss delete mode 100644 tmp/tabulator-6.0.1.zip delete mode 100644 tmp/tabulator-6.2.1.zip diff --git a/.gitignore b/.gitignore index d0e8d85..96867a0 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ geodata/adresses-france.csv.gz geodata/openplzapi.data-main.zip NGL-SNEP-App.exe release/* -public_html/test/* \ No newline at end of file +public_html/test/* +tmp/* \ No newline at end of file diff --git a/20240429_180128.xml b/20240429_180128.xml deleted file mode 100644 index 88db33a..0000000 --- a/20240429_180128.xml +++ /dev/null @@ -1,8525 +0,0 @@ - - - - 20240429_180128 - 2024-04-29T18:01:28 - 290 - 5343.5 - - NGL-SNEP ASBL - - - - F5078 - RCS - - - - - - - 20240429_180128 - DD - true - 281 - 5234.5 - - - SEPA - - - CORE - - RCUR - - 2024-04-29 - - NGL-SNEP ASBL - - LU - 5 Am Brill - L-3961 EHLANGE-SUR-MESS - - - - - LU080019435512770000 - - - - - BCEELULL - - - - - - - LU57ZZZ0000000000000000760 - - SEPA - - - - - - - - 11797 - 11797 - - 20.00 - - - 11797 - 2018-01-22 - - - - - BGLLLULL - - - - TORRES LEAL RUI MANUEL - - - - LU24 0030 0835 2643 0000 - - - - NGL-SNEP 04/2024 - - - - - 11814 - 11814 - - 20.00 - - - 11814 - 2020-11-03 - - - - - BCEELULL - - - - VIEIRA DE ABREU ANA CATARINA - - - - LU52 0019 5955 0960 7000 - - - - NGL-SNEP 04/2024 - - - - - 12222 - 12222 - - 20.00 - - - 12222 - 2020-10-14 - - - - - BILLLULL - - - - GUEDES SANTOS ANTONIO MIGUEL - - - - LU07 0021 2506 0244 6500 - - - - NGL-SNEP 04/2024 - - - - - 12235 - 12235 - - 20.00 - - - 12235 - 2014-05-30 - - - - - BCEELULL - - - - FERNANDES DA SILVA JOAO LOURENCO - - - - LU14 0019 2755 0009 2000 - - - - NGL-SNEP 04/2024 - - - - - 12250 - 12250 - - 20.00 - - - 12250 - 2014-05-30 - - - - - BILLLULL - - - - GONCALVES PEIXOTO DULCINEIA - - - - LU63 0029 1101 2215 2800 - - - - NGL-SNEP 04/2024 - - - - - 12256 - 12256 - - 20.00 - - - 12256 - 2014-05-30 - - - - - BILLLULL - - - - DE SOUSA BASTOS JOAO EVANGELISTA - - - - LU85 0026 1904 3045 2500 - - - - NGL-SNEP 04/2024 - - - - - 12266 - 12266 - - 20.00 - - - 12266 - 2014-05-30 - - - - - BCEELULL - - - - VIEIRA DE ABREU ROSA MARIA - - - - LU30 0019 1355 7300 4000 - - - - NGL-SNEP 04/2024 - - - - - 11839 - 11839 - - 20.00 - - - 11839 - 2016-03-03 - - - - - BCEELULL - - - - DE OLIVEIRA PAIS JORGE MANUEL - - - - LU42 0019 3355 2041 6000 - - - - NGL-SNEP 04/2024 - - - - - 11130 - 11130 - - 20.00 - - - 11130 - 2014-05-30 - - - - - BCEELULL - - - - DA SILVA COELHO MANUEL ANTONIO - - - - LU98 0019 5903 7583 5000 - - - - NGL-SNEP 04/2024 - - - - - 11844 - 11844 - - 15.00 - - - 11844 - 2023-07-20 - - - - - CELLLULL - - - - ALVES DUARTE ARMENIO - - - - LU30 0141 0415 5180 0000 - - - - NGL-SNEP 04/2024 - - - - - 11139 - 11139 - - 15.00 - - - 11139 - 2014-05-30 - - - - - BCEELULL - - - - ARENT GINETTE - - - - LU78 0019 7303 5761 4000 - - - - NGL-SNEP 04/2024 - - - - - 11865 - 11865 - - 20.00 - - - 11865 - 2020-01-08 - - - - - BCEELULL - - - - GONCALVES ALMEIDA TANIA CLARA - - - - LU75 0019 2055 6439 4000 - - - - NGL-SNEP 04/2024 - - - - - 11889 - 11889 - - 12.00 - - - 11889 - 2015-07-03 - - - - - BGLLLULL - - - - GRAZIA FAPPANI-DRIOL MARIA - - - - LU89 0030 1801 5459 0000 - - - - NGL-SNEP 04/2024 - - - - - 11905 - 11905 - - 16.50 - - - 11905 - 2014-05-30 - - - - - BCEELULL - - - - RIOLINO ENNIO - - - - LU83 0019 1106 8426 6000 - - - - NGL-SNEP 04/2024 - - - - - 11907 - 11907 - - 20.00 - - - 11907 - 2014-05-30 - - - - - BGLLLULL - - - - DA SILVA NOGUEIRA TITO ANTONIO - - - - LU77 0030 5964 8465 0000 - - - - NGL-SNEP 04/2024 - - - - - 11922 - 11922 - - 20.00 - - - 11922 - 2014-05-30 - - - - - BILLLULL - - - - DA ROCHA FERREIRA LUIS MIGUEL - - - - LU69 0026 1697 0060 1800 - - - - NGL-SNEP 04/2024 - - - - - 11933 - 11933 - - 20.00 - - - 11933 - 2018-03-22 - - - - - BCEELULL - - - - DIAS DE SOUSA RITA MANUELA - - - - LU48 0019 5155 6791 3000 - - - - NGL-SNEP 04/2024 - - - - - 11937 - 11937 - - 20.00 - - - 11937 - 2015-08-14 - - - - - TRISDE55XXX - - - - SZCZEPANSKI GUNTER - - - - DE88 5855 0130 0184 0136 13 - - - - NGL-SNEP 04/2024 - - - - - 11258 - 11258 - - 20.00 - - - 11258 - 2017-02-04 - - - - - BCEELULL - - - - WEHRLEN SVEN - - - - LU37 0019 1755 9651 9000 - - - - NGL-SNEP 04/2024 - - - - - 11939 - 11939 - - 20.00 - - - 11939 - 2023-05-12 - - - - - BGLLLULL - - - - MARQUES VAZ ANTONIO JULIO - - - - LU65 0030 0388 3771 0000 - - - - NGL-SNEP 04/2024 - - - - - 11274 - 11274 - - 20.00 - - - 11274 - 2020-01-14 - - - - - CELLLULL - - - - FERREIRA DA COSTA CANDIDA ALEXANDRA - - - - LU90 0141 2486 9410 0000 - - - - NGL-SNEP 04/2024 - - - - - 11945 - 11945 - - 20.00 - - - 11945 - 2014-05-30 - - - - - BILLLULL - - - - BELCHIOR ANTONIO JOSE - - - - LU91 0026 1823 0617 5100 - - - - NGL-SNEP 04/2024 - - - - - 11320 - 11320 - - 20.00 - - - 11320 - 2017-06-29 - - - - - BCEELULL - - - - DA SILVA PAULO SERGIO - - - - LU49 0019 5155 4354 6000 - - - - NGL-SNEP 04/2024 - - - - - 11363 - 11363 - - 20.00 - - - 11363 - 2017-02-21 - - - - - BILLLULL - - - - DE OLIVEIRA PEREIRA PAULO JORGE - - - - LU07 0029 1817 9771 7400 - - - - NGL-SNEP 04/2024 - - - - - 11416 - 11416 - - 20.00 - - - 11416 - 2014-05-30 - - - - - BILLLULL - - - - NUNES NETO FERREIRA GOMES JAIME - - - - LU95 0020 1867 2016 7700 - - - - NGL-SNEP 04/2024 - - - - - 11974 - 11974 - - 20.00 - - - 11974 - 2016-03-23 - - - - - BMECLULL - - - - VALADA DA COSTA CARLOS MANUEL - - - - LU39 0250 0442 9708 8000 - - - - NGL-SNEP 04/2024 - - - - - 11452 - 11452 - - 20.00 - - - 11452 - 2014-05-30 - - - - - BCEELULL - - - - CASTRO DA FONSECA FRANCISCO - - - - LU53 0019 3255 0669 2000 - - - - NGL-SNEP 04/2024 - - - - - 11980 - 11980 - - 20.00 - - - 11980 - 2014-05-30 - - - - - BCEELULL - - - - DA COSTA LEITE MIGUEL ALBERTO - - - - LU07 0019 3455 4383 5000 - - - - NGL-SNEP 04/2024 - - - - - 11490 - 11490 - - 20.00 - - - 11490 - 2014-05-30 - - - - - BGLLLULL - - - - COELHO VANESSA - - - - LU56 0030 0761 3827 0000 - - - - NGL-SNEP 04/2024 - - - - - 11992 - 11992 - - 20.00 - - - 11992 - 2016-01-08 - - - - - BGLLLULL - - - - RODRIGUES LOPES EMERSON JORGE - - - - LU83 0030 8695 3662 0000 - - - - NGL-SNEP 04/2024 - - - - - 11524 - 11524 - - 20.00 - - - 11524 - 2014-05-30 - - - - - BCEELULL - - - - DE CASTRO VALENTIM PAULO GUILHERME - - - - LU72 0019 3055 1907 4000 - - - - NGL-SNEP 04/2024 - - - - - 11995 - 11995 - - 20.00 - - - 11995 - 2015-07-01 - - - - - BCEELULL - - - - DOS SANTOS MONTEIRO PAULO JORGE - - - - LU69 0019 2455 7808 1000 - - - - NGL-SNEP 04/2024 - - - - - 12053 - 12053 - - 20.00 - - - 12053 - 2020-12-07 - - - - - BGLLLULL - - - - ARAUJO VIEIRA DE FREITAS JOAO CARLOS - - - - LU73 0030 0145 8367 0000 - - - - NGL-SNEP 04/2024 - - - - - 12070 - 12070 - - 20.00 - - - 12070 - 2015-09-17 - - - - - BCEELULL - - - - CAMPOS SOEIRO MIGUEL ANGELO - - - - LU23 0019 3855 8841 3000 - - - - NGL-SNEP 04/2024 - - - - - 11572 - 11572 - - 20.00 - - - 11572 - 2014-05-30 - - - - - BCEELULL - - - - LORAN ALAIN - - - - LU11 0019 5003 0046 5000 - - - - NGL-SNEP 04/2024 - - - - - 11589 - 11589 - - 20.00 - - - 11589 - 2018-09-26 - - - - - BMECLULL - - - - SERRA DINIS MACHADO MARIA DE FATIMA - - - - LU97 0250 0443 3598 9000 - - - - NGL-SNEP 04/2024 - - - - - 11592 - 11592 - - 15.00 - - - 11592 - 2022-10-26 - - - - - BGLLLULL - - - - ROCHA DE CARVALHO SERGIO ALBERTO - - - - LU77 0030 6919 3265 0000 - - - - NGL-SNEP 04/2024 - - - - - 11605 - 11605 - - 20.00 - - - 11605 - 2014-05-30 - - - - - BCEELULL - - - - TOTARO MARA - - - - LU10 0019 1955 8691 6000 - - - - NGL-SNEP 04/2024 - - - - - 12090 - 12090 - - 20.00 - - - 12090 - 2018-03-28 - - - - - BCEELULL - - - - DOS SANTOS GAIO BRUNO GABRIEL - - - - LU62 0019 2655 7205 5000 - - - - NGL-SNEP 04/2024 - - - - - 12094 - 12094 - - 15.00 - - - 12094 - 2019-04-17 - - - - - CCPLLULL - - - - BLEY ERIC - - - - LU15 1111 2321 9978 0000 - - - - NGL-SNEP 04/2024 - - - - - 12111 - 12111 - - 16.50 - - - 12111 - 2020-07-16 - - - - - BMECLULL - - - - ALVES ANTUNES MARCELINO - - - - LU18 0250 0437 9349 6000 - - - - NGL-SNEP 04/2024 - - - - - 12113 - 12113 - - 20.00 - - - 12113 - 2014-05-30 - - - - - BMECLULL - - - - MALHEIRO GONCALVES MARIA FERNANDA - - - - LU80 0250 0457 8007 7000 - - - - NGL-SNEP 04/2024 - - - - - 12136 - 12136 - - 20.00 - - - 12136 - 2014-05-30 - - - - - BGLLLULL - - - - MALHOA FERREIRA PINTO VERA MARIA - - - - LU04 0030 4145 9753 0000 - - - - NGL-SNEP 04/2024 - - - - - 12163 - 12163 - - 20.00 - - - 12163 - 2014-02-19 - - - - - BILLLULL - - - - RODRIGUES BATALHA RUBEN MIGUEL - - - - LU94 0024 0100 3448 3800 - - - - NGL-SNEP 04/2024 - - - - - 12172 - 12172 - - 20.00 - - - 12172 - 2014-05-30 - - - - - BMECLULL - - - - GONCALVES ALVES JOSE LUIS - - - - LU52 0250 0458 2312 3000 - - - - NGL-SNEP 04/2024 - - - - - 12188 - 12188 - - 20.00 - - - 12188 - 2020-10-03 - - - - - CELLLULL - - - - PUDDU WALTER - - - - LU17 0141 1435 7860 0000 - - - - NGL-SNEP 04/2024 - - - - - 12200 - 12200 - - 20.00 - - - 12200 - 2014-05-30 - - - - - BCEELULL - - - - DIAS DE SOUSA BRUNO FILIPE - - - - LU70 0019 3055 1484 6000 - - - - NGL-SNEP 04/2024 - - - - - 11670 - 11670 - - 15.00 - - - 11670 - 2014-05-30 - - - - - BGLLLULL - - - - DOS SANTOS FERREIRA JOAO CARLOS - - - - LU34 0030 2672 3938 0000 - - - - NGL-SNEP 04/2024 - - - - - 11673 - 11673 - - 20.00 - - - 11673 - 2016-08-18 - - - - - CCRALULL - - - - BRCVAK DEMIR - - - - LU08 0090 0000 1163 1710 - - - - NGL-SNEP 04/2024 - - - - - 11708 - 11708 - - 20.00 - - - 11708 - 2016-10-14 - - - - - CCRALULL - - - - REIFFERS GWENDOLYN - - - - LU55 0099 7801 0050 3812 - - - - NGL-SNEP 04/2024 - - - - - 11736 - 11736 - - 16.50 - - - 11736 - 2021-08-06 - - - - - BBPIPTPLXXX - - - - LIMA DE FREITAS AUGUSTO - - - - PT50 0010 0000 5491 9490 0012 2 - - - - NGL-SNEP 04/2024 - - - - - 11772 - 11772 - - 15.00 - - - 11772 - 2015-09-29 - - - - - CCRALULL - - - - BINSFELD LILIANE - - - - LU73 0090 0000 0626 0038 - - - - NGL-SNEP 04/2024 - - - - - 11786 - 11786 - - 20.00 - - - 11786 - 2017-01-16 - - - - - BCEELULL - - - - FERREIRA FIGUEIREDO MAIA ELISABETE MARIA - - - - LU96 0019 3555 3130 9000 - - - - NGL-SNEP 04/2024 - - - - - 5018 - 5018 - - 16.50 - - - 5018 - 2014-05-30 - - - - - BILLLULL - - - - KRAEMER PIERRE - - - - LU93 0024 1175 7400 0000 - - - - NGL-SNEP 04/2024 - - - - - 5025 - 5025 - - 12.00 - - - 5025 - 2022-12-17 - - - - - BGLLLULL - - - - HOUBLIE NICO OSCAR - - - - LU05 0030 1399 4104 0000 - - - - NGL-SNEP 04/2024 - - - - - 8250 - 8250 - - 15.00 - - - 8250 - 2014-05-30 - - - - - BCEELULL - - - - ZGNILEC AGNIESZKA - - - - LU56 0019 5003 9423 7000 - - - - NGL-SNEP 04/2024 - - - - - 5054 - 5054 - - 20.00 - - - 5054 - 2017-12-11 - - - - - CELLLULL - - - - KLEIN JEAN - - - - LU26 0141 3114 4080 0000 - - - - NGL-SNEP 04/2024 - - - - - 5082 - 5082 - - 12.00 - - - 5082 - 2015-11-30 - - - - - BCEELULL - - - - STEFFEN ERNEST - - - - LU70 0019 8403 7129 4000 - - - - NGL-SNEP 04/2024 - - - - - 8666 - 8666 - - 16.50 - - - 8666 - 2017-12-07 - - - - - CCRALULL - - - - THOSS GUSTAVE - - - - LU36 0090 0000 1858 8046 - - - - NGL-SNEP 04/2024 - - - - - 5088 - 5088 - - 16.50 - - - 5088 - 2016-07-19 - - - - - BCEELULL - - - - WESTER NICO - - - - LU95 0019 7003 7971 5000 - - - - NGL-SNEP 04/2024 - - - - - 8677 - 8677 - - 20.00 - - - 8677 - 2015-07-27 - - - - - BGLLLULL - - - - SCHEFFEN NICO - - - - LU82 0030 0823 3314 0000 - - - - NGL-SNEP 04/2024 - - - - - 5113 - 5113 - - 12.00 - - - 5113 - 2023-09-13 - - - - - BCEELULL - - - - GRYSELEYN MARCEL - - - - LU40 0019 5803 6290 9000 - - - - NGL-SNEP 04/2024 - - - - - 8817 - 8817 - - 20.00 - - - 8817 - 2014-05-30 - - - - - BCEELULL - - - - STOFFEL MARCO - - - - LU68 0019 5003 6392 7000 - - - - NGL-SNEP 04/2024 - - - - - 8999 - 8999 - - 20.00 - - - 8999 - 2016-03-11 - - - - - BILLLULL - - - - WANTZ NADIA - - - - LU81 0023 1671 1644 2000 - - - - NGL-SNEP 04/2024 - - - - - 9231 - 9231 - - 20.00 - - - 9231 - 2014-05-30 - - - - - BCEELULL - - - - NEUENSEN PASCAL - - - - LU14 0019 7603 0677 1000 - - - - NGL-SNEP 04/2024 - - - - - 9331 - 9331 - - 20.00 - - - 9331 - 2022-09-29 - - - - - CCPLLULL - - - - STRAUCH ARTHUR - - - - LU31 1111 0674 8570 0000 - - - - NGL-SNEP 04/2024 - - - - - 9341 - 9341 - - 15.00 - - - 9341 - 2014-05-30 - - - - - BGLLLULL - - - - DOUROS CHRISTINA - - - - LU46 0030 8320 6432 0000 - - - - NGL-SNEP 04/2024 - - - - - 9377 - 9377 - - 20.00 - - - 9377 - 2018-06-29 - - - - - BCEELULL - - - - RODRIGUES ALEXANDRE JOSE ALBERTO - - - - LU14 0019 5003 3668 3000 - - - - NGL-SNEP 04/2024 - - - - - 9521 - 9521 - - 12.00 - - - 9521 - 2017-05-31 - - - - - BCEELULL - - - - FERRETTI MARIE-JEANNE - - - - LU52 0019 1103 5120 6000 - - - - NGL-SNEP 04/2024 - - - - - 5149 - 5149 - - 16.50 - - - 5149 - 2015-05-05 - - - - - BCEELULL - - - - LENTZEN RICHARD - - - - LU16 0019 3503 7493 4000 - - - - NGL-SNEP 04/2024 - - - - - 5178 - 5178 - - 16.50 - - - 5178 - 2014-05-30 - - - - - BCEELULL - - - - TROES EUGENE - - - - LU19 0019 5303 6380 6000 - - - - NGL-SNEP 04/2024 - - - - - 9584 - 9584 - - 20.00 - - - 9584 - 2017-08-02 - - - - - CELLLULL - - - - REINSBACH MICHAEL - - - - LU90 0141 6717 8870 0000 - - - - NGL-SNEP 04/2024 - - - - - 5197 - 5197 - - 12.00 - - - 5197 - 2023-09-08 - - - - - BCEELULL - - - - MEDER MATHIAS - - - - LU29 0019 3003 7165 9000 - - - - NGL-SNEP 04/2024 - - - - - 9587 - 9587 - - 20.00 - - - 9587 - 2016-06-30 - - - - - BCEELULL - - - - DA SILVA DOMINGUES PEREIRA CRISTINA MARIA - - - - LU02 0019 1855 2691 5000 - - - - NGL-SNEP 04/2024 - - - - - 5269 - 5269 - - 16.50 - - - 5269 - 2014-05-30 - - - - - BILLLULL - - - - WETZ ROGER - - - - LU63 0025 1320 8790 0000 - - - - NGL-SNEP 04/2024 - - - - - 9588 - 9588 - - 12.00 - - - 9588 - 2014-05-30 - - - - - CCRALULL - - - - HOLPER-GILBERTZ MARIE-JOSEE - - - - LU18 0099 7800 0021 3074 - - - - NGL-SNEP 04/2024 - - - - - 5376 - 5376 - - 16.50 - - - 5376 - 2016-01-28 - - - - - BCEELULL - - - - FRISING PAUL - - - - LU04 0019 5303 6672 5000 - - - - NGL-SNEP 04/2024 - - - - - 9592 - 9592 - - 16.50 - - - 9592 - 2014-05-30 - - - - - BCEELULL - - - - LANGERS MICHEL - - - - LU34 0019 5003 5112 4000 - - - - NGL-SNEP 04/2024 - - - - - 5389 - 5389 - - 20.00 - - - 5389 - 2016-06-20 - - - - - BGLLLULL - - - - FRIDERES FRANCOISE - - - - LU85 0030 2430 1261 0000 - - - - NGL-SNEP 04/2024 - - - - - 9673 - 9673 - - 16.50 - - - 9673 - 2014-07-03 - - - - - CELLLULL - - - - HORTA DOMINGOS MANUEL - - - - LU28 0141 1143 1930 0000 - - - - NGL-SNEP 04/2024 - - - - - 5394 - 5394 - - 12.00 - - - 5394 - 2014-08-19 - - - - - BGLLLULL - - - - SCIMIA JEAN - - - - LU94 0030 0318 8708 0000 - - - - NGL-SNEP 04/2024 - - - - - 9693 - 9693 - - 20.00 - - - 9693 - 2015-09-11 - - - - - BGLLLULL - - - - BILL GILBERT - - - - LU31 0030 6406 4288 0000 - - - - NGL-SNEP 04/2024 - - - - - 5442 - 5442 - - 16.50 - - - 5442 - 2014-05-30 - - - - - BCEELULL - - - - BELLUCCI ROLAND - - - - LU37 0019 5303 7741 4000 - - - - NGL-SNEP 04/2024 - - - - - 5487 - 5487 - - 20.00 - - - 5487 - 2014-05-30 - - - - - BILLLULL - - - - MOSSONG ROMAIN - - - - LU46 0026 1360 7155 9500 - - - - NGL-SNEP 04/2024 - - - - - 9809 - 9809 - - 12.00 - - - 9809 - 2017-11-23 - - - - - BCEELULL - - - - SCHNEIDERS FRANCOIS - - - - LU30 0019 2103 7096 5000 - - - - NGL-SNEP 04/2024 - - - - - 5546 - 5546 - - 16.50 - - - 5546 - 2014-05-30 - - - - - BCEELULL - - - - GREISCH FELIX - - - - LU61 0019 3303 6962 7000 - - - - NGL-SNEP 04/2024 - - - - - 9839 - 9839 - - 15.00 - - - 9839 - 2017-11-24 - - - - - BILLLULL - - - - TAVOLACCI SYLVIA - - - - LU75 0026 1319 7530 0000 - - - - NGL-SNEP 04/2024 - - - - - 5796 - 5796 - - 16.50 - - - 5796 - 2021-01-23 - - - - - BCEELULL - - - - GIROTTO MARIO - - - - LU43 0019 6303 6741 6000 - - - - NGL-SNEP 04/2024 - - - - - 9895 - 9895 - - 20.00 - - - 9895 - 2016-02-02 - - - - - BGLLLULL - - - - SCHROBILTGEN STEVE - - - - LU92 0030 2642 0309 0000 - - - - NGL-SNEP 04/2024 - - - - - 5820 - 5820 - - 12.00 - - - 5820 - 2014-05-30 - - - - - BCEELULL - - - - CATANI SONJA - - - - LU69 0019 7903 1805 3000 - - - - NGL-SNEP 04/2024 - - - - - 5826 - 5826 - - 16.50 - - - 5826 - 2024-01-10 - - - - - CELLLULL - - - - ODILL ANTOINE - - - - LU81 0141 3113 9411 0000 - - - - NGL-SNEP 04/2024 - - - - - 5908 - 5908 - - 12.00 - - - 5908 - 2018-03-16 - - - - - BGLLLULL - - - - WEYLAND GUILLAUME - - - - LU57 0030 0371 9275 0000 - - - - NGL-SNEP 04/2024 - - - - - 6060 - 6060 - - 16.50 - - - 6060 - 2014-05-30 - - - - - BCEELULL - - - - REUTER ROGER - - - - LU58 0019 5003 9099 6000 - - - - NGL-SNEP 04/2024 - - - - - 6097 - 6097 - - 12.00 - - - 6097 - 2014-05-30 - - - - - BCEELULL - - - - BOEVER RENE - - - - LU22 0019 5003 5834 8000 - - - - NGL-SNEP 04/2024 - - - - - 6196 - 6196 - - 16.50 - - - 6196 - 2022-08-05 - - - - - CCRALULL - - - - BAUSTERT MONIQUE - - - - LU12 0090 0000 0529 4434 - - - - NGL-SNEP 04/2024 - - - - - 6379 - 6379 - - 16.50 - - - 6379 - 2015-05-29 - - - - - BCEELULL - - - - PIAZZALUNGA ADELIO - - - - LU81 0019 6503 6078 1000 - - - - NGL-SNEP 04/2024 - - - - - 6388 - 6388 - - 12.00 - - - 6388 - 2016-01-27 - - - - - BCEELULL - - - - GILLEN ROGER - - - - LU05 0019 9303 7317 1000 - - - - NGL-SNEP 04/2024 - - - - - 6428 - 6428 - - 12.00 - - - 6428 - 2019-11-11 - - - - - BGLLLULL - - - - GROBER GUSTY - - - - LU42 0030 0354 0534 0000 - - - - NGL-SNEP 04/2024 - - - - - 9976 - 9976 - - 20.00 - - - 9976 - 2016-01-29 - - - - - BCEELULL - - - - LONIEN CHANTAL - - - - LU89 0019 1055 3451 3000 - - - - NGL-SNEP 04/2024 - - - - - 6468 - 6468 - - 16.50 - - - 6468 - 2014-05-30 - - - - - BILLLULL - - - - FERREIRA ARAUJO JOSE - - - - LU39 0023 1420 7130 0000 - - - - NGL-SNEP 04/2024 - - - - - 10010 - 10010 - - 20.00 - - - 10010 - 2017-11-17 - - - - - BGLLLULL - - - - SIMOES LOPES DANIEL - - - - LU30 0030 2297 9940 0000 - - - - NGL-SNEP 04/2024 - - - - - 6483 - 6483 - - 16.50 - - - 6483 - 2017-03-06 - - - - - BCEELULL - - - - FLORIAN ROLAND - - - - LU86 0019 1007 5615 9000 - - - - NGL-SNEP 04/2024 - - - - - 10011 - 10011 - - 20.00 - - - 10011 - 2014-05-30 - - - - - BCEELULL - - - - HUBERTY-ROHR CHRISTIANE - - - - LU56 0019 1000 5651 6000 - - - - NGL-SNEP 04/2024 - - - - - 6539 - 6539 - - 20.00 - - - 6539 - 2016-04-01 - - - - - BILLLULL - - - - PETERS JEAN-CLAUDE - - - - LU66 0024 1124 9950 0000 - - - - NGL-SNEP 04/2024 - - - - - 10051 - 10051 - - 20.00 - - - 10051 - 2017-03-16 - - - - - CCPLLULL - - - - BRUCE ARISTIDE - - - - LU46 1111 2346 5714 0000 - - - - NGL-SNEP 04/2024 - - - - - 6559 - 6559 - - 16.50 - - - 6559 - 2017-10-27 - - - - - BCEELULL - - - - TEIXEIRA BRAS JOAQUIM - - - - LU34 0019 5003 9661 7000 - - - - NGL-SNEP 04/2024 - - - - - 10087 - 10087 - - 20.00 - - - 10087 - 2016-08-08 - - - - - BGLLLULL - - - - OESTREICHER FERNAND - - - - LU30 0030 5288 5040 0000 - - - - NGL-SNEP 04/2024 - - - - - 6677 - 6677 - - 16.50 - - - 6677 - 2016-05-16 - - - - - CCRALULL - - - - SCHINTGEN LEON - - - - LU61 0090 0000 0122 0037 - - - - NGL-SNEP 04/2024 - - - - - 10089 - 10089 - - 12.00 - - - 10089 - 2023-04-18 - - - - - BGLLLULL - - - - LEOCI VITO - - - - LU51 0030 1472 9078 0000 - - - - NGL-SNEP 04/2024 - - - - - 6746 - 6746 - - 12.00 - - - 6746 - 2014-05-30 - - - - - BCEELULL - - - - HARY ROGER - - - - LU36 0019 1006 3891 6000 - - - - NGL-SNEP 04/2024 - - - - - 10147 - 10147 - - 16.50 - - - 10147 - 2016-04-27 - - - - - BCEELULL - - - - BAUM JOHN - - - - LU38 0019 3403 7020 5000 - - - - NGL-SNEP 04/2024 - - - - - 6892 - 6892 - - 16.50 - - - 6892 - 2014-05-30 - - - - - CCRALULL - - - - WOHL JEANNOT - - - - LU95 0090 0000 0070 2415 - - - - NGL-SNEP 04/2024 - - - - - 10150 - 10150 - - 16.50 - - - 10150 - 2023-04-04 - - - - - BILLLULL - - - - VAN HEMERT OSWALD - - - - LU02 0024 1151 2560 0000 - - - - NGL-SNEP 04/2024 - - - - - 6900 - 6900 - - 20.00 - - - 6900 - 2014-05-30 - - - - - BILLLULL - - - - GRISIUS LUCIEN - - - - LU68 0024 1125 6930 0000 - - - - NGL-SNEP 04/2024 - - - - - 10479 - 10479 - - 20.00 - - - 10479 - 2016-05-09 - - - - - CELLLULL - - - - SIMON PIERRE - - - - LU97 0141 1220 8180 0000 - - - - NGL-SNEP 04/2024 - - - - - 6917 - 6917 - - 20.00 - - - 6917 - 2022-08-24 - - - - - BCEELULL - - - - BEFFORT MARCEL - - - - LU97 0019 6255 2419 3000 - - - - NGL-SNEP 04/2024 - - - - - 10489 - 10489 - - 20.00 - - - 10489 - 2023-10-27 - - - - - BCEELULL - - - - CORDEIRO LUIS MARIO - - - - LU98 0019 1106 0190 4000 - - - - NGL-SNEP 04/2024 - - - - - 7102 - 7102 - - 16.50 - - - 7102 - 2018-03-07 - - - - - BCEELULL - - - - KEMP GILBERT - - - - LU75 0019 5403 6571 4000 - - - - NGL-SNEP 04/2024 - - - - - 10591 - 10591 - - 20.00 - - - 10591 - 2014-05-30 - - - - - BGLLLULL - - - - MARQUES CARVALHO PEDRO JORGE - - - - LU43 0030 8596 6282 0000 - - - - NGL-SNEP 04/2024 - - - - - 7249 - 7249 - - 16.50 - - - 7249 - 2014-05-30 - - - - - BCEELULL - - - - PIANTANIDA JOSEPH - - - - LU12 0019 5303 6666 2000 - - - - NGL-SNEP 04/2024 - - - - - 10727 - 10727 - - 20.00 - - - 10727 - 2016-01-14 - - - - - BCEELULL - - - - FLICK MYRIAM - - - - LU34 0019 3803 7114 5000 - - - - NGL-SNEP 04/2024 - - - - - 7339 - 7339 - - 16.50 - - - 7339 - 2014-05-30 - - - - - BCEELULL - - - - HILGER NICO - - - - LU04 0019 5503 7413 9000 - - - - NGL-SNEP 04/2024 - - - - - 10769 - 10769 - - 16.50 - - - 10769 - 2017-03-01 - - - - - BCEELULL - - - - CLAUDE ALEX - - - - LU29 0019 5003 6907 2000 - - - - NGL-SNEP 04/2024 - - - - - 7582 - 7582 - - 20.00 - - - 7582 - 2014-05-30 - - - - - BILLLULL - - - - MARTA FERRAZ ANACLETO - - - - LU77 0026 1345 5650 7600 - - - - NGL-SNEP 04/2024 - - - - - 10784 - 10784 - - 16.50 - - - 10784 - 2023-03-02 - - - - - BCEELULL - - - - SCHROBILTGEN MICHEL - - - - LU35 0019 1200 5077 0000 - - - - NGL-SNEP 04/2024 - - - - - 7856 - 7856 - - 16.50 - - - 7856 - 2014-05-30 - - - - - CELLLULL - - - - AFONSO MAGALHAES JOAQUIM - - - - LU82 0141 5137 2930 0000 - - - - NGL-SNEP 04/2024 - - - - - 10827 - 10827 - - 20.00 - - - 10827 - 2020-06-16 - - - - - CMCIFR2A - - - - SPONAR PASCAL - - - - FR76 1027 8042 8000 0539 9084 002 - - - - NGL-SNEP 04/2024 - - - - - 10865 - 10865 - - 20.00 - - - 10865 - 2014-05-30 - - - - - BILLLULL - - - - MARQUARDT CLAUS - - - - LU58 0022 6100 3139 0800 - - - - NGL-SNEP 04/2024 - - - - - 10875 - 10875 - - 12.00 - - - 10875 - 2014-05-30 - - - - - BCEELULL - - - - POOS JEAN-CLAUDE - - - - LU52 0019 5603 6728 3000 - - - - NGL-SNEP 04/2024 - - - - - 7880 - 7880 - - 20.00 - - - 7880 - 2022-07-04 - - - - - CCPLLULL - - - - CLEMENS FRANCOIS - - - - LU53 1111 1505 0659 0000 - - - - NGL-SNEP 04/2024 - - - - - 8003 - 8003 - - 20.00 - - - 8003 - 2014-05-30 - - - - - BCEELULL - - - - DA SILVA ALMEIDA MARIA LURDES - - - - LU87 0019 5003 8032 8000 - - - - NGL-SNEP 04/2024 - - - - - 8015 - 8015 - - 12.00 - - - 8015 - 2023-05-04 - - - - - BCEELULL - - - - PETESCH LUCIEN - - - - LU55 0019 5403 7639 6000 - - - - NGL-SNEP 04/2024 - - - - - 11066 - 11066 - - 20.00 - - - 11066 - 2015-08-24 - - - - - BGLLLULL - - - - VALENTIN ADRIEN - - - - LU85 0030 3058 6861 0000 - - - - NGL-SNEP 04/2024 - - - - - 8044 - 8044 - - 12.00 - - - 8044 - 2016-08-04 - - - - - BCEELULL - - - - URBANY RENé - - - - LU05 0019 5403 6575 6000 - - - - NGL-SNEP 04/2024 - - - - - 8068 - 8068 - - 20.00 - - - 8068 - 2017-12-12 - - - - - SOGEFRPP - - - - CHANTEUR MURIEL - - - - FR76 3000 3024 5200 0506 9196 361 - - - - NGL-SNEP 04/2024 - - - - - 8083 - 8083 - - 20.00 - - - 8083 - 2014-05-30 - - - - - BCEELULL - - - - VELOSO DA COSTA AUGUSTO - - - - LU15 0019 5003 9583 3000 - - - - NGL-SNEP 04/2024 - - - - - 8090 - 8090 - - 12.00 - - - 8090 - 2021-12-01 - - - - - CCRALULL - - - - RIES EMILE - - - - LU57 0099 7818 0763 4033 - - - - NGL-SNEP 04/2024 - - - - - 12671 - 12671 - - 20.00 - - - 12671 - 2014-05-30 - - - - - BMECLULL - - - - CRISTELO DA SILVA CUNHA MARIA DE FATIMA - - - - LU92 0250 0435 2361 7000 - - - - NGL-SNEP 04/2024 - - - - - 12692 - 12692 - - 20.00 - - - 12692 - 2017-11-02 - - - - - BCEELULL - - - - PINTO NUNES JOSE - - - - LU46 0019 2555 6915 3000 - - - - NGL-SNEP 04/2024 - - - - - 12360 - 12360 - - 20.00 - - - 12360 - 2014-05-30 - - - - - CELLLULL - - - - MALHAO DA SILVA REIS ANTONIO - - - - LU70 0141 9439 2260 0000 - - - - NGL-SNEP 04/2024 - - - - - 12369 - 12369 - - 20.00 - - - 12369 - 2014-05-30 - - - - - BMECLULL - - - - HENRIQUES MARTINS AUGUSTO - - - - LU19 0250 0448 9879 1000 - - - - NGL-SNEP 04/2024 - - - - - 12381 - 12381 - - 20.00 - - - 12381 - 2020-02-04 - - - - - CELLLULL - - - - GOMES DA SILVA ANTONIO MANUEL - - - - LU53 0141 0701 0620 0000 - - - - NGL-SNEP 04/2024 - - - - - 12697 - 12697 - - 20.00 - - - 12697 - 2020-12-04 - - - - - BGLLLULL - - - - GALIAR FERREIRA OLIVEIRA ADELIA MARIA - - - - LU43 0030 8965 2282 0000 - - - - NGL-SNEP 04/2024 - - - - - 12386 - 12386 - - 20.00 - - - 12386 - 2020-11-13 - - - - - BCEELULL - - - - FERREIRA GOMES PAULO JORGE - - - - LU36 0019 3755 8299 1000 - - - - NGL-SNEP 04/2024 - - - - - 12395 - 12395 - - 20.00 - - - 12395 - 2016-06-01 - - - - - BCEELULL - - - - DA CUNHA RELVAO DA SILVA FRANCISCO ALEXANDRE - - - - LU33 0019 2655 7525 4000 - - - - NGL-SNEP 04/2024 - - - - - 12716 - 12716 - - 20.00 - - - 12716 - 2014-05-30 - - - - - BILLLULL - - - - DOS SANTOS TEIXEIRA PEDRO MANUEL - - - - LU13 0025 1928 0358 6200 - - - - NGL-SNEP 04/2024 - - - - - 12404 - 12404 - - 15.00 - - - 12404 - 2014-05-30 - - - - - BCEELULL - - - - VIDEIRA MARQUES CLARA DA CONCEICãO - - - - LU74 0019 2255 1944 8000 - - - - NGL-SNEP 04/2024 - - - - - 12409 - 12409 - - 20.00 - - - 12409 - 2016-04-19 - - - - - CCPLLULL - - - - TAVARES FERNANDES VICTOR ARMINDO - - - - LU26 1111 3243 9224 0000 - - - - NGL-SNEP 04/2024 - - - - - 12780 - 12780 - - 20.00 - - - 12780 - 2017-11-21 - - - - - BGLLLULL - - - - MARTINS DE ALMEIDA BERNARDINO - - - - LU20 0030 7261 5345 0000 - - - - NGL-SNEP 04/2024 - - - - - 12416 - 12416 - - 20.00 - - - 12416 - 2014-05-30 - - - - - BILLLULL - - - - FERREIRA DA COSTA HELIO - - - - LU32 0026 5100 3356 3000 - - - - NGL-SNEP 04/2024 - - - - - 12418 - 12418 - - 20.00 - - - 12418 - 2020-12-14 - - - - - CELLLULL - - - - RODRIGUES MARQUES SILVA CRISTINA MARIA - - - - LU94 0141 8558 5970 0000 - - - - NGL-SNEP 04/2024 - - - - - 12784 - 12784 - - 20.00 - - - 12784 - 2018-08-27 - - - - - BCEELULL - - - - DA ROCHA FERREIRA MANUEL - - - - LU82 0019 5255 8781 8000 - - - - NGL-SNEP 04/2024 - - - - - 12427 - 12427 - - 20.00 - - - 12427 - 2014-05-30 - - - - - BCEELULL - - - - DE NAZARé DE BASTOS ANTóNIO SILVA PALMIRA - - - - LU46 0019 1355 8781 6000 - - - - NGL-SNEP 04/2024 - - - - - 12431 - 12431 - - 16.50 - - - 12431 - 2020-07-21 - - - - - BGLLLULL - - - - DE OLIVEIRA GALVEIAS CARLOS MANUEL - - - - LU88 0030 4746 9511 0000 - - - - NGL-SNEP 04/2024 - - - - - 12805 - 12805 - - 20.00 - - - 12805 - 2015-07-29 - - - - - BMECLULL - - - - ADELAIDE SIMOES DA ROCHA COSTA MARIA - - - - LU75 0250 0444 8270 5000 - - - - NGL-SNEP 04/2024 - - - - - 12439 - 12439 - - 15.00 - - - 12439 - 2020-12-10 - - - - - CCPLLULL - - - - FERREIRA LEITE SUSANA DE LURDES - - - - LU92 1111 2536 4688 0000 - - - - NGL-SNEP 04/2024 - - - - - 12442 - 12442 - - 20.00 - - - 12442 - 2014-05-30 - - - - - BCEELULL - - - - GONCALVES PEIXOTO RUI ALEXANDRE - - - - LU87 0019 2155 4254 4000 - - - - NGL-SNEP 04/2024 - - - - - 12836 - 12836 - - 15.00 - - - 12836 - 2021-07-19 - - - - - BILLLULL - - - - STREITZ JOSIANE - - - - LU53 0028 1125 8770 0000 - - - - NGL-SNEP 04/2024 - - - - - 12466 - 12466 - - 20.00 - - - 12466 - 2014-05-30 - - - - - BMECLULL - - - - FIGUEIREDO GONCALVES JOAQUIM - - - - LU19 0250 0433 0799 1000 - - - - NGL-SNEP 04/2024 - - - - - 12849 - 12849 - - 20.00 - - - 12849 - 2014-05-30 - - - - - BILLLULL - - - - DA SILVA BASTOS PAULO - - - - LU03 0026 1894 0903 3500 - - - - NGL-SNEP 04/2024 - - - - - 12485 - 12485 - - 20.00 - - - 12485 - 2021-01-14 - - - - - CELLLULL - - - - COELHO SILVA CATIA FILIPA - - - - LU87 0141 6407 3130 0000 - - - - NGL-SNEP 04/2024 - - - - - 12883 - 12883 - - 16.50 - - - 12883 - 2023-06-06 - - - - - BILLLULL - - - - DE JESUS DA SILVA ANTONIO - - - - LU98 0025 8100 1170 2800 - - - - NGL-SNEP 04/2024 - - - - - 12490 - 12490 - - 20.00 - - - 12490 - 2014-05-30 - - - - - BGLLLULL - - - - AZENHA RODRIGUES JOAO CARLOS - - - - LU12 0030 0956 5749 0000 - - - - NGL-SNEP 04/2024 - - - - - 12887 - 12887 - - 20.00 - - - 12887 - 2014-08-01 - - - - - CCPLLULL - - - - GSCHWEND ACHIM - - - - LU37 1111 0553 5767 0000 - - - - NGL-SNEP 04/2024 - - - - - 12506 - 12506 - - 20.00 - - - 12506 - 2017-05-10 - - - - - BCEELULL - - - - DE SOUSA SANTOS FERNANDO - - - - LU34 0019 3055 3787 6000 - - - - NGL-SNEP 04/2024 - - - - - 12531 - 12531 - - 20.00 - - - 12531 - 2014-05-30 - - - - - BGLLLULL - - - - PEREIRA FEIJAO HORACIO - - - - LU04 0030 6210 1353 0000 - - - - NGL-SNEP 04/2024 - - - - - 12542 - 12542 - - 20.00 - - - 12542 - 2022-08-03 - - - - - BMECLULL - - - - DE JESUS TRINDADE JOAQUIM FILIPE - - - - LU95 0250 0445 1150 2000 - - - - NGL-SNEP 04/2024 - - - - - 12548 - 12548 - - 20.00 - - - 12548 - 2015-05-20 - - - - - BMECLULL - - - - DE SOUSA MOREIRA AURELIO MANUEL - - - - LU38 0250 0443 7519 3000 - - - - NGL-SNEP 04/2024 - - - - - 12562 - 12562 - - 20.00 - - - 12562 - 2014-05-30 - - - - - BMECLULL - - - - ALVES TAVARES PAULO ALEXANDRE - - - - LU63 0250 0447 2156 5000 - - - - NGL-SNEP 04/2024 - - - - - 12572 - 12572 - - 20.00 - - - 12572 - 2014-05-30 - - - - - BCEELULL - - - - DE OLIVEIRA CAMPOS AMERICO LUIS - - - - LU82 0019 3255 4694 9000 - - - - NGL-SNEP 04/2024 - - - - - 12906 - 12906 - - 20.00 - - - 12906 - 2014-09-10 - - - - - BILLLULL - - - - PINTO FERREIRA DE CARVALHO MANUEL ANTONIO - - - - LU87 0023 0100 3889 6700 - - - - NGL-SNEP 04/2024 - - - - - 12915 - 12915 - - 20.00 - - - 12915 - 2022-11-04 - - - - - PSSTFRPPNCY - - - - CABACO PINTO FRANCISCO - - - - FR40 2004 1010 1010 3536 9D03 150 - - - - NGL-SNEP 04/2024 - - - - - 12614 - 12614 - - 20.00 - - - 12614 - 2021-05-06 - - - - - BCEELULL - - - - PINTO MARTINS JOAO - - - - LU47 0019 3555 2142 5000 - - - - NGL-SNEP 04/2024 - - - - - 12625 - 12625 - - 20.00 - - - 12625 - 2014-05-30 - - - - - BGLLLULL - - - - LOPES DA SILVA ANTONIO FERNANDO - - - - LU90 0030 3454 9010 0000 - - - - NGL-SNEP 04/2024 - - - - - 12628 - 12628 - - 20.00 - - - 12628 - 2014-05-30 - - - - - BGLLLULL - - - - SILVA ANTUNES CARLOS ALBERTO - - - - LU06 0030 8872 7752 0000 - - - - NGL-SNEP 04/2024 - - - - - 12955 - 12955 - - 16.50 - - - 12955 - 2014-05-13 - - - - - BMECLULL - - - - DE LIMA PEREIRA VITOR MANUEL - - - - LU71 0250 0446 2052 5000 - - - - NGL-SNEP 04/2024 - - - - - 12640 - 12640 - - 20.00 - - - 12640 - 2022-03-22 - - - - - BCEELULL - - - - TAVEIRA VILLELA IVANIR - - - - LU59 0019 7355 6068 6000 - - - - NGL-SNEP 04/2024 - - - - - 12651 - 12651 - - 20.00 - - - 12651 - 2014-05-30 - - - - - BMECLULL - - - - DA CUNHA LOURENCO ANTONINO - - - - LU88 0250 0447 3813 7000 - - - - NGL-SNEP 04/2024 - - - - - 12666 - 12666 - - 20.00 - - - 12666 - 2014-05-30 - - - - - BGLLLULL - - - - TORRES FERREIRA EDGAR JOSE - - - - LU57 0030 8501 4975 0000 - - - - NGL-SNEP 04/2024 - - - - - 13281 - 13281 - - 12.00 - - - 13281 - 2020-07-07 - - - - - BMECLULL - - - - FERREIRA BRITO MARIA DA GUIA - - - - LU06 0250 0434 5025 9000 - - - - NGL-SNEP 04/2024 - - - - - 13316 - 13316 - - 20.00 - - - 13316 - 2016-08-18 - - - - - BCEELULL - - - - GUEDES POUBEL VIVIANE - - - - LU59 0019 4055 7551 3000 - - - - NGL-SNEP 04/2024 - - - - - 12971 - 12971 - - 20.00 - - - 12971 - 2014-05-30 - - - - - BCEELULL - - - - SILVA SANTOS ANABELA - - - - LU12 0019 1655 8273 9000 - - - - NGL-SNEP 04/2024 - - - - - 12974 - 12974 - - 20.00 - - - 12974 - 2014-05-30 - - - - - BCEELULL - - - - MAELLARO PATRIZIA - - - - LU73 0019 4055 2091 3000 - - - - NGL-SNEP 04/2024 - - - - - 12980 - 12980 - - 20.00 - - - 12980 - 2014-05-30 - - - - - CELLLULL - - - - PADINHA TOME PEDRO MANUEL - - - - LU82 0141 8482 8230 0000 - - - - NGL-SNEP 04/2024 - - - - - 13325 - 13325 - - 15.00 - - - 13325 - 2015-04-28 - - - - - BMECLULL - - - - RODRIGUES CARNEIRO SARA DANIELA - - - - LU93 0250 0450 5571 2000 - - - - NGL-SNEP 04/2024 - - - - - 12991 - 12991 - - 20.00 - - - 12991 - 2014-06-12 - - - - - CMCIFR2A - - - - CHATELIN JONATHAN - - - - FR76 1027 8025 5900 0174 1694 068 - - - - NGL-SNEP 04/2024 - - - - - 13347 - 13347 - - 20.00 - - - 13347 - 2020-02-14 - - - - - BILLLULL - - - - CENTRONE PIER PASQUALE - - - - LU72 0028 1165 6612 4200 - - - - NGL-SNEP 04/2024 - - - - - 13005 - 13005 - - 18.00 - - - 13005 - 2021-04-19 - - - - - BCEELULL - - - - META FLORID - - - - LU23 0019 1055 8035 6000 - - - - NGL-SNEP 04/2024 - - - - - 13355 - 13355 - - 20.00 - - - 13355 - 2015-10-30 - - - - - BGLLLULL - - - - MOITEIRO RIBEIRO MARTA - - - - LU41 0030 4726 3383 0000 - - - - NGL-SNEP 04/2024 - - - - - 13010 - 13010 - - 20.00 - - - 13010 - 2014-07-10 - - - - - CELLLULL - - - - DA SILVA MARQUES ANTONIO FERNANDO - - - - LU32 0141 1441 4090 0000 - - - - NGL-SNEP 04/2024 - - - - - 13026 - 13026 - - 20.00 - - - 13026 - 2014-07-11 - - - - - BCEELULL - - - - DA SILVA RODRIGUES ANTONIO JOAO - - - - LU71 0019 3555 2259 4000 - - - - NGL-SNEP 04/2024 - - - - - 13037 - 13037 - - 20.00 - - - 13037 - 2014-07-30 - - - - - BCEELULL - - - - MARQUES ANDRADE LUIS ANTONIO - - - - LU70 0019 3655 7171 7000 - - - - NGL-SNEP 04/2024 - - - - - 13039 - 13039 - - 20.00 - - - 13039 - 2014-07-07 - - - - - BCEELULL - - - - FERREIRA LEITE MIGUEL HERNANI - - - - LU41 0019 3455 2540 4000 - - - - NGL-SNEP 04/2024 - - - - - 13040 - 13040 - - 20.00 - - - 13040 - 2014-07-23 - - - - - BCEELULL - - - - VIANA DE SOUSA JOAO MANUEL - - - - LU73 0019 3855 8411 5000 - - - - NGL-SNEP 04/2024 - - - - - 13372 - 13372 - - 20.00 - - - 13372 - 2015-11-16 - - - - - BGLLLULL - - - - DELGADO GOMES NéLIDA - - - - LU74 0030 2155 1818 0000 - - - - NGL-SNEP 04/2024 - - - - - 13380 - 13380 - - 20.00 - - - 13380 - 2015-12-04 - - - - - BILLLULL - - - - OESTGES RUDOLF - - - - LU39 0024 1939 3845 6100 - - - - NGL-SNEP 04/2024 - - - - - 13403 - 13403 - - 20.00 - - - 13403 - 2023-02-01 - - - - - CCRALULL - - - - DIAS DE AMORIM ORLANDO AMERICO - - - - LU10 0099 7800 0118 0793 - - - - NGL-SNEP 04/2024 - - - - - 13075 - 13075 - - 20.00 - - - 13075 - 2014-09-01 - - - - - BGLLLULL - - - - FERREIRA CARVALHO JORGE MANUEL - - - - LU79 0030 8860 2864 0000 - - - - NGL-SNEP 04/2024 - - - - - 13410 - 13410 - - 20.00 - - - 13410 - 2016-01-12 - - - - - BCEELULL - - - - DE ALMEIDA LAGOA JOAQUIM MANUEL - - - - LU23 0019 4055 4761 8000 - - - - NGL-SNEP 04/2024 - - - - - 13084 - 13084 - - 20.00 - - - 13084 - 2014-09-01 - - - - - BMECLULL - - - - PINHEIRO FERREIRA FERNANDO MANUEL - - - - LU54 0250 0448 9091 3000 - - - - NGL-SNEP 04/2024 - - - - - 13421 - 13421 - - 20.00 - - - 13421 - 2016-01-19 - - - - - BILLLULL - - - - ASCENCAO GOMES MARIA DE FATIMA - - - - LU05 0029 6100 4110 7700 - - - - NGL-SNEP 04/2024 - - - - - 13086 - 13086 - - 20.00 - - - 13086 - 2014-10-01 - - - - - BMECLULL - - - - RODRIGUES LOPES SUSANA CRISTINA - - - - LU14 0250 0444 2591 9000 - - - - NGL-SNEP 04/2024 - - - - - 13094 - 13094 - - 15.00 - - - 13094 - 2014-11-01 - - - - - CRLYFRPP - - - - BITAT RADIA - - - - FR55 3000 2070 3400 0024 6157 R34 - - - - NGL-SNEP 04/2024 - - - - - 13103 - 13103 - - 20.00 - - - 13103 - 2014-11-01 - - - - - BCEELULL - - - - BESSA CARDOSO DIANA PATRICIA - - - - LU23 0019 2655 4460 8000 - - - - NGL-SNEP 04/2024 - - - - - 13112 - 13112 - - 20.00 - - - 13112 - 2014-11-01 - - - - - CCRALULL - - - - DA SILVA MARQUES MONICA PAULA - - - - LU56 0099 7800 0025 3906 - - - - NGL-SNEP 04/2024 - - - - - 13426 - 13426 - - 20.00 - - - 13426 - 2016-01-26 - - - - - BGLLLULL - - - - MATCHUM FOTSO NADEGE LAURE - - - - LU28 0030 2404 7041 0000 - - - - NGL-SNEP 04/2024 - - - - - 13135 - 13135 - - 20.00 - - - 13135 - 2014-12-01 - - - - - BCEELULL - - - - AFONSO QUITERIO SANDRA CRISTINA - - - - LU25 0019 3855 4714 8000 - - - - NGL-SNEP 04/2024 - - - - - 13149 - 13149 - - 20.00 - - - 13149 - 2015-01-01 - - - - - BCEELULL - - - - DUTRA DE ALMEIDA GESSE - - - - LU79 0019 4355 6712 5000 - - - - NGL-SNEP 04/2024 - - - - - 13433 - 13433 - - 20.00 - - - 13433 - 2021-01-23 - - - - - CCBPFRPPMTZ - - - - MONTEIRO CINDY - - - - FR76 1470 7011 0131 5197 3150 484 - - - - NGL-SNEP 04/2024 - - - - - 13438 - 13438 - - 12.00 - - - 13438 - 2022-11-23 - - - - - BCEELULL - - - - LOPES ALMEIDA ABILIO - - - - LU56 0019 2603 6841 6000 - - - - NGL-SNEP 04/2024 - - - - - 13442 - 13442 - - 20.00 - - - 13442 - 2016-02-23 - - - - - CELLLULL - - - - PEREIRA DA SILVA FELISBELA ACACIA - - - - LU67 0141 4495 9320 0000 - - - - NGL-SNEP 04/2024 - - - - - 13446 - 13446 - - 20.00 - - - 13446 - 2016-03-11 - - - - - BMECLULL - - - - MOREIRA DA SILVA CARLOS MANUEL - - - - LU51 0250 0449 5062 8000 - - - - NGL-SNEP 04/2024 - - - - - 13453 - 13453 - - 20.00 - - - 13453 - 2021-08-24 - - - - - BILLLULL - - - - DO CABO TEIXEIRA CARDOSO AMERICO - - - - LU47 0026 1877 4999 6700 - - - - NGL-SNEP 04/2024 - - - - - 13204 - 13204 - - 20.00 - - - 13204 - 2015-06-26 - - - - - BILLLULL - - - - NUNES AFONSO CARLOS MANUEL - - - - LU94 0020 5100 2839 4800 - - - - NGL-SNEP 04/2024 - - - - - 13460 - 13460 - - 20.00 - - - 13460 - 2016-04-01 - - - - - CELLLULL - - - - VARELA DE SOUSA FREITAS ANDREIA - - - - LU31 0141 5419 8060 0000 - - - - NGL-SNEP 04/2024 - - - - - 13208 - 13208 - - 20.00 - - - 13208 - 2015-03-04 - - - - - BCEELULL - - - - DE MAGALHAES PEREIRA MARIA DA GRACA - - - - LU72 0019 3055 2518 5000 - - - - NGL-SNEP 04/2024 - - - - - 13225 - 13225 - - 20.00 - - - 13225 - 2015-03-20 - - - - - BMECLULL - - - - ANTUNES MARTINS MARIA DA CONCEICAO - - - - LU14 0250 0458 1301 9000 - - - - NGL-SNEP 04/2024 - - - - - 13464 - 13464 - - 20.00 - - - 13464 - 2016-04-06 - - - - - BCEELULL - - - - DE OLIVEIRA E SILVA MANUEL - - - - LU95 0019 2655 5490 5000 - - - - NGL-SNEP 04/2024 - - - - - 13473 - 13473 - - 20.00 - - - 13473 - 2016-04-12 - - - - - CELLLULL - - - - DA SILVA OLIVEIRA LUCIA MARIA - - - - LU21 0141 7495 6080 0000 - - - - NGL-SNEP 04/2024 - - - - - 13482 - 13482 - - 20.00 - - - 13482 - 2016-04-14 - - - - - BGLLLULL - - - - RIVERA CARRERA NELSON - - - - LU91 0030 2209 9058 0000 - - - - NGL-SNEP 04/2024 - - - - - 13500 - 13500 - - 20.00 - - - 13500 - 2016-05-10 - - - - - CCRALULL - - - - MACEDO DE PINHO ANTONIO AUGUSTO - - - - LU12 0090 0000 5892 2048 - - - - NGL-SNEP 04/2024 - - - - - 13242 - 13242 - - 20.00 - - - 13242 - 2015-04-23 - - - - - BCEELULL - - - - DA COSTA LEITE VITOR LUíS - - - - LU97 0019 2355 3782 7000 - - - - NGL-SNEP 04/2024 - - - - - 13507 - 13507 - - 20.00 - - - 13507 - 2016-05-17 - - - - - BCEELULL - - - - DA CRUZ SARAIVA JOSE ALEXANDRE - - - - LU20 0019 4455 4184 5000 - - - - NGL-SNEP 04/2024 - - - - - 13249 - 13249 - - 20.00 - - - 13249 - 2014-05-30 - - - - - GENODEF1S01 - - - - PALLIEN MICHAEL - - - - DE77 5509 0500 0005 6799 07 - - - - NGL-SNEP 04/2024 - - - - - 13265 - 13265 - - 20.00 - - - 13265 - 2015-06-01 - - - - - BCEELULL - - - - MONTEIRO DELGADO ROBERTO CARLOS - - - - LU52 0019 3455 0656 0000 - - - - NGL-SNEP 04/2024 - - - - - 13278 - 13278 - - 20.00 - - - 13278 - 2015-06-12 - - - - - CELLLULL - - - - GOMES RIBEIRO SANDRA - - - - LU98 0141 9560 5480 0000 - - - - NGL-SNEP 04/2024 - - - - - 13803 - 13803 - - 20.00 - - - 13803 - 2018-04-18 - - - - - BILLLULL - - - - DELAHAYE DOMINIQUE - - - - LU65 0024 6100 7567 6700 - - - - NGL-SNEP 04/2024 - - - - - 13815 - 13815 - - 20.00 - - - 13815 - 2020-10-14 - - - - - BMECLULL - - - - CARVALHO DOS SANTOS ARMINDA - - - - LU09 0250 0446 7094 4000 - - - - NGL-SNEP 04/2024 - - - - - 13828 - 13828 - - 20.00 - - - 13828 - 2017-04-11 - - - - - BCEELULL - - - - DA COSTA SIMAO PEDRO JORGE - - - - LU77 0019 4355 8462 5000 - - - - NGL-SNEP 04/2024 - - - - - 13555 - 13555 - - 20.00 - - - 13555 - 2016-07-19 - - - - - BILLLULL - - - - MONTEIRO ALVES DANIEL - - - - LU27 0027 8100 1327 7900 - - - - NGL-SNEP 04/2024 - - - - - 13831 - 13831 - - 20.00 - - - 13831 - 2017-04-13 - - - - - BCEELULL - - - - SIMOES BARREIRA AUREA MARIA - - - - LU85 0019 3855 2800 3000 - - - - NGL-SNEP 04/2024 - - - - - 13564 - 13564 - - 20.00 - - - 13564 - 2016-07-22 - - - - - CELLLULL - - - - TAVARES PERON KELIANE - - - - LU26 0141 7482 3180 0000 - - - - NGL-SNEP 04/2024 - - - - - 13839 - 13839 - - 20.00 - - - 13839 - 2017-04-21 - - - - - BCEELULL - - - - BARBOSA DE CASTRO VERA LILIANA - - - - LU47 0019 3555 8932 5000 - - - - NGL-SNEP 04/2024 - - - - - 13570 - 13570 - - 20.00 - - - 13570 - 2016-08-01 - - - - - BMECLULL - - - - FERREIRA RIBEIRO CAMILO - - - - LU66 0250 0440 8955 0000 - - - - NGL-SNEP 04/2024 - - - - - 13842 - 13842 - - 20.00 - - - 13842 - 2017-04-25 - - - - - BCEELULL - - - - SKRIJELJ MIRSAD - - - - LU57 0019 5003 2166 1000 - - - - NGL-SNEP 04/2024 - - - - - 13589 - 13589 - - 20.00 - - - 13589 - 2016-08-19 - - - - - CCPLLULL - - - - GONCALVES COELHO MANUEL ANTONIO - - - - LU89 1111 2322 5941 0000 - - - - NGL-SNEP 04/2024 - - - - - 13849 - 13849 - - 20.00 - - - 13849 - 2017-05-01 - - - - - BCEELULL - - - - SKRIJELJ SAFET - - - - LU52 0019 5103 7183 4000 - - - - NGL-SNEP 04/2024 - - - - - 13591 - 13591 - - 20.00 - - - 13591 - 2015-04-28 - - - - - CELLLULL - - - - LOPES DE ALMEIDA JOãO ALEXANDRE - - - - LU44 0141 4556 7750 0000 - - - - NGL-SNEP 04/2024 - - - - - 13860 - 13860 - - 20.00 - - - 13860 - 2015-04-28 - - - - - BGLLLULL - - - - PINTO BERNARDO MANUEL - - - - LU22 0030 8942 5344 0000 - - - - NGL-SNEP 04/2024 - - - - - 13594 - 13594 - - 15.00 - - - 13594 - 2023-11-09 - - - - - BILLLULL - - - - DA SILVA GONçALVES ANA PAULA - - - - LU40 0028 5101 0348 5400 - - - - NGL-SNEP 04/2024 - - - - - 13615 - 13615 - - 20.00 - - - 13615 - 2016-09-13 - - - - - BMECLULL - - - - TOMAS DE SOUSA ALVES ANABELA - - - - LU05 0250 0436 6416 4000 - - - - NGL-SNEP 04/2024 - - - - - 13638 - 13638 - - 20.00 - - - 13638 - 2016-09-19 - - - - - BCEELULL - - - - RIBEIRO GONCALVES JORGE MANUEL - - - - LU82 0019 2355 2173 4000 - - - - NGL-SNEP 04/2024 - - - - - 13644 - 13644 - - 20.00 - - - 13644 - 2016-09-28 - - - - - BILLLULL - - - - MONTEIRO DIAS ROSA MARIA - - - - LU71 0027 3100 4922 6400 - - - - NGL-SNEP 04/2024 - - - - - 13649 - 13649 - - 20.00 - - - 13649 - 2016-10-06 - - - - - BGLLLULL - - - - MOREIRA ALMEIDA MARIO JOSE - - - - LU91 0030 0590 9758 0000 - - - - NGL-SNEP 04/2024 - - - - - 13882 - 13882 - - 20.00 - - - 13882 - 2017-06-01 - - - - - CCPLLULL - - - - PEREZ DE JESUS DIONICIO - - - - LU59 1111 2774 7656 0000 - - - - NGL-SNEP 04/2024 - - - - - 13651 - 13651 - - 20.00 - - - 13651 - 2016-10-06 - - - - - CCRALULL - - - - SOARES MINEIRO DANIEL - - - - LU30 0090 0000 6277 0102 - - - - NGL-SNEP 04/2024 - - - - - 13656 - 13656 - - 20.00 - - - 13656 - 2016-10-11 - - - - - BILLLULL - - - - TAVERNA GRETA - - - - LU25 0027 8101 7311 5700 - - - - NGL-SNEP 04/2024 - - - - - 13905 - 13905 - - 20.00 - - - 13905 - 2017-07-01 - - - - - BCEELULL - - - - MOREIRA DE OLIVEIRA CLAUDIA ISABEL - - - - LU76 0019 3455 5865 4000 - - - - NGL-SNEP 04/2024 - - - - - 13912 - 13912 - - 20.00 - - - 13912 - 2017-07-11 - - - - - CELLLULL - - - - MEIRA FERREIRA NATALIA FILIPA - - - - LU39 0141 8426 7850 0000 - - - - NGL-SNEP 04/2024 - - - - - 13916 - 13916 - - 20.00 - - - 13916 - 2017-07-19 - - - - - CCPLLULL - - - - DE CARVALHO PEREIRA ANA CRISTINA - - - - LU90 1111 2329 8689 0000 - - - - NGL-SNEP 04/2024 - - - - - 13927 - 13927 - - 20.00 - - - 13927 - 2017-08-01 - - - - - BMECLULL - - - - ALVES BORGES PATRICIA ISABEL - - - - LU95 0250 0456 1730 2000 - - - - NGL-SNEP 04/2024 - - - - - 13939 - 13939 - - 20.00 - - - 13939 - 2017-08-23 - - - - - BGLLLULL - - - - BOTAS PEDROSA FERNANDO FRANCISCO - - - - LU16 0030 3703 5947 0000 - - - - NGL-SNEP 04/2024 - - - - - 13666 - 13666 - - 20.00 - - - 13666 - 2016-11-09 - - - - - BGLLLULL - - - - DUARTE MARQUES MANUEL JOAO - - - - LU88 0030 8968 3911 0000 - - - - NGL-SNEP 04/2024 - - - - - 13951 - 13951 - - 20.00 - - - 13951 - 2017-09-05 - - - - - BCEELULL - - - - OLIVEIRA NUNES HELDER ANTONIO - - - - LU68 0019 3355 2377 6000 - - - - NGL-SNEP 04/2024 - - - - - 13686 - 13686 - - 20.00 - - - 13686 - 2016-12-01 - - - - - CCRALULL - - - - GOIS FIGUEIREDO SONIA MARIZA - - - - LU34 0099 7800 0061 7761 - - - - NGL-SNEP 04/2024 - - - - - 13959 - 13959 - - 20.00 - - - 13959 - 2017-09-07 - - - - - BCEELULL - - - - DUARTE CATAO JOAO CARLOS - - - - LU80 0019 2155 6577 0000 - - - - NGL-SNEP 04/2024 - - - - - 13968 - 13968 - - 20.00 - - - 13968 - 2017-09-15 - - - - - BILLLULL - - - - FORTES ALVES PRISCILA - - - - LU89 0027 4101 1157 3500 - - - - NGL-SNEP 04/2024 - - - - - 13705 - 13705 - - 20.00 - - - 13705 - 2016-12-15 - - - - - BILLLULL - - - - COELHO TEIXEIRA MARIO ANTONIO - - - - LU90 0020 8100 2359 5200 - - - - NGL-SNEP 04/2024 - - - - - 13977 - 13977 - - 20.00 - - - 13977 - 2019-07-25 - - - - - CELLLULL - - - - MENESES QUINTEIRO SUSANA MARIA - - - - LU31 0141 3701 2570 0000 - - - - NGL-SNEP 04/2024 - - - - - 13708 - 13708 - - 20.00 - - - 13708 - 2016-12-15 - - - - - BILLLULL - - - - DIAS ANTUNES SOFIA ALEXANDRA - - - - LU96 0028 5100 5820 1300 - - - - NGL-SNEP 04/2024 - - - - - 13988 - 13988 - - 20.00 - - - 13988 - 2017-10-01 - - - - - BMECLULL - - - - PEREIRA NEVES ALBERTO - - - - LU78 0250 0444 5218 7000 - - - - NGL-SNEP 04/2024 - - - - - 13718 - 13718 - - 15.00 - - - 13718 - 2021-01-26 - - - - - BCEELULL - - - - CABRAL DA SILVA JORGE MIGUEL - - - - LU89 0019 4355 2511 8000 - - - - NGL-SNEP 04/2024 - - - - - 13721 - 13721 - - 20.00 - - - 13721 - 2017-01-06 - - - - - BCEELULL - - - - VENTURA MACHADO ANABELA AFONSO - - - - LU63 0019 3355 2610 7000 - - - - NGL-SNEP 04/2024 - - - - - 13725 - 13725 - - 20.00 - - - 13725 - 2017-01-17 - - - - - SOGEFRPP - - - - NAUD PATRICK JEAN-PIERRE - - - - FR76 3000 3024 5600 0502 6390 007 - - - - NGL-SNEP 04/2024 - - - - - 13731 - 13731 - - 20.00 - - - 13731 - 2017-02-01 - - - - - BCEELULL - - - - FERNANDES GOMES FERNANDO ALEXANDRE - - - - LU44 0019 2455 5374 9000 - - - - NGL-SNEP 04/2024 - - - - - 13735 - 13735 - - 20.00 - - - 13735 - 2017-01-27 - - - - - BILLLULL - - - - MARTINS ANTUNES JOSE AGOSTINHO - - - - LU55 0021 3100 1762 4000 - - - - NGL-SNEP 04/2024 - - - - - 13992 - 13992 - - 20.00 - - - 13992 - 2017-10-03 - - - - - BMECLULL - - - - DOS SANTOS MENDES CLAUDIA ANDREIA - - - - LU62 0250 0452 7497 0000 - - - - NGL-SNEP 04/2024 - - - - - 13746 - 13746 - - 20.00 - - - 13746 - 2017-02-08 - - - - - BMECLULL - - - - DE ARAUJO ANTONIO PAULO - - - - LU92 0250 0450 1741 7000 - - - - NGL-SNEP 04/2024 - - - - - 13998 - 13998 - - 15.00 - - - 13998 - 2017-09-28 - - - - - CMCIFR2A - - - - BOUSSIS AISSA - - - - FR76 1027 8051 0000 0203 0710 133 - - - - NGL-SNEP 04/2024 - - - - - 14015 - 14015 - - 20.00 - - - 14015 - 2017-10-24 - - - - - BGLLLULL - - - - SA VELOSO DANIELA PATRICIA - - - - LU32 0030 1008 8539 0000 - - - - NGL-SNEP 04/2024 - - - - - 14029 - 14029 - - 20.00 - - - 14029 - 2017-11-06 - - - - - BNPAFRPP - - - - GUILLEMIN DAMIEN - - - - FR76 3000 4014 5000 0000 7616 278 - - - - NGL-SNEP 04/2024 - - - - - 13775 - 13775 - - 20.00 - - - 13775 - 2017-03-01 - - - - - BCEELULL - - - - MARTINS LOUREIRO ANTONIO MIGUEL - - - - LU94 0019 5003 9580 5000 - - - - NGL-SNEP 04/2024 - - - - - 13510 - 13510 - - 20.00 - - - 13510 - 2016-05-18 - - - - - BMECLULL - - - - NUNES DA COSTA JOSE CARLOS - - - - LU47 0250 0445 3554 8000 - - - - NGL-SNEP 04/2024 - - - - - 13780 - 13780 - - 20.00 - - - 13780 - 2017-03-08 - - - - - BILLLULL - - - - MACHADO DA SILVA ANDREIA BIBIANA - - - - LU24 0025 6101 0194 4600 - - - - NGL-SNEP 04/2024 - - - - - 13526 - 13526 - - 20.00 - - - 13526 - 2016-06-15 - - - - - BCEELULL - - - - GUILLAUME PHILIPPE JEAN-FRANCOIS - - - - LU82 0019 2055 6289 6000 - - - - NGL-SNEP 04/2024 - - - - - 13790 - 13790 - - 20.00 - - - 13790 - 2017-03-10 - - - - - CCPLLULL - - - - PASTORE FRANCESCO - - - - LU84 1111 2169 8492 0000 - - - - NGL-SNEP 04/2024 - - - - - 13532 - 13532 - - 20.00 - - - 13532 - 2016-06-17 - - - - - CELLLULL - - - - DE BARROS OLIVEIRA MARIA HELENA - - - - LU07 0141 5358 6620 0000 - - - - NGL-SNEP 04/2024 - - - - - 13796 - 13796 - - 20.00 - - - 13796 - 2017-03-14 - - - - - BMECLULL - - - - SANTOS MARTINS TIAGO JOSE - - - - LU90 0250 0445 2372 7000 - - - - NGL-SNEP 04/2024 - - - - - 13538 - 13538 - - 20.00 - - - 13538 - 2016-06-22 - - - - - BMECLULL - - - - ABREU FRIAS FREITAS JOSé FERNANDO - - - - LU28 0250 0438 1754 6000 - - - - NGL-SNEP 04/2024 - - - - - 13544 - 13544 - - 20.00 - - - 13544 - 2016-06-30 - - - - - BMECLULL - - - - BORGES ROQUE ANTONIO LUIS - - - - LU46 0250 0439 3465 3000 - - - - NGL-SNEP 04/2024 - - - - - 13798 - 13798 - - 20.00 - - - 13798 - 2017-03-17 - - - - - BCEELULL - - - - NOGUEIRA FERREIRA ANTONIO EMILIO - - - - LU40 0019 7455 3916 5000 - - - - NGL-SNEP 04/2024 - - - - - 20240429_180128 - DD - true - 9 - 109 - - - SEPA - - - CORE - - FRST - - 2024-04-29 - - NGL-SNEP ASBL - - LU - 5 Am Brill - L-3961 EHLANGE-SUR-MESS - - - - - LU080019435512770000 - - - - - BCEELULL - - - - - - - LU57ZZZ0000000000000000760 - - SEPA - - - - - - - - 11545 - 11545 - - 2.50 - - - 11545 - 2023-04-18 - - - - - BGLLLULL - - - - LEOCI GIANCARLO - - - - LU51 0030 1472 9078 0000 - - - - NGL-SNEP 04/2024 - - - - - 14260 - 14260 - - 15.00 - - - 14260 - 2019-01-08 - - - - - INGBFR21XXX - - - - TRAXEL SEBASTIEN - - - - FR76 3043 8001 0040 0046 7767 642 - - - - NGL-SNEP 04/2024 - - - - - 14263 - 14263 - - 15.00 - - - 14263 - 2019-01-09 - - - - - BILLLULL - - - - KIEFER THIERRY - - - - LU31 0028 1894 6619 8100 - - - - NGL-SNEP 04/2024 - - - - - 14262 - 14262 - - 15.00 - - - 14262 - 2019-01-15 - - - - - BCEELULL - - - - MIRANDA DUARTE DIANA - - - - LU96 0019 2955 4233 8000 - - - - NGL-SNEP 04/2024 - - - - - 14444 - 14444 - - 14.00 - - - 14444 - 2019-12-16 - - - - - BCEELULL - - - - LESOURD HENRY - - - - LU26 0019 5000 1100 8000 - - - - NGL-SNEP 04/2024 - - - - - 14460 - 14460 - - 15.00 - - - 14460 - 2020-01-26 - - - - - FPELFR21 - - - - VANBUCKHAVE JULIEN - - - - FR76 1659 8000 0109 2307 1000 142 - - - - NGL-SNEP 04/2024 - - - - - 14928 - 14928 - - 15.00 - - - 14928 - 2023-10-18 - - - - - BGLLLULL - - - - VAZ ALVES BAPTISTA CARLA PATRICIA - - - - LU84 0030 6568 6924 1000 - - - - NGL-SNEP 04/2024 - - - - - 14930 - 14930 - - 15.00 - - - 14930 - 2023-10-04 - - - - - BILLLULL - - - - STEPHANIE LANGARD - - - - LU44 0027 8100 8579 4600 - - - - NGL-SNEP 04/2024 - - - - - 14937 - 14937 - - 2.50 - - - 14937 - 2023-11-22 - - - - - BGLLLULL - - - - LINO LUCAS FLAVIO - - - - LU88 0030 1623 5511 0000 - - - - NGL-SNEP 04/2024 - - - - - diff --git a/tmp/node_modules/.bin/marked b/tmp/node_modules/.bin/marked deleted file mode 100644 index bc49a0d..0000000 --- a/tmp/node_modules/.bin/marked +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../marked/bin/marked.js" "$@" -else - exec node "$basedir/../marked/bin/marked.js" "$@" -fi diff --git a/tmp/node_modules/.bin/marked.cmd b/tmp/node_modules/.bin/marked.cmd deleted file mode 100644 index b074870..0000000 --- a/tmp/node_modules/.bin/marked.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -GOTO start -:find_dp0 -SET dp0=%~dp0 -EXIT /b -:start -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\marked\bin\marked.js" %* diff --git a/tmp/node_modules/.bin/marked.ps1 b/tmp/node_modules/.bin/marked.ps1 deleted file mode 100644 index c6b4c9f..0000000 --- a/tmp/node_modules/.bin/marked.ps1 +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & "$basedir/node$exe" "$basedir/../marked/bin/marked.js" $args - } else { - & "$basedir/node$exe" "$basedir/../marked/bin/marked.js" $args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & "node$exe" "$basedir/../marked/bin/marked.js" $args - } else { - & "node$exe" "$basedir/../marked/bin/marked.js" $args - } - $ret=$LASTEXITCODE -} -exit $ret diff --git a/tmp/node_modules/.package-lock.json b/tmp/node_modules/.package-lock.json deleted file mode 100644 index 4315877..0000000 --- a/tmp/node_modules/.package-lock.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "tmp", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/marked": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", - "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - } - } -} diff --git a/tmp/node_modules/marked/LICENSE.md b/tmp/node_modules/marked/LICENSE.md deleted file mode 100644 index 4bd2d4a..0000000 --- a/tmp/node_modules/marked/LICENSE.md +++ /dev/null @@ -1,44 +0,0 @@ -# License information - -## Contribution License Agreement - -If you contribute code to this project, you are implicitly allowing your code -to be distributed under the MIT license. You are also implicitly verifying that -all code is your original work. `` - -## Marked - -Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/) -Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -## Markdown - -Copyright © 2004, John Gruber -http://daringfireball.net/ -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -* Neither the name “Markdown” nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. diff --git a/tmp/node_modules/marked/README.md b/tmp/node_modules/marked/README.md deleted file mode 100644 index d4ab251..0000000 --- a/tmp/node_modules/marked/README.md +++ /dev/null @@ -1,107 +0,0 @@ - - - - -# Marked - -[![npm](https://badgen.net/npm/v/marked)](https://www.npmjs.com/package/marked) -[![gzip size](https://badgen.net/badgesize/gzip/https://cdn.jsdelivr.net/npm/marked/marked.min.js)](https://cdn.jsdelivr.net/npm/marked/marked.min.js) -[![install size](https://badgen.net/packagephobia/install/marked)](https://packagephobia.now.sh/result?p=marked) -[![downloads](https://badgen.net/npm/dt/marked)](https://www.npmjs.com/package/marked) -[![github actions](https://github.com/markedjs/marked/workflows/Tests/badge.svg)](https://github.com/markedjs/marked/actions) -[![snyk](https://snyk.io/test/npm/marked/badge.svg)](https://snyk.io/test/npm/marked) - -- ⚡ built for speed -- ⬇️ low-level compiler for parsing markdown without caching or blocking for long periods of time -- ⚖️ light-weight while implementing all markdown features from the supported flavors & specifications -- 🌐 works in a browser, on a server, or from a command line interface (CLI) - -## Demo - -Checkout the [demo page](https://marked.js.org/demo/) to see marked in action ⛹️ - -## Docs - -Our [documentation pages](https://marked.js.org) are also rendered using marked 💯 - -Also read about: - -* [Options](https://marked.js.org/using_advanced) -* [Extensibility](https://marked.js.org/using_pro) - -## Compatibility - -**Node.js:** Only [current and LTS](https://nodejs.org/en/about/releases/) Node.js versions are supported. End of life Node.js versions may become incompatible with Marked at any point in time. - -**Browser:** Not IE11 :) - -## Installation - -**CLI:** - -```sh -npm install -g marked -``` - -**In-browser:** - -```sh -npm install marked -``` - -## Usage - -### Warning: 🚨 Marked does not [sanitize](https://marked.js.org/using_advanced#options) the output HTML. Please use a sanitize library, like [DOMPurify](https://github.com/cure53/DOMPurify) (recommended), [sanitize-html](https://github.com/apostrophecms/sanitize-html) or [insane](https://github.com/bevacqua/insane) on the *output* HTML! 🚨 - -``` -DOMPurify.sanitize(marked.parse(``)); -``` - -**CLI** - -``` bash -# Example with stdin input -$ marked -o hello.html -hello world -^D -$ cat hello.html -

hello world

-``` - -```bash -# Print all options -$ marked --help -``` - -**Browser** - -```html - - - - - Marked in the browser - - -
- - - - -``` -or import esm module - -```html - -``` - -## License - -Copyright (c) 2011-2022, Christopher Jeffrey. (MIT License) diff --git a/tmp/node_modules/marked/bin/main.js b/tmp/node_modules/marked/bin/main.js deleted file mode 100644 index 758ef56..0000000 --- a/tmp/node_modules/marked/bin/main.js +++ /dev/null @@ -1,279 +0,0 @@ -#!/usr/bin/env node - -/** - * Marked CLI - * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License) - */ - -import { promises } from 'node:fs'; -import { dirname, resolve } from 'node:path'; -import { homedir } from 'node:os'; -import { createRequire } from 'node:module'; -import { marked } from '../lib/marked.esm.js'; - -const { access, readFile, writeFile } = promises; -const require = createRequire(import.meta.url); - -/** - * @param {Process} nodeProcess inject process so it can be mocked in tests. - */ -export async function main(nodeProcess) { - /** - * Man Page - */ - async function help() { - const { spawn } = await import('child_process'); - const { fileURLToPath } = await import('url'); - - const options = { - cwd: nodeProcess.cwd(), - env: nodeProcess.env, - stdio: 'inherit' - }; - - const __dirname = dirname(fileURLToPath(import.meta.url)); - const helpText = await readFile(resolve(__dirname, '../man/marked.1.md'), 'utf8'); - - // eslint-disable-next-line promise/param-names - await new Promise(res => { - spawn('man', [resolve(__dirname, '../man/marked.1')], options) - .on('error', () => { - console.log(helpText); - }) - .on('close', res); - }); - } - - async function version() { - const pkg = require('../package.json'); - console.log(pkg.version); - } - - /** - * Main - */ - async function start(argv) { - const files = []; - const options = {}; - let input; - let output; - let string; - let arg; - let tokens; - let config; - let opt; - let noclobber; - - function getArg() { - let arg = argv.shift(); - - if (arg.indexOf('--') === 0) { - // e.g. --opt - arg = arg.split('='); - if (arg.length > 1) { - // e.g. --opt=val - argv.unshift(arg.slice(1).join('=')); - } - arg = arg[0]; - } else if (arg[0] === '-') { - if (arg.length > 2) { - // e.g. -abc - argv = arg.substring(1).split('').map(function(ch) { - return '-' + ch; - }).concat(argv); - arg = argv.shift(); - } else { - // e.g. -a - } - } else { - // e.g. foo - } - - return arg; - } - - while (argv.length) { - arg = getArg(); - switch (arg) { - case '-o': - case '--output': - output = argv.shift(); - break; - case '-i': - case '--input': - input = argv.shift(); - break; - case '-s': - case '--string': - string = argv.shift(); - break; - case '-t': - case '--tokens': - tokens = true; - break; - case '-c': - case '--config': - config = argv.shift(); - break; - case '-n': - case '--no-clobber': - noclobber = true; - break; - case '-h': - case '--help': - return await help(); - case '-v': - case '--version': - return await version(); - default: - if (arg.indexOf('--') === 0) { - opt = camelize(arg.replace(/^--(no-)?/, '')); - if (!marked.defaults.hasOwnProperty(opt)) { - continue; - } - if (arg.indexOf('--no-') === 0) { - options[opt] = typeof marked.defaults[opt] !== 'boolean' - ? null - : false; - } else { - options[opt] = typeof marked.defaults[opt] !== 'boolean' - ? argv.shift() - : true; - } - } else { - files.push(arg); - } - break; - } - } - - async function getData() { - if (!input) { - if (files.length <= 2) { - if (string) { - return string; - } - return await getStdin(); - } - input = files.pop(); - } - return await readFile(input, 'utf8'); - } - - function resolveFile(file) { - return resolve(file.replace(/^~/, homedir)); - } - - function fileExists(file) { - return access(resolveFile(file)).then(() => true, () => false); - } - - async function runConfig(file) { - const configFile = resolveFile(file); - let markedConfig; - try { - // try require for json - markedConfig = require(configFile); - } catch (err) { - if (err.code !== 'ERR_REQUIRE_ESM') { - throw err; - } - // must import esm - markedConfig = await import('file:///' + configFile); - } - - if (markedConfig.default) { - markedConfig = markedConfig.default; - } - - if (typeof markedConfig === 'function') { - markedConfig(marked); - } else { - marked.use(markedConfig); - } - } - - const data = await getData(); - - if (config) { - if (!await fileExists(config)) { - throw Error(`Cannot load config file '${config}'`); - } - - await runConfig(config); - } else { - const defaultConfig = [ - '~/.marked.json', - '~/.marked.js', - '~/.marked/index.js' - ]; - - for (const configFile of defaultConfig) { - if (await fileExists(configFile)) { - await runConfig(configFile); - break; - } - } - } - - const html = tokens - ? JSON.stringify(marked.lexer(data, options), null, 2) - : await marked.parse(data, options); - - if (output) { - if (noclobber && await fileExists(output)) { - throw Error('marked: output file \'' + output + '\' already exists, disable the \'-n\' / \'--no-clobber\' flag to overwrite\n'); - } - return await writeFile(output, html); - } - - nodeProcess.stdout.write(html + '\n'); - } - - /** - * Helpers - */ - function getStdin() { - return new Promise((resolve, reject) => { - const stdin = nodeProcess.stdin; - let buff = ''; - - stdin.setEncoding('utf8'); - - stdin.on('data', function(data) { - buff += data; - }); - - stdin.on('error', function(err) { - reject(err); - }); - - stdin.on('end', function() { - resolve(buff); - }); - - stdin.resume(); - }); - } - - /** - * @param {string} text - */ - function camelize(text) { - return text.replace(/(\w)-(\w)/g, function(_, a, b) { - return a + b.toUpperCase(); - }); - } - - try { - await start(nodeProcess.argv.slice()); - nodeProcess.exit(0); - } catch (err) { - if (err.code === 'ENOENT') { - nodeProcess.stderr.write('marked: ' + err.path + ': No such file or directory'); - } else { - nodeProcess.stderr.write(err.message); - } - return nodeProcess.exit(1); - } -} diff --git a/tmp/node_modules/marked/bin/marked.js b/tmp/node_modules/marked/bin/marked.js deleted file mode 100644 index e2dd816..0000000 --- a/tmp/node_modules/marked/bin/marked.js +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env node - -/** - * Marked CLI - * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License) - */ - -import { main } from './main.js'; - -/** - * Expose / Entry Point - */ - -process.title = 'marked'; -main(process); diff --git a/tmp/node_modules/marked/lib/marked.cjs b/tmp/node_modules/marked/lib/marked.cjs deleted file mode 100644 index 874fea1..0000000 --- a/tmp/node_modules/marked/lib/marked.cjs +++ /dev/null @@ -1,2450 +0,0 @@ -/** - * marked v12.0.2 - a markdown parser - * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ - -/** - * DO NOT EDIT THIS FILE - * The code in this file is generated from files in ./src/ - */ - -'use strict'; - -/** - * Gets the original marked default options. - */ -function _getDefaults() { - return { - async: false, - breaks: false, - extensions: null, - gfm: true, - hooks: null, - pedantic: false, - renderer: null, - silent: false, - tokenizer: null, - walkTokens: null - }; -} -exports.defaults = _getDefaults(); -function changeDefaults(newDefaults) { - exports.defaults = newDefaults; -} - -/** - * Helpers - */ -const escapeTest = /[&<>"']/; -const escapeReplace = new RegExp(escapeTest.source, 'g'); -const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; -const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); -const escapeReplacements = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' -}; -const getEscapeReplacement = (ch) => escapeReplacements[ch]; -function escape$1(html, encode) { - if (encode) { - if (escapeTest.test(html)) { - return html.replace(escapeReplace, getEscapeReplacement); - } - } - else { - if (escapeTestNoEncode.test(html)) { - return html.replace(escapeReplaceNoEncode, getEscapeReplacement); - } - } - return html; -} -const unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig; -function unescape(html) { - // explicitly match decimal, hex, and named HTML entities - return html.replace(unescapeTest, (_, n) => { - n = n.toLowerCase(); - if (n === 'colon') - return ':'; - if (n.charAt(0) === '#') { - return n.charAt(1) === 'x' - ? String.fromCharCode(parseInt(n.substring(2), 16)) - : String.fromCharCode(+n.substring(1)); - } - return ''; - }); -} -const caret = /(^|[^\[])\^/g; -function edit(regex, opt) { - let source = typeof regex === 'string' ? regex : regex.source; - opt = opt || ''; - const obj = { - replace: (name, val) => { - let valSource = typeof val === 'string' ? val : val.source; - valSource = valSource.replace(caret, '$1'); - source = source.replace(name, valSource); - return obj; - }, - getRegex: () => { - return new RegExp(source, opt); - } - }; - return obj; -} -function cleanUrl(href) { - try { - href = encodeURI(href).replace(/%25/g, '%'); - } - catch (e) { - return null; - } - return href; -} -const noopTest = { exec: () => null }; -function splitCells(tableRow, count) { - // ensure that every cell-delimiting pipe has a space - // before it to distinguish it from an escaped pipe - const row = tableRow.replace(/\|/g, (match, offset, str) => { - let escaped = false; - let curr = offset; - while (--curr >= 0 && str[curr] === '\\') - escaped = !escaped; - if (escaped) { - // odd number of slashes means | is escaped - // so we leave it alone - return '|'; - } - else { - // add space before unescaped | - return ' |'; - } - }), cells = row.split(/ \|/); - let i = 0; - // First/last cell in a row cannot be empty if it has no leading/trailing pipe - if (!cells[0].trim()) { - cells.shift(); - } - if (cells.length > 0 && !cells[cells.length - 1].trim()) { - cells.pop(); - } - if (count) { - if (cells.length > count) { - cells.splice(count); - } - else { - while (cells.length < count) - cells.push(''); - } - } - for (; i < cells.length; i++) { - // leading or trailing whitespace is ignored per the gfm spec - cells[i] = cells[i].trim().replace(/\\\|/g, '|'); - } - return cells; -} -/** - * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). - * /c*$/ is vulnerable to REDOS. - * - * @param str - * @param c - * @param invert Remove suffix of non-c chars instead. Default falsey. - */ -function rtrim(str, c, invert) { - const l = str.length; - if (l === 0) { - return ''; - } - // Length of suffix matching the invert condition. - let suffLen = 0; - // Step left until we fail to match the invert condition. - while (suffLen < l) { - const currChar = str.charAt(l - suffLen - 1); - if (currChar === c && !invert) { - suffLen++; - } - else if (currChar !== c && invert) { - suffLen++; - } - else { - break; - } - } - return str.slice(0, l - suffLen); -} -function findClosingBracket(str, b) { - if (str.indexOf(b[1]) === -1) { - return -1; - } - let level = 0; - for (let i = 0; i < str.length; i++) { - if (str[i] === '\\') { - i++; - } - else if (str[i] === b[0]) { - level++; - } - else if (str[i] === b[1]) { - level--; - if (level < 0) { - return i; - } - } - } - return -1; -} - -function outputLink(cap, link, raw, lexer) { - const href = link.href; - const title = link.title ? escape$1(link.title) : null; - const text = cap[1].replace(/\\([\[\]])/g, '$1'); - if (cap[0].charAt(0) !== '!') { - lexer.state.inLink = true; - const token = { - type: 'link', - raw, - href, - title, - text, - tokens: lexer.inlineTokens(text) - }; - lexer.state.inLink = false; - return token; - } - return { - type: 'image', - raw, - href, - title, - text: escape$1(text) - }; -} -function indentCodeCompensation(raw, text) { - const matchIndentToCode = raw.match(/^(\s+)(?:```)/); - if (matchIndentToCode === null) { - return text; - } - const indentToCode = matchIndentToCode[1]; - return text - .split('\n') - .map(node => { - const matchIndentInNode = node.match(/^\s+/); - if (matchIndentInNode === null) { - return node; - } - const [indentInNode] = matchIndentInNode; - if (indentInNode.length >= indentToCode.length) { - return node.slice(indentToCode.length); - } - return node; - }) - .join('\n'); -} -/** - * Tokenizer - */ -class _Tokenizer { - options; - rules; // set by the lexer - lexer; // set by the lexer - constructor(options) { - this.options = options || exports.defaults; - } - space(src) { - const cap = this.rules.block.newline.exec(src); - if (cap && cap[0].length > 0) { - return { - type: 'space', - raw: cap[0] - }; - } - } - code(src) { - const cap = this.rules.block.code.exec(src); - if (cap) { - const text = cap[0].replace(/^ {1,4}/gm, ''); - return { - type: 'code', - raw: cap[0], - codeBlockStyle: 'indented', - text: !this.options.pedantic - ? rtrim(text, '\n') - : text - }; - } - } - fences(src) { - const cap = this.rules.block.fences.exec(src); - if (cap) { - const raw = cap[0]; - const text = indentCodeCompensation(raw, cap[3] || ''); - return { - type: 'code', - raw, - lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], - text - }; - } - } - heading(src) { - const cap = this.rules.block.heading.exec(src); - if (cap) { - let text = cap[2].trim(); - // remove trailing #s - if (/#$/.test(text)) { - const trimmed = rtrim(text, '#'); - if (this.options.pedantic) { - text = trimmed.trim(); - } - else if (!trimmed || / $/.test(trimmed)) { - // CommonMark requires space before trailing #s - text = trimmed.trim(); - } - } - return { - type: 'heading', - raw: cap[0], - depth: cap[1].length, - text, - tokens: this.lexer.inline(text) - }; - } - } - hr(src) { - const cap = this.rules.block.hr.exec(src); - if (cap) { - return { - type: 'hr', - raw: cap[0] - }; - } - } - blockquote(src) { - const cap = this.rules.block.blockquote.exec(src); - if (cap) { - // precede setext continuation with 4 spaces so it isn't a setext - let text = cap[0].replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1'); - text = rtrim(text.replace(/^ *>[ \t]?/gm, ''), '\n'); - const top = this.lexer.state.top; - this.lexer.state.top = true; - const tokens = this.lexer.blockTokens(text); - this.lexer.state.top = top; - return { - type: 'blockquote', - raw: cap[0], - tokens, - text - }; - } - } - list(src) { - let cap = this.rules.block.list.exec(src); - if (cap) { - let bull = cap[1].trim(); - const isordered = bull.length > 1; - const list = { - type: 'list', - raw: '', - ordered: isordered, - start: isordered ? +bull.slice(0, -1) : '', - loose: false, - items: [] - }; - bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; - if (this.options.pedantic) { - bull = isordered ? bull : '[*+-]'; - } - // Get next list item - const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); - let raw = ''; - let itemContents = ''; - let endsWithBlankLine = false; - // Check if current bullet point can start a new List Item - while (src) { - let endEarly = false; - if (!(cap = itemRegex.exec(src))) { - break; - } - if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) - break; - } - raw = cap[0]; - src = src.substring(raw.length); - let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); - let nextLine = src.split('\n', 1)[0]; - let indent = 0; - if (this.options.pedantic) { - indent = 2; - itemContents = line.trimStart(); - } - else { - indent = cap[2].search(/[^ ]/); // Find first non-space char - indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent - itemContents = line.slice(indent); - indent += cap[1].length; - } - let blankLine = false; - if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line - raw += nextLine + '\n'; - src = src.substring(nextLine.length + 1); - endEarly = true; - } - if (!endEarly) { - const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); - const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); - const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); - const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); - // Check if following lines should be included in List Item - while (src) { - const rawLine = src.split('\n', 1)[0]; - nextLine = rawLine; - // Re-align to follow commonmark nesting rules - if (this.options.pedantic) { - nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); - } - // End list item if found code fences - if (fencesBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new heading - if (headingBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new bullet - if (nextBulletRegex.test(nextLine)) { - break; - } - // Horizontal rule found - if (hrRegex.test(src)) { - break; - } - if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible - itemContents += '\n' + nextLine.slice(indent); - } - else { - // not enough indentation - if (blankLine) { - break; - } - // paragraph continuation unless last line was a different block level element - if (line.search(/[^ ]/) >= 4) { // indented code block - break; - } - if (fencesBeginRegex.test(line)) { - break; - } - if (headingBeginRegex.test(line)) { - break; - } - if (hrRegex.test(line)) { - break; - } - itemContents += '\n' + nextLine; - } - if (!blankLine && !nextLine.trim()) { // Check if current line is blank - blankLine = true; - } - raw += rawLine + '\n'; - src = src.substring(rawLine.length + 1); - line = nextLine.slice(indent); - } - } - if (!list.loose) { - // If the previous item ended with a blank line, the list is loose - if (endsWithBlankLine) { - list.loose = true; - } - else if (/\n *\n *$/.test(raw)) { - endsWithBlankLine = true; - } - } - let istask = null; - let ischecked; - // Check for task list items - if (this.options.gfm) { - istask = /^\[[ xX]\] /.exec(itemContents); - if (istask) { - ischecked = istask[0] !== '[ ] '; - itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); - } - } - list.items.push({ - type: 'list_item', - raw, - task: !!istask, - checked: ischecked, - loose: false, - text: itemContents, - tokens: [] - }); - list.raw += raw; - } - // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic - list.items[list.items.length - 1].raw = raw.trimEnd(); - (list.items[list.items.length - 1]).text = itemContents.trimEnd(); - list.raw = list.raw.trimEnd(); - // Item child tokens handled here at end because we needed to have the final item to trim it first - for (let i = 0; i < list.items.length; i++) { - this.lexer.state.top = false; - list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); - if (!list.loose) { - // Check if list should be loose - const spacers = list.items[i].tokens.filter(t => t.type === 'space'); - const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); - list.loose = hasMultipleLineBreaks; - } - } - // Set all items to loose if list is loose - if (list.loose) { - for (let i = 0; i < list.items.length; i++) { - list.items[i].loose = true; - } - } - return list; - } - } - html(src) { - const cap = this.rules.block.html.exec(src); - if (cap) { - const token = { - type: 'html', - block: true, - raw: cap[0], - pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', - text: cap[0] - }; - return token; - } - } - def(src) { - const cap = this.rules.block.def.exec(src); - if (cap) { - const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); - const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; - const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; - return { - type: 'def', - tag, - raw: cap[0], - href, - title - }; - } - } - table(src) { - const cap = this.rules.block.table.exec(src); - if (!cap) { - return; - } - if (!/[:|]/.test(cap[2])) { - // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading - return; - } - const headers = splitCells(cap[1]); - const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); - const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; - const item = { - type: 'table', - raw: cap[0], - header: [], - align: [], - rows: [] - }; - if (headers.length !== aligns.length) { - // header and align columns must be equal, rows can be different. - return; - } - for (const align of aligns) { - if (/^ *-+: *$/.test(align)) { - item.align.push('right'); - } - else if (/^ *:-+: *$/.test(align)) { - item.align.push('center'); - } - else if (/^ *:-+ *$/.test(align)) { - item.align.push('left'); - } - else { - item.align.push(null); - } - } - for (const header of headers) { - item.header.push({ - text: header, - tokens: this.lexer.inline(header) - }); - } - for (const row of rows) { - item.rows.push(splitCells(row, item.header.length).map(cell => { - return { - text: cell, - tokens: this.lexer.inline(cell) - }; - })); - } - return item; - } - lheading(src) { - const cap = this.rules.block.lheading.exec(src); - if (cap) { - return { - type: 'heading', - raw: cap[0], - depth: cap[2].charAt(0) === '=' ? 1 : 2, - text: cap[1], - tokens: this.lexer.inline(cap[1]) - }; - } - } - paragraph(src) { - const cap = this.rules.block.paragraph.exec(src); - if (cap) { - const text = cap[1].charAt(cap[1].length - 1) === '\n' - ? cap[1].slice(0, -1) - : cap[1]; - return { - type: 'paragraph', - raw: cap[0], - text, - tokens: this.lexer.inline(text) - }; - } - } - text(src) { - const cap = this.rules.block.text.exec(src); - if (cap) { - return { - type: 'text', - raw: cap[0], - text: cap[0], - tokens: this.lexer.inline(cap[0]) - }; - } - } - escape(src) { - const cap = this.rules.inline.escape.exec(src); - if (cap) { - return { - type: 'escape', - raw: cap[0], - text: escape$1(cap[1]) - }; - } - } - tag(src) { - const cap = this.rules.inline.tag.exec(src); - if (cap) { - if (!this.lexer.state.inLink && /^/i.test(cap[0])) { - this.lexer.state.inLink = false; - } - if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = true; - } - else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = false; - } - return { - type: 'html', - raw: cap[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: false, - text: cap[0] - }; - } - } - link(src) { - const cap = this.rules.inline.link.exec(src); - if (cap) { - const trimmedUrl = cap[2].trim(); - if (!this.options.pedantic && /^$/.test(trimmedUrl))) { - return; - } - // ending angle bracket cannot be escaped - const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); - if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { - return; - } - } - else { - // find closing parenthesis - const lastParenIndex = findClosingBracket(cap[2], '()'); - if (lastParenIndex > -1) { - const start = cap[0].indexOf('!') === 0 ? 5 : 4; - const linkLen = start + cap[1].length + lastParenIndex; - cap[2] = cap[2].substring(0, lastParenIndex); - cap[0] = cap[0].substring(0, linkLen).trim(); - cap[3] = ''; - } - } - let href = cap[2]; - let title = ''; - if (this.options.pedantic) { - // split pedantic href and title - const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); - if (link) { - href = link[1]; - title = link[3]; - } - } - else { - title = cap[3] ? cap[3].slice(1, -1) : ''; - } - href = href.trim(); - if (/^$/.test(trimmedUrl))) { - // pedantic allows starting angle bracket without ending angle bracket - href = href.slice(1); - } - else { - href = href.slice(1, -1); - } - } - return outputLink(cap, { - href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, - title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title - }, cap[0], this.lexer); - } - } - reflink(src, links) { - let cap; - if ((cap = this.rules.inline.reflink.exec(src)) - || (cap = this.rules.inline.nolink.exec(src))) { - const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); - const link = links[linkString.toLowerCase()]; - if (!link) { - const text = cap[0].charAt(0); - return { - type: 'text', - raw: text, - text - }; - } - return outputLink(cap, link, cap[0], this.lexer); - } - } - emStrong(src, maskedSrc, prevChar = '') { - let match = this.rules.inline.emStrongLDelim.exec(src); - if (!match) - return; - // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well - if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) - return; - const nextChar = match[1] || match[2] || ''; - if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { - // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) - const lLength = [...match[0]].length - 1; - let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; - const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; - endReg.lastIndex = 0; - // Clip maskedSrc to same section of string as src (move to lexer?) - maskedSrc = maskedSrc.slice(-1 * src.length + lLength); - while ((match = endReg.exec(maskedSrc)) != null) { - rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; - if (!rDelim) - continue; // skip single * in __abc*abc__ - rLength = [...rDelim].length; - if (match[3] || match[4]) { // found another Left Delim - delimTotal += rLength; - continue; - } - else if (match[5] || match[6]) { // either Left or Right Delim - if (lLength % 3 && !((lLength + rLength) % 3)) { - midDelimTotal += rLength; - continue; // CommonMark Emphasis Rules 9-10 - } - } - delimTotal -= rLength; - if (delimTotal > 0) - continue; // Haven't found enough closing delimiters - // Remove extra characters. *a*** -> *a* - rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); - // char length can be >1 for unicode characters; - const lastCharLength = [...match[0]][0].length; - const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); - // Create `em` if smallest delimiter has odd char count. *a*** - if (Math.min(lLength, rLength) % 2) { - const text = raw.slice(1, -1); - return { - type: 'em', - raw, - text, - tokens: this.lexer.inlineTokens(text) - }; - } - // Create 'strong' if smallest delimiter has even char count. **a*** - const text = raw.slice(2, -2); - return { - type: 'strong', - raw, - text, - tokens: this.lexer.inlineTokens(text) - }; - } - } - } - codespan(src) { - const cap = this.rules.inline.code.exec(src); - if (cap) { - let text = cap[2].replace(/\n/g, ' '); - const hasNonSpaceChars = /[^ ]/.test(text); - const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); - if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { - text = text.substring(1, text.length - 1); - } - text = escape$1(text, true); - return { - type: 'codespan', - raw: cap[0], - text - }; - } - } - br(src) { - const cap = this.rules.inline.br.exec(src); - if (cap) { - return { - type: 'br', - raw: cap[0] - }; - } - } - del(src) { - const cap = this.rules.inline.del.exec(src); - if (cap) { - return { - type: 'del', - raw: cap[0], - text: cap[2], - tokens: this.lexer.inlineTokens(cap[2]) - }; - } - } - autolink(src) { - const cap = this.rules.inline.autolink.exec(src); - if (cap) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[1]); - href = 'mailto:' + text; - } - else { - text = escape$1(cap[1]); - href = text; - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text - } - ] - }; - } - } - url(src) { - let cap; - if (cap = this.rules.inline.url.exec(src)) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[0]); - href = 'mailto:' + text; - } - else { - // do extended autolink path validation - let prevCapZero; - do { - prevCapZero = cap[0]; - cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; - } while (prevCapZero !== cap[0]); - text = escape$1(cap[0]); - if (cap[1] === 'www.') { - href = 'http://' + cap[0]; - } - else { - href = cap[0]; - } - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text - } - ] - }; - } - } - inlineText(src) { - const cap = this.rules.inline.text.exec(src); - if (cap) { - let text; - if (this.lexer.state.inRawBlock) { - text = cap[0]; - } - else { - text = escape$1(cap[0]); - } - return { - type: 'text', - raw: cap[0], - text - }; - } - } -} - -/** - * Block-Level Grammar - */ -const newline = /^(?: *(?:\n|$))+/; -const blockCode = /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/; -const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; -const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; -const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; -const bullet = /(?:[*+-]|\d{1,9}[.)])/; -const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) - .replace(/bull/g, bullet) // lists can interrupt - .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt - .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt - .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt - .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt - .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt - .getRegex(); -const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; -const blockText = /^[^\n]+/; -const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; -const def = edit(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/) - .replace('label', _blockLabel) - .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) - .getRegex(); -const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) - .replace(/bull/g, bullet) - .getRegex(); -const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' - + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' - + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' - + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' - + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' - + '|tr|track|ul'; -const _comment = /|$))/; -const html = edit('^ {0,3}(?:' // optional indentation - + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) - + '|comment[^\\n]*(\\n+|$)' // (2) - + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) - + '|\\n*|$)' // (4) - + '|\\n*|$)' // (5) - + '|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6) - + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag - + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag - + ')', 'i') - .replace('comment', _comment) - .replace('tag', _tag) - .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) - .getRegex(); -const paragraph = edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(); -const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) - .replace('paragraph', paragraph) - .getRegex(); -/** - * Normal Block Grammar - */ -const blockNormal = { - blockquote, - code: blockCode, - def, - fences, - heading, - hr, - html, - lheading, - list, - newline, - paragraph, - table: noopTest, - text: blockText -}; -/** - * GFM Block Grammar - */ -const gfmTable = edit('^ *([^\\n ].*)\\n' // Header - + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align - + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('blockquote', ' {0,3}>') - .replace('code', ' {4}[^\\n]') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // tables can be interrupted by type (6) html blocks - .getRegex(); -const blockGfm = { - ...blockNormal, - table: gfmTable, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('table', gfmTable) // interrupt paragraphs with table - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex() -}; -/** - * Pedantic grammar (original John Gruber's loose markdown specification) - */ -const blockPedantic = { - ...blockNormal, - html: edit('^ *(?:comment *(?:\\n|\\s*$)' - + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag - + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') - .replace('comment', _comment) - .replace(/tag/g, '(?!(?:' - + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' - + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' - + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') - .getRegex(), - def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, - heading: /^(#{1,6})(.*)(?:\n+|$)/, - fences: noopTest, // fences not supported - lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' *#{1,6} *[^\n]') - .replace('lheading', lheading) - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('|fences', '') - .replace('|list', '') - .replace('|html', '') - .replace('|tag', '') - .getRegex() -}; -/** - * Inline-Level Grammar - */ -const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; -const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; -const br = /^( {2,}|\\)\n(?!\s*$)/; -const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ -const blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g; -const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') - .replace(/punct/g, _punctuation) - .getRegex(); -const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong - + '|[^*]+(?=[^*])' // Consume to delim - + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter - + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter - + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter - + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter - + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter - + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); -// (6) Not allowed for _ -const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong - + '|[^_]+(?=[^_])' // Consume to delim - + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter - + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter - + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter - + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter - + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); -const anyPunctuation = edit(/\\([punct])/, 'gu') - .replace(/punct/g, _punctuation) - .getRegex(); -const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) - .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) - .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) - .getRegex(); -const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); -const tag = edit('^comment' - + '|^' // self-closing tag - + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag - + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. - + '|^' // declaration, e.g. - + '|^') // CDATA section - .replace('comment', _inlineComment) - .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) - .getRegex(); -const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; -const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) - .replace('label', _inlineLabel) - .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) - .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) - .getRegex(); -const reflink = edit(/^!?\[(label)\]\[(ref)\]/) - .replace('label', _inlineLabel) - .replace('ref', _blockLabel) - .getRegex(); -const nolink = edit(/^!?\[(ref)\](?:\[\])?/) - .replace('ref', _blockLabel) - .getRegex(); -const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') - .replace('reflink', reflink) - .replace('nolink', nolink) - .getRegex(); -/** - * Normal Inline Grammar - */ -const inlineNormal = { - _backpedal: noopTest, // only used for GFM url - anyPunctuation, - autolink, - blockSkip, - br, - code: inlineCode, - del: noopTest, - emStrongLDelim, - emStrongRDelimAst, - emStrongRDelimUnd, - escape, - link, - nolink, - punctuation, - reflink, - reflinkSearch, - tag, - text: inlineText, - url: noopTest -}; -/** - * Pedantic Inline Grammar - */ -const inlinePedantic = { - ...inlineNormal, - link: edit(/^!?\[(label)\]\((.*?)\)/) - .replace('label', _inlineLabel) - .getRegex(), - reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) - .replace('label', _inlineLabel) - .getRegex() -}; -/** - * GFM Inline Grammar - */ -const inlineGfm = { - ...inlineNormal, - escape: edit(escape).replace('])', '~|])').getRegex(), - url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') - .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) - .getRegex(), - _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, - del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, - text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { - return leading + ' '.repeat(tabs.length); - }); - } - let token; - let lastToken; - let cutSrc; - let lastParagraphClipped; - while (src) { - if (this.options.extensions - && this.options.extensions.block - && this.options.extensions.block.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // newline - if (token = this.tokenizer.space(src)) { - src = src.substring(token.raw.length); - if (token.raw.length === 1 && tokens.length > 0) { - // if there's a single \n as a spacer, it's terminating the last line, - // so move it there so that we don't get unnecessary paragraph tags - tokens[tokens.length - 1].raw += '\n'; - } - else { - tokens.push(token); - } - continue; - } - // code - if (token = this.tokenizer.code(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - // An indented code block cannot interrupt a paragraph. - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - // fences - if (token = this.tokenizer.fences(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // heading - if (token = this.tokenizer.heading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // hr - if (token = this.tokenizer.hr(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // blockquote - if (token = this.tokenizer.blockquote(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // list - if (token = this.tokenizer.list(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // html - if (token = this.tokenizer.html(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // def - if (token = this.tokenizer.def(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.raw; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else if (!this.tokens.links[token.tag]) { - this.tokens.links[token.tag] = { - href: token.href, - title: token.title - }; - } - continue; - } - // table (gfm) - if (token = this.tokenizer.table(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // lheading - if (token = this.tokenizer.lheading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // top-level paragraph - // prevent paragraph consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startBlock) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startBlock.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { - lastToken = tokens[tokens.length - 1]; - if (lastParagraphClipped && lastToken.type === 'paragraph') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - lastParagraphClipped = (cutSrc.length !== src.length); - src = src.substring(token.raw.length); - continue; - } - // text - if (token = this.tokenizer.text(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - this.state.top = true; - return tokens; - } - inline(src, tokens = []) { - this.inlineQueue.push({ src, tokens }); - return tokens; - } - /** - * Lexing/Compiling - */ - inlineTokens(src, tokens = []) { - let token, lastToken, cutSrc; - // String with links masked to avoid interference with em and strong - let maskedSrc = src; - let match; - let keepPrevChar, prevChar; - // Mask out reflinks - if (this.tokens.links) { - const links = Object.keys(this.tokens.links); - if (links.length > 0) { - while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { - if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); - } - } - } - } - // Mask out other blocks - while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); - } - // Mask out escaped characters - while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); - } - while (src) { - if (!keepPrevChar) { - prevChar = ''; - } - keepPrevChar = false; - // extensions - if (this.options.extensions - && this.options.extensions.inline - && this.options.extensions.inline.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // escape - if (token = this.tokenizer.escape(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // tag - if (token = this.tokenizer.tag(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // link - if (token = this.tokenizer.link(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // reflink, nolink - if (token = this.tokenizer.reflink(src, this.tokens.links)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // em & strong - if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // code - if (token = this.tokenizer.codespan(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // br - if (token = this.tokenizer.br(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // del (gfm) - if (token = this.tokenizer.del(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // autolink - if (token = this.tokenizer.autolink(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // url (gfm) - if (!this.state.inLink && (token = this.tokenizer.url(src))) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // text - // prevent inlineText consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startInline) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startInline.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (token = this.tokenizer.inlineText(cutSrc)) { - src = src.substring(token.raw.length); - if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started - prevChar = token.raw.slice(-1); - } - keepPrevChar = true; - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - return tokens; - } -} - -/** - * Renderer - */ -class _Renderer { - options; - constructor(options) { - this.options = options || exports.defaults; - } - code(code, infostring, escaped) { - const lang = (infostring || '').match(/^\S*/)?.[0]; - code = code.replace(/\n$/, '') + '\n'; - if (!lang) { - return '
'
-                + (escaped ? code : escape$1(code, true))
-                + '
\n'; - } - return '
'
-            + (escaped ? code : escape$1(code, true))
-            + '
\n'; - } - blockquote(quote) { - return `
\n${quote}
\n`; - } - html(html, block) { - return html; - } - heading(text, level, raw) { - // ignore IDs - return `${text}\n`; - } - hr() { - return '
\n'; - } - list(body, ordered, start) { - const type = ordered ? 'ol' : 'ul'; - const startatt = (ordered && start !== 1) ? (' start="' + start + '"') : ''; - return '<' + type + startatt + '>\n' + body + '\n'; - } - listitem(text, task, checked) { - return `
  • ${text}
  • \n`; - } - checkbox(checked) { - return ''; - } - paragraph(text) { - return `

    ${text}

    \n`; - } - table(header, body) { - if (body) - body = `${body}`; - return '\n' - + '\n' - + header - + '\n' - + body - + '
    \n'; - } - tablerow(content) { - return `\n${content}\n`; - } - tablecell(content, flags) { - const type = flags.header ? 'th' : 'td'; - const tag = flags.align - ? `<${type} align="${flags.align}">` - : `<${type}>`; - return tag + content + `\n`; - } - /** - * span level renderer - */ - strong(text) { - return `${text}`; - } - em(text) { - return `${text}`; - } - codespan(text) { - return `${text}`; - } - br() { - return '
    '; - } - del(text) { - return `${text}`; - } - link(href, title, text) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = '
    '; - return out; - } - image(href, title, text) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = `${text} 0 && item.tokens[0].type === 'paragraph') { - item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; - if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { - item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; - } - } - else { - item.tokens.unshift({ - type: 'text', - text: checkbox + ' ' - }); - } - } - else { - itemBody += checkbox + ' '; - } - } - itemBody += this.parse(item.tokens, loose); - body += this.renderer.listitem(itemBody, task, !!checked); - } - out += this.renderer.list(body, ordered, start); - continue; - } - case 'html': { - const htmlToken = token; - out += this.renderer.html(htmlToken.text, htmlToken.block); - continue; - } - case 'paragraph': { - const paragraphToken = token; - out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens)); - continue; - } - case 'text': { - let textToken = token; - let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text; - while (i + 1 < tokens.length && tokens[i + 1].type === 'text') { - textToken = tokens[++i]; - body += '\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text); - } - out += top ? this.renderer.paragraph(body) : body; - continue; - } - default: { - const errMsg = 'Token with "' + token.type + '" type was not found.'; - if (this.options.silent) { - console.error(errMsg); - return ''; - } - else { - throw new Error(errMsg); - } - } - } - } - return out; - } - /** - * Parse Inline Tokens - */ - parseInline(tokens, renderer) { - renderer = renderer || this.renderer; - let out = ''; - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i]; - // Run any renderer extensions - if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) { - const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token); - if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) { - out += ret || ''; - continue; - } - } - switch (token.type) { - case 'escape': { - const escapeToken = token; - out += renderer.text(escapeToken.text); - break; - } - case 'html': { - const tagToken = token; - out += renderer.html(tagToken.text); - break; - } - case 'link': { - const linkToken = token; - out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer)); - break; - } - case 'image': { - const imageToken = token; - out += renderer.image(imageToken.href, imageToken.title, imageToken.text); - break; - } - case 'strong': { - const strongToken = token; - out += renderer.strong(this.parseInline(strongToken.tokens, renderer)); - break; - } - case 'em': { - const emToken = token; - out += renderer.em(this.parseInline(emToken.tokens, renderer)); - break; - } - case 'codespan': { - const codespanToken = token; - out += renderer.codespan(codespanToken.text); - break; - } - case 'br': { - out += renderer.br(); - break; - } - case 'del': { - const delToken = token; - out += renderer.del(this.parseInline(delToken.tokens, renderer)); - break; - } - case 'text': { - const textToken = token; - out += renderer.text(textToken.text); - break; - } - default: { - const errMsg = 'Token with "' + token.type + '" type was not found.'; - if (this.options.silent) { - console.error(errMsg); - return ''; - } - else { - throw new Error(errMsg); - } - } - } - } - return out; - } -} - -class _Hooks { - options; - constructor(options) { - this.options = options || exports.defaults; - } - static passThroughHooks = new Set([ - 'preprocess', - 'postprocess', - 'processAllTokens' - ]); - /** - * Process markdown before marked - */ - preprocess(markdown) { - return markdown; - } - /** - * Process HTML after marked is finished - */ - postprocess(html) { - return html; - } - /** - * Process all tokens before walk tokens - */ - processAllTokens(tokens) { - return tokens; - } -} - -class Marked { - defaults = _getDefaults(); - options = this.setOptions; - parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse); - parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline); - Parser = _Parser; - Renderer = _Renderer; - TextRenderer = _TextRenderer; - Lexer = _Lexer; - Tokenizer = _Tokenizer; - Hooks = _Hooks; - constructor(...args) { - this.use(...args); - } - /** - * Run callback for every token - */ - walkTokens(tokens, callback) { - let values = []; - for (const token of tokens) { - values = values.concat(callback.call(this, token)); - switch (token.type) { - case 'table': { - const tableToken = token; - for (const cell of tableToken.header) { - values = values.concat(this.walkTokens(cell.tokens, callback)); - } - for (const row of tableToken.rows) { - for (const cell of row) { - values = values.concat(this.walkTokens(cell.tokens, callback)); - } - } - break; - } - case 'list': { - const listToken = token; - values = values.concat(this.walkTokens(listToken.items, callback)); - break; - } - default: { - const genericToken = token; - if (this.defaults.extensions?.childTokens?.[genericToken.type]) { - this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => { - const tokens = genericToken[childTokens].flat(Infinity); - values = values.concat(this.walkTokens(tokens, callback)); - }); - } - else if (genericToken.tokens) { - values = values.concat(this.walkTokens(genericToken.tokens, callback)); - } - } - } - } - return values; - } - use(...args) { - const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; - args.forEach((pack) => { - // copy options to new object - const opts = { ...pack }; - // set async to true if it was set to true before - opts.async = this.defaults.async || opts.async || false; - // ==-- Parse "addon" extensions --== // - if (pack.extensions) { - pack.extensions.forEach((ext) => { - if (!ext.name) { - throw new Error('extension name required'); - } - if ('renderer' in ext) { // Renderer extensions - const prevRenderer = extensions.renderers[ext.name]; - if (prevRenderer) { - // Replace extension with func to run new extension but fall back if false - extensions.renderers[ext.name] = function (...args) { - let ret = ext.renderer.apply(this, args); - if (ret === false) { - ret = prevRenderer.apply(this, args); - } - return ret; - }; - } - else { - extensions.renderers[ext.name] = ext.renderer; - } - } - if ('tokenizer' in ext) { // Tokenizer Extensions - if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { - throw new Error("extension level must be 'block' or 'inline'"); - } - const extLevel = extensions[ext.level]; - if (extLevel) { - extLevel.unshift(ext.tokenizer); - } - else { - extensions[ext.level] = [ext.tokenizer]; - } - if (ext.start) { // Function to check for start of token - if (ext.level === 'block') { - if (extensions.startBlock) { - extensions.startBlock.push(ext.start); - } - else { - extensions.startBlock = [ext.start]; - } - } - else if (ext.level === 'inline') { - if (extensions.startInline) { - extensions.startInline.push(ext.start); - } - else { - extensions.startInline = [ext.start]; - } - } - } - } - if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens - extensions.childTokens[ext.name] = ext.childTokens; - } - }); - opts.extensions = extensions; - } - // ==-- Parse "overwrite" extensions --== // - if (pack.renderer) { - const renderer = this.defaults.renderer || new _Renderer(this.defaults); - for (const prop in pack.renderer) { - if (!(prop in renderer)) { - throw new Error(`renderer '${prop}' does not exist`); - } - if (prop === 'options') { - // ignore options property - continue; - } - const rendererProp = prop; - const rendererFunc = pack.renderer[rendererProp]; - const prevRenderer = renderer[rendererProp]; - // Replace renderer with func to run extension, but fall back if false - renderer[rendererProp] = (...args) => { - let ret = rendererFunc.apply(renderer, args); - if (ret === false) { - ret = prevRenderer.apply(renderer, args); - } - return ret || ''; - }; - } - opts.renderer = renderer; - } - if (pack.tokenizer) { - const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); - for (const prop in pack.tokenizer) { - if (!(prop in tokenizer)) { - throw new Error(`tokenizer '${prop}' does not exist`); - } - if (['options', 'rules', 'lexer'].includes(prop)) { - // ignore options, rules, and lexer properties - continue; - } - const tokenizerProp = prop; - const tokenizerFunc = pack.tokenizer[tokenizerProp]; - const prevTokenizer = tokenizer[tokenizerProp]; - // Replace tokenizer with func to run extension, but fall back if false - // @ts-expect-error cannot type tokenizer function dynamically - tokenizer[tokenizerProp] = (...args) => { - let ret = tokenizerFunc.apply(tokenizer, args); - if (ret === false) { - ret = prevTokenizer.apply(tokenizer, args); - } - return ret; - }; - } - opts.tokenizer = tokenizer; - } - // ==-- Parse Hooks extensions --== // - if (pack.hooks) { - const hooks = this.defaults.hooks || new _Hooks(); - for (const prop in pack.hooks) { - if (!(prop in hooks)) { - throw new Error(`hook '${prop}' does not exist`); - } - if (prop === 'options') { - // ignore options property - continue; - } - const hooksProp = prop; - const hooksFunc = pack.hooks[hooksProp]; - const prevHook = hooks[hooksProp]; - if (_Hooks.passThroughHooks.has(prop)) { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (arg) => { - if (this.defaults.async) { - return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { - return prevHook.call(hooks, ret); - }); - } - const ret = hooksFunc.call(hooks, arg); - return prevHook.call(hooks, ret); - }; - } - else { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (...args) => { - let ret = hooksFunc.apply(hooks, args); - if (ret === false) { - ret = prevHook.apply(hooks, args); - } - return ret; - }; - } - } - opts.hooks = hooks; - } - // ==-- Parse WalkTokens extensions --== // - if (pack.walkTokens) { - const walkTokens = this.defaults.walkTokens; - const packWalktokens = pack.walkTokens; - opts.walkTokens = function (token) { - let values = []; - values.push(packWalktokens.call(this, token)); - if (walkTokens) { - values = values.concat(walkTokens.call(this, token)); - } - return values; - }; - } - this.defaults = { ...this.defaults, ...opts }; - }); - return this; - } - setOptions(opt) { - this.defaults = { ...this.defaults, ...opt }; - return this; - } - lexer(src, options) { - return _Lexer.lex(src, options ?? this.defaults); - } - parser(tokens, options) { - return _Parser.parse(tokens, options ?? this.defaults); - } - #parseMarkdown(lexer, parser) { - return (src, options) => { - const origOpt = { ...options }; - const opt = { ...this.defaults, ...origOpt }; - // Show warning if an extension set async to true but the parse was called with async: false - if (this.defaults.async === true && origOpt.async === false) { - if (!opt.silent) { - console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.'); - } - opt.async = true; - } - const throwError = this.#onError(!!opt.silent, !!opt.async); - // throw error in case of non string input - if (typeof src === 'undefined' || src === null) { - return throwError(new Error('marked(): input parameter is undefined or null')); - } - if (typeof src !== 'string') { - return throwError(new Error('marked(): input parameter is of type ' - + Object.prototype.toString.call(src) + ', string expected')); - } - if (opt.hooks) { - opt.hooks.options = opt; - } - if (opt.async) { - return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) - .then(src => lexer(src, opt)) - .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) - .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) - .then(tokens => parser(tokens, opt)) - .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) - .catch(throwError); - } - try { - if (opt.hooks) { - src = opt.hooks.preprocess(src); - } - let tokens = lexer(src, opt); - if (opt.hooks) { - tokens = opt.hooks.processAllTokens(tokens); - } - if (opt.walkTokens) { - this.walkTokens(tokens, opt.walkTokens); - } - let html = parser(tokens, opt); - if (opt.hooks) { - html = opt.hooks.postprocess(html); - } - return html; - } - catch (e) { - return throwError(e); - } - }; - } - #onError(silent, async) { - return (e) => { - e.message += '\nPlease report this to https://github.com/markedjs/marked.'; - if (silent) { - const msg = '

    An error occurred:

    '
    -                    + escape$1(e.message + '', true)
    -                    + '
    '; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } -} - -const markedInstance = new Marked(); -function marked(src, opt) { - return markedInstance.parse(src, opt); -} -/** - * Sets the default options. - * - * @param options Hash of options - */ -marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; -/** - * Gets the original marked default options. - */ -marked.getDefaults = _getDefaults; -marked.defaults = exports.defaults; -/** - * Use Extension - */ -marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; -}; -/** - * Run callback for every token - */ -marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); -}; -/** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ -marked.parseInline = markedInstance.parseInline; -/** - * Expose - */ -marked.Parser = _Parser; -marked.parser = _Parser.parse; -marked.Renderer = _Renderer; -marked.TextRenderer = _TextRenderer; -marked.Lexer = _Lexer; -marked.lexer = _Lexer.lex; -marked.Tokenizer = _Tokenizer; -marked.Hooks = _Hooks; -marked.parse = marked; -const options = marked.options; -const setOptions = marked.setOptions; -const use = marked.use; -const walkTokens = marked.walkTokens; -const parseInline = marked.parseInline; -const parse = marked; -const parser = _Parser.parse; -const lexer = _Lexer.lex; - -exports.Hooks = _Hooks; -exports.Lexer = _Lexer; -exports.Marked = Marked; -exports.Parser = _Parser; -exports.Renderer = _Renderer; -exports.TextRenderer = _TextRenderer; -exports.Tokenizer = _Tokenizer; -exports.getDefaults = _getDefaults; -exports.lexer = lexer; -exports.marked = marked; -exports.options = options; -exports.parse = parse; -exports.parseInline = parseInline; -exports.parser = parser; -exports.setOptions = setOptions; -exports.use = use; -exports.walkTokens = walkTokens; -//# sourceMappingURL=marked.cjs.map diff --git a/tmp/node_modules/marked/lib/marked.cjs.map b/tmp/node_modules/marked/lib/marked.cjs.map deleted file mode 100644 index 0e496a3..0000000 --- a/tmp/node_modules/marked/lib/marked.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.cjs","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote(quote) {\n return `
    \\n${quote}
    \\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return '
    \\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n listitem(text, task, checked) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return '';\n }\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text}`;\n }\n em(text) {\n return `${text}`;\n }\n codespan(text) {\n return `${text}`;\n }\n br() {\n return '
    ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["_defaults","escape"],"mappings":"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"} \ No newline at end of file diff --git a/tmp/node_modules/marked/lib/marked.d.cts b/tmp/node_modules/marked/lib/marked.d.cts deleted file mode 100644 index c26b2db..0000000 --- a/tmp/node_modules/marked/lib/marked.d.cts +++ /dev/null @@ -1,657 +0,0 @@ -// Generated by dts-bundle-generator v9.3.1 - -export type Token = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del | Tokens.Generic); -export declare namespace Tokens { - interface Space { - type: "space"; - raw: string; - } - interface Code { - type: "code"; - raw: string; - codeBlockStyle?: "indented" | undefined; - lang?: string | undefined; - text: string; - escaped?: boolean; - } - interface Heading { - type: "heading"; - raw: string; - depth: number; - text: string; - tokens: Token[]; - } - interface Table { - type: "table"; - raw: string; - align: Array<"center" | "left" | "right" | null>; - header: TableCell[]; - rows: TableCell[][]; - } - interface TableCell { - text: string; - tokens: Token[]; - } - interface Hr { - type: "hr"; - raw: string; - } - interface Blockquote { - type: "blockquote"; - raw: string; - text: string; - tokens: Token[]; - } - interface List { - type: "list"; - raw: string; - ordered: boolean; - start: number | ""; - loose: boolean; - items: ListItem[]; - } - interface ListItem { - type: "list_item"; - raw: string; - task: boolean; - checked?: boolean | undefined; - loose: boolean; - text: string; - tokens: Token[]; - } - interface Paragraph { - type: "paragraph"; - raw: string; - pre?: boolean | undefined; - text: string; - tokens: Token[]; - } - interface HTML { - type: "html"; - raw: string; - pre: boolean; - text: string; - block: boolean; - } - interface Text { - type: "text"; - raw: string; - text: string; - tokens?: Token[]; - } - interface Def { - type: "def"; - raw: string; - tag: string; - href: string; - title: string; - } - interface Escape { - type: "escape"; - raw: string; - text: string; - } - interface Tag { - type: "text" | "html"; - raw: string; - inLink: boolean; - inRawBlock: boolean; - text: string; - block: boolean; - } - interface Link { - type: "link"; - raw: string; - href: string; - title?: string | null; - text: string; - tokens: Token[]; - } - interface Image { - type: "image"; - raw: string; - href: string; - title: string | null; - text: string; - } - interface Strong { - type: "strong"; - raw: string; - text: string; - tokens: Token[]; - } - interface Em { - type: "em"; - raw: string; - text: string; - tokens: Token[]; - } - interface Codespan { - type: "codespan"; - raw: string; - text: string; - } - interface Br { - type: "br"; - raw: string; - } - interface Del { - type: "del"; - raw: string; - text: string; - tokens: Token[]; - } - interface Generic { - [index: string]: any; - type: string; - raw: string; - tokens?: Token[] | undefined; - } -} -export type Links = Record>; -export type TokensList = Token[] & { - links: Links; -}; -/** - * Renderer - */ -declare class _Renderer { - options: MarkedOptions; - constructor(options?: MarkedOptions); - code(code: string, infostring: string | undefined, escaped: boolean): string; - blockquote(quote: string): string; - html(html: string, block?: boolean): string; - heading(text: string, level: number, raw: string): string; - hr(): string; - list(body: string, ordered: boolean, start: number | ""): string; - listitem(text: string, task: boolean, checked: boolean): string; - checkbox(checked: boolean): string; - paragraph(text: string): string; - table(header: string, body: string): string; - tablerow(content: string): string; - tablecell(content: string, flags: { - header: boolean; - align: "center" | "left" | "right" | null; - }): string; - /** - * span level renderer - */ - strong(text: string): string; - em(text: string): string; - codespan(text: string): string; - br(): string; - del(text: string): string; - link(href: string, title: string | null | undefined, text: string): string; - image(href: string, title: string | null, text: string): string; - text(text: string): string; -} -/** - * TextRenderer - * returns only the textual part of the token - */ -declare class _TextRenderer { - strong(text: string): string; - em(text: string): string; - codespan(text: string): string; - del(text: string): string; - html(text: string): string; - text(text: string): string; - link(href: string, title: string | null | undefined, text: string): string; - image(href: string, title: string | null, text: string): string; - br(): string; -} -/** - * Parsing & Compiling - */ -declare class _Parser { - options: MarkedOptions; - renderer: _Renderer; - textRenderer: _TextRenderer; - constructor(options?: MarkedOptions); - /** - * Static Parse Method - */ - static parse(tokens: Token[], options?: MarkedOptions): string; - /** - * Static Parse Inline Method - */ - static parseInline(tokens: Token[], options?: MarkedOptions): string; - /** - * Parse Loop - */ - parse(tokens: Token[], top?: boolean): string; - /** - * Parse Inline Tokens - */ - parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string; -} -declare const blockNormal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; -}; -export type BlockKeys = keyof typeof blockNormal; -declare const inlineNormal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; -}; -export type InlineKeys = keyof typeof inlineNormal; -/** - * exports - */ -export declare const block: { - normal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; - }; - gfm: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - pedantic: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; -}; -export declare const inline: { - normal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; - }; - gfm: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - breaks: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - pedantic: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; -}; -export interface Rules { - block: Record; - inline: Record; -} -/** - * Tokenizer - */ -declare class _Tokenizer { - options: MarkedOptions; - rules: Rules; - lexer: _Lexer; - constructor(options?: MarkedOptions); - space(src: string): Tokens.Space | undefined; - code(src: string): Tokens.Code | undefined; - fences(src: string): Tokens.Code | undefined; - heading(src: string): Tokens.Heading | undefined; - hr(src: string): Tokens.Hr | undefined; - blockquote(src: string): Tokens.Blockquote | undefined; - list(src: string): Tokens.List | undefined; - html(src: string): Tokens.HTML | undefined; - def(src: string): Tokens.Def | undefined; - table(src: string): Tokens.Table | undefined; - lheading(src: string): Tokens.Heading | undefined; - paragraph(src: string): Tokens.Paragraph | undefined; - text(src: string): Tokens.Text | undefined; - escape(src: string): Tokens.Escape | undefined; - tag(src: string): Tokens.Tag | undefined; - link(src: string): Tokens.Link | Tokens.Image | undefined; - reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined; - emStrong(src: string, maskedSrc: string, prevChar?: string): Tokens.Em | Tokens.Strong | undefined; - codespan(src: string): Tokens.Codespan | undefined; - br(src: string): Tokens.Br | undefined; - del(src: string): Tokens.Del | undefined; - autolink(src: string): Tokens.Link | undefined; - url(src: string): Tokens.Link | undefined; - inlineText(src: string): Tokens.Text | undefined; -} -declare class _Hooks { - options: MarkedOptions; - constructor(options?: MarkedOptions); - static passThroughHooks: Set; - /** - * Process markdown before marked - */ - preprocess(markdown: string): string; - /** - * Process HTML after marked is finished - */ - postprocess(html: string): string; - /** - * Process all tokens before walk tokens - */ - processAllTokens(tokens: Token[] | TokensList): Token[] | TokensList; -} -export interface TokenizerThis { - lexer: _Lexer; -} -export type TokenizerExtensionFunction = (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; -export type TokenizerStartFunction = (this: TokenizerThis, src: string) => number | void; -export interface TokenizerExtension { - name: string; - level: "block" | "inline"; - start?: TokenizerStartFunction | undefined; - tokenizer: TokenizerExtensionFunction; - childTokens?: string[] | undefined; -} -export interface RendererThis { - parser: _Parser; -} -export type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; -export interface RendererExtension { - name: string; - renderer: RendererExtensionFunction; -} -export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); -export type HooksApi = Omit<_Hooks, "constructor" | "options">; -export type HooksObject = { - [K in keyof HooksApi]?: (...args: Parameters) => ReturnType | Promise>; -}; -export type RendererApi = Omit<_Renderer, "constructor" | "options">; -export type RendererObject = { - [K in keyof RendererApi]?: (...args: Parameters) => ReturnType | false; -}; -export type TokenizerApi = Omit<_Tokenizer, "constructor" | "options" | "rules" | "lexer">; -export type TokenizerObject = { - [K in keyof TokenizerApi]?: (...args: Parameters) => ReturnType | false; -}; -export interface MarkedExtension { - /** - * True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string. - */ - async?: boolean; - /** - * Enable GFM line breaks. This option requires the gfm option to be true. - */ - breaks?: boolean | undefined; - /** - * Add tokenizers and renderers to marked - */ - extensions?: TokenizerAndRendererExtension[] | undefined | null; - /** - * Enable GitHub flavored markdown. - */ - gfm?: boolean | undefined; - /** - * Hooks are methods that hook into some part of marked. - * preprocess is called to process markdown before sending it to marked. - * processAllTokens is called with the TokensList before walkTokens. - * postprocess is called to process html after marked has finished parsing. - */ - hooks?: HooksObject | undefined | null; - /** - * Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior. - */ - pedantic?: boolean | undefined; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: RendererObject | undefined | null; - /** - * Shows an HTML error message when rendering fails. - */ - silent?: boolean | undefined; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: TokenizerObject | undefined | null; - /** - * The walkTokens function gets called with every token. - * Child tokens are called before moving on to sibling tokens. - * Each token is passed by reference so updates are persisted when passed to the parser. - * The return value of the function is ignored. - */ - walkTokens?: ((token: Token) => void | Promise) | undefined | null; -} -export interface MarkedOptions extends Omit { - /** - * Hooks are methods that hook into some part of marked. - */ - hooks?: _Hooks | undefined | null; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: _Renderer | undefined | null; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: _Tokenizer | undefined | null; - /** - * Custom extensions - */ - extensions?: null | { - renderers: { - [name: string]: RendererExtensionFunction; - }; - childTokens: { - [name: string]: string[]; - }; - inline?: TokenizerExtensionFunction[]; - block?: TokenizerExtensionFunction[]; - startInline?: TokenizerStartFunction[]; - startBlock?: TokenizerStartFunction[]; - }; - /** - * walkTokens function returns array of values for Promise.all - */ - walkTokens?: null | ((token: Token) => void | Promise | (void | Promise)[]); -} -/** - * Block Lexer - */ -declare class _Lexer { - tokens: TokensList; - options: MarkedOptions; - state: { - inLink: boolean; - inRawBlock: boolean; - top: boolean; - }; - private tokenizer; - private inlineQueue; - constructor(options?: MarkedOptions); - /** - * Expose Rules - */ - static get rules(): { - block: { - normal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; - }; - gfm: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - pedantic: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - }; - inline: { - normal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; - }; - gfm: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - breaks: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - pedantic: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - }; - }; - /** - * Static Lex Method - */ - static lex(src: string, options?: MarkedOptions): TokensList; - /** - * Static Lex Inline Method - */ - static lexInline(src: string, options?: MarkedOptions): Token[]; - /** - * Preprocessing - */ - lex(src: string): TokensList; - /** - * Lexing - */ - blockTokens(src: string, tokens?: Token[]): Token[]; - blockTokens(src: string, tokens?: TokensList): TokensList; - inline(src: string, tokens?: Token[]): Token[]; - /** - * Lexing/Compiling - */ - inlineTokens(src: string, tokens?: Token[]): Token[]; -} -/** - * Gets the original marked default options. - */ -declare function _getDefaults(): MarkedOptions; -declare let _defaults: MarkedOptions; -export type MaybePromise = void | Promise; -export declare class Marked { - #private; - defaults: MarkedOptions; - options: (opt: MarkedOptions) => this; - parse: (src: string, options?: MarkedOptions | undefined | null) => string | Promise; - parseInline: (src: string, options?: MarkedOptions | undefined | null) => string | Promise; - Parser: typeof _Parser; - Renderer: typeof _Renderer; - TextRenderer: typeof _TextRenderer; - Lexer: typeof _Lexer; - Tokenizer: typeof _Tokenizer; - Hooks: typeof _Hooks; - constructor(...args: MarkedExtension[]); - /** - * Run callback for every token - */ - walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]): MaybePromise[]; - use(...args: MarkedExtension[]): this; - setOptions(opt: MarkedOptions): this; - lexer(src: string, options?: MarkedOptions): TokensList; - parser(tokens: Token[], options?: MarkedOptions): string; -} -/** - * Compiles markdown to HTML asynchronously. - * - * @param src String of markdown source to be compiled - * @param options Hash of options, having async: true - * @return Promise of string of compiled HTML - */ -export declare function marked(src: string, options: MarkedOptions & { - async: true; -}): Promise; -/** - * Compiles markdown to HTML. - * - * @param src String of markdown source to be compiled - * @param options Optional hash of options - * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions. - */ -export declare function marked(src: string, options?: MarkedOptions): string | Promise; -export declare namespace marked { - var options: (options: MarkedOptions) => typeof marked; - var setOptions: (options: MarkedOptions) => typeof marked; - var getDefaults: typeof _getDefaults; - var defaults: MarkedOptions; - var use: (...args: MarkedExtension[]) => typeof marked; - var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; - var parseInline: (src: string, options?: MarkedOptions | null | undefined) => string | Promise; - var Parser: typeof _Parser; - var parser: typeof _Parser.parse; - var Renderer: typeof _Renderer; - var TextRenderer: typeof _TextRenderer; - var Lexer: typeof _Lexer; - var lexer: typeof _Lexer.lex; - var Tokenizer: typeof _Tokenizer; - var Hooks: typeof _Hooks; - var parse: typeof marked; -} -export declare const options: (options: MarkedOptions) => typeof marked; -export declare const setOptions: (options: MarkedOptions) => typeof marked; -export declare const use: (...args: MarkedExtension[]) => typeof marked; -export declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; -export declare const parseInline: (src: string, options?: MarkedOptions | null | undefined) => string | Promise; -export declare const parse: typeof marked; -export declare const parser: typeof _Parser.parse; -export declare const lexer: typeof _Lexer.lex; - -export { - _Hooks as Hooks, - _Lexer as Lexer, - _Parser as Parser, - _Renderer as Renderer, - _TextRenderer as TextRenderer, - _Tokenizer as Tokenizer, - _defaults as defaults, - _getDefaults as getDefaults, -}; - -export {}; diff --git a/tmp/node_modules/marked/lib/marked.d.ts b/tmp/node_modules/marked/lib/marked.d.ts deleted file mode 100644 index c26b2db..0000000 --- a/tmp/node_modules/marked/lib/marked.d.ts +++ /dev/null @@ -1,657 +0,0 @@ -// Generated by dts-bundle-generator v9.3.1 - -export type Token = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del | Tokens.Generic); -export declare namespace Tokens { - interface Space { - type: "space"; - raw: string; - } - interface Code { - type: "code"; - raw: string; - codeBlockStyle?: "indented" | undefined; - lang?: string | undefined; - text: string; - escaped?: boolean; - } - interface Heading { - type: "heading"; - raw: string; - depth: number; - text: string; - tokens: Token[]; - } - interface Table { - type: "table"; - raw: string; - align: Array<"center" | "left" | "right" | null>; - header: TableCell[]; - rows: TableCell[][]; - } - interface TableCell { - text: string; - tokens: Token[]; - } - interface Hr { - type: "hr"; - raw: string; - } - interface Blockquote { - type: "blockquote"; - raw: string; - text: string; - tokens: Token[]; - } - interface List { - type: "list"; - raw: string; - ordered: boolean; - start: number | ""; - loose: boolean; - items: ListItem[]; - } - interface ListItem { - type: "list_item"; - raw: string; - task: boolean; - checked?: boolean | undefined; - loose: boolean; - text: string; - tokens: Token[]; - } - interface Paragraph { - type: "paragraph"; - raw: string; - pre?: boolean | undefined; - text: string; - tokens: Token[]; - } - interface HTML { - type: "html"; - raw: string; - pre: boolean; - text: string; - block: boolean; - } - interface Text { - type: "text"; - raw: string; - text: string; - tokens?: Token[]; - } - interface Def { - type: "def"; - raw: string; - tag: string; - href: string; - title: string; - } - interface Escape { - type: "escape"; - raw: string; - text: string; - } - interface Tag { - type: "text" | "html"; - raw: string; - inLink: boolean; - inRawBlock: boolean; - text: string; - block: boolean; - } - interface Link { - type: "link"; - raw: string; - href: string; - title?: string | null; - text: string; - tokens: Token[]; - } - interface Image { - type: "image"; - raw: string; - href: string; - title: string | null; - text: string; - } - interface Strong { - type: "strong"; - raw: string; - text: string; - tokens: Token[]; - } - interface Em { - type: "em"; - raw: string; - text: string; - tokens: Token[]; - } - interface Codespan { - type: "codespan"; - raw: string; - text: string; - } - interface Br { - type: "br"; - raw: string; - } - interface Del { - type: "del"; - raw: string; - text: string; - tokens: Token[]; - } - interface Generic { - [index: string]: any; - type: string; - raw: string; - tokens?: Token[] | undefined; - } -} -export type Links = Record>; -export type TokensList = Token[] & { - links: Links; -}; -/** - * Renderer - */ -declare class _Renderer { - options: MarkedOptions; - constructor(options?: MarkedOptions); - code(code: string, infostring: string | undefined, escaped: boolean): string; - blockquote(quote: string): string; - html(html: string, block?: boolean): string; - heading(text: string, level: number, raw: string): string; - hr(): string; - list(body: string, ordered: boolean, start: number | ""): string; - listitem(text: string, task: boolean, checked: boolean): string; - checkbox(checked: boolean): string; - paragraph(text: string): string; - table(header: string, body: string): string; - tablerow(content: string): string; - tablecell(content: string, flags: { - header: boolean; - align: "center" | "left" | "right" | null; - }): string; - /** - * span level renderer - */ - strong(text: string): string; - em(text: string): string; - codespan(text: string): string; - br(): string; - del(text: string): string; - link(href: string, title: string | null | undefined, text: string): string; - image(href: string, title: string | null, text: string): string; - text(text: string): string; -} -/** - * TextRenderer - * returns only the textual part of the token - */ -declare class _TextRenderer { - strong(text: string): string; - em(text: string): string; - codespan(text: string): string; - del(text: string): string; - html(text: string): string; - text(text: string): string; - link(href: string, title: string | null | undefined, text: string): string; - image(href: string, title: string | null, text: string): string; - br(): string; -} -/** - * Parsing & Compiling - */ -declare class _Parser { - options: MarkedOptions; - renderer: _Renderer; - textRenderer: _TextRenderer; - constructor(options?: MarkedOptions); - /** - * Static Parse Method - */ - static parse(tokens: Token[], options?: MarkedOptions): string; - /** - * Static Parse Inline Method - */ - static parseInline(tokens: Token[], options?: MarkedOptions): string; - /** - * Parse Loop - */ - parse(tokens: Token[], top?: boolean): string; - /** - * Parse Inline Tokens - */ - parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string; -} -declare const blockNormal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; -}; -export type BlockKeys = keyof typeof blockNormal; -declare const inlineNormal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; -}; -export type InlineKeys = keyof typeof inlineNormal; -/** - * exports - */ -export declare const block: { - normal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; - }; - gfm: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - pedantic: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; -}; -export declare const inline: { - normal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; - }; - gfm: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - breaks: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - pedantic: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; -}; -export interface Rules { - block: Record; - inline: Record; -} -/** - * Tokenizer - */ -declare class _Tokenizer { - options: MarkedOptions; - rules: Rules; - lexer: _Lexer; - constructor(options?: MarkedOptions); - space(src: string): Tokens.Space | undefined; - code(src: string): Tokens.Code | undefined; - fences(src: string): Tokens.Code | undefined; - heading(src: string): Tokens.Heading | undefined; - hr(src: string): Tokens.Hr | undefined; - blockquote(src: string): Tokens.Blockquote | undefined; - list(src: string): Tokens.List | undefined; - html(src: string): Tokens.HTML | undefined; - def(src: string): Tokens.Def | undefined; - table(src: string): Tokens.Table | undefined; - lheading(src: string): Tokens.Heading | undefined; - paragraph(src: string): Tokens.Paragraph | undefined; - text(src: string): Tokens.Text | undefined; - escape(src: string): Tokens.Escape | undefined; - tag(src: string): Tokens.Tag | undefined; - link(src: string): Tokens.Link | Tokens.Image | undefined; - reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined; - emStrong(src: string, maskedSrc: string, prevChar?: string): Tokens.Em | Tokens.Strong | undefined; - codespan(src: string): Tokens.Codespan | undefined; - br(src: string): Tokens.Br | undefined; - del(src: string): Tokens.Del | undefined; - autolink(src: string): Tokens.Link | undefined; - url(src: string): Tokens.Link | undefined; - inlineText(src: string): Tokens.Text | undefined; -} -declare class _Hooks { - options: MarkedOptions; - constructor(options?: MarkedOptions); - static passThroughHooks: Set; - /** - * Process markdown before marked - */ - preprocess(markdown: string): string; - /** - * Process HTML after marked is finished - */ - postprocess(html: string): string; - /** - * Process all tokens before walk tokens - */ - processAllTokens(tokens: Token[] | TokensList): Token[] | TokensList; -} -export interface TokenizerThis { - lexer: _Lexer; -} -export type TokenizerExtensionFunction = (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; -export type TokenizerStartFunction = (this: TokenizerThis, src: string) => number | void; -export interface TokenizerExtension { - name: string; - level: "block" | "inline"; - start?: TokenizerStartFunction | undefined; - tokenizer: TokenizerExtensionFunction; - childTokens?: string[] | undefined; -} -export interface RendererThis { - parser: _Parser; -} -export type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; -export interface RendererExtension { - name: string; - renderer: RendererExtensionFunction; -} -export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); -export type HooksApi = Omit<_Hooks, "constructor" | "options">; -export type HooksObject = { - [K in keyof HooksApi]?: (...args: Parameters) => ReturnType | Promise>; -}; -export type RendererApi = Omit<_Renderer, "constructor" | "options">; -export type RendererObject = { - [K in keyof RendererApi]?: (...args: Parameters) => ReturnType | false; -}; -export type TokenizerApi = Omit<_Tokenizer, "constructor" | "options" | "rules" | "lexer">; -export type TokenizerObject = { - [K in keyof TokenizerApi]?: (...args: Parameters) => ReturnType | false; -}; -export interface MarkedExtension { - /** - * True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string. - */ - async?: boolean; - /** - * Enable GFM line breaks. This option requires the gfm option to be true. - */ - breaks?: boolean | undefined; - /** - * Add tokenizers and renderers to marked - */ - extensions?: TokenizerAndRendererExtension[] | undefined | null; - /** - * Enable GitHub flavored markdown. - */ - gfm?: boolean | undefined; - /** - * Hooks are methods that hook into some part of marked. - * preprocess is called to process markdown before sending it to marked. - * processAllTokens is called with the TokensList before walkTokens. - * postprocess is called to process html after marked has finished parsing. - */ - hooks?: HooksObject | undefined | null; - /** - * Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior. - */ - pedantic?: boolean | undefined; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: RendererObject | undefined | null; - /** - * Shows an HTML error message when rendering fails. - */ - silent?: boolean | undefined; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: TokenizerObject | undefined | null; - /** - * The walkTokens function gets called with every token. - * Child tokens are called before moving on to sibling tokens. - * Each token is passed by reference so updates are persisted when passed to the parser. - * The return value of the function is ignored. - */ - walkTokens?: ((token: Token) => void | Promise) | undefined | null; -} -export interface MarkedOptions extends Omit { - /** - * Hooks are methods that hook into some part of marked. - */ - hooks?: _Hooks | undefined | null; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: _Renderer | undefined | null; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: _Tokenizer | undefined | null; - /** - * Custom extensions - */ - extensions?: null | { - renderers: { - [name: string]: RendererExtensionFunction; - }; - childTokens: { - [name: string]: string[]; - }; - inline?: TokenizerExtensionFunction[]; - block?: TokenizerExtensionFunction[]; - startInline?: TokenizerStartFunction[]; - startBlock?: TokenizerStartFunction[]; - }; - /** - * walkTokens function returns array of values for Promise.all - */ - walkTokens?: null | ((token: Token) => void | Promise | (void | Promise)[]); -} -/** - * Block Lexer - */ -declare class _Lexer { - tokens: TokensList; - options: MarkedOptions; - state: { - inLink: boolean; - inRawBlock: boolean; - top: boolean; - }; - private tokenizer; - private inlineQueue; - constructor(options?: MarkedOptions); - /** - * Expose Rules - */ - static get rules(): { - block: { - normal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; - }; - gfm: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - pedantic: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - }; - inline: { - normal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; - }; - gfm: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - breaks: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - pedantic: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - }; - }; - /** - * Static Lex Method - */ - static lex(src: string, options?: MarkedOptions): TokensList; - /** - * Static Lex Inline Method - */ - static lexInline(src: string, options?: MarkedOptions): Token[]; - /** - * Preprocessing - */ - lex(src: string): TokensList; - /** - * Lexing - */ - blockTokens(src: string, tokens?: Token[]): Token[]; - blockTokens(src: string, tokens?: TokensList): TokensList; - inline(src: string, tokens?: Token[]): Token[]; - /** - * Lexing/Compiling - */ - inlineTokens(src: string, tokens?: Token[]): Token[]; -} -/** - * Gets the original marked default options. - */ -declare function _getDefaults(): MarkedOptions; -declare let _defaults: MarkedOptions; -export type MaybePromise = void | Promise; -export declare class Marked { - #private; - defaults: MarkedOptions; - options: (opt: MarkedOptions) => this; - parse: (src: string, options?: MarkedOptions | undefined | null) => string | Promise; - parseInline: (src: string, options?: MarkedOptions | undefined | null) => string | Promise; - Parser: typeof _Parser; - Renderer: typeof _Renderer; - TextRenderer: typeof _TextRenderer; - Lexer: typeof _Lexer; - Tokenizer: typeof _Tokenizer; - Hooks: typeof _Hooks; - constructor(...args: MarkedExtension[]); - /** - * Run callback for every token - */ - walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]): MaybePromise[]; - use(...args: MarkedExtension[]): this; - setOptions(opt: MarkedOptions): this; - lexer(src: string, options?: MarkedOptions): TokensList; - parser(tokens: Token[], options?: MarkedOptions): string; -} -/** - * Compiles markdown to HTML asynchronously. - * - * @param src String of markdown source to be compiled - * @param options Hash of options, having async: true - * @return Promise of string of compiled HTML - */ -export declare function marked(src: string, options: MarkedOptions & { - async: true; -}): Promise; -/** - * Compiles markdown to HTML. - * - * @param src String of markdown source to be compiled - * @param options Optional hash of options - * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions. - */ -export declare function marked(src: string, options?: MarkedOptions): string | Promise; -export declare namespace marked { - var options: (options: MarkedOptions) => typeof marked; - var setOptions: (options: MarkedOptions) => typeof marked; - var getDefaults: typeof _getDefaults; - var defaults: MarkedOptions; - var use: (...args: MarkedExtension[]) => typeof marked; - var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; - var parseInline: (src: string, options?: MarkedOptions | null | undefined) => string | Promise; - var Parser: typeof _Parser; - var parser: typeof _Parser.parse; - var Renderer: typeof _Renderer; - var TextRenderer: typeof _TextRenderer; - var Lexer: typeof _Lexer; - var lexer: typeof _Lexer.lex; - var Tokenizer: typeof _Tokenizer; - var Hooks: typeof _Hooks; - var parse: typeof marked; -} -export declare const options: (options: MarkedOptions) => typeof marked; -export declare const setOptions: (options: MarkedOptions) => typeof marked; -export declare const use: (...args: MarkedExtension[]) => typeof marked; -export declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; -export declare const parseInline: (src: string, options?: MarkedOptions | null | undefined) => string | Promise; -export declare const parse: typeof marked; -export declare const parser: typeof _Parser.parse; -export declare const lexer: typeof _Lexer.lex; - -export { - _Hooks as Hooks, - _Lexer as Lexer, - _Parser as Parser, - _Renderer as Renderer, - _TextRenderer as TextRenderer, - _Tokenizer as Tokenizer, - _defaults as defaults, - _getDefaults as getDefaults, -}; - -export {}; diff --git a/tmp/node_modules/marked/lib/marked.esm.js b/tmp/node_modules/marked/lib/marked.esm.js deleted file mode 100644 index 5d758dc..0000000 --- a/tmp/node_modules/marked/lib/marked.esm.js +++ /dev/null @@ -1,2432 +0,0 @@ -/** - * marked v12.0.2 - a markdown parser - * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ - -/** - * DO NOT EDIT THIS FILE - * The code in this file is generated from files in ./src/ - */ - -/** - * Gets the original marked default options. - */ -function _getDefaults() { - return { - async: false, - breaks: false, - extensions: null, - gfm: true, - hooks: null, - pedantic: false, - renderer: null, - silent: false, - tokenizer: null, - walkTokens: null - }; -} -let _defaults = _getDefaults(); -function changeDefaults(newDefaults) { - _defaults = newDefaults; -} - -/** - * Helpers - */ -const escapeTest = /[&<>"']/; -const escapeReplace = new RegExp(escapeTest.source, 'g'); -const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; -const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); -const escapeReplacements = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' -}; -const getEscapeReplacement = (ch) => escapeReplacements[ch]; -function escape$1(html, encode) { - if (encode) { - if (escapeTest.test(html)) { - return html.replace(escapeReplace, getEscapeReplacement); - } - } - else { - if (escapeTestNoEncode.test(html)) { - return html.replace(escapeReplaceNoEncode, getEscapeReplacement); - } - } - return html; -} -const unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig; -function unescape(html) { - // explicitly match decimal, hex, and named HTML entities - return html.replace(unescapeTest, (_, n) => { - n = n.toLowerCase(); - if (n === 'colon') - return ':'; - if (n.charAt(0) === '#') { - return n.charAt(1) === 'x' - ? String.fromCharCode(parseInt(n.substring(2), 16)) - : String.fromCharCode(+n.substring(1)); - } - return ''; - }); -} -const caret = /(^|[^\[])\^/g; -function edit(regex, opt) { - let source = typeof regex === 'string' ? regex : regex.source; - opt = opt || ''; - const obj = { - replace: (name, val) => { - let valSource = typeof val === 'string' ? val : val.source; - valSource = valSource.replace(caret, '$1'); - source = source.replace(name, valSource); - return obj; - }, - getRegex: () => { - return new RegExp(source, opt); - } - }; - return obj; -} -function cleanUrl(href) { - try { - href = encodeURI(href).replace(/%25/g, '%'); - } - catch (e) { - return null; - } - return href; -} -const noopTest = { exec: () => null }; -function splitCells(tableRow, count) { - // ensure that every cell-delimiting pipe has a space - // before it to distinguish it from an escaped pipe - const row = tableRow.replace(/\|/g, (match, offset, str) => { - let escaped = false; - let curr = offset; - while (--curr >= 0 && str[curr] === '\\') - escaped = !escaped; - if (escaped) { - // odd number of slashes means | is escaped - // so we leave it alone - return '|'; - } - else { - // add space before unescaped | - return ' |'; - } - }), cells = row.split(/ \|/); - let i = 0; - // First/last cell in a row cannot be empty if it has no leading/trailing pipe - if (!cells[0].trim()) { - cells.shift(); - } - if (cells.length > 0 && !cells[cells.length - 1].trim()) { - cells.pop(); - } - if (count) { - if (cells.length > count) { - cells.splice(count); - } - else { - while (cells.length < count) - cells.push(''); - } - } - for (; i < cells.length; i++) { - // leading or trailing whitespace is ignored per the gfm spec - cells[i] = cells[i].trim().replace(/\\\|/g, '|'); - } - return cells; -} -/** - * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). - * /c*$/ is vulnerable to REDOS. - * - * @param str - * @param c - * @param invert Remove suffix of non-c chars instead. Default falsey. - */ -function rtrim(str, c, invert) { - const l = str.length; - if (l === 0) { - return ''; - } - // Length of suffix matching the invert condition. - let suffLen = 0; - // Step left until we fail to match the invert condition. - while (suffLen < l) { - const currChar = str.charAt(l - suffLen - 1); - if (currChar === c && !invert) { - suffLen++; - } - else if (currChar !== c && invert) { - suffLen++; - } - else { - break; - } - } - return str.slice(0, l - suffLen); -} -function findClosingBracket(str, b) { - if (str.indexOf(b[1]) === -1) { - return -1; - } - let level = 0; - for (let i = 0; i < str.length; i++) { - if (str[i] === '\\') { - i++; - } - else if (str[i] === b[0]) { - level++; - } - else if (str[i] === b[1]) { - level--; - if (level < 0) { - return i; - } - } - } - return -1; -} - -function outputLink(cap, link, raw, lexer) { - const href = link.href; - const title = link.title ? escape$1(link.title) : null; - const text = cap[1].replace(/\\([\[\]])/g, '$1'); - if (cap[0].charAt(0) !== '!') { - lexer.state.inLink = true; - const token = { - type: 'link', - raw, - href, - title, - text, - tokens: lexer.inlineTokens(text) - }; - lexer.state.inLink = false; - return token; - } - return { - type: 'image', - raw, - href, - title, - text: escape$1(text) - }; -} -function indentCodeCompensation(raw, text) { - const matchIndentToCode = raw.match(/^(\s+)(?:```)/); - if (matchIndentToCode === null) { - return text; - } - const indentToCode = matchIndentToCode[1]; - return text - .split('\n') - .map(node => { - const matchIndentInNode = node.match(/^\s+/); - if (matchIndentInNode === null) { - return node; - } - const [indentInNode] = matchIndentInNode; - if (indentInNode.length >= indentToCode.length) { - return node.slice(indentToCode.length); - } - return node; - }) - .join('\n'); -} -/** - * Tokenizer - */ -class _Tokenizer { - options; - rules; // set by the lexer - lexer; // set by the lexer - constructor(options) { - this.options = options || _defaults; - } - space(src) { - const cap = this.rules.block.newline.exec(src); - if (cap && cap[0].length > 0) { - return { - type: 'space', - raw: cap[0] - }; - } - } - code(src) { - const cap = this.rules.block.code.exec(src); - if (cap) { - const text = cap[0].replace(/^ {1,4}/gm, ''); - return { - type: 'code', - raw: cap[0], - codeBlockStyle: 'indented', - text: !this.options.pedantic - ? rtrim(text, '\n') - : text - }; - } - } - fences(src) { - const cap = this.rules.block.fences.exec(src); - if (cap) { - const raw = cap[0]; - const text = indentCodeCompensation(raw, cap[3] || ''); - return { - type: 'code', - raw, - lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], - text - }; - } - } - heading(src) { - const cap = this.rules.block.heading.exec(src); - if (cap) { - let text = cap[2].trim(); - // remove trailing #s - if (/#$/.test(text)) { - const trimmed = rtrim(text, '#'); - if (this.options.pedantic) { - text = trimmed.trim(); - } - else if (!trimmed || / $/.test(trimmed)) { - // CommonMark requires space before trailing #s - text = trimmed.trim(); - } - } - return { - type: 'heading', - raw: cap[0], - depth: cap[1].length, - text, - tokens: this.lexer.inline(text) - }; - } - } - hr(src) { - const cap = this.rules.block.hr.exec(src); - if (cap) { - return { - type: 'hr', - raw: cap[0] - }; - } - } - blockquote(src) { - const cap = this.rules.block.blockquote.exec(src); - if (cap) { - // precede setext continuation with 4 spaces so it isn't a setext - let text = cap[0].replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1'); - text = rtrim(text.replace(/^ *>[ \t]?/gm, ''), '\n'); - const top = this.lexer.state.top; - this.lexer.state.top = true; - const tokens = this.lexer.blockTokens(text); - this.lexer.state.top = top; - return { - type: 'blockquote', - raw: cap[0], - tokens, - text - }; - } - } - list(src) { - let cap = this.rules.block.list.exec(src); - if (cap) { - let bull = cap[1].trim(); - const isordered = bull.length > 1; - const list = { - type: 'list', - raw: '', - ordered: isordered, - start: isordered ? +bull.slice(0, -1) : '', - loose: false, - items: [] - }; - bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; - if (this.options.pedantic) { - bull = isordered ? bull : '[*+-]'; - } - // Get next list item - const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); - let raw = ''; - let itemContents = ''; - let endsWithBlankLine = false; - // Check if current bullet point can start a new List Item - while (src) { - let endEarly = false; - if (!(cap = itemRegex.exec(src))) { - break; - } - if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) - break; - } - raw = cap[0]; - src = src.substring(raw.length); - let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); - let nextLine = src.split('\n', 1)[0]; - let indent = 0; - if (this.options.pedantic) { - indent = 2; - itemContents = line.trimStart(); - } - else { - indent = cap[2].search(/[^ ]/); // Find first non-space char - indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent - itemContents = line.slice(indent); - indent += cap[1].length; - } - let blankLine = false; - if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line - raw += nextLine + '\n'; - src = src.substring(nextLine.length + 1); - endEarly = true; - } - if (!endEarly) { - const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); - const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); - const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); - const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); - // Check if following lines should be included in List Item - while (src) { - const rawLine = src.split('\n', 1)[0]; - nextLine = rawLine; - // Re-align to follow commonmark nesting rules - if (this.options.pedantic) { - nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); - } - // End list item if found code fences - if (fencesBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new heading - if (headingBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new bullet - if (nextBulletRegex.test(nextLine)) { - break; - } - // Horizontal rule found - if (hrRegex.test(src)) { - break; - } - if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible - itemContents += '\n' + nextLine.slice(indent); - } - else { - // not enough indentation - if (blankLine) { - break; - } - // paragraph continuation unless last line was a different block level element - if (line.search(/[^ ]/) >= 4) { // indented code block - break; - } - if (fencesBeginRegex.test(line)) { - break; - } - if (headingBeginRegex.test(line)) { - break; - } - if (hrRegex.test(line)) { - break; - } - itemContents += '\n' + nextLine; - } - if (!blankLine && !nextLine.trim()) { // Check if current line is blank - blankLine = true; - } - raw += rawLine + '\n'; - src = src.substring(rawLine.length + 1); - line = nextLine.slice(indent); - } - } - if (!list.loose) { - // If the previous item ended with a blank line, the list is loose - if (endsWithBlankLine) { - list.loose = true; - } - else if (/\n *\n *$/.test(raw)) { - endsWithBlankLine = true; - } - } - let istask = null; - let ischecked; - // Check for task list items - if (this.options.gfm) { - istask = /^\[[ xX]\] /.exec(itemContents); - if (istask) { - ischecked = istask[0] !== '[ ] '; - itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); - } - } - list.items.push({ - type: 'list_item', - raw, - task: !!istask, - checked: ischecked, - loose: false, - text: itemContents, - tokens: [] - }); - list.raw += raw; - } - // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic - list.items[list.items.length - 1].raw = raw.trimEnd(); - (list.items[list.items.length - 1]).text = itemContents.trimEnd(); - list.raw = list.raw.trimEnd(); - // Item child tokens handled here at end because we needed to have the final item to trim it first - for (let i = 0; i < list.items.length; i++) { - this.lexer.state.top = false; - list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); - if (!list.loose) { - // Check if list should be loose - const spacers = list.items[i].tokens.filter(t => t.type === 'space'); - const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); - list.loose = hasMultipleLineBreaks; - } - } - // Set all items to loose if list is loose - if (list.loose) { - for (let i = 0; i < list.items.length; i++) { - list.items[i].loose = true; - } - } - return list; - } - } - html(src) { - const cap = this.rules.block.html.exec(src); - if (cap) { - const token = { - type: 'html', - block: true, - raw: cap[0], - pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', - text: cap[0] - }; - return token; - } - } - def(src) { - const cap = this.rules.block.def.exec(src); - if (cap) { - const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); - const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; - const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; - return { - type: 'def', - tag, - raw: cap[0], - href, - title - }; - } - } - table(src) { - const cap = this.rules.block.table.exec(src); - if (!cap) { - return; - } - if (!/[:|]/.test(cap[2])) { - // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading - return; - } - const headers = splitCells(cap[1]); - const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); - const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; - const item = { - type: 'table', - raw: cap[0], - header: [], - align: [], - rows: [] - }; - if (headers.length !== aligns.length) { - // header and align columns must be equal, rows can be different. - return; - } - for (const align of aligns) { - if (/^ *-+: *$/.test(align)) { - item.align.push('right'); - } - else if (/^ *:-+: *$/.test(align)) { - item.align.push('center'); - } - else if (/^ *:-+ *$/.test(align)) { - item.align.push('left'); - } - else { - item.align.push(null); - } - } - for (const header of headers) { - item.header.push({ - text: header, - tokens: this.lexer.inline(header) - }); - } - for (const row of rows) { - item.rows.push(splitCells(row, item.header.length).map(cell => { - return { - text: cell, - tokens: this.lexer.inline(cell) - }; - })); - } - return item; - } - lheading(src) { - const cap = this.rules.block.lheading.exec(src); - if (cap) { - return { - type: 'heading', - raw: cap[0], - depth: cap[2].charAt(0) === '=' ? 1 : 2, - text: cap[1], - tokens: this.lexer.inline(cap[1]) - }; - } - } - paragraph(src) { - const cap = this.rules.block.paragraph.exec(src); - if (cap) { - const text = cap[1].charAt(cap[1].length - 1) === '\n' - ? cap[1].slice(0, -1) - : cap[1]; - return { - type: 'paragraph', - raw: cap[0], - text, - tokens: this.lexer.inline(text) - }; - } - } - text(src) { - const cap = this.rules.block.text.exec(src); - if (cap) { - return { - type: 'text', - raw: cap[0], - text: cap[0], - tokens: this.lexer.inline(cap[0]) - }; - } - } - escape(src) { - const cap = this.rules.inline.escape.exec(src); - if (cap) { - return { - type: 'escape', - raw: cap[0], - text: escape$1(cap[1]) - }; - } - } - tag(src) { - const cap = this.rules.inline.tag.exec(src); - if (cap) { - if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) { - this.lexer.state.inLink = false; - } - if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = true; - } - else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = false; - } - return { - type: 'html', - raw: cap[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: false, - text: cap[0] - }; - } - } - link(src) { - const cap = this.rules.inline.link.exec(src); - if (cap) { - const trimmedUrl = cap[2].trim(); - if (!this.options.pedantic && /^$/.test(trimmedUrl))) { - return; - } - // ending angle bracket cannot be escaped - const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); - if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { - return; - } - } - else { - // find closing parenthesis - const lastParenIndex = findClosingBracket(cap[2], '()'); - if (lastParenIndex > -1) { - const start = cap[0].indexOf('!') === 0 ? 5 : 4; - const linkLen = start + cap[1].length + lastParenIndex; - cap[2] = cap[2].substring(0, lastParenIndex); - cap[0] = cap[0].substring(0, linkLen).trim(); - cap[3] = ''; - } - } - let href = cap[2]; - let title = ''; - if (this.options.pedantic) { - // split pedantic href and title - const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); - if (link) { - href = link[1]; - title = link[3]; - } - } - else { - title = cap[3] ? cap[3].slice(1, -1) : ''; - } - href = href.trim(); - if (/^$/.test(trimmedUrl))) { - // pedantic allows starting angle bracket without ending angle bracket - href = href.slice(1); - } - else { - href = href.slice(1, -1); - } - } - return outputLink(cap, { - href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, - title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title - }, cap[0], this.lexer); - } - } - reflink(src, links) { - let cap; - if ((cap = this.rules.inline.reflink.exec(src)) - || (cap = this.rules.inline.nolink.exec(src))) { - const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); - const link = links[linkString.toLowerCase()]; - if (!link) { - const text = cap[0].charAt(0); - return { - type: 'text', - raw: text, - text - }; - } - return outputLink(cap, link, cap[0], this.lexer); - } - } - emStrong(src, maskedSrc, prevChar = '') { - let match = this.rules.inline.emStrongLDelim.exec(src); - if (!match) - return; - // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well - if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) - return; - const nextChar = match[1] || match[2] || ''; - if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { - // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) - const lLength = [...match[0]].length - 1; - let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; - const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; - endReg.lastIndex = 0; - // Clip maskedSrc to same section of string as src (move to lexer?) - maskedSrc = maskedSrc.slice(-1 * src.length + lLength); - while ((match = endReg.exec(maskedSrc)) != null) { - rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; - if (!rDelim) - continue; // skip single * in __abc*abc__ - rLength = [...rDelim].length; - if (match[3] || match[4]) { // found another Left Delim - delimTotal += rLength; - continue; - } - else if (match[5] || match[6]) { // either Left or Right Delim - if (lLength % 3 && !((lLength + rLength) % 3)) { - midDelimTotal += rLength; - continue; // CommonMark Emphasis Rules 9-10 - } - } - delimTotal -= rLength; - if (delimTotal > 0) - continue; // Haven't found enough closing delimiters - // Remove extra characters. *a*** -> *a* - rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); - // char length can be >1 for unicode characters; - const lastCharLength = [...match[0]][0].length; - const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); - // Create `em` if smallest delimiter has odd char count. *a*** - if (Math.min(lLength, rLength) % 2) { - const text = raw.slice(1, -1); - return { - type: 'em', - raw, - text, - tokens: this.lexer.inlineTokens(text) - }; - } - // Create 'strong' if smallest delimiter has even char count. **a*** - const text = raw.slice(2, -2); - return { - type: 'strong', - raw, - text, - tokens: this.lexer.inlineTokens(text) - }; - } - } - } - codespan(src) { - const cap = this.rules.inline.code.exec(src); - if (cap) { - let text = cap[2].replace(/\n/g, ' '); - const hasNonSpaceChars = /[^ ]/.test(text); - const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); - if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { - text = text.substring(1, text.length - 1); - } - text = escape$1(text, true); - return { - type: 'codespan', - raw: cap[0], - text - }; - } - } - br(src) { - const cap = this.rules.inline.br.exec(src); - if (cap) { - return { - type: 'br', - raw: cap[0] - }; - } - } - del(src) { - const cap = this.rules.inline.del.exec(src); - if (cap) { - return { - type: 'del', - raw: cap[0], - text: cap[2], - tokens: this.lexer.inlineTokens(cap[2]) - }; - } - } - autolink(src) { - const cap = this.rules.inline.autolink.exec(src); - if (cap) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[1]); - href = 'mailto:' + text; - } - else { - text = escape$1(cap[1]); - href = text; - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text - } - ] - }; - } - } - url(src) { - let cap; - if (cap = this.rules.inline.url.exec(src)) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[0]); - href = 'mailto:' + text; - } - else { - // do extended autolink path validation - let prevCapZero; - do { - prevCapZero = cap[0]; - cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; - } while (prevCapZero !== cap[0]); - text = escape$1(cap[0]); - if (cap[1] === 'www.') { - href = 'http://' + cap[0]; - } - else { - href = cap[0]; - } - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text - } - ] - }; - } - } - inlineText(src) { - const cap = this.rules.inline.text.exec(src); - if (cap) { - let text; - if (this.lexer.state.inRawBlock) { - text = cap[0]; - } - else { - text = escape$1(cap[0]); - } - return { - type: 'text', - raw: cap[0], - text - }; - } - } -} - -/** - * Block-Level Grammar - */ -const newline = /^(?: *(?:\n|$))+/; -const blockCode = /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/; -const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; -const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; -const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; -const bullet = /(?:[*+-]|\d{1,9}[.)])/; -const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) - .replace(/bull/g, bullet) // lists can interrupt - .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt - .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt - .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt - .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt - .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt - .getRegex(); -const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; -const blockText = /^[^\n]+/; -const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; -const def = edit(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/) - .replace('label', _blockLabel) - .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) - .getRegex(); -const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) - .replace(/bull/g, bullet) - .getRegex(); -const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' - + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' - + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' - + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' - + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' - + '|tr|track|ul'; -const _comment = /|$))/; -const html = edit('^ {0,3}(?:' // optional indentation - + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) - + '|comment[^\\n]*(\\n+|$)' // (2) - + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) - + '|\\n*|$)' // (4) - + '|\\n*|$)' // (5) - + '|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6) - + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag - + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag - + ')', 'i') - .replace('comment', _comment) - .replace('tag', _tag) - .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) - .getRegex(); -const paragraph = edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(); -const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) - .replace('paragraph', paragraph) - .getRegex(); -/** - * Normal Block Grammar - */ -const blockNormal = { - blockquote, - code: blockCode, - def, - fences, - heading, - hr, - html, - lheading, - list, - newline, - paragraph, - table: noopTest, - text: blockText -}; -/** - * GFM Block Grammar - */ -const gfmTable = edit('^ *([^\\n ].*)\\n' // Header - + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align - + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('blockquote', ' {0,3}>') - .replace('code', ' {4}[^\\n]') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // tables can be interrupted by type (6) html blocks - .getRegex(); -const blockGfm = { - ...blockNormal, - table: gfmTable, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('table', gfmTable) // interrupt paragraphs with table - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex() -}; -/** - * Pedantic grammar (original John Gruber's loose markdown specification) - */ -const blockPedantic = { - ...blockNormal, - html: edit('^ *(?:comment *(?:\\n|\\s*$)' - + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag - + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') - .replace('comment', _comment) - .replace(/tag/g, '(?!(?:' - + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' - + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' - + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') - .getRegex(), - def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, - heading: /^(#{1,6})(.*)(?:\n+|$)/, - fences: noopTest, // fences not supported - lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' *#{1,6} *[^\n]') - .replace('lheading', lheading) - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('|fences', '') - .replace('|list', '') - .replace('|html', '') - .replace('|tag', '') - .getRegex() -}; -/** - * Inline-Level Grammar - */ -const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; -const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; -const br = /^( {2,}|\\)\n(?!\s*$)/; -const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ -const blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g; -const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') - .replace(/punct/g, _punctuation) - .getRegex(); -const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong - + '|[^*]+(?=[^*])' // Consume to delim - + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter - + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter - + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter - + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter - + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter - + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); -// (6) Not allowed for _ -const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong - + '|[^_]+(?=[^_])' // Consume to delim - + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter - + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter - + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter - + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter - + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); -const anyPunctuation = edit(/\\([punct])/, 'gu') - .replace(/punct/g, _punctuation) - .getRegex(); -const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) - .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) - .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) - .getRegex(); -const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); -const tag = edit('^comment' - + '|^' // self-closing tag - + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag - + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. - + '|^' // declaration, e.g. - + '|^') // CDATA section - .replace('comment', _inlineComment) - .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) - .getRegex(); -const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; -const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) - .replace('label', _inlineLabel) - .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) - .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) - .getRegex(); -const reflink = edit(/^!?\[(label)\]\[(ref)\]/) - .replace('label', _inlineLabel) - .replace('ref', _blockLabel) - .getRegex(); -const nolink = edit(/^!?\[(ref)\](?:\[\])?/) - .replace('ref', _blockLabel) - .getRegex(); -const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') - .replace('reflink', reflink) - .replace('nolink', nolink) - .getRegex(); -/** - * Normal Inline Grammar - */ -const inlineNormal = { - _backpedal: noopTest, // only used for GFM url - anyPunctuation, - autolink, - blockSkip, - br, - code: inlineCode, - del: noopTest, - emStrongLDelim, - emStrongRDelimAst, - emStrongRDelimUnd, - escape, - link, - nolink, - punctuation, - reflink, - reflinkSearch, - tag, - text: inlineText, - url: noopTest -}; -/** - * Pedantic Inline Grammar - */ -const inlinePedantic = { - ...inlineNormal, - link: edit(/^!?\[(label)\]\((.*?)\)/) - .replace('label', _inlineLabel) - .getRegex(), - reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) - .replace('label', _inlineLabel) - .getRegex() -}; -/** - * GFM Inline Grammar - */ -const inlineGfm = { - ...inlineNormal, - escape: edit(escape).replace('])', '~|])').getRegex(), - url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') - .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) - .getRegex(), - _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, - del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, - text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { - return leading + ' '.repeat(tabs.length); - }); - } - let token; - let lastToken; - let cutSrc; - let lastParagraphClipped; - while (src) { - if (this.options.extensions - && this.options.extensions.block - && this.options.extensions.block.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // newline - if (token = this.tokenizer.space(src)) { - src = src.substring(token.raw.length); - if (token.raw.length === 1 && tokens.length > 0) { - // if there's a single \n as a spacer, it's terminating the last line, - // so move it there so that we don't get unnecessary paragraph tags - tokens[tokens.length - 1].raw += '\n'; - } - else { - tokens.push(token); - } - continue; - } - // code - if (token = this.tokenizer.code(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - // An indented code block cannot interrupt a paragraph. - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - // fences - if (token = this.tokenizer.fences(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // heading - if (token = this.tokenizer.heading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // hr - if (token = this.tokenizer.hr(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // blockquote - if (token = this.tokenizer.blockquote(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // list - if (token = this.tokenizer.list(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // html - if (token = this.tokenizer.html(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // def - if (token = this.tokenizer.def(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.raw; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else if (!this.tokens.links[token.tag]) { - this.tokens.links[token.tag] = { - href: token.href, - title: token.title - }; - } - continue; - } - // table (gfm) - if (token = this.tokenizer.table(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // lheading - if (token = this.tokenizer.lheading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // top-level paragraph - // prevent paragraph consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startBlock) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startBlock.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { - lastToken = tokens[tokens.length - 1]; - if (lastParagraphClipped && lastToken.type === 'paragraph') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - lastParagraphClipped = (cutSrc.length !== src.length); - src = src.substring(token.raw.length); - continue; - } - // text - if (token = this.tokenizer.text(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - this.state.top = true; - return tokens; - } - inline(src, tokens = []) { - this.inlineQueue.push({ src, tokens }); - return tokens; - } - /** - * Lexing/Compiling - */ - inlineTokens(src, tokens = []) { - let token, lastToken, cutSrc; - // String with links masked to avoid interference with em and strong - let maskedSrc = src; - let match; - let keepPrevChar, prevChar; - // Mask out reflinks - if (this.tokens.links) { - const links = Object.keys(this.tokens.links); - if (links.length > 0) { - while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { - if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); - } - } - } - } - // Mask out other blocks - while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); - } - // Mask out escaped characters - while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); - } - while (src) { - if (!keepPrevChar) { - prevChar = ''; - } - keepPrevChar = false; - // extensions - if (this.options.extensions - && this.options.extensions.inline - && this.options.extensions.inline.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // escape - if (token = this.tokenizer.escape(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // tag - if (token = this.tokenizer.tag(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // link - if (token = this.tokenizer.link(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // reflink, nolink - if (token = this.tokenizer.reflink(src, this.tokens.links)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // em & strong - if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // code - if (token = this.tokenizer.codespan(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // br - if (token = this.tokenizer.br(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // del (gfm) - if (token = this.tokenizer.del(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // autolink - if (token = this.tokenizer.autolink(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // url (gfm) - if (!this.state.inLink && (token = this.tokenizer.url(src))) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // text - // prevent inlineText consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startInline) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startInline.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (token = this.tokenizer.inlineText(cutSrc)) { - src = src.substring(token.raw.length); - if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started - prevChar = token.raw.slice(-1); - } - keepPrevChar = true; - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - return tokens; - } -} - -/** - * Renderer - */ -class _Renderer { - options; - constructor(options) { - this.options = options || _defaults; - } - code(code, infostring, escaped) { - const lang = (infostring || '').match(/^\S*/)?.[0]; - code = code.replace(/\n$/, '') + '\n'; - if (!lang) { - return '
    '
    -                + (escaped ? code : escape$1(code, true))
    -                + '
    \n'; - } - return '
    '
    -            + (escaped ? code : escape$1(code, true))
    -            + '
    \n'; - } - blockquote(quote) { - return `
    \n${quote}
    \n`; - } - html(html, block) { - return html; - } - heading(text, level, raw) { - // ignore IDs - return `${text}\n`; - } - hr() { - return '
    \n'; - } - list(body, ordered, start) { - const type = ordered ? 'ol' : 'ul'; - const startatt = (ordered && start !== 1) ? (' start="' + start + '"') : ''; - return '<' + type + startatt + '>\n' + body + '\n'; - } - listitem(text, task, checked) { - return `
  • ${text}
  • \n`; - } - checkbox(checked) { - return ''; - } - paragraph(text) { - return `

    ${text}

    \n`; - } - table(header, body) { - if (body) - body = `${body}`; - return '\n' - + '\n' - + header - + '\n' - + body - + '
    \n'; - } - tablerow(content) { - return `\n${content}\n`; - } - tablecell(content, flags) { - const type = flags.header ? 'th' : 'td'; - const tag = flags.align - ? `<${type} align="${flags.align}">` - : `<${type}>`; - return tag + content + `\n`; - } - /** - * span level renderer - */ - strong(text) { - return `${text}`; - } - em(text) { - return `${text}`; - } - codespan(text) { - return `${text}`; - } - br() { - return '
    '; - } - del(text) { - return `${text}`; - } - link(href, title, text) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = '
    '; - return out; - } - image(href, title, text) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = `${text} 0 && item.tokens[0].type === 'paragraph') { - item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; - if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { - item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; - } - } - else { - item.tokens.unshift({ - type: 'text', - text: checkbox + ' ' - }); - } - } - else { - itemBody += checkbox + ' '; - } - } - itemBody += this.parse(item.tokens, loose); - body += this.renderer.listitem(itemBody, task, !!checked); - } - out += this.renderer.list(body, ordered, start); - continue; - } - case 'html': { - const htmlToken = token; - out += this.renderer.html(htmlToken.text, htmlToken.block); - continue; - } - case 'paragraph': { - const paragraphToken = token; - out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens)); - continue; - } - case 'text': { - let textToken = token; - let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text; - while (i + 1 < tokens.length && tokens[i + 1].type === 'text') { - textToken = tokens[++i]; - body += '\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text); - } - out += top ? this.renderer.paragraph(body) : body; - continue; - } - default: { - const errMsg = 'Token with "' + token.type + '" type was not found.'; - if (this.options.silent) { - console.error(errMsg); - return ''; - } - else { - throw new Error(errMsg); - } - } - } - } - return out; - } - /** - * Parse Inline Tokens - */ - parseInline(tokens, renderer) { - renderer = renderer || this.renderer; - let out = ''; - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i]; - // Run any renderer extensions - if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) { - const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token); - if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) { - out += ret || ''; - continue; - } - } - switch (token.type) { - case 'escape': { - const escapeToken = token; - out += renderer.text(escapeToken.text); - break; - } - case 'html': { - const tagToken = token; - out += renderer.html(tagToken.text); - break; - } - case 'link': { - const linkToken = token; - out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer)); - break; - } - case 'image': { - const imageToken = token; - out += renderer.image(imageToken.href, imageToken.title, imageToken.text); - break; - } - case 'strong': { - const strongToken = token; - out += renderer.strong(this.parseInline(strongToken.tokens, renderer)); - break; - } - case 'em': { - const emToken = token; - out += renderer.em(this.parseInline(emToken.tokens, renderer)); - break; - } - case 'codespan': { - const codespanToken = token; - out += renderer.codespan(codespanToken.text); - break; - } - case 'br': { - out += renderer.br(); - break; - } - case 'del': { - const delToken = token; - out += renderer.del(this.parseInline(delToken.tokens, renderer)); - break; - } - case 'text': { - const textToken = token; - out += renderer.text(textToken.text); - break; - } - default: { - const errMsg = 'Token with "' + token.type + '" type was not found.'; - if (this.options.silent) { - console.error(errMsg); - return ''; - } - else { - throw new Error(errMsg); - } - } - } - } - return out; - } -} - -class _Hooks { - options; - constructor(options) { - this.options = options || _defaults; - } - static passThroughHooks = new Set([ - 'preprocess', - 'postprocess', - 'processAllTokens' - ]); - /** - * Process markdown before marked - */ - preprocess(markdown) { - return markdown; - } - /** - * Process HTML after marked is finished - */ - postprocess(html) { - return html; - } - /** - * Process all tokens before walk tokens - */ - processAllTokens(tokens) { - return tokens; - } -} - -class Marked { - defaults = _getDefaults(); - options = this.setOptions; - parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse); - parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline); - Parser = _Parser; - Renderer = _Renderer; - TextRenderer = _TextRenderer; - Lexer = _Lexer; - Tokenizer = _Tokenizer; - Hooks = _Hooks; - constructor(...args) { - this.use(...args); - } - /** - * Run callback for every token - */ - walkTokens(tokens, callback) { - let values = []; - for (const token of tokens) { - values = values.concat(callback.call(this, token)); - switch (token.type) { - case 'table': { - const tableToken = token; - for (const cell of tableToken.header) { - values = values.concat(this.walkTokens(cell.tokens, callback)); - } - for (const row of tableToken.rows) { - for (const cell of row) { - values = values.concat(this.walkTokens(cell.tokens, callback)); - } - } - break; - } - case 'list': { - const listToken = token; - values = values.concat(this.walkTokens(listToken.items, callback)); - break; - } - default: { - const genericToken = token; - if (this.defaults.extensions?.childTokens?.[genericToken.type]) { - this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => { - const tokens = genericToken[childTokens].flat(Infinity); - values = values.concat(this.walkTokens(tokens, callback)); - }); - } - else if (genericToken.tokens) { - values = values.concat(this.walkTokens(genericToken.tokens, callback)); - } - } - } - } - return values; - } - use(...args) { - const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; - args.forEach((pack) => { - // copy options to new object - const opts = { ...pack }; - // set async to true if it was set to true before - opts.async = this.defaults.async || opts.async || false; - // ==-- Parse "addon" extensions --== // - if (pack.extensions) { - pack.extensions.forEach((ext) => { - if (!ext.name) { - throw new Error('extension name required'); - } - if ('renderer' in ext) { // Renderer extensions - const prevRenderer = extensions.renderers[ext.name]; - if (prevRenderer) { - // Replace extension with func to run new extension but fall back if false - extensions.renderers[ext.name] = function (...args) { - let ret = ext.renderer.apply(this, args); - if (ret === false) { - ret = prevRenderer.apply(this, args); - } - return ret; - }; - } - else { - extensions.renderers[ext.name] = ext.renderer; - } - } - if ('tokenizer' in ext) { // Tokenizer Extensions - if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { - throw new Error("extension level must be 'block' or 'inline'"); - } - const extLevel = extensions[ext.level]; - if (extLevel) { - extLevel.unshift(ext.tokenizer); - } - else { - extensions[ext.level] = [ext.tokenizer]; - } - if (ext.start) { // Function to check for start of token - if (ext.level === 'block') { - if (extensions.startBlock) { - extensions.startBlock.push(ext.start); - } - else { - extensions.startBlock = [ext.start]; - } - } - else if (ext.level === 'inline') { - if (extensions.startInline) { - extensions.startInline.push(ext.start); - } - else { - extensions.startInline = [ext.start]; - } - } - } - } - if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens - extensions.childTokens[ext.name] = ext.childTokens; - } - }); - opts.extensions = extensions; - } - // ==-- Parse "overwrite" extensions --== // - if (pack.renderer) { - const renderer = this.defaults.renderer || new _Renderer(this.defaults); - for (const prop in pack.renderer) { - if (!(prop in renderer)) { - throw new Error(`renderer '${prop}' does not exist`); - } - if (prop === 'options') { - // ignore options property - continue; - } - const rendererProp = prop; - const rendererFunc = pack.renderer[rendererProp]; - const prevRenderer = renderer[rendererProp]; - // Replace renderer with func to run extension, but fall back if false - renderer[rendererProp] = (...args) => { - let ret = rendererFunc.apply(renderer, args); - if (ret === false) { - ret = prevRenderer.apply(renderer, args); - } - return ret || ''; - }; - } - opts.renderer = renderer; - } - if (pack.tokenizer) { - const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); - for (const prop in pack.tokenizer) { - if (!(prop in tokenizer)) { - throw new Error(`tokenizer '${prop}' does not exist`); - } - if (['options', 'rules', 'lexer'].includes(prop)) { - // ignore options, rules, and lexer properties - continue; - } - const tokenizerProp = prop; - const tokenizerFunc = pack.tokenizer[tokenizerProp]; - const prevTokenizer = tokenizer[tokenizerProp]; - // Replace tokenizer with func to run extension, but fall back if false - // @ts-expect-error cannot type tokenizer function dynamically - tokenizer[tokenizerProp] = (...args) => { - let ret = tokenizerFunc.apply(tokenizer, args); - if (ret === false) { - ret = prevTokenizer.apply(tokenizer, args); - } - return ret; - }; - } - opts.tokenizer = tokenizer; - } - // ==-- Parse Hooks extensions --== // - if (pack.hooks) { - const hooks = this.defaults.hooks || new _Hooks(); - for (const prop in pack.hooks) { - if (!(prop in hooks)) { - throw new Error(`hook '${prop}' does not exist`); - } - if (prop === 'options') { - // ignore options property - continue; - } - const hooksProp = prop; - const hooksFunc = pack.hooks[hooksProp]; - const prevHook = hooks[hooksProp]; - if (_Hooks.passThroughHooks.has(prop)) { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (arg) => { - if (this.defaults.async) { - return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { - return prevHook.call(hooks, ret); - }); - } - const ret = hooksFunc.call(hooks, arg); - return prevHook.call(hooks, ret); - }; - } - else { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (...args) => { - let ret = hooksFunc.apply(hooks, args); - if (ret === false) { - ret = prevHook.apply(hooks, args); - } - return ret; - }; - } - } - opts.hooks = hooks; - } - // ==-- Parse WalkTokens extensions --== // - if (pack.walkTokens) { - const walkTokens = this.defaults.walkTokens; - const packWalktokens = pack.walkTokens; - opts.walkTokens = function (token) { - let values = []; - values.push(packWalktokens.call(this, token)); - if (walkTokens) { - values = values.concat(walkTokens.call(this, token)); - } - return values; - }; - } - this.defaults = { ...this.defaults, ...opts }; - }); - return this; - } - setOptions(opt) { - this.defaults = { ...this.defaults, ...opt }; - return this; - } - lexer(src, options) { - return _Lexer.lex(src, options ?? this.defaults); - } - parser(tokens, options) { - return _Parser.parse(tokens, options ?? this.defaults); - } - #parseMarkdown(lexer, parser) { - return (src, options) => { - const origOpt = { ...options }; - const opt = { ...this.defaults, ...origOpt }; - // Show warning if an extension set async to true but the parse was called with async: false - if (this.defaults.async === true && origOpt.async === false) { - if (!opt.silent) { - console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.'); - } - opt.async = true; - } - const throwError = this.#onError(!!opt.silent, !!opt.async); - // throw error in case of non string input - if (typeof src === 'undefined' || src === null) { - return throwError(new Error('marked(): input parameter is undefined or null')); - } - if (typeof src !== 'string') { - return throwError(new Error('marked(): input parameter is of type ' - + Object.prototype.toString.call(src) + ', string expected')); - } - if (opt.hooks) { - opt.hooks.options = opt; - } - if (opt.async) { - return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) - .then(src => lexer(src, opt)) - .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) - .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) - .then(tokens => parser(tokens, opt)) - .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) - .catch(throwError); - } - try { - if (opt.hooks) { - src = opt.hooks.preprocess(src); - } - let tokens = lexer(src, opt); - if (opt.hooks) { - tokens = opt.hooks.processAllTokens(tokens); - } - if (opt.walkTokens) { - this.walkTokens(tokens, opt.walkTokens); - } - let html = parser(tokens, opt); - if (opt.hooks) { - html = opt.hooks.postprocess(html); - } - return html; - } - catch (e) { - return throwError(e); - } - }; - } - #onError(silent, async) { - return (e) => { - e.message += '\nPlease report this to https://github.com/markedjs/marked.'; - if (silent) { - const msg = '

    An error occurred:

    '
    -                    + escape$1(e.message + '', true)
    -                    + '
    '; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } -} - -const markedInstance = new Marked(); -function marked(src, opt) { - return markedInstance.parse(src, opt); -} -/** - * Sets the default options. - * - * @param options Hash of options - */ -marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; -/** - * Gets the original marked default options. - */ -marked.getDefaults = _getDefaults; -marked.defaults = _defaults; -/** - * Use Extension - */ -marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; -}; -/** - * Run callback for every token - */ -marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); -}; -/** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ -marked.parseInline = markedInstance.parseInline; -/** - * Expose - */ -marked.Parser = _Parser; -marked.parser = _Parser.parse; -marked.Renderer = _Renderer; -marked.TextRenderer = _TextRenderer; -marked.Lexer = _Lexer; -marked.lexer = _Lexer.lex; -marked.Tokenizer = _Tokenizer; -marked.Hooks = _Hooks; -marked.parse = marked; -const options = marked.options; -const setOptions = marked.setOptions; -const use = marked.use; -const walkTokens = marked.walkTokens; -const parseInline = marked.parseInline; -const parse = marked; -const parser = _Parser.parse; -const lexer = _Lexer.lex; - -export { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens }; -//# sourceMappingURL=marked.esm.js.map diff --git a/tmp/node_modules/marked/lib/marked.esm.js.map b/tmp/node_modules/marked/lib/marked.esm.js.map deleted file mode 100644 index dc74678..0000000 --- a/tmp/node_modules/marked/lib/marked.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.esm.js","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote(quote) {\n return `
    \\n${quote}
    \\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return '
    \\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n listitem(text, task, checked) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return '';\n }\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text}`;\n }\n em(text) {\n return `${text}`;\n }\n codespan(text) {\n return `${text}`;\n }\n br() {\n return '
    ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["escape"],"mappings":"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"} \ No newline at end of file diff --git a/tmp/node_modules/marked/lib/marked.umd.js b/tmp/node_modules/marked/lib/marked.umd.js deleted file mode 100644 index 1b2a3f7..0000000 --- a/tmp/node_modules/marked/lib/marked.umd.js +++ /dev/null @@ -1,2456 +0,0 @@ -/** - * marked v12.0.2 - a markdown parser - * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ - -/** - * DO NOT EDIT THIS FILE - * The code in this file is generated from files in ./src/ - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {})); -})(this, (function (exports) { 'use strict'; - - /** - * Gets the original marked default options. - */ - function _getDefaults() { - return { - async: false, - breaks: false, - extensions: null, - gfm: true, - hooks: null, - pedantic: false, - renderer: null, - silent: false, - tokenizer: null, - walkTokens: null - }; - } - exports.defaults = _getDefaults(); - function changeDefaults(newDefaults) { - exports.defaults = newDefaults; - } - - /** - * Helpers - */ - const escapeTest = /[&<>"']/; - const escapeReplace = new RegExp(escapeTest.source, 'g'); - const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; - const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); - const escapeReplacements = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - const getEscapeReplacement = (ch) => escapeReplacements[ch]; - function escape$1(html, encode) { - if (encode) { - if (escapeTest.test(html)) { - return html.replace(escapeReplace, getEscapeReplacement); - } - } - else { - if (escapeTestNoEncode.test(html)) { - return html.replace(escapeReplaceNoEncode, getEscapeReplacement); - } - } - return html; - } - const unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig; - function unescape(html) { - // explicitly match decimal, hex, and named HTML entities - return html.replace(unescapeTest, (_, n) => { - n = n.toLowerCase(); - if (n === 'colon') - return ':'; - if (n.charAt(0) === '#') { - return n.charAt(1) === 'x' - ? String.fromCharCode(parseInt(n.substring(2), 16)) - : String.fromCharCode(+n.substring(1)); - } - return ''; - }); - } - const caret = /(^|[^\[])\^/g; - function edit(regex, opt) { - let source = typeof regex === 'string' ? regex : regex.source; - opt = opt || ''; - const obj = { - replace: (name, val) => { - let valSource = typeof val === 'string' ? val : val.source; - valSource = valSource.replace(caret, '$1'); - source = source.replace(name, valSource); - return obj; - }, - getRegex: () => { - return new RegExp(source, opt); - } - }; - return obj; - } - function cleanUrl(href) { - try { - href = encodeURI(href).replace(/%25/g, '%'); - } - catch (e) { - return null; - } - return href; - } - const noopTest = { exec: () => null }; - function splitCells(tableRow, count) { - // ensure that every cell-delimiting pipe has a space - // before it to distinguish it from an escaped pipe - const row = tableRow.replace(/\|/g, (match, offset, str) => { - let escaped = false; - let curr = offset; - while (--curr >= 0 && str[curr] === '\\') - escaped = !escaped; - if (escaped) { - // odd number of slashes means | is escaped - // so we leave it alone - return '|'; - } - else { - // add space before unescaped | - return ' |'; - } - }), cells = row.split(/ \|/); - let i = 0; - // First/last cell in a row cannot be empty if it has no leading/trailing pipe - if (!cells[0].trim()) { - cells.shift(); - } - if (cells.length > 0 && !cells[cells.length - 1].trim()) { - cells.pop(); - } - if (count) { - if (cells.length > count) { - cells.splice(count); - } - else { - while (cells.length < count) - cells.push(''); - } - } - for (; i < cells.length; i++) { - // leading or trailing whitespace is ignored per the gfm spec - cells[i] = cells[i].trim().replace(/\\\|/g, '|'); - } - return cells; - } - /** - * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). - * /c*$/ is vulnerable to REDOS. - * - * @param str - * @param c - * @param invert Remove suffix of non-c chars instead. Default falsey. - */ - function rtrim(str, c, invert) { - const l = str.length; - if (l === 0) { - return ''; - } - // Length of suffix matching the invert condition. - let suffLen = 0; - // Step left until we fail to match the invert condition. - while (suffLen < l) { - const currChar = str.charAt(l - suffLen - 1); - if (currChar === c && !invert) { - suffLen++; - } - else if (currChar !== c && invert) { - suffLen++; - } - else { - break; - } - } - return str.slice(0, l - suffLen); - } - function findClosingBracket(str, b) { - if (str.indexOf(b[1]) === -1) { - return -1; - } - let level = 0; - for (let i = 0; i < str.length; i++) { - if (str[i] === '\\') { - i++; - } - else if (str[i] === b[0]) { - level++; - } - else if (str[i] === b[1]) { - level--; - if (level < 0) { - return i; - } - } - } - return -1; - } - - function outputLink(cap, link, raw, lexer) { - const href = link.href; - const title = link.title ? escape$1(link.title) : null; - const text = cap[1].replace(/\\([\[\]])/g, '$1'); - if (cap[0].charAt(0) !== '!') { - lexer.state.inLink = true; - const token = { - type: 'link', - raw, - href, - title, - text, - tokens: lexer.inlineTokens(text) - }; - lexer.state.inLink = false; - return token; - } - return { - type: 'image', - raw, - href, - title, - text: escape$1(text) - }; - } - function indentCodeCompensation(raw, text) { - const matchIndentToCode = raw.match(/^(\s+)(?:```)/); - if (matchIndentToCode === null) { - return text; - } - const indentToCode = matchIndentToCode[1]; - return text - .split('\n') - .map(node => { - const matchIndentInNode = node.match(/^\s+/); - if (matchIndentInNode === null) { - return node; - } - const [indentInNode] = matchIndentInNode; - if (indentInNode.length >= indentToCode.length) { - return node.slice(indentToCode.length); - } - return node; - }) - .join('\n'); - } - /** - * Tokenizer - */ - class _Tokenizer { - options; - rules; // set by the lexer - lexer; // set by the lexer - constructor(options) { - this.options = options || exports.defaults; - } - space(src) { - const cap = this.rules.block.newline.exec(src); - if (cap && cap[0].length > 0) { - return { - type: 'space', - raw: cap[0] - }; - } - } - code(src) { - const cap = this.rules.block.code.exec(src); - if (cap) { - const text = cap[0].replace(/^ {1,4}/gm, ''); - return { - type: 'code', - raw: cap[0], - codeBlockStyle: 'indented', - text: !this.options.pedantic - ? rtrim(text, '\n') - : text - }; - } - } - fences(src) { - const cap = this.rules.block.fences.exec(src); - if (cap) { - const raw = cap[0]; - const text = indentCodeCompensation(raw, cap[3] || ''); - return { - type: 'code', - raw, - lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], - text - }; - } - } - heading(src) { - const cap = this.rules.block.heading.exec(src); - if (cap) { - let text = cap[2].trim(); - // remove trailing #s - if (/#$/.test(text)) { - const trimmed = rtrim(text, '#'); - if (this.options.pedantic) { - text = trimmed.trim(); - } - else if (!trimmed || / $/.test(trimmed)) { - // CommonMark requires space before trailing #s - text = trimmed.trim(); - } - } - return { - type: 'heading', - raw: cap[0], - depth: cap[1].length, - text, - tokens: this.lexer.inline(text) - }; - } - } - hr(src) { - const cap = this.rules.block.hr.exec(src); - if (cap) { - return { - type: 'hr', - raw: cap[0] - }; - } - } - blockquote(src) { - const cap = this.rules.block.blockquote.exec(src); - if (cap) { - // precede setext continuation with 4 spaces so it isn't a setext - let text = cap[0].replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1'); - text = rtrim(text.replace(/^ *>[ \t]?/gm, ''), '\n'); - const top = this.lexer.state.top; - this.lexer.state.top = true; - const tokens = this.lexer.blockTokens(text); - this.lexer.state.top = top; - return { - type: 'blockquote', - raw: cap[0], - tokens, - text - }; - } - } - list(src) { - let cap = this.rules.block.list.exec(src); - if (cap) { - let bull = cap[1].trim(); - const isordered = bull.length > 1; - const list = { - type: 'list', - raw: '', - ordered: isordered, - start: isordered ? +bull.slice(0, -1) : '', - loose: false, - items: [] - }; - bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; - if (this.options.pedantic) { - bull = isordered ? bull : '[*+-]'; - } - // Get next list item - const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); - let raw = ''; - let itemContents = ''; - let endsWithBlankLine = false; - // Check if current bullet point can start a new List Item - while (src) { - let endEarly = false; - if (!(cap = itemRegex.exec(src))) { - break; - } - if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) - break; - } - raw = cap[0]; - src = src.substring(raw.length); - let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); - let nextLine = src.split('\n', 1)[0]; - let indent = 0; - if (this.options.pedantic) { - indent = 2; - itemContents = line.trimStart(); - } - else { - indent = cap[2].search(/[^ ]/); // Find first non-space char - indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent - itemContents = line.slice(indent); - indent += cap[1].length; - } - let blankLine = false; - if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line - raw += nextLine + '\n'; - src = src.substring(nextLine.length + 1); - endEarly = true; - } - if (!endEarly) { - const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); - const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); - const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); - const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); - // Check if following lines should be included in List Item - while (src) { - const rawLine = src.split('\n', 1)[0]; - nextLine = rawLine; - // Re-align to follow commonmark nesting rules - if (this.options.pedantic) { - nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); - } - // End list item if found code fences - if (fencesBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new heading - if (headingBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new bullet - if (nextBulletRegex.test(nextLine)) { - break; - } - // Horizontal rule found - if (hrRegex.test(src)) { - break; - } - if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible - itemContents += '\n' + nextLine.slice(indent); - } - else { - // not enough indentation - if (blankLine) { - break; - } - // paragraph continuation unless last line was a different block level element - if (line.search(/[^ ]/) >= 4) { // indented code block - break; - } - if (fencesBeginRegex.test(line)) { - break; - } - if (headingBeginRegex.test(line)) { - break; - } - if (hrRegex.test(line)) { - break; - } - itemContents += '\n' + nextLine; - } - if (!blankLine && !nextLine.trim()) { // Check if current line is blank - blankLine = true; - } - raw += rawLine + '\n'; - src = src.substring(rawLine.length + 1); - line = nextLine.slice(indent); - } - } - if (!list.loose) { - // If the previous item ended with a blank line, the list is loose - if (endsWithBlankLine) { - list.loose = true; - } - else if (/\n *\n *$/.test(raw)) { - endsWithBlankLine = true; - } - } - let istask = null; - let ischecked; - // Check for task list items - if (this.options.gfm) { - istask = /^\[[ xX]\] /.exec(itemContents); - if (istask) { - ischecked = istask[0] !== '[ ] '; - itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); - } - } - list.items.push({ - type: 'list_item', - raw, - task: !!istask, - checked: ischecked, - loose: false, - text: itemContents, - tokens: [] - }); - list.raw += raw; - } - // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic - list.items[list.items.length - 1].raw = raw.trimEnd(); - (list.items[list.items.length - 1]).text = itemContents.trimEnd(); - list.raw = list.raw.trimEnd(); - // Item child tokens handled here at end because we needed to have the final item to trim it first - for (let i = 0; i < list.items.length; i++) { - this.lexer.state.top = false; - list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); - if (!list.loose) { - // Check if list should be loose - const spacers = list.items[i].tokens.filter(t => t.type === 'space'); - const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); - list.loose = hasMultipleLineBreaks; - } - } - // Set all items to loose if list is loose - if (list.loose) { - for (let i = 0; i < list.items.length; i++) { - list.items[i].loose = true; - } - } - return list; - } - } - html(src) { - const cap = this.rules.block.html.exec(src); - if (cap) { - const token = { - type: 'html', - block: true, - raw: cap[0], - pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', - text: cap[0] - }; - return token; - } - } - def(src) { - const cap = this.rules.block.def.exec(src); - if (cap) { - const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); - const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; - const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; - return { - type: 'def', - tag, - raw: cap[0], - href, - title - }; - } - } - table(src) { - const cap = this.rules.block.table.exec(src); - if (!cap) { - return; - } - if (!/[:|]/.test(cap[2])) { - // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading - return; - } - const headers = splitCells(cap[1]); - const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); - const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; - const item = { - type: 'table', - raw: cap[0], - header: [], - align: [], - rows: [] - }; - if (headers.length !== aligns.length) { - // header and align columns must be equal, rows can be different. - return; - } - for (const align of aligns) { - if (/^ *-+: *$/.test(align)) { - item.align.push('right'); - } - else if (/^ *:-+: *$/.test(align)) { - item.align.push('center'); - } - else if (/^ *:-+ *$/.test(align)) { - item.align.push('left'); - } - else { - item.align.push(null); - } - } - for (const header of headers) { - item.header.push({ - text: header, - tokens: this.lexer.inline(header) - }); - } - for (const row of rows) { - item.rows.push(splitCells(row, item.header.length).map(cell => { - return { - text: cell, - tokens: this.lexer.inline(cell) - }; - })); - } - return item; - } - lheading(src) { - const cap = this.rules.block.lheading.exec(src); - if (cap) { - return { - type: 'heading', - raw: cap[0], - depth: cap[2].charAt(0) === '=' ? 1 : 2, - text: cap[1], - tokens: this.lexer.inline(cap[1]) - }; - } - } - paragraph(src) { - const cap = this.rules.block.paragraph.exec(src); - if (cap) { - const text = cap[1].charAt(cap[1].length - 1) === '\n' - ? cap[1].slice(0, -1) - : cap[1]; - return { - type: 'paragraph', - raw: cap[0], - text, - tokens: this.lexer.inline(text) - }; - } - } - text(src) { - const cap = this.rules.block.text.exec(src); - if (cap) { - return { - type: 'text', - raw: cap[0], - text: cap[0], - tokens: this.lexer.inline(cap[0]) - }; - } - } - escape(src) { - const cap = this.rules.inline.escape.exec(src); - if (cap) { - return { - type: 'escape', - raw: cap[0], - text: escape$1(cap[1]) - }; - } - } - tag(src) { - const cap = this.rules.inline.tag.exec(src); - if (cap) { - if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) { - this.lexer.state.inLink = false; - } - if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = true; - } - else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = false; - } - return { - type: 'html', - raw: cap[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: false, - text: cap[0] - }; - } - } - link(src) { - const cap = this.rules.inline.link.exec(src); - if (cap) { - const trimmedUrl = cap[2].trim(); - if (!this.options.pedantic && /^$/.test(trimmedUrl))) { - return; - } - // ending angle bracket cannot be escaped - const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); - if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { - return; - } - } - else { - // find closing parenthesis - const lastParenIndex = findClosingBracket(cap[2], '()'); - if (lastParenIndex > -1) { - const start = cap[0].indexOf('!') === 0 ? 5 : 4; - const linkLen = start + cap[1].length + lastParenIndex; - cap[2] = cap[2].substring(0, lastParenIndex); - cap[0] = cap[0].substring(0, linkLen).trim(); - cap[3] = ''; - } - } - let href = cap[2]; - let title = ''; - if (this.options.pedantic) { - // split pedantic href and title - const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); - if (link) { - href = link[1]; - title = link[3]; - } - } - else { - title = cap[3] ? cap[3].slice(1, -1) : ''; - } - href = href.trim(); - if (/^$/.test(trimmedUrl))) { - // pedantic allows starting angle bracket without ending angle bracket - href = href.slice(1); - } - else { - href = href.slice(1, -1); - } - } - return outputLink(cap, { - href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, - title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title - }, cap[0], this.lexer); - } - } - reflink(src, links) { - let cap; - if ((cap = this.rules.inline.reflink.exec(src)) - || (cap = this.rules.inline.nolink.exec(src))) { - const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); - const link = links[linkString.toLowerCase()]; - if (!link) { - const text = cap[0].charAt(0); - return { - type: 'text', - raw: text, - text - }; - } - return outputLink(cap, link, cap[0], this.lexer); - } - } - emStrong(src, maskedSrc, prevChar = '') { - let match = this.rules.inline.emStrongLDelim.exec(src); - if (!match) - return; - // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well - if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) - return; - const nextChar = match[1] || match[2] || ''; - if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { - // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) - const lLength = [...match[0]].length - 1; - let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; - const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; - endReg.lastIndex = 0; - // Clip maskedSrc to same section of string as src (move to lexer?) - maskedSrc = maskedSrc.slice(-1 * src.length + lLength); - while ((match = endReg.exec(maskedSrc)) != null) { - rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; - if (!rDelim) - continue; // skip single * in __abc*abc__ - rLength = [...rDelim].length; - if (match[3] || match[4]) { // found another Left Delim - delimTotal += rLength; - continue; - } - else if (match[5] || match[6]) { // either Left or Right Delim - if (lLength % 3 && !((lLength + rLength) % 3)) { - midDelimTotal += rLength; - continue; // CommonMark Emphasis Rules 9-10 - } - } - delimTotal -= rLength; - if (delimTotal > 0) - continue; // Haven't found enough closing delimiters - // Remove extra characters. *a*** -> *a* - rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); - // char length can be >1 for unicode characters; - const lastCharLength = [...match[0]][0].length; - const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); - // Create `em` if smallest delimiter has odd char count. *a*** - if (Math.min(lLength, rLength) % 2) { - const text = raw.slice(1, -1); - return { - type: 'em', - raw, - text, - tokens: this.lexer.inlineTokens(text) - }; - } - // Create 'strong' if smallest delimiter has even char count. **a*** - const text = raw.slice(2, -2); - return { - type: 'strong', - raw, - text, - tokens: this.lexer.inlineTokens(text) - }; - } - } - } - codespan(src) { - const cap = this.rules.inline.code.exec(src); - if (cap) { - let text = cap[2].replace(/\n/g, ' '); - const hasNonSpaceChars = /[^ ]/.test(text); - const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); - if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { - text = text.substring(1, text.length - 1); - } - text = escape$1(text, true); - return { - type: 'codespan', - raw: cap[0], - text - }; - } - } - br(src) { - const cap = this.rules.inline.br.exec(src); - if (cap) { - return { - type: 'br', - raw: cap[0] - }; - } - } - del(src) { - const cap = this.rules.inline.del.exec(src); - if (cap) { - return { - type: 'del', - raw: cap[0], - text: cap[2], - tokens: this.lexer.inlineTokens(cap[2]) - }; - } - } - autolink(src) { - const cap = this.rules.inline.autolink.exec(src); - if (cap) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[1]); - href = 'mailto:' + text; - } - else { - text = escape$1(cap[1]); - href = text; - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text - } - ] - }; - } - } - url(src) { - let cap; - if (cap = this.rules.inline.url.exec(src)) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[0]); - href = 'mailto:' + text; - } - else { - // do extended autolink path validation - let prevCapZero; - do { - prevCapZero = cap[0]; - cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; - } while (prevCapZero !== cap[0]); - text = escape$1(cap[0]); - if (cap[1] === 'www.') { - href = 'http://' + cap[0]; - } - else { - href = cap[0]; - } - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text - } - ] - }; - } - } - inlineText(src) { - const cap = this.rules.inline.text.exec(src); - if (cap) { - let text; - if (this.lexer.state.inRawBlock) { - text = cap[0]; - } - else { - text = escape$1(cap[0]); - } - return { - type: 'text', - raw: cap[0], - text - }; - } - } - } - - /** - * Block-Level Grammar - */ - const newline = /^(?: *(?:\n|$))+/; - const blockCode = /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/; - const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; - const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; - const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; - const bullet = /(?:[*+-]|\d{1,9}[.)])/; - const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) - .replace(/bull/g, bullet) // lists can interrupt - .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt - .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt - .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt - .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt - .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt - .getRegex(); - const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; - const blockText = /^[^\n]+/; - const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; - const def = edit(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/) - .replace('label', _blockLabel) - .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) - .getRegex(); - const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) - .replace(/bull/g, bullet) - .getRegex(); - const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' - + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' - + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' - + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' - + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' - + '|tr|track|ul'; - const _comment = /|$))/; - const html = edit('^ {0,3}(?:' // optional indentation - + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) - + '|comment[^\\n]*(\\n+|$)' // (2) - + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) - + '|\\n*|$)' // (4) - + '|\\n*|$)' // (5) - + '|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6) - + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag - + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag - + ')', 'i') - .replace('comment', _comment) - .replace('tag', _tag) - .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) - .getRegex(); - const paragraph = edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(); - const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) - .replace('paragraph', paragraph) - .getRegex(); - /** - * Normal Block Grammar - */ - const blockNormal = { - blockquote, - code: blockCode, - def, - fences, - heading, - hr, - html, - lheading, - list, - newline, - paragraph, - table: noopTest, - text: blockText - }; - /** - * GFM Block Grammar - */ - const gfmTable = edit('^ *([^\\n ].*)\\n' // Header - + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align - + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('blockquote', ' {0,3}>') - .replace('code', ' {4}[^\\n]') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // tables can be interrupted by type (6) html blocks - .getRegex(); - const blockGfm = { - ...blockNormal, - table: gfmTable, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('table', gfmTable) // interrupt paragraphs with table - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex() - }; - /** - * Pedantic grammar (original John Gruber's loose markdown specification) - */ - const blockPedantic = { - ...blockNormal, - html: edit('^ *(?:comment *(?:\\n|\\s*$)' - + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag - + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') - .replace('comment', _comment) - .replace(/tag/g, '(?!(?:' - + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' - + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' - + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') - .getRegex(), - def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, - heading: /^(#{1,6})(.*)(?:\n+|$)/, - fences: noopTest, // fences not supported - lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' *#{1,6} *[^\n]') - .replace('lheading', lheading) - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('|fences', '') - .replace('|list', '') - .replace('|html', '') - .replace('|tag', '') - .getRegex() - }; - /** - * Inline-Level Grammar - */ - const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; - const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; - const br = /^( {2,}|\\)\n(?!\s*$)/; - const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ - const blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g; - const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') - .replace(/punct/g, _punctuation) - .getRegex(); - const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong - + '|[^*]+(?=[^*])' // Consume to delim - + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter - + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter - + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter - + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter - + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter - + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); - // (6) Not allowed for _ - const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong - + '|[^_]+(?=[^_])' // Consume to delim - + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter - + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter - + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter - + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter - + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); - const anyPunctuation = edit(/\\([punct])/, 'gu') - .replace(/punct/g, _punctuation) - .getRegex(); - const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) - .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) - .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) - .getRegex(); - const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); - const tag = edit('^comment' - + '|^' // self-closing tag - + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag - + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. - + '|^' // declaration, e.g. - + '|^') // CDATA section - .replace('comment', _inlineComment) - .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) - .getRegex(); - const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; - const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) - .replace('label', _inlineLabel) - .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) - .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) - .getRegex(); - const reflink = edit(/^!?\[(label)\]\[(ref)\]/) - .replace('label', _inlineLabel) - .replace('ref', _blockLabel) - .getRegex(); - const nolink = edit(/^!?\[(ref)\](?:\[\])?/) - .replace('ref', _blockLabel) - .getRegex(); - const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') - .replace('reflink', reflink) - .replace('nolink', nolink) - .getRegex(); - /** - * Normal Inline Grammar - */ - const inlineNormal = { - _backpedal: noopTest, // only used for GFM url - anyPunctuation, - autolink, - blockSkip, - br, - code: inlineCode, - del: noopTest, - emStrongLDelim, - emStrongRDelimAst, - emStrongRDelimUnd, - escape, - link, - nolink, - punctuation, - reflink, - reflinkSearch, - tag, - text: inlineText, - url: noopTest - }; - /** - * Pedantic Inline Grammar - */ - const inlinePedantic = { - ...inlineNormal, - link: edit(/^!?\[(label)\]\((.*?)\)/) - .replace('label', _inlineLabel) - .getRegex(), - reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) - .replace('label', _inlineLabel) - .getRegex() - }; - /** - * GFM Inline Grammar - */ - const inlineGfm = { - ...inlineNormal, - escape: edit(escape).replace('])', '~|])').getRegex(), - url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') - .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) - .getRegex(), - _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, - del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, - text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { - return leading + ' '.repeat(tabs.length); - }); - } - let token; - let lastToken; - let cutSrc; - let lastParagraphClipped; - while (src) { - if (this.options.extensions - && this.options.extensions.block - && this.options.extensions.block.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // newline - if (token = this.tokenizer.space(src)) { - src = src.substring(token.raw.length); - if (token.raw.length === 1 && tokens.length > 0) { - // if there's a single \n as a spacer, it's terminating the last line, - // so move it there so that we don't get unnecessary paragraph tags - tokens[tokens.length - 1].raw += '\n'; - } - else { - tokens.push(token); - } - continue; - } - // code - if (token = this.tokenizer.code(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - // An indented code block cannot interrupt a paragraph. - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - // fences - if (token = this.tokenizer.fences(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // heading - if (token = this.tokenizer.heading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // hr - if (token = this.tokenizer.hr(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // blockquote - if (token = this.tokenizer.blockquote(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // list - if (token = this.tokenizer.list(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // html - if (token = this.tokenizer.html(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // def - if (token = this.tokenizer.def(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.raw; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else if (!this.tokens.links[token.tag]) { - this.tokens.links[token.tag] = { - href: token.href, - title: token.title - }; - } - continue; - } - // table (gfm) - if (token = this.tokenizer.table(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // lheading - if (token = this.tokenizer.lheading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // top-level paragraph - // prevent paragraph consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startBlock) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startBlock.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { - lastToken = tokens[tokens.length - 1]; - if (lastParagraphClipped && lastToken.type === 'paragraph') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - lastParagraphClipped = (cutSrc.length !== src.length); - src = src.substring(token.raw.length); - continue; - } - // text - if (token = this.tokenizer.text(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - this.state.top = true; - return tokens; - } - inline(src, tokens = []) { - this.inlineQueue.push({ src, tokens }); - return tokens; - } - /** - * Lexing/Compiling - */ - inlineTokens(src, tokens = []) { - let token, lastToken, cutSrc; - // String with links masked to avoid interference with em and strong - let maskedSrc = src; - let match; - let keepPrevChar, prevChar; - // Mask out reflinks - if (this.tokens.links) { - const links = Object.keys(this.tokens.links); - if (links.length > 0) { - while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { - if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); - } - } - } - } - // Mask out other blocks - while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); - } - // Mask out escaped characters - while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); - } - while (src) { - if (!keepPrevChar) { - prevChar = ''; - } - keepPrevChar = false; - // extensions - if (this.options.extensions - && this.options.extensions.inline - && this.options.extensions.inline.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // escape - if (token = this.tokenizer.escape(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // tag - if (token = this.tokenizer.tag(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // link - if (token = this.tokenizer.link(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // reflink, nolink - if (token = this.tokenizer.reflink(src, this.tokens.links)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // em & strong - if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // code - if (token = this.tokenizer.codespan(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // br - if (token = this.tokenizer.br(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // del (gfm) - if (token = this.tokenizer.del(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // autolink - if (token = this.tokenizer.autolink(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // url (gfm) - if (!this.state.inLink && (token = this.tokenizer.url(src))) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // text - // prevent inlineText consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startInline) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startInline.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (token = this.tokenizer.inlineText(cutSrc)) { - src = src.substring(token.raw.length); - if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started - prevChar = token.raw.slice(-1); - } - keepPrevChar = true; - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - return tokens; - } - } - - /** - * Renderer - */ - class _Renderer { - options; - constructor(options) { - this.options = options || exports.defaults; - } - code(code, infostring, escaped) { - const lang = (infostring || '').match(/^\S*/)?.[0]; - code = code.replace(/\n$/, '') + '\n'; - if (!lang) { - return '
    '
    -                    + (escaped ? code : escape$1(code, true))
    -                    + '
    \n'; - } - return '
    '
    -                + (escaped ? code : escape$1(code, true))
    -                + '
    \n'; - } - blockquote(quote) { - return `
    \n${quote}
    \n`; - } - html(html, block) { - return html; - } - heading(text, level, raw) { - // ignore IDs - return `${text}\n`; - } - hr() { - return '
    \n'; - } - list(body, ordered, start) { - const type = ordered ? 'ol' : 'ul'; - const startatt = (ordered && start !== 1) ? (' start="' + start + '"') : ''; - return '<' + type + startatt + '>\n' + body + '\n'; - } - listitem(text, task, checked) { - return `
  • ${text}
  • \n`; - } - checkbox(checked) { - return ''; - } - paragraph(text) { - return `

    ${text}

    \n`; - } - table(header, body) { - if (body) - body = `${body}`; - return '\n' - + '\n' - + header - + '\n' - + body - + '
    \n'; - } - tablerow(content) { - return `\n${content}\n`; - } - tablecell(content, flags) { - const type = flags.header ? 'th' : 'td'; - const tag = flags.align - ? `<${type} align="${flags.align}">` - : `<${type}>`; - return tag + content + `\n`; - } - /** - * span level renderer - */ - strong(text) { - return `${text}`; - } - em(text) { - return `${text}`; - } - codespan(text) { - return `${text}`; - } - br() { - return '
    '; - } - del(text) { - return `${text}`; - } - link(href, title, text) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = '
    '; - return out; - } - image(href, title, text) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = `${text} 0 && item.tokens[0].type === 'paragraph') { - item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; - if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { - item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; - } - } - else { - item.tokens.unshift({ - type: 'text', - text: checkbox + ' ' - }); - } - } - else { - itemBody += checkbox + ' '; - } - } - itemBody += this.parse(item.tokens, loose); - body += this.renderer.listitem(itemBody, task, !!checked); - } - out += this.renderer.list(body, ordered, start); - continue; - } - case 'html': { - const htmlToken = token; - out += this.renderer.html(htmlToken.text, htmlToken.block); - continue; - } - case 'paragraph': { - const paragraphToken = token; - out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens)); - continue; - } - case 'text': { - let textToken = token; - let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text; - while (i + 1 < tokens.length && tokens[i + 1].type === 'text') { - textToken = tokens[++i]; - body += '\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text); - } - out += top ? this.renderer.paragraph(body) : body; - continue; - } - default: { - const errMsg = 'Token with "' + token.type + '" type was not found.'; - if (this.options.silent) { - console.error(errMsg); - return ''; - } - else { - throw new Error(errMsg); - } - } - } - } - return out; - } - /** - * Parse Inline Tokens - */ - parseInline(tokens, renderer) { - renderer = renderer || this.renderer; - let out = ''; - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i]; - // Run any renderer extensions - if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) { - const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token); - if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) { - out += ret || ''; - continue; - } - } - switch (token.type) { - case 'escape': { - const escapeToken = token; - out += renderer.text(escapeToken.text); - break; - } - case 'html': { - const tagToken = token; - out += renderer.html(tagToken.text); - break; - } - case 'link': { - const linkToken = token; - out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer)); - break; - } - case 'image': { - const imageToken = token; - out += renderer.image(imageToken.href, imageToken.title, imageToken.text); - break; - } - case 'strong': { - const strongToken = token; - out += renderer.strong(this.parseInline(strongToken.tokens, renderer)); - break; - } - case 'em': { - const emToken = token; - out += renderer.em(this.parseInline(emToken.tokens, renderer)); - break; - } - case 'codespan': { - const codespanToken = token; - out += renderer.codespan(codespanToken.text); - break; - } - case 'br': { - out += renderer.br(); - break; - } - case 'del': { - const delToken = token; - out += renderer.del(this.parseInline(delToken.tokens, renderer)); - break; - } - case 'text': { - const textToken = token; - out += renderer.text(textToken.text); - break; - } - default: { - const errMsg = 'Token with "' + token.type + '" type was not found.'; - if (this.options.silent) { - console.error(errMsg); - return ''; - } - else { - throw new Error(errMsg); - } - } - } - } - return out; - } - } - - class _Hooks { - options; - constructor(options) { - this.options = options || exports.defaults; - } - static passThroughHooks = new Set([ - 'preprocess', - 'postprocess', - 'processAllTokens' - ]); - /** - * Process markdown before marked - */ - preprocess(markdown) { - return markdown; - } - /** - * Process HTML after marked is finished - */ - postprocess(html) { - return html; - } - /** - * Process all tokens before walk tokens - */ - processAllTokens(tokens) { - return tokens; - } - } - - class Marked { - defaults = _getDefaults(); - options = this.setOptions; - parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse); - parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline); - Parser = _Parser; - Renderer = _Renderer; - TextRenderer = _TextRenderer; - Lexer = _Lexer; - Tokenizer = _Tokenizer; - Hooks = _Hooks; - constructor(...args) { - this.use(...args); - } - /** - * Run callback for every token - */ - walkTokens(tokens, callback) { - let values = []; - for (const token of tokens) { - values = values.concat(callback.call(this, token)); - switch (token.type) { - case 'table': { - const tableToken = token; - for (const cell of tableToken.header) { - values = values.concat(this.walkTokens(cell.tokens, callback)); - } - for (const row of tableToken.rows) { - for (const cell of row) { - values = values.concat(this.walkTokens(cell.tokens, callback)); - } - } - break; - } - case 'list': { - const listToken = token; - values = values.concat(this.walkTokens(listToken.items, callback)); - break; - } - default: { - const genericToken = token; - if (this.defaults.extensions?.childTokens?.[genericToken.type]) { - this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => { - const tokens = genericToken[childTokens].flat(Infinity); - values = values.concat(this.walkTokens(tokens, callback)); - }); - } - else if (genericToken.tokens) { - values = values.concat(this.walkTokens(genericToken.tokens, callback)); - } - } - } - } - return values; - } - use(...args) { - const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; - args.forEach((pack) => { - // copy options to new object - const opts = { ...pack }; - // set async to true if it was set to true before - opts.async = this.defaults.async || opts.async || false; - // ==-- Parse "addon" extensions --== // - if (pack.extensions) { - pack.extensions.forEach((ext) => { - if (!ext.name) { - throw new Error('extension name required'); - } - if ('renderer' in ext) { // Renderer extensions - const prevRenderer = extensions.renderers[ext.name]; - if (prevRenderer) { - // Replace extension with func to run new extension but fall back if false - extensions.renderers[ext.name] = function (...args) { - let ret = ext.renderer.apply(this, args); - if (ret === false) { - ret = prevRenderer.apply(this, args); - } - return ret; - }; - } - else { - extensions.renderers[ext.name] = ext.renderer; - } - } - if ('tokenizer' in ext) { // Tokenizer Extensions - if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { - throw new Error("extension level must be 'block' or 'inline'"); - } - const extLevel = extensions[ext.level]; - if (extLevel) { - extLevel.unshift(ext.tokenizer); - } - else { - extensions[ext.level] = [ext.tokenizer]; - } - if (ext.start) { // Function to check for start of token - if (ext.level === 'block') { - if (extensions.startBlock) { - extensions.startBlock.push(ext.start); - } - else { - extensions.startBlock = [ext.start]; - } - } - else if (ext.level === 'inline') { - if (extensions.startInline) { - extensions.startInline.push(ext.start); - } - else { - extensions.startInline = [ext.start]; - } - } - } - } - if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens - extensions.childTokens[ext.name] = ext.childTokens; - } - }); - opts.extensions = extensions; - } - // ==-- Parse "overwrite" extensions --== // - if (pack.renderer) { - const renderer = this.defaults.renderer || new _Renderer(this.defaults); - for (const prop in pack.renderer) { - if (!(prop in renderer)) { - throw new Error(`renderer '${prop}' does not exist`); - } - if (prop === 'options') { - // ignore options property - continue; - } - const rendererProp = prop; - const rendererFunc = pack.renderer[rendererProp]; - const prevRenderer = renderer[rendererProp]; - // Replace renderer with func to run extension, but fall back if false - renderer[rendererProp] = (...args) => { - let ret = rendererFunc.apply(renderer, args); - if (ret === false) { - ret = prevRenderer.apply(renderer, args); - } - return ret || ''; - }; - } - opts.renderer = renderer; - } - if (pack.tokenizer) { - const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); - for (const prop in pack.tokenizer) { - if (!(prop in tokenizer)) { - throw new Error(`tokenizer '${prop}' does not exist`); - } - if (['options', 'rules', 'lexer'].includes(prop)) { - // ignore options, rules, and lexer properties - continue; - } - const tokenizerProp = prop; - const tokenizerFunc = pack.tokenizer[tokenizerProp]; - const prevTokenizer = tokenizer[tokenizerProp]; - // Replace tokenizer with func to run extension, but fall back if false - // @ts-expect-error cannot type tokenizer function dynamically - tokenizer[tokenizerProp] = (...args) => { - let ret = tokenizerFunc.apply(tokenizer, args); - if (ret === false) { - ret = prevTokenizer.apply(tokenizer, args); - } - return ret; - }; - } - opts.tokenizer = tokenizer; - } - // ==-- Parse Hooks extensions --== // - if (pack.hooks) { - const hooks = this.defaults.hooks || new _Hooks(); - for (const prop in pack.hooks) { - if (!(prop in hooks)) { - throw new Error(`hook '${prop}' does not exist`); - } - if (prop === 'options') { - // ignore options property - continue; - } - const hooksProp = prop; - const hooksFunc = pack.hooks[hooksProp]; - const prevHook = hooks[hooksProp]; - if (_Hooks.passThroughHooks.has(prop)) { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (arg) => { - if (this.defaults.async) { - return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { - return prevHook.call(hooks, ret); - }); - } - const ret = hooksFunc.call(hooks, arg); - return prevHook.call(hooks, ret); - }; - } - else { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (...args) => { - let ret = hooksFunc.apply(hooks, args); - if (ret === false) { - ret = prevHook.apply(hooks, args); - } - return ret; - }; - } - } - opts.hooks = hooks; - } - // ==-- Parse WalkTokens extensions --== // - if (pack.walkTokens) { - const walkTokens = this.defaults.walkTokens; - const packWalktokens = pack.walkTokens; - opts.walkTokens = function (token) { - let values = []; - values.push(packWalktokens.call(this, token)); - if (walkTokens) { - values = values.concat(walkTokens.call(this, token)); - } - return values; - }; - } - this.defaults = { ...this.defaults, ...opts }; - }); - return this; - } - setOptions(opt) { - this.defaults = { ...this.defaults, ...opt }; - return this; - } - lexer(src, options) { - return _Lexer.lex(src, options ?? this.defaults); - } - parser(tokens, options) { - return _Parser.parse(tokens, options ?? this.defaults); - } - #parseMarkdown(lexer, parser) { - return (src, options) => { - const origOpt = { ...options }; - const opt = { ...this.defaults, ...origOpt }; - // Show warning if an extension set async to true but the parse was called with async: false - if (this.defaults.async === true && origOpt.async === false) { - if (!opt.silent) { - console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.'); - } - opt.async = true; - } - const throwError = this.#onError(!!opt.silent, !!opt.async); - // throw error in case of non string input - if (typeof src === 'undefined' || src === null) { - return throwError(new Error('marked(): input parameter is undefined or null')); - } - if (typeof src !== 'string') { - return throwError(new Error('marked(): input parameter is of type ' - + Object.prototype.toString.call(src) + ', string expected')); - } - if (opt.hooks) { - opt.hooks.options = opt; - } - if (opt.async) { - return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) - .then(src => lexer(src, opt)) - .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) - .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) - .then(tokens => parser(tokens, opt)) - .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) - .catch(throwError); - } - try { - if (opt.hooks) { - src = opt.hooks.preprocess(src); - } - let tokens = lexer(src, opt); - if (opt.hooks) { - tokens = opt.hooks.processAllTokens(tokens); - } - if (opt.walkTokens) { - this.walkTokens(tokens, opt.walkTokens); - } - let html = parser(tokens, opt); - if (opt.hooks) { - html = opt.hooks.postprocess(html); - } - return html; - } - catch (e) { - return throwError(e); - } - }; - } - #onError(silent, async) { - return (e) => { - e.message += '\nPlease report this to https://github.com/markedjs/marked.'; - if (silent) { - const msg = '

    An error occurred:

    '
    -                        + escape$1(e.message + '', true)
    -                        + '
    '; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } - } - - const markedInstance = new Marked(); - function marked(src, opt) { - return markedInstance.parse(src, opt); - } - /** - * Sets the default options. - * - * @param options Hash of options - */ - marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; - /** - * Gets the original marked default options. - */ - marked.getDefaults = _getDefaults; - marked.defaults = exports.defaults; - /** - * Use Extension - */ - marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; - /** - * Run callback for every token - */ - marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); - }; - /** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ - marked.parseInline = markedInstance.parseInline; - /** - * Expose - */ - marked.Parser = _Parser; - marked.parser = _Parser.parse; - marked.Renderer = _Renderer; - marked.TextRenderer = _TextRenderer; - marked.Lexer = _Lexer; - marked.lexer = _Lexer.lex; - marked.Tokenizer = _Tokenizer; - marked.Hooks = _Hooks; - marked.parse = marked; - const options = marked.options; - const setOptions = marked.setOptions; - const use = marked.use; - const walkTokens = marked.walkTokens; - const parseInline = marked.parseInline; - const parse = marked; - const parser = _Parser.parse; - const lexer = _Lexer.lex; - - exports.Hooks = _Hooks; - exports.Lexer = _Lexer; - exports.Marked = Marked; - exports.Parser = _Parser; - exports.Renderer = _Renderer; - exports.TextRenderer = _TextRenderer; - exports.Tokenizer = _Tokenizer; - exports.getDefaults = _getDefaults; - exports.lexer = lexer; - exports.marked = marked; - exports.options = options; - exports.parse = parse; - exports.parseInline = parseInline; - exports.parser = parser; - exports.setOptions = setOptions; - exports.use = use; - exports.walkTokens = walkTokens; - -})); -//# sourceMappingURL=marked.umd.js.map diff --git a/tmp/node_modules/marked/lib/marked.umd.js.map b/tmp/node_modules/marked/lib/marked.umd.js.map deleted file mode 100644 index 93e2a4c..0000000 --- a/tmp/node_modules/marked/lib/marked.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.umd.js","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n","import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote(quote) {\n return `
    \\n${quote}
    \\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return '
    \\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n listitem(text, task, checked) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return '';\n }\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text}`;\n }\n em(text) {\n return `${text}`;\n }\n codespan(text) {\n return `${text}`;\n }\n br() {\n return '
    ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n","import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n","import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["_defaults","escape"],"mappings":"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"} \ No newline at end of file diff --git a/tmp/node_modules/marked/man/marked.1 b/tmp/node_modules/marked/man/marked.1 deleted file mode 100644 index 185f0aa..0000000 --- a/tmp/node_modules/marked/man/marked.1 +++ /dev/null @@ -1,111 +0,0 @@ -.TH "MARKED" "1" "April 2024" "12.0.1" -.SH "NAME" -\fBmarked\fR \- a javascript markdown parser -.SH SYNOPSIS -.P -\fBmarked\fP [\fB\-o\fP ] [\fB\-i\fP ] [\fB\-s\fP ] [\fB\-c\fP ] [\fB\-\-help\fP] [\fB\-\-version\fP] [\fB\-\-tokens\fP] [\fB\-\-no\-clobber\fP] [\fB\-\-pedantic\fP] [\fB\-\-gfm\fP] [\fB\-\-breaks\fP] [\fB\-\-no\-etc\.\.\.\fP] [\fB\-\-silent\fP] [filename] -.SH DESCRIPTION -.P -marked is a full\-featured javascript markdown parser, built for speed\. -.br -It also includes multiple GFM features\. -.SH EXAMPLES -.RS 2 -.nf -cat in\.md | marked > out\.html -.fi -.RE -.RS 2 -.nf -echo "hello *world*" | marked -.fi -.RE -.RS 2 -.nf -marked \-o out\.html \-i in\.md \-\-gfm -.fi -.RE -.RS 2 -.nf -marked \-\-output="hello world\.html" \-i in\.md \-\-no\-breaks -.fi -.RE -.SH OPTIONS - -.RS 1 -.IP \(bu 2 -\-o, \-\-output [output file] -.br -Specify file output\. If none is specified, write to stdout\. -.IP \(bu 2 -\-i, \-\-input [input file] -.br -Specify file input, otherwise use last argument as input file\. -.br -If no input file is specified, read from stdin\. -.IP \(bu 2 -\-s, \-\-string [markdown string] -.br -Specify string input instead of a file\. -.IP \(bu 2 -\-c, \-\-config [config file] -.br -Specify config file to use instead of the default \fB~/\.marked\.json\fP or \fB~/\.marked\.js\fP or \fB~/\.marked/index\.js\fP\|\. -.IP \(bu 2 -\-t, \-\-tokens -.br -Output a token list instead of html\. -.IP \(bu 2 -\-n, \-\-no\-clobber -.br -Do not overwrite \fBoutput\fP if it exists\. -.IP \(bu 2 -\-\-pedantic -.br -Conform to obscure parts of markdown\.pl as much as possible\. -.br -Don't fix original markdown bugs\. -.IP \(bu 2 -\-\-gfm -.br -Enable github flavored markdown\. -.IP \(bu 2 -\-\-breaks -.br -Enable GFM line breaks\. Only works with the gfm option\. -.IP \(bu 2 -\-\-no\-breaks, \-no\-etc\.\.\. -.br -The inverse of any of the marked options above\. -.IP \(bu 2 -\-\-silent -.br -Silence error output\. -.IP \(bu 2 -\-h, \-\-help -.br -Display help information\. - -.RE -.SH CONFIGURATION -.P -For configuring and running programmatically\. -.P -Example -.RS 2 -.nf -import { Marked } from 'marked'; -const marked = new Marked({ gfm: true }); -marked\.parse('*foo*'); -.fi -.RE -.SH BUGS -.P -Please report any bugs to https://github.com/markedjs/marked -.SH LICENSE -.P -Copyright (c) 2011\-2014, Christopher Jeffrey (MIT License)\. -.SH SEE ALSO -.P -markdown(1), nodejs(1) - diff --git a/tmp/node_modules/marked/man/marked.1.md b/tmp/node_modules/marked/man/marked.1.md deleted file mode 100644 index d5b94a4..0000000 --- a/tmp/node_modules/marked/man/marked.1.md +++ /dev/null @@ -1,92 +0,0 @@ -# marked(1) -- a javascript markdown parser - -## SYNOPSIS - -`marked` [`-o` ] [`-i` ] [`-s` ] [`-c` ] [`--help`] [`--version`] [`--tokens`] [`--no-clobber`] [`--pedantic`] [`--gfm`] [`--breaks`] [`--no-etc...`] [`--silent`] [filename] - -## DESCRIPTION - -marked is a full-featured javascript markdown parser, built for speed. -It also includes multiple GFM features. - -## EXAMPLES - -```sh -cat in.md | marked > out.html -``` - -```sh -echo "hello *world*" | marked -``` - -```sh -marked -o out.html -i in.md --gfm -``` - -```sh -marked --output="hello world.html" -i in.md --no-breaks -``` - -## OPTIONS - -* -o, --output [output file] -Specify file output. If none is specified, write to stdout. - -* -i, --input [input file] -Specify file input, otherwise use last argument as input file. -If no input file is specified, read from stdin. - -* -s, --string [markdown string] -Specify string input instead of a file. - -* -c, --config [config file] -Specify config file to use instead of the default `~/.marked.json` or `~/.marked.js` or `~/.marked/index.js`. - -* -t, --tokens -Output a token list instead of html. - -* -n, --no-clobber -Do not overwrite `output` if it exists. - -* --pedantic -Conform to obscure parts of markdown.pl as much as possible. -Don't fix original markdown bugs. - -* --gfm -Enable github flavored markdown. - -* --breaks -Enable GFM line breaks. Only works with the gfm option. - -* --no-breaks, -no-etc... -The inverse of any of the marked options above. - -* --silent -Silence error output. - -* -h, --help -Display help information. - -## CONFIGURATION - -For configuring and running programmatically. - -Example - -```js -import { Marked } from 'marked'; -const marked = new Marked({ gfm: true }); -marked.parse('*foo*'); -``` - -## BUGS - -Please report any bugs to . - -## LICENSE - -Copyright (c) 2011-2014, Christopher Jeffrey (MIT License). - -## SEE ALSO - -markdown(1), nodejs(1) diff --git a/tmp/node_modules/marked/marked.min.js b/tmp/node_modules/marked/marked.min.js deleted file mode 100644 index a91afe7..0000000 --- a/tmp/node_modules/marked/marked.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * marked v12.0.2 - a markdown parser - * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).marked={})}(this,(function(e){"use strict";function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function n(t){e.defaults=t}e.defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};const s=/[&<>"']/,r=new RegExp(s.source,"g"),i=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,l=new RegExp(i.source,"g"),o={"&":"&","<":"<",">":">",'"':""","'":"'"},a=e=>o[e];function c(e,t){if(t){if(s.test(e))return e.replace(r,a)}else if(i.test(e))return e.replace(l,a);return e}const h=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function p(e){return e.replace(h,((e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}const u=/(^|[^\[])\^/g;function k(e,t){let n="string"==typeof e?e:e.source;t=t||"";const s={replace:(e,t)=>{let r="string"==typeof t?t:t.source;return r=r.replace(u,"$1"),n=n.replace(e,r),s},getRegex:()=>new RegExp(n,t)};return s}function g(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch(e){return null}return e}const f={exec:()=>null};function d(e,t){const n=e.replace(/\|/g,((e,t,n)=>{let s=!1,r=t;for(;--r>=0&&"\\"===n[r];)s=!s;return s?"|":" |"})).split(/ \|/);let s=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:x(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],n=function(e,t){const n=e.match(/^(\s+)(?:```)/);if(null===n)return t;const s=n[1];return t.split("\n").map((e=>{const t=e.match(/^\s+/);if(null===t)return e;const[n]=t;return n.length>=s.length?e.slice(s.length):e})).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){const t=x(e,"#");this.options.pedantic?e=t.trim():t&&!/ $/.test(t)||(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){let e=t[0].replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,"\n $1");e=x(e.replace(/^ *>[ \t]?/gm,""),"\n");const n=this.lexer.state.top;this.lexer.state.top=!0;const s=this.lexer.blockTokens(e);return this.lexer.state.top=n,{type:"blockquote",raw:t[0],tokens:s,text:e}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim();const s=n.length>1,r={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");const i=new RegExp(`^( {0,3}${n})((?:[\t ][^\\n]*)?(?:\\n|$))`);let l="",o="",a=!1;for(;e;){let n=!1;if(!(t=i.exec(e)))break;if(this.rules.block.hr.test(e))break;l=t[0],e=e.substring(l.length);let s=t[2].split("\n",1)[0].replace(/^\t+/,(e=>" ".repeat(3*e.length))),c=e.split("\n",1)[0],h=0;this.options.pedantic?(h=2,o=s.trimStart()):(h=t[2].search(/[^ ]/),h=h>4?1:h,o=s.slice(h),h+=t[1].length);let p=!1;if(!s&&/^ *$/.test(c)&&(l+=c+"\n",e=e.substring(c.length+1),n=!0),!n){const t=new RegExp(`^ {0,${Math.min(3,h-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),n=new RegExp(`^ {0,${Math.min(3,h-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),r=new RegExp(`^ {0,${Math.min(3,h-1)}}(?:\`\`\`|~~~)`),i=new RegExp(`^ {0,${Math.min(3,h-1)}}#`);for(;e;){const a=e.split("\n",1)[0];if(c=a,this.options.pedantic&&(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),r.test(c))break;if(i.test(c))break;if(t.test(c))break;if(n.test(e))break;if(c.search(/[^ ]/)>=h||!c.trim())o+="\n"+c.slice(h);else{if(p)break;if(s.search(/[^ ]/)>=4)break;if(r.test(s))break;if(i.test(s))break;if(n.test(s))break;o+="\n"+c}p||c.trim()||(p=!0),l+=a+"\n",e=e.substring(a.length+1),s=c.slice(h)}}r.loose||(a?r.loose=!0:/\n *\n *$/.test(l)&&(a=!0));let u,k=null;this.options.gfm&&(k=/^\[[ xX]\] /.exec(o),k&&(u="[ ] "!==k[0],o=o.replace(/^\[[ xX]\] +/,""))),r.items.push({type:"list_item",raw:l,task:!!k,checked:u,loose:!1,text:o,tokens:[]}),r.raw+=l}r.items[r.items.length-1].raw=l.trimEnd(),r.items[r.items.length-1].text=o.trimEnd(),r.raw=r.raw.trimEnd();for(let e=0;e"space"===e.type)),n=t.length>0&&t.some((e=>/\n.*\n/.test(e.raw)));r.loose=n}if(r.loose)for(let e=0;e$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:s}}}table(e){const t=this.rules.block.table.exec(e);if(!t)return;if(!/[:|]/.test(t[2]))return;const n=d(t[1]),s=t[2].replace(/^\||\| *$/g,"").split("|"),r=t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[],i={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===s.length){for(const e of s)/^ *-+: *$/.test(e)?i.align.push("right"):/^ *:-+: *$/.test(e)?i.align.push("center"):/^ *:-+ *$/.test(e)?i.align.push("left"):i.align.push(null);for(const e of n)i.header.push({text:e,tokens:this.lexer.inline(e)});for(const e of r)i.rows.push(d(e,i.header.length).map((e=>({text:e,tokens:this.lexer.inline(e)}))));return i}}lheading(e){const t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){const t=this.rules.block.paragraph.exec(e);if(t){const e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){const t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){const t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:c(t[1])}}tag(e){const t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^
    /i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&/^$/.test(e))return;const t=x(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let s=0;s-1){const n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],s="";if(this.options.pedantic){const e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);e&&(n=e[1],s=e[3])}else s=t[3]?t[3].slice(1,-1):"";return n=n.trim(),/^$/.test(e)?n.slice(1):n.slice(1,-1)),b(t,{href:n?n.replace(this.rules.inline.anyPunctuation,"$1"):n,title:s?s.replace(this.rules.inline.anyPunctuation,"$1"):s},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){const e=t[(n[2]||n[1]).replace(/\s+/g," ").toLowerCase()];if(!e){const e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return b(n,e,n[0],this.lexer)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s)return;if(s[3]&&n.match(/[\p{L}\p{N}]/u))return;if(!(s[1]||s[2]||"")||!n||this.rules.inline.punctuation.exec(n)){const n=[...s[0]].length-1;let r,i,l=n,o=0;const a="*"===s[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(a.lastIndex=0,t=t.slice(-1*e.length+n);null!=(s=a.exec(t));){if(r=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!r)continue;if(i=[...r].length,s[3]||s[4]){l+=i;continue}if((s[5]||s[6])&&n%3&&!((n+i)%3)){o+=i;continue}if(l-=i,l>0)continue;i=Math.min(i,i+l+o);const t=[...s[0]][0].length,a=e.slice(0,n+s.index+t+i);if(Math.min(n,i)%2){const e=a.slice(1,-1);return{type:"em",raw:a,text:e,tokens:this.lexer.inlineTokens(e)}}const c=a.slice(2,-2);return{type:"strong",raw:a,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," ");const n=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return n&&s&&(e=e.substring(1,e.length-1)),e=c(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){const t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=c(t[1]),n="mailto:"+e):(e=c(t[1]),n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=c(t[0]),n="mailto:"+e;else{let s;do{s=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(s!==t[0]);e=c(t[0]),n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){const t=this.rules.inline.text.exec(e);if(t){let e;return e=this.lexer.state.inRawBlock?t[0]:c(t[0]),{type:"text",raw:t[0],text:e}}}}const m=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,y=/(?:[*+-]|\d{1,9}[.)])/,$=k(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,y).replace(/blockCode/g,/ {4}/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),z=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,T=/(?!\s*\])(?:\\.|[^\[\]\\])+/,R=k(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label",T).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),_=k(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,y).getRegex(),A="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",S=/|$))/,I=k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))","i").replace("comment",S).replace("tag",A).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),E=k(z).replace("hr",m).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",A).getRegex(),q={blockquote:k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",E).getRegex(),code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,def:R,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:m,html:I,lheading:$,list:_,newline:/^(?: *(?:\n|$))+/,paragraph:E,table:f,text:/^[^\n]+/},Z=k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",m).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",A).getRegex(),L={...q,table:Z,paragraph:k(z).replace("hr",m).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Z).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",A).getRegex()},P={...q,html:k("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",S).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:f,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:k(z).replace("hr",m).replace("heading"," *#{1,6} *[^\n]").replace("lheading",$).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Q=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,v=/^( {2,}|\\)\n(?!\s*$)/,B="\\p{P}\\p{S}",C=k(/^((?![*_])[\spunctuation])/,"u").replace(/punctuation/g,B).getRegex(),M=k(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,B).getRegex(),O=k("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,B).getRegex(),D=k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,B).getRegex(),j=k(/\\([punct])/,"gu").replace(/punct/g,B).getRegex(),H=k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),U=k(S).replace("(?:--\x3e|$)","--\x3e").getRegex(),X=k("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",U).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),F=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,N=k(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",F).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),G=k(/^!?\[(label)\]\[(ref)\]/).replace("label",F).replace("ref",T).getRegex(),J=k(/^!?\[(ref)\](?:\[\])?/).replace("ref",T).getRegex(),K={_backpedal:f,anyPunctuation:j,autolink:H,blockSkip:/\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g,br:v,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:f,emStrongLDelim:M,emStrongRDelimAst:O,emStrongRDelimUnd:D,escape:Q,link:N,nolink:J,punctuation:C,reflink:G,reflinkSearch:k("reflink|nolink(?!\\()","g").replace("reflink",G).replace("nolink",J).getRegex(),tag:X,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\t+" ".repeat(n.length)));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some((s=>!!(n=s.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.space(e))e=e.substring(n.raw.length),1===n.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(n);else if(n=this.tokenizer.code(e))e=e.substring(n.raw.length),s=t[t.length-1],!s||"paragraph"!==s.type&&"text"!==s.type?t.push(n):(s.raw+="\n"+n.raw,s.text+="\n"+n.text,this.inlineQueue[this.inlineQueue.length-1].src=s.text);else if(n=this.tokenizer.fences(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.heading(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.hr(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.blockquote(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.list(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.html(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.def(e))e=e.substring(n.raw.length),s=t[t.length-1],!s||"paragraph"!==s.type&&"text"!==s.type?this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title}):(s.raw+="\n"+n.raw,s.text+="\n"+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=s.text);else if(n=this.tokenizer.table(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.lheading(e))e=e.substring(n.raw.length),t.push(n);else{if(r=e,this.options.extensions&&this.options.extensions.startBlock){let t=1/0;const n=e.slice(1);let s;this.options.extensions.startBlock.forEach((e=>{s=e.call({lexer:this},n),"number"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(this.state.top&&(n=this.tokenizer.paragraph(r)))s=t[t.length-1],i&&"paragraph"===s.type?(s.raw+="\n"+n.raw,s.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=s.text):t.push(n),i=r.length!==e.length,e=e.substring(n.raw.length);else if(n=this.tokenizer.text(e))e=e.substring(n.raw.length),s=t[t.length-1],s&&"text"===s.type?(s.raw+="\n"+n.raw,s.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=s.text):t.push(n);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,s,r,i,l,o,a=e;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(a));)e.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(a));)a=a.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.anyPunctuation.exec(a));)a=a.slice(0,i.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(l||(o=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((s=>!!(n=s.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.escape(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(e))e=e.substring(n.raw.length),s=t[t.length-1],s&&"text"===n.type&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(n=this.tokenizer.link(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(n.raw.length),s=t[t.length-1],s&&"text"===n.type&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(e,a,o))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(e))e=e.substring(n.raw.length),t.push(n);else if(this.state.inLink||!(n=this.tokenizer.url(e))){if(r=e,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const n=e.slice(1);let s;this.options.extensions.startInline.forEach((e=>{s=e.call({lexer:this},n),"number"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(n=this.tokenizer.inlineText(r))e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),l=!0,s=t[t.length-1],s&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}else e=e.substring(n.raw.length),t.push(n);return t}}class se{options;constructor(t){this.options=t||e.defaults}code(e,t,n){const s=(t||"").match(/^\S*/)?.[0];return e=e.replace(/\n$/,"")+"\n",s?'
    '+(n?e:c(e,!0))+"
    \n":"
    "+(n?e:c(e,!0))+"
    \n"}blockquote(e){return`
    \n${e}
    \n`}html(e,t){return e}heading(e,t,n){return`${e}\n`}hr(){return"
    \n"}list(e,t,n){const s=t?"ol":"ul";return"<"+s+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"}listitem(e,t,n){return`
  • ${e}
  • \n`}checkbox(e){return"'}paragraph(e){return`

    ${e}

    \n`}table(e,t){return t&&(t=`${t}`),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return`\n${e}\n`}tablecell(e,t){const n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`\n`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return"
    "}del(e){return`${e}`}link(e,t,n){const s=g(e);if(null===s)return n;let r='
    ",r}image(e,t,n){const s=g(e);if(null===s)return n;let r=`${n}0&&"paragraph"===n.tokens[0].type?(n.tokens[0].text=e+" "+n.tokens[0].text,n.tokens[0].tokens&&n.tokens[0].tokens.length>0&&"text"===n.tokens[0].tokens[0].type&&(n.tokens[0].tokens[0].text=e+" "+n.tokens[0].tokens[0].text)):n.tokens.unshift({type:"text",text:e+" "}):o+=e+" "}o+=this.parse(n.tokens,i),l+=this.renderer.listitem(o,r,!!s)}n+=this.renderer.list(l,t,s);continue}case"html":{const e=r;n+=this.renderer.html(e.text,e.block);continue}case"paragraph":{const e=r;n+=this.renderer.paragraph(this.parseInline(e.tokens));continue}case"text":{let i=r,l=i.tokens?this.parseInline(i.tokens):i.text;for(;s+1{const r=e[s].flat(1/0);n=n.concat(this.walkTokens(r,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{const n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){const n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let s=e.renderer.apply(this,t);return!1===s&&(s=n.apply(this,t)),s}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");const n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){const t=this.defaults.renderer||new se(this.defaults);for(const n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if("options"===n)continue;const s=n,r=e.renderer[s],i=t[s];t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){const t=this.defaults.tokenizer||new w(this.defaults);for(const n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;const s=n,r=e.tokenizer[s],i=t[s];t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){const t=this.defaults.hooks||new le;for(const n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if("options"===n)continue;const s=n,r=e.hooks[s],i=t[s];le.passThroughHooks.has(n)?t[s]=e=>{if(this.defaults.async)return Promise.resolve(r.call(t,e)).then((e=>i.call(t,e)));const n=r.call(t,e);return i.call(t,n)}:t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){const t=this.defaults.walkTokens,s=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(s.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ne.lex(e,t??this.defaults)}parser(e,t){return ie.parse(e,t??this.defaults)}#e(e,t){return(n,s)=>{const r={...s},i={...this.defaults,...r};!0===this.defaults.async&&!1===r.async&&(i.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),i.async=!0);const l=this.#t(!!i.silent,!!i.async);if(null==n)return l(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof n)return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(i.hooks&&(i.hooks.options=i),i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(n):n).then((t=>e(t,i))).then((e=>i.hooks?i.hooks.processAllTokens(e):e)).then((e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then((()=>e)):e)).then((e=>t(e,i))).then((e=>i.hooks?i.hooks.postprocess(e):e)).catch(l);try{i.hooks&&(n=i.hooks.preprocess(n));let s=e(n,i);i.hooks&&(s=i.hooks.processAllTokens(s)),i.walkTokens&&this.walkTokens(s,i.walkTokens);let r=t(s,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return l(e)}}}#t(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){const e="

    An error occurred:

    "+c(n.message+"",!0)+"
    ";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}}const ae=new oe;function ce(e,t){return ae.parse(e,t)}ce.options=ce.setOptions=function(e){return ae.setOptions(e),ce.defaults=ae.defaults,n(ce.defaults),ce},ce.getDefaults=t,ce.defaults=e.defaults,ce.use=function(...e){return ae.use(...e),ce.defaults=ae.defaults,n(ce.defaults),ce},ce.walkTokens=function(e,t){return ae.walkTokens(e,t)},ce.parseInline=ae.parseInline,ce.Parser=ie,ce.parser=ie.parse,ce.Renderer=se,ce.TextRenderer=re,ce.Lexer=ne,ce.lexer=ne.lex,ce.Tokenizer=w,ce.Hooks=le,ce.parse=ce;const he=ce.options,pe=ce.setOptions,ue=ce.use,ke=ce.walkTokens,ge=ce.parseInline,fe=ce,de=ie.parse,xe=ne.lex;e.Hooks=le,e.Lexer=ne,e.Marked=oe,e.Parser=ie,e.Renderer=se,e.TextRenderer=re,e.Tokenizer=w,e.getDefaults=t,e.lexer=xe,e.marked=ce,e.options=he,e.parse=fe,e.parseInline=ge,e.parser=de,e.setOptions=pe,e.use=ue,e.walkTokens=ke})); diff --git a/tmp/node_modules/marked/package.json b/tmp/node_modules/marked/package.json deleted file mode 100644 index 733069d..0000000 --- a/tmp/node_modules/marked/package.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "name": "marked", - "description": "A markdown parser built for speed", - "author": "Christopher Jeffrey", - "version": "12.0.2", - "type": "module", - "main": "./lib/marked.cjs", - "module": "./lib/marked.esm.js", - "browser": "./lib/marked.umd.js", - "types": "./lib/marked.d.ts", - "bin": { - "marked": "bin/marked.js" - }, - "man": "./man/marked.1", - "files": [ - "bin/", - "lib/", - "man/", - "marked.min.js" - ], - "exports": { - ".": { - "import": { - "types": "./lib/marked.d.ts", - "default": "./lib/marked.esm.js" - }, - "default": { - "types": "./lib/marked.d.cts", - "default": "./lib/marked.cjs" - } - }, - "./bin/marked": "./bin/marked.js", - "./marked.min.js": "./marked.min.js", - "./package.json": "./package.json" - }, - "repository": "git://github.com/markedjs/marked.git", - "homepage": "https://marked.js.org", - "bugs": { - "url": "http://github.com/markedjs/marked/issues" - }, - "license": "MIT", - "keywords": [ - "markdown", - "markup", - "html" - ], - "tags": [ - "markdown", - "markup", - "html" - ], - "devDependencies": { - "@markedjs/testutils": "12.0.0-0", - "@arethetypeswrong/cli": "^0.15.3", - "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^11.1.6", - "@semantic-release/commit-analyzer": "^12.0.0", - "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^10.0.3", - "@semantic-release/npm": "^12.0.0", - "@semantic-release/release-notes-generator": "^13.0.0", - "@typescript-eslint/eslint-plugin": "^7.6.0", - "@typescript-eslint/parser": "^7.4.0", - "cheerio": "1.0.0-rc.12", - "commonmark": "0.31.0", - "cross-env": "^7.0.3", - "dts-bundle-generator": "^9.3.1", - "eslint": "^8.57.0", - "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-n": "^16.6.2", - "eslint-plugin-promise": "^6.1.1", - "highlight.js": "^11.9.0", - "markdown-it": "14.1.0", - "marked-highlight": "^2.1.1", - "marked-man": "^2.0.0", - "node-fetch": "^3.3.2", - "recheck": "^4.4.5", - "rollup": "^4.14.3", - "semantic-release": "^23.0.7", - "titleize": "^4.0.0", - "ts-expect": "^1.3.0", - "typescript": "5.4.5" - }, - "scripts": { - "test": "npm run build && npm run test:specs && npm run test:unit", - "test:all": "npm test && npm run test:umd && npm run test:types && npm run test:lint", - "test:unit": "node --test --test-reporter=spec test/unit/*.test.js", - "test:specs": "node --test --test-reporter=spec test/run-spec-tests.js", - "test:lint": "eslint .", - "test:redos": "node test/recheck.js > vuln.js", - "test:types": "tsc --project tsconfig-type-test.json && attw -P --exclude-entrypoints ./bin/marked ./marked.min.js", - "test:umd": "node test/umd-test.js", - "test:update": "node test/update-specs.js", - "rules": "node test/rules.js", - "bench": "npm run build && node test/bench.js", - "lint": "eslint --fix .", - "build:reset": "git checkout upstream/master lib/marked.cjs lib/marked.umd.js lib/marked.esm.js marked.min.js", - "build": "npm run rollup && npm run build:types && npm run build:man", - "build:docs": "npm run build && node docs/build.js", - "build:types": "tsc && dts-bundle-generator --project tsconfig.json -o lib/marked.d.ts src/marked.ts && dts-bundle-generator --project tsconfig.json -o lib/marked.d.cts src/marked.ts", - "build:man": "marked-man man/marked.1.md > man/marked.1", - "rollup": "rollup -c rollup.config.js" - }, - "engines": { - "node": ">= 18" - } -} diff --git a/tmp/package-lock.json b/tmp/package-lock.json deleted file mode 100644 index 25d53ae..0000000 --- a/tmp/package-lock.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "tmp", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "tmp", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "marked": "^12.0.2" - } - }, - "node_modules/marked": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", - "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - } - } -} diff --git a/tmp/package.json b/tmp/package.json deleted file mode 100644 index 5bea29e..0000000 --- a/tmp/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "tmp", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "marked": "^12.0.2" - } -} diff --git a/tmp/tabulator-5.6.1.zip b/tmp/tabulator-5.6.1.zip deleted file mode 100644 index 6edd37ae36dfb86a5d192dded668d75cabcaa26f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2230122 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⩔2Yj-wB_uf`WW@X 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

    $1 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 z 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

    kJ|&jTz0ndckq-hfci^ss~ER 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%0AOoqIW{#sx^9V9@ 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͙@5NZ^5!s{<^oV)E8o+nP` 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

    MlC_z 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

    C`T|Ga=3i!&(6DwPtd=U9S;ip z(TXoeM|Afa`RHlTyGpb>YyR+L5f7-cLi1zvS4?WGx)hfLxCP7Aib%CR?NPAc z2_Xrmneu?#2aLs&^pgR|ugh}jO5KsBfN-t}7SX<<0~IF`!|AA1IqjDx#t&&Oyk zdHiH(0rn3rJRWoMkDr7LQUAxU`a>7;*gg}#_o_PGnM+IuVo&$R$U8W;T)W<;y53S@ z#r4BcBJN$>VsO&d`^%vCR!}zAin3YvQ8wNsO$Qgt`ZgQii_e!;b|vmR7Lo+zLn^HN z4Kk#*oCDH8>wvH*%kuElCCMNe)BDI7(C{(VYqfv9IIctf6#ATt_kHqnXMFQLM{ZQ6 z+Y3YJFBFWJg13`tfop#G4zh2Fotxsr*Tb^dO5dC98zlZmXZi6P%p zrFcx1FZ3^YvyK}P^oC)Rno8sW{I67dK~Mg2p~%G0Ns{%_|fOj=ul-6-vms7>swcW+S*TuSaGVBipQQ%H}8HLp<%&jl~+6@OC+66$@O+NKD^u~ zLhdl_JzwJl%q98r22*QaVLj`v5Nzki4|fdZaEJn9D7F>MINZX@i!wa zs1D&=S6rIkD`{L>@-ed)9Xmqt6Z#l;nw&m$nIeLfq@$ zxXMG8yxIe`lIi&LDBPEMQyf=`MPlkScuaS}MY$xXL7-Rc=aA4<0l znqKwOtqqxF9Y(bF2*5&1D1Es1Q@Q$$!UVw?dpfs3*U+C4#v$xHNC>Z(Pukhkp(8s| zG@(ruk59v7@$W$dcjgVvZ$^3rI69pv;E`BK!_z}?=MnQX2JqobW6@k1UgT06W}h_C z(W(A@E(+UUD~iv?b+*}}3GCVFc?uh+{YUQ|agv-(&J);sSLVh}Oy!+A4xujlz^K=P z9B%XcDYNyza)4KQ)vD(r=PW;;*=^L0VWe_&7y|5m4X_@8Byc^rpTwdgnJdzxc|RKx z8~l!pFgVz{JlhhLsz=r%CBY;RmCGV;8dn{i$#dsiMVKQ`pv;oraLJ3dO|Nk|`7dz# zfu-k>Cb*vQk%N=OOMyX>>UV5;56pYvOB{vEe2tH6NPr%p9r<#-Td^8;hkJtY%&L7% zDNbMGVqhDk37uwZc(y}po#WUs5v$NU535DV=jyahlKztY@JN5jBlu_lvq&8#yFjG> z%sb?dpDcnS{ZM+ma_y(5snG_k4Ym$m*iL8rHrl z@>+gr@>ixj3*o-8aQ$Xe1XC|_E-Q7C?Zc%~` zx3?rUUdG=-Oz#@I^@?Pz_VS?fxecppAP7(iRnY*J7{CN08@+u-$nVFfp9}Fhl*6at zz8f))x}q zKS*G1FfF#ES1<~ez#>>ec46CoHIf?>Y&q#)r#wcM@(pcErW#i=)kw*d-G+rUq?731 zHU-(`!E*pM!%idN5xPQDuOl4A8KjU$LRrt-4mp&2`&(06gT zvVufocu(Cex7-Bh7V6ATyhva!z<2WDeR-$~<^=}LfYI_>fgCaF*aw#LC@VxF51-@b zus~T`rfEwB{bX`1qyiE65C4YSacjn9t+=dL@h@N#+;p4$bSrvShFaQhA);*U67%K$#xq}FfFscIMZ z+R+Qif$(qFjIIBMbb;}{=)HSitB3o@1Qq?BKlt*^3twcF`+g4Bvt$$A$}-jqc&LDq zLkUq2)^)swRT- zkFms*>bEgismI8{T`%9FIXj@#`SgH7i4dCU69wm%d7gsd55G~Bw-ixg5DR?P!APIc!-JA;LG6+K zJ|jA4Ac4IUe(k0Ato<{;&Q~kaARma0&9v(~e;;hqHY>LaIAL@ma+#T(i^UXbanW&~ zI*gg3PK={ylXSy4H{7G|sQDIa3IERAB$Rv>G}(V?o#*~>AIrk#CK}HG-cmHycH57Q zfx_Z-LPq?fxxcK+4UkHXJJyuQlQN{%CCSvLOl{5Wahn||@sBsu=SALrP^ zdV8G}yN&K-8o}oU1}BEoTviR>e^_v-veCgxmPvRiq^4;Ux@06>S$c6r>m;-s-eLr- zts7_!Zw=yOlx6K)hCv_+q-`E0c$=xySa~Muock4Yo}-lFO|3RU`u3FIY(TBuL-rR2 z=D;XNtdNdQ>`)(GtP&^RbNbO+Kd~Gxej*p(dI6}%=sXmG%W}VDIa+zI4X2r2==T+) z9@U%PPzM+>cId&`)A}o z*PX#gGuArDNZCy~Yq$pr-Juiq>FH)bD?%G6dv2rCx-X!SrRri?=-c3a<`+DldvTJy zI7^P2jl`=Sq=!no2k(KQl59uT%D1HL2hrfMr3yfh*SX%~4cYL((dPx(tJ5eq8p0bk ze|a%=Zj&$&SYu*_CSR}**V}Y27ItFcrOdqp4EiS{St+T~zvaA6rxAptUI;&UhUqM^ zNm3ik&fAu2b6ElF3t5MGS;{z$QCzXNY<(FgvJrz~QT=1k0`@xV~ zzex2?AW(*UBB!}|drRpE+}{ZeRv5d(55uF5I;DdPW_WZKiEql%aO0r8AA6DT?6!=@ z1`O_TXneRu{=j&0Kz~m21m}(dR_@d(Ftc3HAm)llA4B04pRULDx)7l|H=$H+2@hFuR#LCBSs3zxmqFxHM!@%MgfdYeOECZMk(B{jW3mp z&al64X8Dc@%_+8>s80h^bi;=jF2=ohK>HkX_AQ>k{e%8_StlMa4YE*Sr(TMQX>pkL zsE4|+duyr^TDw~MOjP5LUUF$Pwi|?yo9IBmZA%NVr(xXYfOGlxy7-TU@W7&+P74bb z-oUi4ytyf!CJBG2b3bez1LGN8Dyj0y^<4dm3aeN*J^rmProA2k#wAo6GfBf&=$tt&j6!*mpjVn2E%A@%r^&RKSE(vr z0L2erRVqr>iUS4X0V*GTB-9uT3P&O$L7kn$RSbXRHQobWP%#P9qDY!p%FS8{!SXD(55A<#lv9MvA@2#0$Ru<83GJ=~ju*n90zLEm-v zQnWJUJ)oFdw%V3IY|HSSo-na|WtJI-2xud}qXkCz4v5)${VW zNNeqdTRF3gP%%rqDGhuceD@po zyyY)cUyLu;?BjQ^`}PHCtWaPP)5f_$_v{hp%zEr5?Dlz4L|)?_{c%~|0JDc||KO4- zT%_HerNt~aXn-1+6yIwmA{6CTKG#800jGGcbM->YaH2m%gol~!n7&S?=5II%$MfP@ zxhSTk*f>uV6~t3`LkJ#Ogh%saShI%+&c;w%U5}=r$B|H%Aaf3MvlPR<7&I<%rD_L} zAmMvFN$a=}4w@Zzzh*2p6>u9R1Io2km|sfcCdk}qC8ng0i?ISB#JwRD{Q7tKLI}=XO7B$TBqYOuQv3W zxn^TNM8qN~lNO}5>6GtL*Q^;iK1eUi63&VqfdDC?U9@v`icC!Z9)><=slYQIIRT#D z!x@`uLe4@-I#BjmbH2boQ%21w@>fv1FGYO}mI2W zCpxeHwO1BYxn^{&Ae$>|h(h704JO;`@}Nw1;rLuN8#X*YACcyq-43=8l8IQ;CZ`Wk za;9@^nvxLF`GBic*_t5@)7u$Pq!H>$L%K}Xt_>*K$eCFc09|01Rb9i(?2S$F2|+75Z>`J~cAgvcRf^sq z5imlr7xdE`f#iT#$E?HKF))DAn6?%v;I&2gG2kO)(vx@X#`f@@_+>`l+W3$9_WU`y z5pwGvG-h`_V)QMGL9JPC9*C-Fh_<4-9$F6Vk+3c|2j}PkmbWV6hNT1_Dj*`-+IM+> zw|2w=SGA*e*5P?~m3nzLpzC2y-s}skABm}RW`=pRnQR_=t7j|l7CgWe#_B;svu2{6 zO&*4wO`NaarU$NyW3p6_;$e6*YPG(_N@1O+<)}Z(B4bQg4?~=QxohI z(P2fg(=((S$viYiC`M?Mh`^?(Cib2OHqMLL<#hdkol8PN=-le&qhCPP*AyRqu8vf4%+r^$Ce6V-~&?X}EQE!$Ks3epE9GFVV3JY5kFy)mE&mHN$|Tb~9-Z;iXp1 zigl)yCMw)__OJSoZumo#ke->j5vr*go3brN0uOwivPtbcXmh_HiUc9hG$fe`>gLp3 z3Ar?6oPW*MJBCky+z^(&5{y)VYl=sXl3<&ctgZ=aN_u#%9b$qW(Yjn{@CB~?--o=C zihTVS{qWTt*r}x%RyfVQ)1@D5p$eA?hGP&9JP2#2T0;-QW~m-wpcLakXQlGLLFp#)U{!;BopNV$#}RGQpzB6Ag)1D<}w9n5>1Q# zQD7~W0IP>pbyQPALnqXpY=|aePum-huUuvd2d$V`zkLllCAS$4t$@X}Z!yj!z!@a9 zHzl_jZUT$-HDSxjq)KJ58C)dcLQos>7WQ^MA%FXu3C)V3^)cOxM8tuR)?Y% zwNQldip!~bh5fv$+5l#C+0Q`lWp!M6S!j|fbfh!X`@R}D(?qr~I$$e4l~q6L^;UW;=`-2H<>su;fBuDKw} z7vmqv;D|;qGLEV!i-f8v&u8NKR_03*Ux_zaSiI@TBkW4#FvEX42sflWyt-|`3`w`l zSt)6Zf5oE`N~PaV3P-o=2}dVH-P=Q*+=n6!t!?vV3~SKq^M0_16{1LckkMcxgqP_5 z&o~G+oH7gKnbjk+N5tIt)KO%n{h+k@WuidYW)dk)kdJyuwIe0+ z=lu;6;*lN>L~zEEBliMTX)%KEO35QvnNRF*47bIV>7!MUJsvjWJH6R9cXk9LI|dc! zzKu{o&e~%TAo)xhD^HIm(hbEbNuC{8bjWS2jQWx!Zb&UdBxV?64R&Nsu{k{cQFwf+ z)o=u_k+De+_y7nx5F8E$H2WH(a_@y#4h~OvN(}8Rc@E`P4!SJF zh_2|08*VrFQ}(c6MzDp#yam&0Zcckv89rJ0@Mjeeb6xFG)tZWy~GuV>v;xauDW8#m9TYDnHPz9Z7lj$llm7nv{*yAGo7N6e+na; zC<9P4n#JG+WU2N_6|vF_T4H;C8PFAGi5G!UxPTf5p$zsol*2a)_WsEiL4;&)x$@br zj|)r3`LnWZ>u16^pxO&Yv%ZC=4ZmEM^1ZniY99||^S%F~kP7|5g|D>9aQ<{6*cH@O zg~suUEnrqa9ATF0|J@A5rUvvZxOf7>II83;EgG+rY44f0TSgIO{cLWI(QFCG%$#!L z2MW`^Yu(G#jraVKPl1D4!_Pn5v(~ z>gmaNmk9uJLk`a!(&#{RymxJm8;P$c!i2;*p)4sa%q-8aftU&SfEfvmgZK_6emj5h`0hA7ue$``LM_7p z3y|t{zQyOO+xgWDTAp9E?e)|7i*WO8d-HUlO{H$GCiV1cd^+Q^zvRA*_De|M1k5&1 zZ+qIR=i9Rj7q1+j3eH5yP3rUlWfH#JBp{3quDJq!phyC03FTmrl1tl>hcVFO6#gUX z^it9l0_9i@me|H;kji+C94eJ@Dz0p;ne^uAda*m6ucp`VCtZb!1e4^kuJ`c49kZ~GIC5&u!bdb;n1zn>sZAV> zcOj0?#T9cn3yaCrAHPpp>d}m^q49}&st$9RTHs;e(D?dzmps1lz}Xs_o*-a(mn=F> zT;5dlvOB&$_FEmlNYcV*|DADj_a{YAAmFztoTYdauGi}BI3Em9Od`l<1HecH!V!{9 zZJ_as>BQzLa5U;Nv(ty<53;$zP;7^d8nCXnK*!;OXHUi3-yrGVFQ9PBW$yksO&G6! zgciqwE*q1GFX=ji2U9-9-1lKgo(VU56O+Ehqj;L494$lQCz~abWfi$xg=L*y1Np|# zZ{7+B0ew5#a=Jylp07*{DsYr_Zh#hCna`(b^K8BrI7MA-tF%BFzvWtCW&51695Sa? zlaC&)LRWxz$8t(TQ`c=PNA6P0V$ACYj!u*R_hy?z*%a=FkLUoR_ZP&1TpInk+(eYg#-#4V0bW zJ{*R?f(Hl2M9#7d2HSySfLZPk0O1xuv=G4CHFFrHT!$g)a>Go%dG7k96q-NV0~wP!gWqW|JxKVA2SaqDV-t&iuX!M*J%>yy_0 z*ebiIr*-(+=brVn6y=i;jig{LT=Q?mEhZtlawyyXQ?Q95w+r~sMJS&gjcB?BFi9Z! z>7;E7e5sWJ;3QZ(fHd||Gd1{z?C;9=2FWb6+w{sOg`BO<~SGxOg$l&WbF|;&ymjIZ5aEU z<2cYqy}lHG(LfyXU?YVW2CS27OXY#uv2I|l(`kIRw5$t^mZJ2Gou`Z(GcbuzhnE3a zp#CK=+fGv707C}S+0(~C9hhMOkQ*vkg)Tf%tm>*a^I^tC3N9w5`gUdJ(Xnab_$ac9nqLAT&}V)ru4Cc9#T@_{6F2dHv^@DB_W>&9h{?bRzu&FX;9& z=De600*Bg>Ks?K5PVJ*Pv!y0xv;!@w2!x11lC00H!+okZOTU+zrq<%S!lWbe(dJwz zxs9SvjMx7>t&^TX>v%MNA$Q1swaO;ag5ix0e&#y{wtUht?Pbl?12e51$lxh}F1fD| z?O@mS8@%avDZKlAT?z-MVV=_-x4^J;7$O3V47deZNJY+F8lx@UM4vkpPh;C2pw`xw z&U-CAZTHdJ@}m<1H!7#cLglp?;(pIy(qPmZwyBciT%y@kUS#-NXfKHFlyA_ZiE2BaArvG;o?_2YlQ%weH%5ohn{ngVP}nA4 z!q`rDZxW58{eys3e4Mt!S1=h;Nuv)k@!Hxg1!5!cz$Fqdm^1_DRS^g_GE~7#gFJT< z81!g}GadcJ12T;M21)qucqA`gG`YdSjaICIKG|xN6{}HxRRGZpH!%CSg;ctHX-p#^ z=SCGJk)L4IB&hrR8Gk zl!hxj`g`$0&T~4VC@hflM$U2s?2*`qH2QmiJx)jXKbpP+3IS`JdW=Psi6by1Re2}D z)PLaXYhV?j9gnDdZ=gH-X_H&#=v@hOWDjHMK7oJhw5gP9lt!c0x<8Vz(A}AeLA6#4 zG71Q*?HXO~<+?;=&p(rWV;4@miY9m*4W2r7WpmD6Lj^~*!r=f(XQR^zW z!lmJ_&A#V~w4xhF1|Tn1-%C-b#k*|_rvUi5B#lk~ys$3Hi(QT`7!r&QRWa_= z-NnSU<8#xRB;1a(lH=PVXtWHaait33W^)KV9>IkeIT8hFGkGY;n7c0(=tz!hvm-@Z zDgsompeBAa%}E?|=o*)`fTsnjJ5puI4CjI*c1GeUa`-_I;5(j@(`$hZsr_z zvFUal7yZFy?D4ywbfIC~n*+2W3*gR%W?>c58|#hBg|Aw&KTbQfi|)NybE=;gaw_|n zkwlCF^~9wW93XLG1C+h70TwzQ03FdLnK}^yrba6ha@fSAZ(*0COyH`JKCF*V4O8** zX#psrz+mSUS&XBHSOLY_eiPEj`72#b97ylwIit_B^F*-cK|c`!@rpcsYPo|Ay-~8R zp&TAC!gdtgM?(9&bNn>8gln)XQXZF@@~3>y@~6T3nKrHtkLoNxJ_WMn2o7#--HJdW zz(nC@okW;sag0Q&q#{sTlpZ(gXVN1I*or1bqOY1iB3x%TYy`QYHu`ufD|~EdN_=3D zvm+*3P1UB%_srHVe8_~I8lN_2-pJ>fw#%ScF;_Ink(OvFT9BU3S(M>pLuBqAeo6;0 zK6?`ZJrbRh?zch32*Czhalv@tWe*h(C6#Z%iXGmo5q`%jF7_o%0pqpDhsvGBJkXX@ zOj%$RF^6dZmzpx6Insl0_HX|<5|i2L4U8`Kfy7g(5>|=U)Z-W)%9$Qz&)l3Ln$yE= zps8`8VTr~pd^2HZm0_asP;QPs7Ms`i(5|S@aCRU}ft3%00}!-xa(h-h9WF|@LfdBQ zdMJ~p`s09Zk|Y#1!PXlv4s!h=-@e6q(Kkv&oY!!e+wccvB&Gm#?B_^(#1?L(_r4YH5}=!i_lGY zba>n*3)f7Q#@0Nav8R0~XU5{Z@%()a24mZ;6=YmzW zzDb=YJT8^Oq`6j%sU7;#DmlD*L8Rs{pk2&dLm8gXp>Y|Y=&8%;s|88rgNrlrMtO5wLm#!FBM?~H_= zDGk_=G^g>z;C|aqKhMt9yN~Ye(I|^3K`cb8i!JL=F=img_Ehn(@*H`kS7ePrc$8u=vc30IOGp zb7bDW8@CJG4yIZ6QDelL)nZpIVy(wAz*>qTg*+wcX%`UH_yDOXH39I<-~6GxPu-qQ zvuv7K6t@+Vw+D?9aDxl{W_&+|M=b~8RlmPEv$9;bsTPZv`^8@!M1>W*%y#Q$>bc~t z4L7CC@J~vj7)kWOZ)rB(bOG8%?u;4diYzA2;5A5C$ zk#PA)-=?;bs;v^GR9AcC0g!JfKcQRIka8QJ9^k!up; z5k#gS7tXP{ z`@@q(JYckeufRYy7i6fROY!}63zjRm(UR%D_Ndqa&GCMFV5iWX5JYbCI6GKVijcXsaW1iQqv)3V2YefYnAy&@p*%&l&Ktw& zRIq+D*!VE9J+2Kb;Zu+{9WZl=#M+>`Z1Qa0e-PR>&Xp~X8BIq<{l!+JM9XIEn7};O zWS1SI7fq{mCXL;5x8-)UwxDvcjS#Hz+{w}>#Ey1tGY=0S-Pg#%dJQq2G6!o(!SHa~ zC+g*APdWEhDA_yl{gMx<;5?vQJY>;o1j!!a8u%HZzaC8;xLi}VFiwLYsMUj1-$*@m z1?SG?elfKa0O-v8XO>h3M96M^gAsc?OYkq^5AmG&F*^6jxD z|3p_<)bKTNH+;hf4*z%pG^9onxT?zv`jm_^h9iS(d4<3kSF9|jP% zOg?_geYYJ89~3>u!A`&>sBxIghW*U0t(sNGCJ6P~O4~kp0ySJtm#!9*w$P-NIQcv~ zQV99xaOWU~+l}m^teWT80ITO`27b9_8Qh6=lzJ``#H$#pOy=dTeg`ZmYjnW$wXpBT z=HLcien8c#i?#eo26e{^oZKh`Y6Cma3&JEt-zs4f4=HNN@p-B$iu zmA3^Bx7;nSYZSK14^rcj2TLe0zRI@qdt+)CH!7M&^iS#pB%jhtvzf|0Lrg_T7c&Pq zJ#2>fy-2Lc7Dl-$-&NW211`%wv^Kq0q;xgqyFtrHzq=HNv8M=iy{{P>#&98jjDYIH z*C<;Ds4QOnVh5luE&E|@C4xaUptrpDtr><1&bnVk+>H0#%myS)+M}HtDrjphCz_Ai z)p~k%-YLa)4T-G7f&4;qB!UKCN;B;CycvT4&$gu1V*1Y}p(5jdBnWdi#TA95W9+XmL`TzH#&F)_`evKViLC zdq(K1Dg7S!Jqv_^^Gmv5%l3PI?-r-xG@kK;f6foy8J+j@Zieo&;o@22avC<4I7X#H zeZ=j^j`Fred%fHUoJKm*4j36q?tSx~?b(ia-+tu#7M47a5F^}sJjGe`7EqljRLK#! zHyG%(jy(jc9b4t-*s4h!KUeocT?!@;9gAt##%Q<=k)%iboRx97aD z959lCt8j3t1$+Vbdk82Ns}%q|q^Db_<=iqAE=Yd37@y8%NL(3tu9z#o1%^C@@l{CL zmK(XnwPiL_aN|V-{PC&$(IfNH#1ugY+4w;u`ZzF^+&Yi#Z24zF934)+*RI`iLDy=q zFcsVMQek{!W3iM%kCbO18Ku;a`6Yv64`5HW_C3j<47U|o zbkx6Pn8L>objB|k>9<+m;P(k>p*VfstH3Pdi zJ2^QqzEMSsytyb03;5BaNi{k}?PuEqyNpO})X(kmw*T2O5gHoi$N@A-l{TD%e*ILe zU?RD2GkSE0)gMVN#VRh_K z<9Og;ZL>#@GKuu(^D4>bnVuqNY#r?`qIc<+pm8x4hk0_<`clz^ob88l=|b(#7QWSz z`@ZnMuF}^;I=EqIa^iU4AzN6!8T60iRnkrY5QI}(H*s`g)A^)akMY=%8#MIM1T{bH zn<>vuv=U(G(Z>jF4Wl*H-8kzpxQx(riL3O-A(asajnPkK z`C+$J4oKczGxDs010P{;BltIKFi0+2p%%?DD~ghQn^C;ubab87P#WN!^lUERIvSZm z_SFa=>KeE;$U?mvWiK-#7Jh-OEfSq2u5_Lj_|LuINGeUrPxH=x5pem)6Ht~2r`qjWMel8swAnK2o%u5hBU2wg~di{ZKY9AI?A+0mVBrg71@Rn*sbAI ztnNk^2x!s-c^c?-o_D-KIRh!lG>VBGG%Mzi7%or>~w7lv0 zq4K7R{S(-O=4Z6#lg}V)?gq(|Gjy0C4Q0^MMn;x9KK9zOtXLh}yoDD_y;mC-twDrW zCi3ru!o|svVWb}2BLcRQ&LZx><$t~X`88fGH6yoOQg{oPZX*nO*0Sj{J}W>T;^|MV z!6YrEiX0q~1_#3xc`Th~?usg_vQ15mVN>YJ2jy<~SC!vn+h3?yZ0dSyFoSm9!oKk` za?C~_I4)zj_>|qF5Z&)55g6Jz&khEk<0b&HanvyhdUQ zqg&hwQS#z$lod!5u+6q1l7N_FK>$$Q+v|MIafsCb5da&Q5TXqLnI+w&1T%fk(Kul; z9qseAhGnTJ6|@czB_mbMns@mI1;?g0KyydBr0<0ALr5)&Hc()Kq!!@8JF`6ll_kl3 zG$XvoabSgWv}c!DV3)n)h~6A6ke3XH!91WF1T;-PL;9iq`L=*Y082M_z#%T0v-*5m zpU)Zmt2``p)}b*OLM_&zHi2e_D-kYbg^{_21y^doNoxfOeL#+nI}6?2his__cPFGd zq;oCR(m;MHkQw}$iZ4z5GK&8@`wsCs4q1_1WwzA*}U0cS&$mr1fKg#qZvR z#)qm%#!G-2FJEC}fGR`42(0W zKw#wHd2_;@lqIvk_;Y9c!0>3dgE@CQ$fa)-d}e)T85AT^DTCQ`?Q+84-?ep`<)ntNK8SMkZoiE;o@K(4=ytCkBA z^$;XVybCha4hB3B)v@1*>WKcdTcI#6eiKV4+2To@7I@$oKh=4Z`$ z2t*gLyA6gT*BmiwIoEq(pw$##nhIc@Vw5~`KbXlhKrGjb8i?MyljqmGQncr^hm6@< z7SH)?&xpA&T*S1^|HZdn|IMQAJabx&v-{1tt#Hx=r^rO#zwv7Ov9PbU=6Af;jC}q1}5#TmM;Wb2Y&`0TV|c#I_Y%Qm}(4ao%t2K1qCQ zzjZ{>%ypt+bwS>yp_uH1twwL5{C4y+6+k!iH9an(0Ot=&k}UsWIpWn(FkhhSeN{P1 zn*}siA4lov7hofy?yhF4a${A7)nJ+Q1FILIPNU1RXvVkP%x82_u2-|jN#w>{Uh-gB z@=zS$rSa7ukP4Tjq+3T`K>4So$MhW2N!Zi85%1q)TyWk}7MsI^{l2RgRz*8l)CPOKW<= z+92(#C z;bD#}dtxLyD);=fzUS+s%r}&&H>nZmkW8e(vHCA%-m*lU?_bL8Zfhu6U#xc(Nzr5} zOn5G-Zo3?R%O-P6Ck`T81*!;NIjZP&zGA#9$Ka?xMjH-xtfnswNz_>8s$D}H>qthd zVD-`{^&UR6EhB@z0QX35I^Xe!R0A1*FCTmQsxVxN&MvF;;&qXUUIMc8^Y?HdU>~l6 zDk)&u$0CcE^;wcou5d0%vre^WEbODi9%CBC!ub)_Y|4=w z7vS~PT@oeJqhOQ-W&fZogx}Ncr5gUR{)K>?=zj{3kPb}CpObos7Fk@iggXB$^OBDz zY9A;avSFoFf1iy%_9Y)%|J!5_Rq-PwDpXj}*VQ?s!qfEw#6TlMN2eJM=a_ps@r2W2{KCoA_m zmwEH9e7md|D`L5AQXHxX0oPPNtOajh#;)H^Hd!fGM59JF+T1-!!b=M9Lkiuuj)>MqM^33Vl%u`;V1#l!im~_Aw5&ES#DY?(j@^e(1*| z$Cw<*Kj|n*WzusZJiz4ogM$aosrwFyp~S1 zZE>?Wqa9MHKNsHth3yKYHK#DKjy2kY1hrXozJaC#j)wZ9@7mP9XQM_M$YZw38`5HP zOIwFG(2Fqpd~h|>O7x+X4P@n3y#;(%-UjLjPbClT>jS$pdXn6b%R@11N$ zYtm3+PlJa-@ObhKx;Tb@o@=s{SRCQU&L6qqzeYvs^hp6y)tA`uwyTT6h{Ge9=11w$I$y%WU2qJM9m%>+pbw&t;J78fp@vPt-L`Vs-xv+$rIJeO2sM_&kTZ6^u)gN_3WBes<~@g#{f}K%ac>g5gsTDTSR`i(dvOEP_Y~W?oNx`=+5TO$e`!*`M}27WZ)|Prrd+-F2&b?nioq%u zq2iBQc!$p?Zb@Oo4I{ww_|yCzxNr&perX|FyXW2@J9=Im`_t^SKl*>)UJl$ z2+dm(J5%*5p>SDfJ792qh|~*&;kaP`2W@LCIU!>z=__Rhry}Odny4B1*fYhK;0x=V^ElD{Ii0u<$N+zm}sYQ zYT#AMuuS_yL?Knn$G~QOp#&K$nVP?uMsXWIzPTFH8veVUXL2;@7N1&G%_{@V=U>DU znVitGH_3YW6#oO(q-{?V-RFf-6DG!sCF7w+-d@9;KeX*c83hNCvNjm37ud@b2RT!% zN^jH8=GCH<>IqYwoqZJXCcLDl)j|$*?q#OUIFJ}$kLMWKcF&AXr+Zh9s2J0;@Z)PT zHQFklBFp2?)D>wLO7|Rb8NT=m-rFq~SGtQk^-@xQQ(peMJszG0DhE}J(raVyHbw# zU?VRO%OTew-Z{bb6{LS!&&*2+H7#8L1O7l`AhrJqS0&q_RyRV`vwTrc^VF}-K^WS; zmde-Mw;4+*dn#&nu(ij5-g$Kdp>??a1ZrlXn(|;I98^mHRqHHPk25%a0H$jI)0`9| z)+z?t^4SE2ygpkSk(Q{{|| z@hU-BgaJKzbgf1aU!PsO0~iksK%G)`J4+Oe1G@f%N?j*3blxht#)lqF$uzP9fMCD` zL*FGN(U3LLNRWRzrc!TVHzs7HRa$~#k4OQ7+jyWDhqfrOr7^v_CwxS+w=~yUi9TrN zY#Q70430>Y`h^U-iiJ_>JssJ~6Mqy-^2gB>JqDPI>aLdKkg_L^gokNQ87s{BwrZ?lBT+|rpM<{(+{cTEQf^J>|;el{bI=)Ow5k!0M zds0_encqk*ax(rTw8I+rX)WkUFvQp(oWa@E4eA%x2 z`uBx7&~YMQ*V>L+rq0oGwzb4gb%n0q*L)nP6cM{cpxV?;n>U?RhuXGG>zjmepEbhO zh35DmInXO6rw#l8o(BHT@n@%Zoa;c7R$$C1_JusQK)n{(O@4(Ko`$#s3`5F)e)36E z{#4$gvRh4zyiy}HrY2n;F;d=c;%FQtXs2P9Yt9$$<%R>zf6Xjq;};*ZWutW@IgpZq zp>RmGt1(@8_2LD|e*}uI87T=J(95fR?aN4$+%tuN^MnnXK!waefhOJw!W{S8qFN$v zeu_&*mG_)O1etkoi11(meK#!P9R6ac4)}*$H9=+gnc_E4y_AdzT>vs=La)1xHD50# ztvL8hy^8PIN45lNK|G5@Sy~e>(zB%4DmF*N1HaH`Ec5_ut!Og#ef+6}RpDUY?$N za{O0M@AHOjrV;*)Qv6%pq1%8g+(m*J+$s5!`etTWsjxaAu$tB%1dWrvtFIkGxL@^+Wpwv$p7Q)}M z45o-8=$;OGgunc^EP^SbNC9g%jb6iF{#zEo6j223nQ8PbzVk0JY96bm_o%H&lYh&9 zL}__Bjmpa?#ULT%o4n@pgAe*A>blgr%%*DjBkn76BzU!xlgL=@PO)jf?5F<%^j6Pp zO*F>ya)W-WL^*P_WL?+*TH4OUjz6sIMr@OnfO~H0i92L&l<^VL5^xC?D_77dLE7$j zRytOuCwlw=SO20(?B%Fb95-`4F!ox~ye|2ZbnP1f@aspsM$?Mv8Q31Tv}~$L6917) zNTY5fGWIoAV{f}tYrUgU2TV4yNa8vRb+x=pld}==;&so1pcc;L8 zFaVPK_wTn=*_7|!bEoZ`k$uJ6dYg(%nTdq&Q|eoM{n8}@GJo*ZAr$I*OLj*R@SwHk zPN6Ey=Z&H6@vl5Mj^QFu=QYADcCfK~xtiY@Tn#(nr-ipM*A`7`uiRQ_ZY`iNkOfp5 zK9HBBi0NMUbz))hIw3!rWFj4~lIKJ6?6$~b_Xt}|M>&v8yP6z)X2nQ!mmJX8RydH- z1|JN85a1#YTI@U3g=;~tGOT~f6fW`BG`SxzV0R(~IIV~!7G~pKC(ttbIz@jLY5vJI%?Z6>SG#pq&6P`rTK>RL1f7FP zw1u|gDL+9nv34(-&~l=xCdsdCSdF#u`OCxOz8KMq-t(|iq#5DF(%RIL3bu;AQpxK1 z0)}dcW_yF*=ms$eZJ^)J6cUS+IU;Te<_-CC_A!PTVLy(Lv?@`i5gEh46(UFGN<`>2 zg~qZBJ^#xU)p{=Ti29)mgcI*nNT{i}(mv7LHHNBb%pDSu74$9`v6N%#w!n!lqO(?K-inuDq5nE2?!ydQCsS zYHM&Mg^rZJnDXqu@1cf-Ku<|nEy1z*nxbC)j6_RM%M2A|=t`Lu$g6VmL;0(T2uycf zwV8nl-|ft#9I4HW;Nn#Yn77oy=|vDkWp5+C->%DBx6G^ZA~*Dct7ff!msO6u;aZ|J z-F1(?Cf$0smKCz{!l+s`u2lEF!;3g{Wys`}_Vn@X>L!ONscFbW+bY&;t(_hnnFWE0be(J~FWAp zO`^z#@3{-?z>Wj@M!0$}MWp^UgG+GV@zvv}fO8Pm zebr0$kfqU>19zlsUanZ9npyf0ge|j`@$*s9_}&`A6q0)35ODY zuVH|5nlc?Fr$6#M(h(0`7n9J*2u*-yt;ZuMYP~IJD*=S?>Ma^d+C+|J+b>TDT4a5n zSA0K&Wq!76N(wp?K}Q(T3WH+GB8FK!=1vcTT`Vf`9})%=%SOMc4s8dECNn8XH3*Ha z3nL|q7L(8Q^HAbRO)icmN$Lm%EQA6Zn8?RAt+SRX3jleQn-%6>is}nC(}pGGGuB)W zY1bi|Am>W&zWwf}7Zl+a$m=TlH!o(tRr@-7Z?zr!rb3gm1EEXhsm(|+9^_eW>uc`bYOvHsvvaBV`bKQm=*Y zEj+}Ah@U7(KD#4Q&bcD;;%OZPu?||FWCzLLUJ>V|6QS7^#yJo~1wJrjGsC*!9bi|e z!fhO4TTGC%kf30K`u(c@i`5kiR%V#7xB5#UMJ~&a!4@t>UPxGBHS#K3j(&a{Y@^OD zvnuat!YNxe*D7eRQ#2$Sc^qfOsw(qUdvWpi)p5IF?5a#ojyIIuW;a>UT$Sxbw#xqg zxV?bu@xul1t9SVGS5~zsEy>m`TchKU_LAXCW_z7)n{wOcOtg}3)RZZas=Zt~T(-E81Ls&aBH)~zjAb6J%D4z%f`O=OXUGFfuZM(%#HBGy%w=K*$2S(tl_D{*At?xD$c~-Pd#maWK{rgEQ zmZe>z4rhB)uChyP^fucHsKYRL?Z;Kte$4ZtY~`}$+icaM9q2__erW4_{o!#ABy8P~ zN6*KnPbS~AfBN!t(*Eh|zf9UMuj;b>s=3~_Ur)|X$A3D{+i$*^)a{=qPwF-s-DYie zkuBS78N*P@vaQESo8|F`vaJgEwT`o!cA3Gd!^ft~VH7cgHM(o>ZXspc?Aok~m)GqT z762s3+FcF5n&!66cJV52$D6hqwe={Wt!*z@y!_Cv*KP67q`k=F^+j93CS5>BFp6K{ zR~57NCb?}dcAJa#;&vPt?JjATUw;j&yv(+FyIjJkm#fXVMGph*^19iy%k^s6E;lPk zD`VKy0@_?w*=@VZ;=G~$u99|j0pnXO$9216H+j1PeA%vG|Jzj=FWYTWwyQcmebSDh zHe1JE{RNf+er@9QlXka;Usaqh+Yb}?Rj>ctvR~t~ug2e;PujAEeQSS(4Y*{@vb|j2 z#pCvU(q5g8cJ0;If10#-Iki`p>_AZ9$H%mAG zzvz*yIoFAMod@fmX5259_jMKWv*(`{8yuZa>`N@&b?p zkpyjigf(4X#iJ`I8v`uh_I^ESzy7KnpJn6QbI8pvZrk-;@v+^Uj&Iw|mseT4`Fa8X zu*nF-^7bRZ+h!TVh@YGSSir}4SphPMt7Th32b(-D|J;^Y+WKCGC6xP{t|wCIf*Cj zlcX)arXTIs@bjA(f1f7pDS$`8VwmwJ8Mm+y&1HKF|G#Q)VQY%=L;R-}23Y*My>81V z`KCoR&Ah#ZQIr*&kn;BGwB7!B0z-kr1^|jXx?O#Q-MxxWzih`boZ~;Ax61^Q;mT~c zfVco5#MxcDgYDiH<0pWI@R(H%AR$Pp0IhB7yll74_^SP9HqP3A!rFb)0<6RGefgvX z2pz-ZzBvbIN!oul3@U&5=Sf@r3C2-nA8J_C&0pH8jBi-`E3AD@=dsS>D+ZeaE8K2s zL<={t6*cY4^%(KV7MiP9AFwPVP^C5c>KoWRIHa^y^%WGYud@n}8G{lVNcu1alnE#B zYXD97+{A$Lp}@tLEu4-9*1Im_%LY1xUt7`J&6swszQga$1ssDX@#&udwBXmDVweZu z#M3{+2Miie0>ERlT#wskbp?OmxaZh&lLKC9@Q5~Lyj{b%AgzwSnE-$RAOaY|_s8*H z0Efc~zJL=BqfXjgQ^V=_3Oc#@27m~NvAn&>$s3fp0|l z?agkzY;QisUjr0B=UC8(IY$j_df zPxG_WbNZra)SFo8Q;wnpvgFqZeNEj${|~A7CTU3V>2=wRe$;~v3j>|D3EJ`9g>?I)M2>>QnIX+U-H{5M-hERt^IE;$@fasYU~R$$^|i$8ocW(4Y1+illctbJ4j2rZ;Q_H=g7o^v?E^?-kYH0!2gCXAtmK z!y&dKP+(6-M3oDtP@g8^u`b(rIBZ19$Tsx7IbU8z=hDUziQSN6lk=|Mwb-kc?-Vz$kp++R1u{~SI zH3=^v3qMDt(fu`Ku};Xr_OI;lLQHsc8nSJbW9FJklUZMTh>}DcLmg9U|BCtVeWXL+ z#9?J96y&N@&n62;>SAbr8cTy(TyM}X>Y0UoiEBGgW+kv{$H!@TV$D*-K&5BV@fbMS zoFo=9&Lt|L)p7KnR7JhGWfvHarkMxZ?+G zAF@9TuMFaB+$DX6L+94QmTxRa<%b-ty<;Y)mFAcm#1)I EDswQ_HSz4)m)aBlw- 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%0A++kqOh-f7{Ac{E0(uG^B!Z?3mVvbQ1F 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

    Ov$om%zB^xTzC1X(xA%wF z_2#Ru4%*Gv2lv}eSzMHx@}!(>%E<_DX_`&Dx3ekh(c5OTTEJhkQTc8&DS`0tW8Tz& z#;5`^U2ZNf;LEaGZ_3qZa=tmk3hk(?HtQDt>bi?fxgJgH&E9;oDmHDgL({uCsYa8x zo7rr$`1{W0q#n&qHY=E?6X*!A_znJAjjGMNor}%MdVaDwx!4;mHtU_u}b<%|^ffBhUi=nvZ7pH|rVvwHnov&D#U` ztDSwlseT(B{eJJO*9V)Xg_+y@R_y>&c9YHN>~gfXd9$-QyH~6?XJ7u|V1qi+=InIu z%gxyyaNt=p0xq~9COun?U{2RS@AI;*Hs=#S_wM7f6h7pOF-Ywn#JbrvMV-kFD84Nx0gs^;B?qF0qA=m>+Eb)oMGh=Fa*x= zmj|0Kf4|u~D)%m4Lvej_v6)>i-f!mj_AWN_FV4!%{L2I6f_X`dR&U+|*Ucv*K>GeY z;0^e(H(7yL8LcLp6?8GLN6puprrdPEl=FFY3JV@!=oy|SqkwrCvG0%7QHb9E*baMg!cec5J=~*;yM}OD=f{Wjl=bPq!J>OuE)OvFP zSTrkGC(Xs#z0LCL13(3q9B?Vl>T>!XX83G$?~Bde2v+mguQ!t&_zW7wW(g7uFm7Bi z^%^*4XY=>2g2rEbeXv>m0q|IrZ(AVh{EwSeGkRBTegoRKyeivrbXLKv0EsvA7Nx^G zn2VMs=6nyu$`atU)3;Q)B8DX@{r)SMK3JB`x>|l{`$iRMgp?& z-q-L0um;HhJlRcVdz)^02LA)AzQ&%r8pKP7E46Dz%NgJW-`dev2f$*$i@=HS`~BV@ zL7L-2K7o}EXzy&+T?=dE_t49`uYiw0F|Rl8>e1>9K!ccnJNi8^IdBp%&>qb7yE*(u z;lFveo=rCI-jBWnM*0G0;t%&W&>K+y>wBB8zu0{J<>rro^u-sn+ToAtWU>J@w1e$p zbXIH@Kt~YC7juxP7tLb5dH)q4aap!|o6Bas0@>6xo8P)>&udm?pkQd9&n7+9{ zddJ6$;GMer3vq-+T;9_(VN1Mn!cO0^fToR$_DTS*{#};2J+tJdm z*tQi+b6`pGy%T#qrrTZok~JrbZbE#{-0cC8i?YyT$(fl4zB^8ZvDJoHS$Rkw1%;#& zJw3tS*XmBSh}Re274qD?t*Rx7Mi#}3V%fBm*M@HqTf8&I2kyN5sO5FJ@MGBp4Jlz3 zHZv9zZPb$xKl4Y2r3&iGc~a>z`5^5c(}OeW4bNB2yavq^qkc5AcNJ#N#hYJkHXh23 zeuMRw%j|NHaY;Vzj7P$Mz5M0pF(nNhNt143>&7tC*aq|^@?0>HNxsp6A*jgN!7(ak z=xJ_)+Fn?TuHZWiyz-*Cpms+}b0h1M3Ue>DArlezLaRU|=y{&*-qkI;pk8w^7Sl~= z2lcx#h_S_Jv?IdgB|6&M3p?uK+Ne~z7I9b&0}$C_v=f7iLSb}QF|rfd97a`4eG4DC z4R(*eFzZ{F>%S~$4Rno-z`NoX*+`PzB8tj!9HvK2#p2lB7sXf>J>`RRuOrm{uNDx|`*E?pfjF?d+n6|Vy3ImE zb7YEpDdf<)TT;Hhqt{u9K&v{DKr$gFjynd(abi~9#gLwPiL1{v&qp$cRxX1KIQd_m zeS7!9UsjI=ck3wU7b>>Xzci@|KkMemt90PP3)h-Kdgx|KB4yZyx^+{_ ziMBrS0AFLBkE4V3`glwL? z{tPJe9jZuTr0!`RqD8Ou=vACXWBZ%9JOR*Y=D9h>iE^PQGs!2=-a%Q>OX=jt|ZYW=4(vFm}RX2*8xY(3C|R25UR@ z0#lTld}tIY4^J{C0B1XI8g!oKJ~i7&x&$%*!o?675wVSR#3<4KqPND$j*Aay`6P5B z^32_axH%;S=S@b3$0f?`dL7x6@$*H6AsBvGIH8bK{QRWJ)2~>Iu*=eHb&aPd@4PoV za1GQ3`*p#rWq-iQ$1En>kv#h-Ex}92#Ln+|HmA*(L^TetLGg#%g1l)ifZBz5 z)4PUKf_t>=%&c$KZLg)fMH|@=czz=b8KIr5n%N8mC`p8cbs^>NuNuJ*R$BthPXAiB z^+}l7?9=GOAq0sDd`{yrgzztUsGp4RL*V5Ik3O_GAXEiF<~O?>szvFH?4{mAQ><~l z6=z_2nwt+}#D_`jaT!9>pP=0Uib_m1A^3dI4!(zSORx18QC+~(c!Y8HO_bj5!bAdh zi4>tvr+R$ulU=0a^itH;{w#+(?LA;(&)FCXZ4r79kRb3c4k(tv;d7p*e7^(Kt(53hUgh6bsMVRlQ!RH}N*PNZrJ`rg?hBEHc_?_06a%4+cLSnA- z=7<4QCLO7!a5t}rET4zuaEdW>^Wt~cxXM{*pMMVWLZ%--GjVpb=2&391~)PTv)a7>NqyVNC!VrP7Xo*6Cd})#XCvIIgu~N!%!!Q4l>w# zM}5A{5RoA=15G-cCfxez;dFtqBon2!C2TWqtIOTO<)W7q3Z7uM>l0WW^+^>p(YQ3H zr^7+67sG&B&va_0o^+QhO2Wzan<&Rd@P(p2IY$Gm0-A4qnhal;duKi#j{`_o%&19X zQzXsnY!>^mx((2nc9j?|;@t-9Q}Lzq(h#<74+mP>vb)WV$1s_7xWt>MlS zj#yhyEQ~&KuVhP;2vCksrZ=?&xTW$<<}o)(0x{EP9bk?fOT>=#8OA22yfTT2_ic(6 zw5_d|HVn$~A{T2HvQ-gYf~p@ z61pYD%K>Mb4q6L)tQzW~YB7p3>aH&6DgNGNy+NGHww|bB z+xpw}=_#<<0d_?9BQ`}29LkClDl9NF3->JUJ?)*4fS6UMT>yjY zB*6gnzH3%+MCs%zQJjg=`5GhP`%@^~_-+O}CGQoEJ5D9C|jo4D+w zjMN7!4~L~5Rk|srE}FgqC6|02@#!;O43hBRznY5$zRu%c6U!(3bBP?qf1W!QIlfIf zY3SIB(NZnWs7be~cN@Bk*_wBJ%2*6^!c3m;o41Z(%1Kb;cnJW_j+YFKOgQ-9`F1q8dd>8-kX(|&AM|LC}o}!GB>0C z&XMXAei9Oh&^=shdvKOm)u0Lce3ld^83Zu8eT0zQIa!6YBsIn@9yJzaY*VKwJc-)~ zT*fwRf_K|Ad1-0k{Y>eE9N84%&_vO{{9?v%3zXk^at;URZgj9S?wY?WK{P!nTc9@P zvBhGJCUS3Q$0eM%FdR1W!p__9>HH_psZR8mbK~>^fCvMlk8LlI;67Lpp%%NZtoQf$Q-&-UB(8Knrgb$M(P9Ps7 zz;tfLoXJ8iC@)MnI=bJl$=8tdd?Ab2w@(_^KJ98>p$CaQfIrN*?;19m%-|azs`wd< ziG5yGOJJ`hC8nuiw#ZG|=A5MJq;WAZs;P-L<40qhS*`kp@Sb2-pD;lj=C^j_l`BZD#89}>UJIFWekLw8+lUrh3j?agA_$-6({Snkb==<%Do_fI(ilN zN=F)z?-pi|&aQvO&)zdwGyq84=2nmrE`04KNuoMPdscgqT5#TRp^=VlL6EAucobF{ znHl0|00>6U&2AytcBeQD0X&EXLB1jpSv(Us%BT8H@kfAzCW3t3m){nQbikehizbJn zF~^hRg%h33FPvIJE&m6il9R9A(CN-TDGQ}7e2_3tUg1Y)O0xl@c}t|klIEqx3i!u3 zizZ&4<2jXTz!&oe@HeH3HCkYpP=t8a@?!iL805QFfn0~?i8^c>ld>Bn5a#9vi%0ek z+~|);iq`b^Yxw&RItgCxT)BKqv6Ft7lL8GmBP*=yg?cw|9fYwR$&Eg&t+K*+qXk{x zev5roKH~oXH4hn>*(49KyDO#k8aCy24-Ahwp1^>qr1LV$BVH>BR!9uZ)TOPcT1=WL zg{5{pV=#?k6VO{WGaA#3hr>Vq^5O?CoUrZ~=|SXqNW{ujV=cjq-7ZrzdfU&hO^tfU zfATTrDzTg#n(Nifht-i}!AQZYnYcAFg7H89v*3(9h_Iuic_FWZ?J?N#yz0)IDQ_s^ z18n_2Vv1z5^%Hx7$kx(bgK$;UMgeFRcOMprE}XX}v-PxUVf2qMsxgLf`%hvw^Wkoe z7orRMn7N<>B_hvB3vzb_8cC|ybL_SzX*M+71*<2v@>(6;-8O(>CJ*T^_!L^g$g zdGRCr2GKoE*br#%N|VjmB5u5x;`TFHoCILF6PeT5{S&6?Nvc|Crv9~jpDNHh;UiuEgUMT zI=->gSSzY0lanipCB;?s21^(W;&|JIOoUExC~l-PzBL&N$&F8d9MslYoObEZi_eb? zHEx6nuMLySih?l8GA!iI2ETDIWNt-?}v#-Lm1;?5f_u zb=nhDAlp4_py`fxT^{kLK|BP%#=;4`C7U=5qwyljYR1K3ITRCEl%G0}ise0@@{B~p zM9Tu#P`cB%pjH`qIrd3d*D9lN#k5*nD=0o?bP0i`S!I5`o_EMNho z151cLylFt+NvZK^EJSM;rZ_oVW8#eR7ANON5ka$9k`4lk=)KG!B6#>Wpn-3kBtakn zg4H6QsbH8XqfPNZb9hZ~ zEDqN>d9&rk8|h9YF2WlH_+|`c@hwCoUi<}vW8s`W=&J@=VpccxEkczwuVO2N(i(Vl z`vJgGHy=nTUi@g_{PVL{FAl+S4tlHZsfmWx7ZtGAZ|eJ7#|!m{-evU1j4e9u-3x9Xh!m zPyEsL_TCMF2Wr3TD_)zp+?ZKKy|JkGdkM?x zO6S}+hD3~6=)L88=c9ir`X*fvHwS!-SGLRUI(@h%DC7e}xJVW`p!1{S+ke|LTX;3y z`|r9tN9U+(;F5y??f>@EkKcFQ(i9Fv4EC^UQ2$&J{c0PS!5nZ6)zy~pdT8^@sy?e1 zTPc#DiD+4vT&=T)r)k_!*#or%3-g~Iv?i+xGr88FLk&bnwJ7djMv^`5{EqHDy=Ff> z2Ikr^-MgPRqpPYN3&eGW?rlQuB;p8K9WT}jZPB=SyA%2qx-wiqqg*KKl)CBKQ|P={ z3#5VVxYQIV@NytXx8oWSh_w7fRVosqc#Y+}vru+sKn{ra9X|MrI|Tu};1?|X$vpaV z^u$MZ>vlK%@Tz*>g%}wExEaiDS8~?-=z25kll00>&ahyJamPP5c!5&9tc3fu=c1$6 zTEi#bgpa&adtQQcer#ULNB2@oQJTEpqUO&rG-c{qYbi>D+bri1|H)om7_l#&-I^;V zhXdXfiEDzW77w(i)@0pw&HQCGt6a_SMr+kvyeJoE;k^`N` z)FozH-!1T=*e(S%5l1aPm`c&3Rk3P}25ace*rb)Ch#XlU_rl{Q;ot(@=(+*KoEV-<-;kIj4g&y6hKCMSL+lbtK!!!CxemUC^w6^1I^;qiK z3p~Sm!K1-&+KxM9hd~&B|LUh7Ng|AJkdcqKp*Degr0-UqW0^T;b7Pa_^qS z5}P1I{I{Ql!X;FU%rVcwwijcm?_-maG&+j(RUX|z#raNhyjO*DFsxz}s)4;{>W%K; zYxRBVHr+i;M|gPNWp#oRU zH5SjU#x8sfItBf&>T(pDA#^ta0Q7^Q9KtR_)IG3-#YI2ibiiZ5V%{~{Tb0AG-1i%} zHG7x|BUAW#GU!bh`+7Qz2HFqXSP^;vI+V9b#ndbr=3}SzK9}Yo9VRt0??aA{JDJoz zdh=zPy4s82_(BK&(TY_%`<7CzthNHR9(MtE#A z?RCyh1`%d!qvF5{^SFmE7s;W>csVr_3UfE+oIQ+8^wLqqE;jh4TB;RI6+yfs7C$!_ zW}G9}jp8jzHiHJxoP$Z$E}`&;I)C=U2t| zkAHsp;}1Xo8A}4Cqx45|0-|?{GB~j3U;8J_picLY-`gXG`8wceV`vaHqkA6}_1W30 z!Z-c|!5}U|%$8nviY5DXUiT*kS~^oj2rrnGKxbUCO86l~d0jS)^3F^hP~Mo(j~Hej z<(~(=-hlGliA)r!6yHxmc{fmoJ%I97s~3ACd(4_Gnf_=ao7@C_O=-&b-W4E7olv@X zote3%lUF4dwAWL^5lFv>@Bu#Sn$m9;|GUNJrfnrY80qot`MTp*COdj|1LUY0kHPky z+Z$G#k~3Tna!eA0p2og|C6SR1EQu)+QZLYRhruPLwXl0ds31j{%`J6c>3=X9J{gS; zG+I$iSl-M8j^nr=+L)I*xGG9HmTctQ0RO5^F(_gfEHJDG@)5JpUCrgJ z?70K^Q6=L106A@2Pz-M!9p8TX!(aJo;pOwkKOf(I?cW+#V+?j&b@0y_Iw=aOTeQMJ zwsNpkM;}|&QVwK>K=GQkxwFV#WCTcGZDX8sb9pU$T(-wdMP-yqc6m(`Sq}mOnx)YR zrZ0+&;dj5lZ&fT4n#9O?HLbCDe^Ghc{UEAt@39}IZnvq!z$etT&$*VaDvI3bU;9cy zB%PdDR9L&87j67{mQ!pDg(9++CZX{y-cV>|1_~V((m;%Dhx0w#2t@JiniY(!a8VYDhxmuA(IYBmc3s-2*M0(%rij>U5G=L;06(EWec)9#$Ni61Gpf?N0glM$jO z_<|L@R(|n$$T2>5Xpg(d;@{F2p~yR2pcYpj(X(Pl&&!m_6SDE6JfSIC3spFv`D94QQ$&_6;2r1HFJj#)(LX(oFdO{;mO-4GM zvm+Lv09vfY6+=|qlRyQ$#9x+ZILdGK?rDq#$!Ifs!Kn-a6Pd=hwZvj_dY*LM+;!~P z4@hYnQG5zlFHG=yR2Tmt*#5Qd4l`9$gP+Q!5>?4m_59Ap$2s#37vus_qRQyQ zZF6XOnncr+tNze89k1nzjYL|qyxf-lSQd~#Ex<+>RFB@w;%;pdW|K?G@K`H%oSO_pz-!F1Cq$s=T}ePHmUmUfoLYc;j;)>!&%MRv7yx&7rtAe@MCH-!MjUehkY8v3(ION(D8}*k zQiq$oRCa~f)Scx?M9=hLKY@PCs}n@Lj_1RPYA>O&4?1D_o?l0pg{pvJWCvJD?V!R{ zOtV;e+j)w*7;;Ec&OUTXGcPmB*~Ep+B#MZ~7=>Kcw9?+Jta-p8te-r;zciN#j=HcA z5B(bpHvR4vi*imcqA8QeO5L7{D`>8Lgq2@Yyex@9-{JYoo2bcbfo==TWF8cYSnVG$>4d zR=0c;ZXL{A%dszwRvVHcRq?R6@213tAaA36+u>o#SJiYq5i#A{^?Wx>R^Vv(^Ll<# zt*{R6T;|tyFRsD{M=kaXg;uJj9yv`fjM&`rbF*ty_G}L08@1&6=_s zalM_;f5%1&%N~+k!`jf^DDXaBq)>|?|SihhdY>E zEC_uNvMh2psmoqtr0Yff_jPsMp>iufS*P_3pJX}98y;`<;n84VprdH=p7;kl&erQM z6Ah1Jc`Xc>v0P$Ycs;MS; zK^fHtWpy7@re)%C1HPE3HXTD?B1*#`0MtJ=Z$EKl>#kWcSaIjTZu3o-E;y?ePwcfq zj8D@`9AST&QC|y?zMZR#>J#zCEqqd0eX5m_z`+>q8f#5d}BkY}b3pcLmb-yh;KnUR)ELj}g}p1wUKkn=8QZWqJ#DLw zTVZ0P<$G&YFo-UUQ=9RcgY(v;Qdsc7<>P>)BWC2Sr64(2$~8|1-d4_v5`+9}@Lqk- z0XC$TzJY1*v94&JwuBu;{XeQ&K^$9HmTil4wSH)xtw%R!f}0QF z2b-Gp$L6e_6q#!M&>Smq$o??qcNA18H-UoJQa6zjm>#v*&PMO*>Vjh((=(y~7d}Uc z2;#T{t{3baBx|Jba08+vR{+Gn=P|`SBax1;X0dqHM_!$#W8zRSf^RRA1cjdejK$K) zN8ey37e;19WY^CS{9IB8U5aYbt5sFKLDHU`ZHP$OLVo$K~GXht&b4^Dr<*KmFyZa4TaN zg0}>M*)H7@n8=q0VaLg5g*`ZjF9(BDr8tcR_s2eAbY`jt&2sYa7hFGwyP3!-Wn5wD z$ecnvapw&PIR_qro!YETEPIod!{I6|Er-x_tiEspZvYwgH`mmGFh7o^mGVe{i+ndt{9-%L4~s!i9!Ma4A$9E|ZJt)@B7CMTI$?L& z-J(8QG&n{MR4b{WJC;A>OKZJc``&OT2q3z9FrRMekD?+jFRU=%wL%iFrI#>*LtmL(FlyS;pHqT>$!rGrJ(mXXAHI z2HoSwvb=%&kt}boHU6P2|1A+=8`leN7hBkLJ)d7XC%_h?%d#_FaZ+K}<2eULCdQbv zTE~%gg8qzSdLmI1Vz2{PWs}gL`y;m-=jbT}?;2(?}WTL)2Ij?8a zQBciO&EuClDv2XX9?Sk~AFgxSG#wsH5i1AsW(b)|A*mv5nk2-bKG%vx+>4i9bj-J^3?qN&eRx1_MTfghBSy; z*d{?UGgtQF{(5(qCs6NqWs?@e1!!MziX)3z<9sXHUyD@rmKuqK*x)6>d(F7fO-*{Jg0ZXn5m)!WYUbP*q#+@Q8 z>)AwPyCe>_o?Pys6S!`PrQ%vuUEK$CiY6&P?|CzuX6a8oNvx{%%#(Ap=$R+6)S`J3 zWzjsP+a+=M$IR39wrJhfW~*%L-^f1B3R|04sZsQ*(^d1Ey^wFC7*@IwDZQ$}cvfCE z>s$olyrfe$)7bjQWr@y7`K3ElyyTKV0(+paSN1C_QZA;Ik0E+_Mll~~;X3a6`|7vu z#+ancb?z_RR|sGbjUh>5Vs;{On_)c$=%_<+L{?r_{lgVt2p*trjgY9hsyeZ zJh0Y2KW(ymeIH?<(KV@pEryY#UjX8xU>*V-t(W*HvulxavCNj3V~bP=<&9iY*GZ~v zLMn=Wd4khjd(C`U@18TaAwY{bC=Qlz9Nc9UM%&S%MZa9O@9*Sp+$&h^W!ILwFp`48 z#uf+*?Al6C2{H8@U{^t`2{wa3536dCSQ!Zs?SR36zayvXYU=O=C}KklmL1WH{rE?= z&jBwX-E72h;UcC^auxE*vazu^#jI~x-M)?>)ND!&c4bNl}37b z;^wR1s8<_72jmMX9qfas8R3%lH~SupB~k)Uli1!ofDI6}|Hf}*RdLo>qQk7HR-gIsJnl>GbRS(s z9s!$>i&fys{5p`J>V!en(nkxAoI74nZF#rJ|Fs$IR);C2l}m{XE;Z0_0y4j$|9U**=o^ZCgw@o7W`Vo6R4;` z^jDnTxS}k3@|p-&R+c-(Z9G7JLVy#O;jS=q5O(_zJqgE%Do_`h9&u?_aEj=n#U9JYe!EQktv zrfx|gw?{pLKWGC3QZ(wYWa?To=LFgq(KTMTw)ct>mi zv6;1A`(qmSVJQD-4^d>7&os2zu+2KijEw1b=BiM%7-#tS7lq zF`xtO=NmpHraSq0rJ|V%4b#9npm{y^>kN`MzG9nS14n_~}c${I-C4 zfikiOmX@33yCL1q!h`_wkud^Eqy)$~trZVb&({e?7>db5xbZ{(7uR@I51*o#08yhj zJ^&w*o?6Rb{GNVsjo0)GH<1_+fea`2Yyc2;ksxD&O6o`7VMb=t(cF#Gd=1cDO7_(4*s$v!=}?bcUVaITIqM{*2<~V#j`ogR-GAEDl(~#@At4+1*QuX4NTBE%L_=0GXx8oGeB<7{Iq?dI*e12{6Lc@QzFcPXJ6n zv%h0urfe{HGAaK+oQA;vNQ3oIdBlbj>qP+~<64l3b=WHT#@eINlIr`gu7=FkaEPBZ z&D#QYvzt)+iCY7XT!!9qP-yM7tL54RduCSBwhnm3T^qc5!gCXT3GXr#iYD(*VT=WZ zLb=5W7OxttWFC$?#SwnKYL?|$*;T4%lechj2D%mdXcCq9GxQAq@A$)r4piE?yTY51 zo!@E#t0!TsNFN>&&isNsL`Gl!fP2A~r?gvv^Q1Y@JpZ2p@T=zROguF2=;y}*#(ILO4N7i@012_iKS^sx zIksLbSJkwhu(jf(IxpYV%}NH-zEWce2d%bU=>fdGw#(_8xDOG^*069biMBnLfD|tS zWyT&?)^Otc37kZ>&21l%f94Xod^l#k&X`;~;Jih(`u^2VKPH$@;SsctC~Dw&e?QeA z^&Tb!F}(YvKS=UCc9SW;>4fi9^JRBAoXrD;DSX?S=8d3HFL&IGH->OVfJMAs)Pbm% zH!>G@3c&F0``JNbbv=ggZ3nRgh}~}0%=!UAL%P$p5e+ldtSGA-#m@{jBpbuC4*|Uosb67I z=xt9dBNT^s9Cu~RcK;9>98t^HLr4*d8%8Mzo0f?Pmp(#dV6da*T5*8@*>U^5>4-xNnDA{tH$*>j~yovVRl$xilJ&ArkB$GYT!a{#J9e(p!dX!Y1UKYl`NT5RMe{=F{H32bB4pqL;CO1$- zyXE@Hc=l&K{_Qbc3Cn!7T!?~x*kW2f9%G{#Z$;VFyB5wKdWduqN#Qs^I^AJ9rzX7v{-Ds+ z@4l29nc7LUxR;2EWL8Q|cw|MQ_c>PLxHyy*K!Z9uun9XUrg!9q?9ykO2w|zIkz&op zx`|{|TqYKIV7$-NQlcR2DBSBJK*5ufs~G8om`W7(qrFvxMSW!v_bW4lx#3as5XIK! zi6d66#Flf7r#)oOm{sqp89(JQ`0&{|G1aj#}N;z$4q z2OB=TS4O<7KUB?1XJa30Gbgrsd+RKb`uKfUv4X4ei-#yo$fWO50qY7Ar zlrStpp8;T{OLn%tV_@yA5ZIlqLmDxEBb6Y@2_?#RiZNY2BQJbMQy zq9{cIqJd~uPu`;CWmLtH3o2lXW@)`v$bT(=my|f_$+!jq)8z&xtmpsSVL2z2zCrmZ z9D>xmS+^A|q(vIBKD4faQ@7w)P;UJ%v6a(7uhJRsQuW68Xsw)N_WWJnCO?^(4bKBf z?0ET=%?7ho@J8Mx7ZWy_$ohi$k`-0G1lV;dv!JBO0;lrSdm^J37L2PyTP&QRt>3a6 zHcA1$6B_AFe3%Mqdby>M)1`kTLWs{uIiGdUR~OeRsBmc3`hyg;Rh`@W__x+f;Yq*z%Iz0}a|-Z&)q)9d8>H zdM8J=NIeb&ME{cr10f~)umzJ|53U$lwOyY)=~=9aR-%P^y%Mih**#XsY*ewmDZl;_ z445`Nh!u1_bEjQ&;d1e2&cF&`p&t2Pufq}fqF~0zsvYkN#tl*gw{W%1WA^lwj+`kA zB()8=vW#IaExAnL-QwPZ?SPD(Nhi8DQBZSj9M6YKG+Db@dY<(*KUY6A{B0R?%79?m z+%KRP!qgsZ7)o}SxmT*%Zqe2=;Tf}auNbbaOSx?cW8!KqyhacQN?Hg}l)U(m6{dB& zEP*V~-gBxH;Y2QcYf*ztSzhxjmAbtMRrh}g$@Ej1e*n#_JK85AnsYM$oFvPi2>Z`m zJ-$qF-FR%ue>-utn!OhYG&t`mKNN@&WxWRVVB%zM>SW(9nr3MK+4~@eSNsUTg3mQF z7VH4MY|yIf+AO>tn>gCUTo%|H{;jEgtfrdL4`0NN9AZCCohOsJT(}deP4gP++{!vg zg*+y8ha3mXW7H2e2esud!{k~~v!04Z;WHs)=__x}rd2{);ik#Mu37$wom3^qEk@g^ zMDyL^UXBHC<$#1SPtjQq307npq~Iq!CB#5|6@N>ni}gK8+Bw41310CqRXL(Y*DM3K zL8s{2dC{A%_ZX(vZaK$bE-e1*9ewX|43; zTYEr^+HoSLho|^Us61SQ)oW(P*rc?L(^Dj|Y(C;Z0RqIK`~gP>ym}9#fnLSKl;|f_ zk05qw5-FR;F6b=~smZ1!;QF!baXpIHk|Oi=6%@=BoSM-U#)&4ebmpj3_N*Gyv``*3 z!A5KAuPW@2 z4uc#ge$N&kU{r)~=;CchLH}wRDG z?KwR{JgM+WHO0p(TZ%ZuvKIQoA1e-tmYB;(hVT@w;@J~QzHg+}O7@R0{Dk$`$D}2bm9ArSW^=f9QJ4PQr|wm@^OF<)%TwXtY+8+cGd#U}HCJhy z@y=wO&dHND<+T=plI496E%r2kr*=~cf(O}EVIl_wQGaYJ5%Oo!zO(Uo_VI2RBMnun zb|1c*C_JX(uPtV)OVq>yU3EDW4zpjwI!v0gCU4|gS^j4^lQ-H}3BV%Dlt_f~~o0*`d zFw@KKoOHK)q1ZMPdsI^_Iu|o^Ob^c@9j!2#eqAwZgB0ME1k&iv@$EZsVth$w{gJD> zLubv7ig(7pHuVDk#2-+ZK4zu<0BWInH-uDdu5i{WKGU?jpHeDukJL9o zbaHGb$to7Eg9tNjxIQq^sZOjJ!d6XorpVH>V1b>Hg^tN=_PbvLW*phi1(YfyEJ-u+rizK>e+!`pBsbC^ViZseglld-v_7XEmEW=Qj+8#UE_FdNzB~ z%$n6@O#ZnsiK88iNh=QMoz>ef^4`|PxLm-Fp zG!1y5By!uXMyh3OghIM<=})xte^!*cxw9`&#Yke^Y0w$6|NQu=&yJ~ck4~29dkZAb?2ly$GmZCEj73tWQtLIWAPg zfB~hMz!=S+G^^^ns_c++Wqf`SrC(IZ+0L(RWN53|skuR;1>T-lRcCH9EIIr)+VNlF z&wEDUxoB2zPcW?c!{Tp0zWm#G-PJRkq~`4#SZ?M~Kdlynd21G;7>tSTbWBIH`ErFM zC#9pfV}IYlz_(T(^;(WC#;_JEBi}AopiKYbR99P7ea3ZzIKG0ld3Xme3huxfhYv4b zzB(jGg}{V0E`RG4bTT&CxbB?Pi*j{&$5t_v8NamT6A80)VJi=lZdbJznp7nn-N?w~ zd9^yL)E9(L(^kk-D;RwTKeUI%hshzV%GKckX!aHTB$hckcn#z=f4S{>RZZ9Ez*GW} zNaZT=Iq(VEy-#@WfJXMOL-u3Bjqw0IxDH8cGa1XT{MM0D@DeIs@=0J)p-8I~GLPAA z@vF8#r|d9lFS_M-dU^E=6{;N>o=4g0MRcBi#limwR0YP%5cHeko;{E9P7Gi6q8kR& z#MN+Z9FW+i&V0io1*Z70I;?jmhreF!R`fT$)OR5FihEdSJ~CAJcBK=kb?O+b&&1KY zbwz5_czV2L{S>$Ez2{Tu#<(Lm3zUF&)vDu#0z0`|4qQP#r`by9@i>3 zZYgQ~%VKtEI|{d|K(1HR{H^Ew$xJRvg8%Q*Zk znIn*&4rnMey&4%se;Cl2tE)CJ+;!&d%W5%A4-NNwYY8*a_JQ)NNrgw;U9|vEd>kI% z#tq0B5ct0a^5F+JowP6M46P+dws+Mb?%`wpTNS%*54ENi$bl>^dwth3?@+`V?V$^Uqu<$D3ceR44hRSn-sTHZ^3;ai-Y-u^?T);P0VUArJLK2& zE$M_Korln*)T}G}mhmqzabL3^6tuUM@a#dWu6}s%pr~&>v``)tckjX;i2(S1894O3 zTs;Aa^tc;A$$u6H@4x#_EptRnj?}pokx(P;#*t*VklIep3`v7$FpBXeCOqhtv8s0xuBCbr<8`I4*+SVxGuaY3U#k`(ZuauR|@D=j!x3lJCbc7XO z?|vW=XRBX{-5Qfv*_8vUYF;ktCFQPk*9atl1|$0d&Wx9csxz=qA9!VfzLBo4X$5*c zGv;8}Pspf%z&|kN4n;OM3`erLc!BDHN%KN78`-MBj6kR*PC7q)pbFPuJ*I(8AUSy) zj5X@Zt5bcoJ9+aVIGom4oau$%YZ?+(QzI0foL7^#VNh8`36X?G?u`u2eAt%JCI{#h z9{3|@^fi~mCO3lAD50236TFsKE4H7`?jc+MqpB5b9J0e~i*&VKXk-)-R3IDFF5P%8 zU{@8QmHA5#+unk0Y4rcI_b%K`BuT>PUn$sc$MT0POSXB*ZTirLUivQ3eSn#{=Ne9L zSt{E#$SSQ$#?Za|_nQ%skBEF!m2A_mWqQ}xm6?&R$jFGuctpbSu07Wu=H&33J+Ds7 zNtUSAHrMTKb#P8k3o@Co=Z7ytdNRnZgWHwnl@4>remQy1e1@J^vn|uZ=n>cOOrqZ<7|NNu`p~ zk9zw7m7_{f1<#CUz%JEDnsEs*-6)hNG=$U(`P1c6@oih#%POlcCTEPe!wgR^RnWObNe`IQ9VmaYM=Rp!7_k zBf(?WgpvIFtLJ)5Kcbpb{Y{Y4Zlq?$+G=xd-xA)KNU#Gmzx2qzr2lCCy!yC83us9$ z->wAW&GQfCDMCH3U*{i+AD7@@{GFIB{FknW6N+6~vCFeCIjM`)W7z)V3ne{ooPnND z$J%g#NRBzdXosq+fAn=Zr^*#hI~}$oT@I z1~{Qf2HH74uU{3DLh-%Rp1vq^#7ph3Z6s|nMWCX<1cm7V+0(z|x&hjN=mcoQ3H-pa ztN52;!0`_YwApCG_$?XM#`jyYw;*m(knudm5@iPwbw=z}(%yUxrkm$^{r(5=U&N@i zdcN+R5{j7y5B@|d2){h1$9d~m!7EYO;h6#vdUk!AstPRGW37>eqL&xv$EhButWyuH zD)jJ>_3%%H%aeRLjrUDa|?^~)`bPMRPF>7&NRmUdWYO$?&!7_{e#Kf8O08D5e@SCzW5Xm@rtTf z9W%lVL2F=boRu7Kq!=g|{F=oNppMNRWqbFK&npI#)pGWq#V7sOd9ljXU!J%Kojs!U zh=e&Q28(3@qklqYNrd`rj*+Wb7ti0=yVx`>V@MFOsB)X=88e~NY`z?3mkrrj82AubMt5-os)eYaNw**swRUeWAek0xy6X34h;<9;tl4n6xRtc*!rMTffu}f zMhW-&8CBJ`UtFyT1wfp!oNJdUjkYPFKY6*ftTa}r=JUeX)!|=1J5@RL-4g>bd+wS~ zx%tY9@u!OQ{z37>bx=6DSVH89c;SiSkLzOk139LE&1%>s?w%bm2_v|_BJjPb4Pvbe z>#nOm$B(kM=m8f2GYHgX99dYcrhssnO9BIrLwG$LFiY*Q1BwXuM#-@iPK8aBl^0Vl zmIm$frvzOpJcFEvSUY++0io#fBwBu%Q*^c4=&;sKId-o_ngPm4`q#F|EanH-kcR# z08G<^3_Hut@;W;%3io;l#77B?aKF|?fzfZ^?Xq5(c1B_)w1CHZoutq3>Yk)&R?eFw z#JQ&P1ZVF$GnA12DAOzQ<>XANw68EV3*`?rEk$mA3UBeNPf)`9t*7daX>jy~gygOO zb9tDl#s~$E+Q(bQ#7d(aWDBjChksaijYO=g*svlXVp|)%**Ji6)w-;U8N|u@R!(D_ z9r3^41ykqOp@$%NU0b0yGKy~_AB_WGAA+)ao+((H?pEsX2WkoAKyhbkV>0%?=*}~; zF5*L}4Q9D*{KRfz)>Z|9I>FaU5a_Yz&9rFn*#NMMcdLE%NTaC@SOGak!{NXCOF~tV zgX;aNg_qZpWi^|TRr%-WiKm}5^TrG|cAjz_YH&J5KBm``uQD1YDLK1?{S1k&hr=ja z1`}*cXhZk3p8rq4^n9mSkA~Yi!V)r^u>51<9pmloY5BpC7^>coDGt+Wqn-F|IYr%a zt?5N))&z=ag$(@JvSx3%=Bm0c8R%&sv8BdXFtNuXCx_(<9-$%5nAab@__{bX+af zMYW|qhWLDo4;&oECi?YcJTF<(N2znQKK4mUN$i)0P9w`nUB zfzPL4*sbdJtct>j`H-4UF*H2%T*z`7ByhZuMT;P!E%uEz#A>3MqGw>Yud91@NU9Jm zh##+d!%YHpN1md$D*$i+U7FR>4llwHZ#Vo+AKMNicOvW4k^8PFo4&(cc< zcJk#UpS`334THbltGZv5hOB zYa7EN8;z zE8On74+>1Z)sMmiR_;8q8WiDrWEmLNgYp30_{~X6T_w$zp)F^!F24^VlCU4mc%A8U zIC{m)I)ivZ`G>rmA(wG^R;c@n4Hv2ub10i~N5ao+b0QNuSr!HGCz08hqH9gX0&(-e z&AswO%$|u!;Q5hSG>?q1aS-azc`ma7TsgS*~$L z0Kk_Vcs`p|mv}8jhVKfmH3 zqg1SysHg4|X28(pq+Rcv>0|=9GU}=VB@L~Meu6`Akl3Okhp;I#<-_`*FZ;&30ga$1MVqFDV5|Gg>2sp&$C-rciaMvX9H(7|tf&YEc zo^-TY7U)!=pE}XY!B??r#yIf+8ow)15o1)#;j1~5i1okGm-V!Ix^48h3{p451Q5Y2 zOO?HztpF9gJQ?(LYngg7@LB=F_6mO`&FgwZn+Y25Ky!#+2WRE9h{YD*HGf_fibQ_U zPh`>q>vMW?gvrto@n_u9!?UWKC|M{vJAIJc1hw&=wP9j2F?a$`gS!vLinysuB44uP zEvDc1faN`5{q6-J*X4c_j3fHx~nRuUc+K7_(0KJ27=dkx#vwYSkO z04(O#y+?q0I>&R^4b%<}yr8Iv5m@!4E2Q0f0O_ncFXZRDG}dVZ`ZHDesUk~V=Z)*Q z%8w(Uz;m<%n9yL*?EuPfWFOiqnhy1UYE)}Q-v+epiZ#)8guM}jN?}LCR={myI%e$@ znrS5m*wbNXFjMGxT!9HY(_mhQBebV0ezOY!!Q@tTR%Du`CyO?&nQysy0wsuV zI~Z*6&y%yNstYI!D*JxL@muY^JlNcdKCpSTNwk7-HL-Is#q$AEF1t)XEe*~-9WP65 zYeG&DzG1=-=jRHl5=r95%T0#OO?J_4L$u9*HVk(Hm&0uYUpF$whG<;xI&6nz6#i5j zl6?~yqYf>nX8(KbSIel_R@x>(4!ADcJZyOp>xw9M1fnEf#sto2R?1PU4o|3GZVSTk z5r6ilCZ`=vE^v;8CmNtFZy*#1MzDQR+(5Ut^_o+N+idQR z_6A&_*lD8+*k>O(4l@kqRjk>&Ws0PFLJk+5nRK^Z6$$nlfyViS4ErfX(Et>8hdLM; z0hg{{e5B44KD%?^fJGa)PEGF2kOEVRQOv9$6c{Egp*A~(1V^*{xJdXix^g)XN?cw4 zvs|6^yy0794{k{>VXRNDMefkhprE^s#$QhnPh7FY4~79t?nY5E$`!*ht(S~)0NfA7 z5L))l7$|v55UIf|0m%^3C`7rMJhDW>4+du953|%mE2G0H<3k{0#Grq#J{_eW=Bw%- zWpUa2^|&}w)Dtp1Y}DsfwK{_!!yt#L4|8?4l-RTZCNVRGZBPdgYU6X9RIVpu7_kL| zrW~$g&RUN)Y zZDmWv`mDN4*2Da}J?SWDZYy#U9h5c1v^qud?YYb9HxqmrQP_mra_Y7Pzk`~&h_hyK z-Ed^>>|A^N;;<_z-FVD=0}jI9ff_P{F%pjMAagH*Ep{;7;6CKB# zh8a@po;3wdkBHmNCcvco{P|*Ds&$~if#he9gn~(uTAwjBd=^n#F^lJAE%orXB+fac zRpgjC!iceiW?c<0#F`VJ(GV5bbbZl>o+8r=bpVL}ucNu#LL|o>wMW7ClIDq#f5s^2 z6evsfw9gxb!kz`AmrmW2U|H33y-EO#ro{0y0Ec2v&mW~efeDV@+nR}p*-8{b`Y?BM z4{)@=1Y9?X+ma{8Rk5|*N%2x~_Z^*jI*W1_l*(MpMZC^<4`2+7?Kl{=LzLO4KJW2% zC0E8Ylt(yTy^G_-7OO8qt#d%-T+w|PUvvci{MfRIXh7V1Jy?|J%@bl0qrVqRpl!ff zb376r*fFz(Z?j*a(HMSw&c-fRih`%wIlp!4AZ6fcVi6Q@`>UEB<6zJ2CR0i49PU&w zsNQ>d=u8e9QvuSlaoU5>4Z8u1frM=_oLgZaLjivG*>fIw@Q1lNvE`I9^ijVB#$F}3 z`##h-Rf$#>q5ne)73Fxs0UlNg$j&5H^Un&G@0C43HuKBgC1QcS$b5#InJjeCjK@ zG?ior^zB7H&lM9)WEMVr_leRco^bv^qKt&*s5E?4^0wkgSFelNN&Eqe(qE{WZgdzO zD;@mMGO=! z$3Gx<`VYazV~kxdAcoymFD52$?iue`?_513b#*Pvq83dC=lP=7J3>bh#QS$XR_JMo zO+x+8ILx7jU&a88?U{dweN1(uaoDL-!tjweX2&I?i~02EQDg_}4B7wA1|7ex?f#*P zNJrkJu#zsbSHP{24wpwRG4CQqIg~WR_9dC95A?pM9jZEQQL~~n)FWwZ^}y{l?&Qw&%+&W-SGH!NB1!Q%wcIQto`G;;=bn#`Ve?lB;vDlV2jo#6BnYB(&T`p#+0uNe!i8`RM* z=09t*rPu14NlL(!qbcD|)h0}&vABqy4V;9o5?Px#s9*Uu(x@Rv-Es7}hZ^^CjpW&} z`6V}Tq>s%n`M_Wgd^Eo&HZ{N=`VidZ8rkqrMIH?klN@-<=17B203zGe%N0T%3rvCx zerkdv^^f}h@*o@bv*${*0_%_M-rKj+JDdNb{&{j|bNf_%29@l#`nt^&yy)xqcm~nY z{a{xSq|~T3E$RtpT8?OF!15j)LrRG{%3^MBpMeQ}L7i$vo#QTYB*l3RtPy*O6(h`U zk%ROx)l!%ao{?K4PdnU`)l$GjGrqkLreO|Qlkyr91KPjU`fqBnTa8qSiN}s>$?Zca zG>boUu8v)$<76dp2FIm7ww(=m;jP|sI)Lauy&Q*U{yN@dqf>X)v09%IUmqG|K0sNb zxBMu_bsYKr9P4W~?-86c`t@7)>)2MXtGCe9e$}Vrqw>xj z{t@OsLKgYhv#Jq$GxGLk6a?->K*IYS(02&luBrq0og$Uzqy3=aaiZZdZ+PrCG^;-X z+>nJL!Y3lCtNaMS2AdVy@;J(D+J<}6K$9K%d-TS8Rbn(oI2?w$IV>>g84TI_-WKVb zdPUFHz7!CU8>SNsUz4OX%_~XWKxiW%jV|!IccUj&B;EXh$|maCka*#WEw~+CbiHXL z{utQe<9S3OIQo=!3%M2V62fnq*~%!bbI(CH_axP#8c z`Am0%RlReRovZ*=vQ0HxVB&_d zha5dMx|R4N$4R-YSBE4Z@b5e&L889c+`wGP>AoC>xtDyNV<7qJgg+%^i=8)SCBXC) zZAzSoajX9j*6mrA+;B~Az6!++%cpF`Ok4CAInrvX_$jbNGgrPU{G-g5eB(Sd?@&@B}SB9u`qxWWBOu|qT=IB29Anve6sTd^eEH>uYLuD zZui{AcAn?9<}O-Myn|o3g3|$b0_kre_M*31Y!@&xpwCsjmHhnA7=X>)8*#2bVyGaF zoVy9)TeS{P+jh_5Tv~jH#hvS^e%V@hh7-=Pf~ye0xbz>TyLd3FxqXE}Kfbd52VIVl z7`^UDQb45tuWE9Jk_QVe6_F z8J!aF3+D+N4AR(SU>Bvmk_`jd$MA-$RVD8vHbAr6e0WVB{lPN+I7i=1S`qF5!|4Mh z+2(8QoGlyBQ=ZgcEsnKVX6r*~UVwsgnX=k;NtRP*Ez#WCokt+VW_AS$Ci{D>_&v;m zOJV%8RLyP@j3wjxRjD;d!dotm_^(odNwB?wx`Mx!`FeIp@5UKg^OHph-UnA-ALA{> zC8-4Mz%rd%VUX~$l5rV0(CAaND;6)}4QeQX@j(=xrkn3`WPei`L|BzX9uYQW|KT#U z3r9^s2)ZHvh97)07GzHNsEYM7nu++u&zx!_53vG}x@>_>#p?Y`aI4K55xu+x=*Zj>lS+AeZ-`{O&%6L&Kk8aP!XM`k4@0bspK2y)-a`*$hsDz*JL*? zJUN?R+qFJYIz@SBL4bqs1EDcqU*rRbBYiSvLqL;!i?`N8V=cHkU`n$G15D31+KIAx zbj+j7n-^Bm_X20Z;F@?wPYo=m7dTxg848O;u%x-!rDaWg7@kSy`^(sH0C8s2X@rR@NQr58bx_q5_=`4qf4Hn7^=(Ni-5=sKV$7I=s>9y~E5_y*{7TzDrho7YZu1y_;@`0N zWB5T()HaOahb_Y|<`?`*J20ky@C#Z&!w>w6ujH8jL9Nx`#_$9GGHWw7zvxlu6&Ty! z)c4Q(4G9(p+k-I4A|zw>!Yw3nDEF?EA8~tI8-?fdX@=Yt9d9Tz$$iYV<7IN{+db@> zSHjd!Wt8B<(^<3{^GP^(4Vffb^GI~hA~C115PXzPO8J(GQRTd^mT!h36eR76`9_ue z`bis_$CgmZ2mDi_+ZNy+Q18aFyJ}@6?Ko($IhID-mAWwYbCJ!^o;9YpiYBpyk1_*U z$1GD49izFc+>U$a1&G;U;HK!77|IiZk4=+n6LeMc!!w|;A}UL-$LK-G4a!1kn?O;V z+@4r}7-AA-fdwQG+;C0Y!(kn;G6C5YEx9f}J^HOm-#ibsKT4@xnDh!~a*4yE3?A?Z{ z-0s`$+1zhzU}E=*>dBGV2!~w)`P#G4A#CIJcBaEkx>cgMif;E9!ZE7k=cqPu7ul|d z@>{gg?p@jW?mY&iIVm-d=qQhie+YTJ_aJXfm=sv!g_j4WDGPIwNl=_e`3pIKfq0E< z_m^QAy08Th)9q#cAv=(CJe3K?gnFa48m_iSk~G`1glZz_5sKcCXEFSzX+WV}o*801 zw1+6oJ8>$mAM%K$fCw-V#)I=NJ5k;xp2zS8xf==VtXvhZ7x|>Xy6Vc>x?JXqNKHgM zsx`0X#aB-0&&?@WWz-*-^Pzg|P&R`I>xXIm%v@eom%Yuw94xLN`4(00ZSvlKQ@-o> z<-GpjyqEr!y=@0*+Hr3QWPjIXQ2i4!b?rF}({ne=kSJ{+xjeSn#oNvwHQURJ}XZk#5o3#6r=+RFnH-}L?Q3d zAj%Lk?ez`v#)(7#5bMBjazPAVQ6hu&I=ZJ;?=_gCc<(lyqQkZ`=8Om=W|mG%aC37* z!pVr9F_8XZQ*PYKzqXhobfK9#i)VNRLaIES@b?cd>=;D5dHpF%dh9kX#$uo6AA#IP zy+@)ws0M+8R(%uOo9avP=IixU&cnXSd6&Kv5nrs=8MFvh&+4P-uB)W?RRjH1u1d&N zmWb$W1i}K0oJq|XXw&TVuQ4$#lVv>{U#zQCmS$R|Bt=$`DF)PxUx-IHFYk37Yy+zt z9qDf*$Z@-%4-pZGF~hgY`epvo!~>$pQ6!j2`vU`p!p`=j@eYI6RioZ4&;2R1=wD2C z?KAbEE;~4@zYTkSMgI0HSK7*z{xR9iwOB>YnxvS;CFvbleF&4>m0h$~&XxGZ=Kf+V zV{?CPJY!>jakjCs!w!7o>JP;^uDGefJlJYvPo zFhm@t0r8jNiB@T@$S}#R405~t;db>;$AGQe{;$i1MUc9kVfX^f0m7$10KT5-1ixNe z6ZPbcIf}ZQZ?oQIIafP2c%m>EURa>j?BZiJw_hO6fb|nQ1r*~I2LN%Mt54dCWp1e_i z@C%NUScYhh-Pz|iVmzj}iFW^#_!Sf7egn?_hT&p1=<3;^ya~Y6ObZCEkSm#45oEe5 z{#AP^yRO6H{;uXHf{pkB+QX}{%sLQ~T5Q;5|8l#g-AKe@q*15HR)^}DCsT>FY`|@o zTI6D~AT-aI=s>f2u*+lq)kzE9n)$q+4@uwa&A`-^3OD;^2cTg}@HjlZFp=w>U-6;O zaA#rWk7q1>!y=6ni?beBEY4v3Z}O$09)Qy76P&c4Ft!POPz=1foyygZI;fVeY+w3W zMi(Y~sKrx5REtzWK-IUm0rwPDhY{^(^J5zS>e@fkY1UY=M6g@Wo*9)e7j4&8TfAil%QuV|r7|rh? zMtv0_zKRer5yI_&)QC7XkMDuhOL)xtY8~xJyMBa?Ai4e>^dt^UR96z=p!m`!)F#iK zjn5;IxPBL@YVLZPRi~;S#UsF_&n3SvBzyfY7rov@^ooCI(d$hIed62OXJ-z%Z&K>w z%jL5+YfD{k=tSO_)b&Q3@UK$WSE=i()W!b3g4Fd@-ufzU{r>Wni2$=Tt0uq~eU-ev zN?u3rf9@*p-zIS3q34m1uXpqkZ;ujP#oic+7;IO2R9%VATNXy)JYiD9km9i zmk;BMay!=Fd) zExAdvs&3Z16hn-HWOZr`k-ER_TvbZeZ*QZL0vOhDHrlfRYbms|`|}y5<7?8VP>MU- zB3bq2>)yuMYPA?|Z(m+s4lZ{G)$(+EXE+>gt1)iCI|7ZB&;c)Xig`nEiP0gAO91dy zU$JUS?4=E(w&^k~c3>RdtQ1l-BobyV4P&U#0dn+#nufR#y3fkOzsoQ(vS-JOnPJFp z&SiCjid$iVm{3O6FnM|zOp4eGpefEv!|U3W5EY;oo^fyEn?*JIbgEWWv8J5Q9{~?)|~N(cK+aFjL~uBwwhaWu?R=SpZok z!V<;170X$v{y6}dQWY#zy;ZIL+PV91urs>X-+4HAxVMw-?hXe#_xq#!yMu?LhuPkP zhXYkOdU$^@9Ny1%@9zyp5AODNhYttC2Z~)84R&|?d-v`Sc1M|kwEJ*Jjd&*;jqVRd z!#z_x+S?oK*ruwxo%?$h@aVw<)z4kq@7vqkk2ccErZ0y_Zs%_XlN#_S(bbxmG#m{_ zckc>Jy7vJ7`-(|1OwydJ7gz){#39M61rfyWaOLz$r(!U<+$`}H-ait~qJmd5_uol`V3$K_W$3lW2N5m4(C|7B z#3o?;GHYal^|5xEnE<)GZMZB!qCkL^U>!s~*W7@#2(I>OIx9eje_Z9uX*PFnPsDJ! z5P8m(3qKM6#V&Hgps9b^co?f7j}|>Lp=Q)^fARRH^NK|`l{FQ%EKg<_`R?uQvvN8u z=Fxf(H1aw=ZOJ+on2^n-D_K{GoD}gglb&qG|=^WvmtG;K(VlZsLqs*3b zAfsD6*lgG!`rO5a2`x-Z{}$6cCL{p+MOzics*yUmz21kixcsjANO#pR8)kPE=~e%4 z2w1Gm$Me~^h7F`vN@P+uvAfc!Nifl2Hd_2|h@~X9J9rx7rC;n_u6YR8jjm*$lPA@3 z35ph-Jx1-6yG$!^1z%?6!Dzqy<{&dd+uug<_}ueVSI#SiK>HU?Fu|4n<+l#IGENssVR9PpF_l?2XR(}EDMebF(f zL+;+)4!GgsGPjNo(U8ftyw7FMMYmv>CJc|$aSp0?cbl|ybsgvP-G`tXUE;B9q)H`)bwRx2*K01*r!31SC_RMd(oFW7K8yT&^`55pj< z=$S6_(^HI2Z*vSC=U*a-PMeMgLfITdNjjE9-t>FD7DWu{NkC@<@m)LC^_4d0sJw}f zjHBT&=7mhdFXyS@L&@(qeDHFn;YS8v&M8w;v7FG}^kA{KGW2%dh6y+6-w-HP(5z%P zoz-!J%1YKmV);a2sG`v3S4;ry7@~qbKnYIuVgc`1dZd<3U1|fTgG?Jvso5M>=L@x1 z>aI~GW>fn3DDBvAG=$1$69o{K$*kD_rAq|`;+~q=pgK8GW5PkI1$29?$g}!~zHepr z0wO+04Fco^#aL3BI<*R#HQEAFgd4a{qa`tSo12^4fU}#xIjAi)thpvXdOC)LSf*Jb zP`)hlEnHs3ilfbX_hy(d6xuLK=LrFXISz*mXIRxGZX=wV{J5@W7dEtksJOId5yM!q z63Nnql&m{l?u^RrTB9>v!Ov#x)HsHWZt0obc2^|L_?VdYT|wg5m%NaBhp%5uaENz#eSx7#AK(eYnG}f6^Y=;~cG5su z!zL_^-XhNVe?O~o!TZzjWaa#0w6YHQft_Dg%lFmAD$|!i9_f=V2Foz&dsR2s3=fte zXNF^adpksRLzaR%^A1E@M?JBjOWGSypcb=AdL&%MM1;_sYx}_pVwgjI;~^^hROMg_TGACl||FQ>Ef^i*o7ct>_{^wa9tu_}e+T6Cdtz z&zt!jw={rG7KEQSM}dA+j}C`p=i zBw7kr>u06!$yqUZ4_*j2FK;*5Omz0xpp3aoHDwA2Bd&V$U4xt!YNyUUt9;SG)G6m? z52J!HS_6;Unu=au>+vD6(1X69danzZ>5s^^!O5)!Ke(wNPi7a>qVAD}B(^a#M{w&x zagEl9_-heCH{qt=#B9IOJpJ9M|I1hRmcNpFi}XYIAbb!Y!G<}IYQs#}B>1tb6? zaJrxZ&-M?r?pB#0gfa=8x?=4T-K6jRCmg%*Gs{AU6|!! zkL9FU6_(!zsSwq6aBK+a(+6&8%Sf)g9ior_&w_D-ocOKp2~#@L7KZVukSjdgx(2Sa zD9&K{_~cPI{ODR8XUQp?@@~LOh(Vk1MEd1x0)ur8+7QlFzjeq2P~#sck8a>DmYYR@ zkqPF8C$$ZSXj!e+;CNDfhDUX2ecVx5PA$qVvT_u?RK5ZCiG37$A2+or+UXNMT7-=; zb1>Gvw8N&QW;lYZ^LeMiOAgJAJ{#VmtgGcXb9w2N3ZGDL`{4``tRBB5#02*SYB{-x zKZ?jmx^^BLd7ieRlN%ei(PzzQxq41-ZUC#Ho`)umI=r)Em7^&kRxHfQHy`bKP4A_z z5`+ywV|+TOyHX;|K)$zkAU87M4edRUU=5V8hY{h((8MA4z=&Fq`D};Q7BSqtPXXl;AL+ z;IB?H)NU+u8fNUata^`IDyYN*>$BQC&-lLli`Bk9~Xv!rY z+2?Vs`-h{k`Vy1UvfSo=H3EcmIKdeL0CC*V#3OFjktVU=^a<^vaS053xLYRsl+$h& zZYs`tc|!O z=1L%|L#3Fi(#`^TTgI(e`Q6eTnnhq>{mJ#?;JKUCgc@i;yK1b=Q4i8~kHuT%DABLJ zG-hHs;A?4VXqGj(N~C6ehKo(n4qa7QKFUvX)doFm%rXnoqxmAb>wNOb*LX(O(|N9+ z-Np#Bn3~=F;Q)i~+fHG~va2q#Ew+C5?0Pf$F;8J)N)gHeUE-V~i$1k6A=OBGra5L> z6fi#?I-+_6>br+3N>9IR$(}But4j=7T9h;_BZk2M|B@sNNH0xa%s@vTZt=#=Oq_5J zDn^-y6#p4vaV`Ew$}DwS&x;+nL<0WQ#X_j<$(vPf+oj9r5fD~-0V6rb6?g?(DA={t z{bFp{qAYy=Uc@vn3|7$6b{0dyQa;T4sF~d!H?h!`Zl(**1Gc5$byqxYc3TT5y|*#5AlQLn#~I*?q0qNMvm4f-?ggo>1=cT6P-mW z*LM3R|)e8BE_XnbM2CK)^^B zyM_KZ1=n_6~CterhwDLGu*xhPAhjczx{gGB4cU$}jaXQxox$_UN{7VxF2atAQc*Tj#ke^ql)^QG)an#Sb&VWwz zZHfy6fttYqT{{-_;IfmjLVqNgTHILoQqs!2jRENd0=wl6;5=Q^z1J?qie?GKkz`d9@#^; zyc4z)`0TtEn$cQ*6zw{w=#y{x0ul0f&9;dn|MyFzrR2ivS!^@=G|hB`r@!&lS<}SO z46|n}8PB%FMw?3x+li1^X*R}1^g|ufys*2S9p)B4^~vH zd*>g!@Ri3mIX0`+9h%KuL4Z~1_tyIRg)OCKBVAn?Sm)+q6Dl2_uk|)}j`2*zf`fxo zlKP`etysrk5%#n4;)@81U(`b}D=N5KLqsC+_r@zG|T?^_+EQAlOfz`^?K zDsq#{I}+=4tip(1&^7@wK8JrQ9^9^!3=1DcpZ*YBNP0{bIy|1bXHUBOFUo(wE;x|B z5uOT}FT2Qm?54-~Q;}9e(12nZXfZKVfKutQErdjy z!_fz>&V~{B927&Eoxi>y-&5K9aygmmm+foGWTbRfVmjmTuZML|<-}|}puyvxj8p4Q zUBZE+3{%d>Mr>is-ADszzhs!WYEWL)SxfEnRZH#moAt^t5cqfp#sQsK)NECT9)Q$l z4Px(4}3fwx>)s0@2122C&QZ81fXv0;Y1ev2DaD)AQOmlJz(FUln1Z;yZBm`U;a z^l80YgVaRN7!gpY$|9)<)PKPHrA(qV8!0r|%@Y)sT8D!PN?V>^2=v{r(si?w(wkKH zHygf8iun+k!^07l!=r~gZENn-k}z-tiSJf9jB0?#5B4zv5{}b1quB^nx=Rgj*%apn zZrH)>K9d=Ft9|Vy+_=@X51FV!Tx}@Z89!@z0~Cw_O{)xEfL`}0IOzT!25{dX!SeD8 z!#1(a&{M*d9H2oT^Vj$q=5uZz8elphdC5S{bn~573tsU$;k#`@JW|9kHi7(RZ6#FzuX>E*W=FBPh@cl;CYLSZTv0;$KA`jp;<{{@O%3j-NI9V4#G16Tm&w9`Z zRHpuXuY4U9gC}@sJxkqDy~k=_gQk?DZIOZNWcdWUsY^H{FOp6C#UPdqy(w?ARSyg< z*IIC#CqZLvIm3YJwxVKoTDE7t#DZ#tW+>-HOGO(QVR}?FC01n)0d{0Rm&bcC-+cSX zoP2}ozi3KZ3;#DGU(k<&;yp32v)Q03A~}tZtUpjuVC7Ey$?godI6@bb4tLO5HC%# zP;~b|%wEJS@kyS62zdvG*BKYGE)bU(!c;PpIhMzuwWjvNT?h@6ur<81b_$DtI^p{_9Jm=B9*!Hcycj1X;Ptdw`m8`L%QE0a{k zAL`Y*X+VZrI*E;*$|)TIzjWgLZm`n}-)PeyOeU+P55+7mO#H#sx{^pz5r0ifD(n!A zjj|O9n{0$OM{eH)z1 z!&{ypHPU{iDv9noK35ReQ8ZcF_-GP{?|$-Mn$Dyo z3+!xc6hT^M&J}?X+@GOfT#@m0p8_*gJJq_{*IEYTP|g^{%0Q}_D&~HyyQ-FDu25lA zt>>i>1$Gv@_ce%3f-kcH*oklHN!Q}#CgKX1k{eO#>*}Xg1-=bO{ULgKKA;*vmTPr_ z?c5vE-PoXVchNshz&)>!Qq>lX1k6Y9Qh*Z@`6Zlfn~;Td>e8)b#*tWnmo$$VXENlX zcnlM*4fl9R9=sOh)owx*K&6`s?zfV*j~+#twI-8k!SWzLL~cwFO)&Ai9M2oh4Opip zv41wRi=^>MA?6fcO+Br|ZEzHBr41KhyPzRs`XL%NNl+Votq;oIie2vBta|3L!BKE! znLBMX#bCFDIpfkr<|ex=?bs0i#W;SsWTXu&xr!RkrQ8I}JW5D<<{v_o zsTGJqSl6zTV#rF%kb`V7q&57eSQO!pJq{lL2U2IvDa+-ru&4$+M53Ty?2)?*wRISh zoZaTg{&IQR=wPY9y*~V-!G|mo04UPYn+DMAxj}NlYV`FvsqJ+?j#Z6w_yIuYUrTCk zF;(GZVeq%q*3}#kWQ9fKPBjwas{uzTkKg#(;B=%%>nW$TeTORSa1#2t9{+dFy{mU`|+nIhKI`+o#+l7%YRB zF!jhJNx1UY7rlasVNcv9(8<&oX_17Is#l@9t=y%fRQvSz_nm2htvGNIcJPiU7XGGANZ%swvoC8b0T@e922g zf5)3W7TyC8M#z# z%Yz&x{cFNJSQsB9x=#S9VyKg~2t!=>u*?q%rel%!lqJ-|%TRjkBn3sj+nsqI5xv7; zV7`Pd*IIRxZj!HB`gJwihP0`>MP;sTq*^rC{_ws`Y{Iy{suaeT^Y9tKOayDamd9&? z;PWZXJ_u6&I9#2pz}+!jwtC|M*Q?u9-8ut>W4X@zqJ@i`b+@?XOa25Qw=-KGLH$ph z^kUsj=rKCv&tuG9NtcT^kq+b4YYDm1t(jpgFv~WAZCUCr=}nK;e~C=ABR)~)p~`l= zKxH?EJNU7j`g0x6EzF#hnv4L@HBriJ=6LvP&p(vcphX@L^c!vh=H?a~aV z$#oL~?KGn;HV`PXQH2mwWbvJHf#)v(ro1Iw@S9O{#*OPsgo=O{lDj5if;>Vp2u;>% zE6(8Dg4-aJ=&V=_7ssrwbsbe9;On|L)q0@}Xe)v92Y&3*3sGbJXB*4V{8M`-R zFWz{^3QV;^ZbQl1EWB2Gm(KB|)KsJ2gSDuVp1tNOy#2CL^&}_KAJzjA1s>_x$_HcM zUil~-@d|v}4l-BdD1Ue2V1S{Pdj!%<%KP4!o40L1G*|uk zrqyTl6-%Sf4lt8PFe@8;5VZ~Jjo-E)8uElt~W*uNIPZqWZ*d`?SR8xPz0g1 zFb_d(;S~PINe8zD7uOVaHI)QrbSD&Quanj#eHBpIg*a5|Z)jA07T_obq9fyam!@E2 zOZCp|xAFx<8+-q`uVu@N+r=JmHlO6-m+mT$+K#x^2P>CFNZcut>C*^&&7FwSREHLW zr&pj?M-A&0$~c$)bTUd4-LO08l^nWE4ijU-u7Yl8lFKI&UmUQFGwC4x$9{Ygi?ClX zTK=1LmiQYfL$rp7a$b({w!$shZzn9Ch0AZ^ny&Co30djD2GQp<*U`-*18qgbr%W?j z6_?xX12mmI7VpEra45oZ;0SC#FRdmyM!zFCW3Ki>#$UVPQIv$~(!DUXMXnm;j7naG-{)d zOgURC$-18?VgckOQvJSB9}hA%QGC+#{=K|CqT&;q(ug^d!3EBhRLzBI9|PIS>}z)2@XQiZP{tD;P+J z=^Qqulb#%0zk&zFuezdCK}pq$AJ#FtEAWhldG9<3tal||H~5BZxt2wM@*>%cOK+aC z#YkFca1g%C!;_;+K8pF*?okIv zFeRWPH^6H+qeD2-#hL9+*Xpto1MKPg2Mcvy_%$4T;u}nojr<(;c+qBXVKo?T2T-&j z23jX_g$hYgBojG0PT;e^4PryT)+qJCXk-ZRcIF zbcFa*Io|}t@QaPqQTg{A57t^1zTZt}@#%bRkwrd0PJ{Yy&Am(>&(SLr02h#+kb5SU zLHr1qf*THD`}dg6pSTf)5~4Y1Ild^!f~Ml=v&f!0{nmB;}hpd)J9`Z&K& z;U*^^C-WXahOUm)4tKk~`iWcV)q~|JT>~{Ua*0<^MPG<5oK7ex~*g%LbdO$iB4-V2jj>I28_ z;kGHk&(cv2qBD&@#bOY?tLm9j-oN~7cY#dreI{mO%eqfh5VIHc(!nxxuKDWU6jZJh z0s{y)f4d2l)HJ3u(wMo$+31aCZ_oJ~0(sk$E9gAs&Y^R~WU?|N7{wj4jTomUV%HLQ zYhpe3=(jm2x4e6o3lP+HDRwijp_$V@L6d?E^dseFzC9<0t(U^2pyqJJH&ddCS)OX;HKgD5)@YVP z3kvbjW{r>X+mk?1QZNw|>lbDgM8$zH;m$0iD(218OH%=9whc9V7K6R4__AW2z>>`7 zn<>oWmihwsxl#^gq5P>OH1*(d%8Au~cOb+Wxylrm2c+mlT4@9`6wZC4WcdZZ)*KrK zztPwIQ@Bm-J3(-ygJakw`&h4&A)YWXx-gu0;Cz$RWiTnut| z&A>>F1x@p*Pf1W3J&&TGPWp&be2=bIWh=|!iklo)LDe;)`0c^0PQ_}eYytQKSnC38g`&pJ|jtoVOOA1?fPMarl}9retCkjfa6`kP9@eB1!`#u+d)0-~YZ; z0`~m*o3eh=&NH*9!xNw11Lnxx#RVI|&KLCVo+pV;34hGoI>dn)ypYX<-C0MCMLf^H zVYr!R>f7BfB0U&?q=)#iS}rpj&{3{PXEq2;#kJV54z~}krZal(z#{`V7H@}wMkECW z4}@aaTD2Tad`uf9B|Kc4f#GMb5;v`AnPZy)JHxo0!GRkWYFA(Y#}+gYCpR!LQBky6+0lT*?dT zgSU-+3R5P*3tjS*l~yP`kC(~f?FygVGR#!Fx`Ck^s(>bir@Elq3;pvkav?f=X&>C_ zY_-U{GI{}iU=n}1sUuM}tQffH`xs0k$J|$d((`_678HNsuYk&xt634gIzY@RE+&7m z#g)Sqx&riWD+&b+f|c(YB1a-h%Wbc)eS1fSjva+kril=P(sLeKIG3C7fuXZV^`2Cn ze|5FrLwBE+PqMmq1^nlJZHSPJiN#KtD8om%EL0sWlU z4uWaa1Wp+WeFN!41~EsaAei^xns6njcI}+9 zQr~8OBqvKx#=4}f_;lrQ3_9(XsDGJBHxU<=Rp|sdY0H{`N@%iNnB4tjR5V;D5fTN& zfax^6qpVhP*czGie@>&P$-Az#gz*egK5^#;e%*}`DRwezJN}l*^B@@yk@saLH{$1* z!+*iB`2OW!xxJDj9cAK*N?##1WNH$6TdWQ}#@JTJmZg5FCs1`hLj z#vY;-+6uV9{^-6`IQ8hIc{glPo~Xl3$2STceWrg9h(e>iNaI`8ZIQ<3(;tu`5PTp1B!*EYaOta zQ3$ia9J>zfT2q1y)|pd-c#X%GA05o;CQC`-6vN;6X2Hrb0ir>mn!#N)89KK&$~=pP z>pmOC8p7QjYo)H#-}Bo!f;WPe2n^O1o^9`&>h>gGa&Ii>k!A7ot}d0+3~KD)1SzN& z=~fj26#QH)s4duzcZ)E`TM7eF%@k1Ht;&rE@C1^kdWLAODnswZ5eecmLr*;G z)M%C@vQcA_nu6o)Kd=IW@YCku_r95kfgwboGJ}1(Z zoz}@CZfh>I%khsy%ku5JIs+US&Bv>y-BpDnt|Qg^uzYaZnxlzGFjmMB;qTu6bKyT# zvH&qUa(vOgD?9bL8Qdy&VLKY0b9qD9RMwL!5JVN3I>0|wetO79gj&s!P@AyAHXFu< zTnC)5=d~E1^&7lO)oBwFB}Sr(A*04DcOq0y7i~GTkAvQPKvQb*VRv;JeO{lA znEGnc<^*I868BJdJ2P(Hr;k;0M%5?!JVrC4?&PL2Yvk+gnTMs}`g+Cnx(M3u-@xki z<~p^SeQF<(!OjuAk!nQXGSvjqN8YPpVwtB7??Ii5d6Gx;@P@EH@2C41^ac!<~%$%a8cjXt)xW>xVPz!uVx(#tweRDr!@Qn zA&Q-N^^ad+$GL?b5VDrA3sDc9O13N{cMs!jtCUzrwGhjAejHMbIhV2@yFF+#+41Qg z&K8kFnM(d?Iw8_aap_)NSo}C9XEtqMb;$R;*@cxR3|;WJVVbL$oL|xEGI1!*F&+jl zv!RaGAF#1AG&D@uqwXH#2kW3LP?>yT1+#{8f_GtL5L+*hekmt#XHQDMA&;EbHwe zfswW1Lr|b8{EB5FV?5Ld`C1abQ_yYO#Z*bjps9{Isu*RKBZ=h*lmwSY<_5YJ$@zO4 ziSwFTwF|n09wLUlNxee5zSpSV@&m8^^^g3E`EcHi4H8N$Am8_Y0zj>U7#xduY39`% zX_I+crweSPrq2#9V1-pA#%t+3pyT%{%HNkkUgP^VTNaXV;gs|O)8`@#6msK`!59ss zz3eb0*p_M@-biHv@Yea35%6)=uba#WdVjTEP77O1UX-d5Ew8+%xW2*ShoHik5^;#r z{ECMpCIteO0H0KDh4FZ9xgNs`)R6wJ;oR`gWc#A$+5B<~bB!_?+?l7h&C_GZSpx3S z<$WHo5Q^$v41UyFWatfRWMAuIwrp7OW19sRPuwrf@XrW6d4Y$+5+m;rv5ocPa%Di` z(MLE_m2>!n8eF^-O}pTy4izkbA?t7TqfKt12I6{{O>2}$DkjzC4W$DCsb9|V zt_%;90LbGYe_jT0@rgU@x{6sMG3rT5hBNvWS~b0?rX5db+J@}wu2p}TjPBmcM;#Au zf;rZHABD$*4zXZfwQnVnewTT*Nl>^53sO-M(tYp6Z85#`iP*fZC-2qeJrEc8G%)k? zNgq3#(7)G<#AB&Mm`)Hk!Xp*%@VpFUN(nQx^V`uPwh3<=6As1EC`pgZJ+|+czcSP8 zGFjy)#{#?W@lm^I65DWaj0FF2yE3KvBFB^CB{T zx2~}5ZAc>PT=abD{}OBMayhXu65EUg5@Jx@!S)elltuNIDvVqG{hR+$Ip_HI(!yV- zc01sa)qv_tE-pM7kWlDSJc^wrlq{rsJsAv9;B#scPH^O1Hh~ku1m(5cK~&(bPVvGu z5FCNq#(U^{(TG zGQoP8#xi8Adz{B62+?o%!4|-vX_D-wEIOwOd%`fkw&lP|gqR{(THmp(t)Ku+c=%m+ zA_+T9U;6BVCPc2@?`7$}b-#o7V1A9sa|pRVt0YeDZ^$4!`Qn$5*dtYD>LLk@wl52Z%zimM3EIvnW{x@vb z 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

        {>iR@(E)LepdH2XFfkz?&7v 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 z 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%0AD&CRGVGc<Op< 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≀&ew%kWf!;?uC*AHXd( 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 z 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�`fA6D`1+QA^PEg<8v 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

        BKt86FcE8=6sAyjY!B@>IY(F*! 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 - -**Describe the bug** -A clear and concise description of what the bug is. - -**Tabulator Info** -- Which version of Tabulator are you using? - -**Working Example** -YOU MUST include a link to a JS Fiddle or Codepen that demonstrates the problem, it is very hard to diagnose an issue from a simple description. - - -**To Reproduce** -A step by step guide to recreate the issue in your JS Fiddle or Codepen: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/documentation.md b/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/documentation.md deleted file mode 100644 index 6ec6e31..0000000 --- a/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/documentation.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Documentation -about: Report an issue with the documentation on the tabulator.info website -title: '' -labels: '' -assignees: '' - ---- - -**Website Page** -A link to the page with the issue - -**Describe the issue** -A clear and concise description of what the issue is. diff --git a/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/feature_request.md b/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 608a521..0000000 --- a/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: Suggested Feature -assignees: '' - ---- - - - -*Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/question.md b/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/question.md deleted file mode 100644 index d81f9b9..0000000 --- a/tmp/tabulator-5.6.1/.github/ISSUE_TEMPLATE/question.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: Question (QUESTIONS MUST BE ASKED ON STACK OVERFLOW!!! DO NOT CREATE AN ISSUE!!!) -about: Please ask questions on Stack Overflow, NOT on GitHub -title: '' -labels: Invalid, Question - Ask On Stack Overflow -assignees: '' - ---- - -Please ask questions on www.stackoverflow.com the issues list is now reserved for feature requests and bug reports. - -Questions asked in the issue list will be automatically closed! diff --git a/tmp/tabulator-5.6.1/.github/workflows/bad-files-check.yml b/tmp/tabulator-5.6.1/.github/workflows/bad-files-check.yml deleted file mode 100644 index 4ccebd1..0000000 --- a/tmp/tabulator-5.6.1/.github/workflows/bad-files-check.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Bad files check -on: - pull_request: - -jobs: - check: - name: Dist check - runs-on: ubuntu-latest - steps: - - name: Check out Git repository - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - - name: Get specific changed files in dist - id: changed-files-specific - uses: tj-actions/changed-files@v17.3 - with: - files: | - dist - - - name: Check file existence - id: check_files - uses: andstor/file-existence-action@v1 - with: - files: "yarn.lock" - - - name: Fail if dist files changed - if: steps.changed-files-specific.outputs.any_changed == 'true' - run: | - echo "Oops! Looks like you modified some files in dist/. Please remove them from your PR, thanks!" - exit 1 - - - name: Fail if yarn lock exists - if: steps.check_files.outputs.files_exists == 'true' - run: | - echo "Oops! Looks like you checked in a yarn.lock file, we use npm and package-lock.json. Please remove it from your PR, thanks!" - exit 1 diff --git a/tmp/tabulator-5.6.1/.github/workflows/lint-and-test.yml b/tmp/tabulator-5.6.1/.github/workflows/lint-and-test.yml deleted file mode 100644 index ef85a47..0000000 --- a/tmp/tabulator-5.6.1/.github/workflows/lint-and-test.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Lint and build -on: - # Trigger the workflow on push or pull request, - # but only for the main branch - push: - branches: - - main - - master - pull_request: - -jobs: - linting: - name: Linting - runs-on: ubuntu-latest - steps: - - name: Check out Git repository - uses: actions/checkout@v2 - - - name: Set up Node.js - uses: actions/setup-node@v1 - with: - node-version: 14 - - - name: Install dependencies - run: npm ci - - - name: Lint - run: npm run lint - - - name: Build - run: npm run build \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/.gitignore b/tmp/tabulator-5.6.1/.gitignore deleted file mode 100644 index 013f31d..0000000 --- a/tmp/tabulator-5.6.1/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -*.sublime-project -*.sublime-workspace - -node_modules/ -examples/ -npm-debug.log \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/CODE_OF_CONDUCT.md b/tmp/tabulator-5.6.1/CODE_OF_CONDUCT.md deleted file mode 100644 index 2599d16..0000000 --- a/tmp/tabulator-5.6.1/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/tmp/tabulator-5.6.1/CONTRIBUTING.md b/tmp/tabulator-5.6.1/CONTRIBUTING.md deleted file mode 100644 index 8332854..0000000 --- a/tmp/tabulator-5.6.1/CONTRIBUTING.md +++ /dev/null @@ -1,22 +0,0 @@ -## Getting Help -If you need help with any Tabulator features, please ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/tabulator) - -Further help resources can be found in the [Community Help Guide](http://tabulator.info/community#help) and the [Documentation Section](http://tabulator.info/) of the Tabulator website - -**QUESTIONS MUST NOT BE ASKED IN THE ISSUE TRACKER, IT IS FOR BUG REPORTS AND FEATURE REQUESTS ONLY** - -## Reporting A Bug -Please read the [Bug Reporting Guide](http://tabulator.info/community#bug) before creating any Bug Report issues on this repo. - -**BUG REPORTS WILL NOT BE ACCEPTED WITHOUT A [JS Fiddle](https://jsfiddle.net/) or [Codepen](https://codepen.io/) TO DEMONSTRATE THE ISSUE** - - -## Requesting A New Feature -Please read the [Feature Request Guide](http://tabulator.info/community#feature) before creating any Feature Request issues on this repo. - -## Contributing To Tabulator -There are many ways that you can contribute to Tabulator. Checkout the [Community Contribution Guide](http://tabulator.info/community#contribute) to find out how you can start contributing - - -## Pull Requests -If you are interested in contributing code to the Tabulator repo, please read the [Pull Request Guide](http://tabulator.info/community#pullrequest) before submitting your first PR diff --git a/tmp/tabulator-5.6.1/LICENSE b/tmp/tabulator-5.6.1/LICENSE deleted file mode 100644 index 85fb142..0000000 --- a/tmp/tabulator-5.6.1/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2024 Oli Folkerd - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/README.md b/tmp/tabulator-5.6.1/README.md deleted file mode 100644 index e2466f6..0000000 --- a/tmp/tabulator-5.6.1/README.md +++ /dev/null @@ -1,76 +0,0 @@ -

        - -

        - -

        - -

        - -

        -An easy to use interactive table generation JavaScript library -

        - -

        -Full documentation & demos can be found at: http://tabulator.info -

        - -*** -![Tabulator Table](http://tabulator.info/images/tabulator_table.jpg) -*** - - -Features -================================ -Tabulator allows you to create interactive tables in seconds from any HTML Table, Javascript Array or JSON formatted data. - -Simply include the library and the css in your project and you're away! - -Tabulator is packed with useful features including: - -![Tabulator Features](http://olifolkerd.github.io/tabulator/images/featurelist_share.png) - - -Frontend Framework Support -================================ -Tabulator is built to work with all the major front end JavaScript frameworks including React, Angular and Vue. - - -Setup -================================ -Setting up tabulator could not be simpler. - -Include the library and the css -```html - - -``` - -Create an element to hold the table -```html -
        -``` - -Turn the element into a tabulator with some simple javascript -```js -var table = new Tabulator("#example-table", {}); -``` - - -### Bower Installation -To get Tabulator via the Bower package manager, open a terminal in your project directory and run the following command: -``` -bower install tabulator --save -``` - -### NPM Installation -To get Tabulator via the NPM package manager, open a terminal in your project directory and run the following command: -``` -npm install tabulator-tables --save -``` - -### CDN - UNPKG -To access Tabulator directly from the UNPKG CDN servers, include the following two lines at the start of your project, instead of the locally hosted versions: -```html - - -``` diff --git a/tmp/tabulator-5.6.1/bower.json b/tmp/tabulator-5.6.1/bower.json deleted file mode 100644 index e64601e..0000000 --- a/tmp/tabulator-5.6.1/bower.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "tabulator", - "main": "dist/js/tabulator.js", - "version": "5.6.1", - "description": "Interactive table generation JavaScript library", - "keywords": [ - "table", - "grid", - "datagrid", - "tabulator", - "editable", - "cookie", - "jquery", - "jqueryui", - "sort", - "format", - "resizable", - "list", - "scrollable", - "ajax", - "json", - "widget", - "jquery", - "react", - "angular", - "vue" - ], - "authors": [ - "Oli Folkerd" - ], - "license": "MIT", - "homepage": "https://github.com/olifolkerd/tabulator", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/tmp/tabulator-5.6.1/build/Bundler.js b/tmp/tabulator-5.6.1/build/Bundler.js deleted file mode 100644 index 12856c8..0000000 --- a/tmp/tabulator-5.6.1/build/Bundler.js +++ /dev/null @@ -1,190 +0,0 @@ -import { nodeResolve } from "@rollup/plugin-node-resolve"; -import { terser } from "rollup-plugin-terser"; - -const license = require("rollup-plugin-license"); -const globby = require("globby"); -const fs = require("fs-extra"); - -import postcss from "rollup-plugin-postcss"; - -export default class Bundler{ - - constructor(version, env){ - this.bundles = []; - - this.env = env; - this.version = "/* Tabulator v" + version + " (c) Oliver Folkerd <%= moment().format('YYYY') %> */"; - } - - _suppressUnnecessaryWarnings(warn, defaultHandler){ - const ignoredCodes = { - "FILE_NAME_CONFLICT": true, - "CIRCULAR_DEPENDENCY": this._suppressCircularDependencyWarnings, - }; - - var suppressed = false, - codeHandler = ignoredCodes[warn.code]; - - if(codeHandler){ - suppressed = typeof codeHandler === "function" ? codeHandler(warn) : codeHandler; - } - - if(!suppressed){ - defaultHandler(warn); - } - } - - _suppressCircularDependencyWarnings(warn){ - const ignoredCircularFiles = [ - "Column.js", - "Tabulator.js", - ]; - - return ignoredCircularFiles.some(file => warn.importer.includes(file)); - } - - bundle(){ - if(this.env){ - this.watch(this.env); - }else{ - this.build(); - } - - return this.bundles; - } - - watch(env){ - console.log("Building Dev Package Bundles: ", env); - switch(env){ - case "css": - this.bundleCSS(false); - break; - - case "esm": - this.bundleESM(false); - break; - - case "umd": - this.bundleUMD(false); - break; - - case "wrappers": - this.buildWrappers(); - break; - - default: - this.bundleCSS(false); - this.bundleESM(false); - break; - } - } - - build(){ - console.log("Clearing Dist Files"); - - this.clearDist(); - - console.log("Building Wrappers"); - - this.buildWrappers(); - - console.log("Building Production Package Bundles"); - - this.bundleCSS(false); - this.bundleCSS(true); - - this.bundleESM(false); - this.bundleESM(true); - - this.bundleUMD(false); - this.bundleUMD(true); - } - - clearDist(){ - fs.emptyDirSync("./dist"); - } - - buildWrappers(){ - var builds = ["jquery_wrapper.js"]; - - builds.forEach((build) => { - fs.copySync("./src/js/builds/" + build, "./dist/js/" + build); - }); - } - - bundleCSS(minify){ - this.bundles = this.bundles.concat(globby.sync("./src/scss/**/tabulator*.scss").map(inputFile => { - - var file = inputFile.split("/"); - file = file.pop().replace(".scss", (minify ? ".min" : "") + ".css"); - - return { - input: inputFile, - output: { - file: "./dist/css/" + file, - format: "es", - }, - plugins: [ - postcss({ - modules: false, - extract: true, - minimize: minify, - sourceMap: true, - plugins: [require('postcss-prettify')] - }), - ], - onwarn:this._suppressUnnecessaryWarnings.bind(this), - }; - })); - } - - bundleESM(minify){ - this.bundles.push({ - input:"src/js/builds/esm.js", - plugins: [ - nodeResolve(), - minify ? terser() : null, - license({ - banner: { - commentStyle:"none", - content:this.version, - }, - }), - ], - output: [ - { - file: "dist/js/tabulator_esm" + (minify ? ".min" : "") + ".js", - format: "esm", - exports: "named", - sourcemap: true, - }, - ], - onwarn:this._suppressUnnecessaryWarnings.bind(this), - }); - } - - bundleUMD(minify){ - this.bundles.push({ - input:"src/js/builds/usd.js", - plugins: [ - nodeResolve(), - minify ? terser() : null, - license({ - banner: { - commentStyle:"none", - content:this.version, - }, - }), - ], - output: { - file: "dist/js/tabulator" + (minify ? ".min" : "") + ".js", - format: "umd", - name: "Tabulator", - esModule: false, - exports: "default", - sourcemap: true, - }, - onwarn:this._suppressUnnecessaryWarnings.bind(this), - }); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/build/rollup.js b/tmp/tabulator-5.6.1/build/rollup.js deleted file mode 100644 index 53cb2cc..0000000 --- a/tmp/tabulator-5.6.1/build/rollup.js +++ /dev/null @@ -1,6 +0,0 @@ -import Bundler from "./Bundler.js"; -const pkg = require("../package.json"); - -var bundler = new Bundler(pkg.version, process.env.TARGET); - -module.exports = bundler.bundle(); diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator.css b/tmp/tabulator-5.6.1/dist/css/tabulator.css deleted file mode 100644 index 9a585b8..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator.css +++ /dev/null @@ -1,1277 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #999; - background-color: #888; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #e6e6e6; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: #cdcdcd; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #cdcdcd; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: #f3f3f3 !important; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #f3f3f3 !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #e2e2e2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #2975DD; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #2975DD; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #2975DD; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid #aaa; - border-top: 1px solid #aaa; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #EFEFEF; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #aaa; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #9ABCEA; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #aaa; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #EFEFEF; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #aaa; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #aaa; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #aaa; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -/*# sourceMappingURL=tabulator.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator.css.map deleted file mode 100644 index bed5b52..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"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","file":"tabulator.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: #888;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #e6e6e6;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #cdcdcd;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #cdcdcd; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: #f3f3f3 !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #f3f3f3 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator.min.css deleted file mode 100644 index d042790..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{background-color:#888;border:1px solid #999;font-size:14px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#e6e6e6;border-bottom:1px solid #999;box-sizing:border-box;color:#555;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#e6e6e6;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#cdcdcd;border:1px solid #999;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#cdcdcd;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#e2e2e2!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#e6e6e6;border-top:1px solid #999;color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:22px;position:relative}.tabulator-row.tabulator-row-even{background-color:#efefef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #aaa;border-top:1px solid #aaa;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #aaa;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #aaa;border-bottom-left-radius:1px;border-left:2px solid #aaa;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:14px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#efefef;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:14px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #aaa;border-bottom-left-radius:1px;border-left:2px solid #aaa;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px} -/*# sourceMappingURL=tabulator.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator.min.css.map deleted file mode 100644 index b573f7f..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"AAAA,WAGE,qBAAsB,CADtB,qBAAsB,CAEtB,cAAe,CAEf,eAAgB,CALhB,iBAAkB,CAIlB,eAAgB,CAEhB,+BAAgC,CAChC,4BAA6B,CAC7B,2BAA4B,CAC5B,0BAA2B,CAC3B,uBAA0B,CAC1B,iFACE,cAAiB,CACnB,0CACE,oBAAuB,CAGzB,sGACE,gBAAmB,CACrB,6BAKE,wBAAyB,CADzB,4BAA6B,CAF7B,qBAAsB,CAItB,UAAW,CACX,eAAiB,CAOjB,YAAa,CALb,eAAgB,CARhB,iBAAkB,CASlB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CALpB,kBAAmB,CALnB,UAWe,CACf,qDACE,YAAe,CACjB,wDAEE,eAAgB,CADhB,iBACkB,CAClB,2EACE,oBAAuB,CAC3B,4CAOE,kBAAmB,CADnB,2BAA4B,CAH5B,qBAAsB,CAFtB,mBAAoB,CAGpB,qBAAsB,CACtB,0BAA2B,CAK3B,eAAgB,CARhB,iBAAkB,CAMlB,eAAgB,CAChB,qBACkB,CAClB,6DAGE,kBAAmB,CADnB,qBAAsB,CAEtB,mBAAoB,CAHpB,iBAGsB,CACxB,sEACE,wBAAyB,CACzB,UAAgB,CAClB,qEACE,wBAAyB,CACzB,UAAgB,CAClB,mEACE,qBAAsB,CAEtB,WAAY,CADZ,iBACc,CACd,kGACE,aAAgB,CAChB,wGACE,cAAe,CACf,UAAa,CACjB,+FACE,iBAAoB,CACtB,wFACE,qBAAsB,CAGtB,eAAgB,CAChB,sBAAuB,CACvB,qBAAsB,CAHtB,kBAAmB,CADnB,UAIwB,CACxB,iHAEE,kBAAsB,CADtB,kBACwB,CAC1B,gHAKE,eAAgB,CAFhB,qBAAsB,CAFtB,qBAAsB,CAGtB,WAAY,CAFZ,UAGkB,CACpB,+IACE,uBAA0B,CAC9B,yFAEE,kBAAmB,CAGnB,QAAS,CAJT,YAAa,CAEb,iBAAkB,CAGlB,SAAU,CAFV,KAEY,CACZ,0GAKE,4BAA6B,CAF7B,iCAAkC,CAClC,kCAAmC,CAFnC,QAAS,CADT,OAI+B,CACrC,0FAGE,yBAA0B,CAD1B,YAAa,CAGb,iBAAkB,CADlB,eAAgB,CAHhB,iBAIoB,CACtB,qEAEE,qBAAsB,CACtB,cAAe,CAFf,iBAAkB,CAIlB,iBAAkB,CADlB,UACoB,CACpB,8EACE,qBAAyB,CAC3B,yEACE,cAAiB,CACnB,sFAEE,QAAS,CADT,OACW,CACf,oFACE,kBAAqB,CACvB,wCACE,kGAEE,wBAAyB,CADzB,cAC2B,CAAE,CACjC,4HACE,UAAa,CACb,wCACE,gLAEE,4BAA6B,CAD7B,cAC+B,CAAE,CACrC,6IAEE,4BAA6B,CAD7B,eAC+B,CACnC,iIACE,UAAa,CACb,wCACE,qLAEE,4BAA6B,CAD7B,cAC+B,CAAE,CACrC,kJAEE,4BAA6B,CAD7B,eAC+B,CACnC,kIACE,UAAa,CACb,wCACE,sLAEE,yBAA0B,CAD1B,cAC4B,CAAE,CAClC,mJACE,kBAAmB,CACnB,yBAA0B,CAC1B,UAAa,CACjB,+GAIE,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAHvB,sBAAuB,CADvB,wBAIyB,CAC3B,oHACE,wBAA2B,CAC7B,2GACE,eAAgB,CAChB,gBAAmB,CACrB,uIAEE,mBAAoB,CADpB,eACsB,CACxB,4GAKE,WAAY,CAJZ,sBAAuB,CACvB,MAAO,CACP,OAAQ,CACR,OACc,CAClB,+CAEE,MAAO,CADP,eAAgB,CAEhB,UAAa,CACb,qEACE,2BAA8B,CAChC,sEACE,0BAA6B,CACjC,qDAGE,4BAA8B,CAE9B,4BAA6B,CAD7B,yBAA0B,CAH1B,qBAAsB,CACtB,oBAG+B,CAC/B,oEACE,4BAAgC,CAChC,iGACE,YAAe,CACrB,2DACE,oBAAuB,CACvB,iEACE,YAAe,CACrB,kCAKE,gCAAiC,CADjC,aAAc,CAHd,iBAAkB,CAElB,kBAAmB,CADnB,UAGmC,CACnC,wCACE,YAAe,CACjB,yDAGE,kBAAmB,CAFnB,qBAAsB,CACtB,YAAa,CAEb,sBAAuB,CACvB,cAAe,CACf,UAAa,CACb,wFACE,eAAkB,CACpB,yFAIE,UAAW,CAHX,oBAAqB,CAKrB,cAAe,CADf,eAAiB,CAFjB,YAAa,CADb,iBAAkB,CAKlB,kBAAqB,CACzB,mDAGE,qBAAsB,CAGtB,UAAW,CAJX,oBAAqB,CAGrB,gBAAiB,CAJjB,iBAAkB,CAGlB,kBAEa,CACb,kFAEE,4BAA8B,CAD9B,eACgC,CAChC,sGACE,4BAA+B,CACjC,yGACE,yBAA4B,CAClC,2DAEE,OAAQ,CAER,mBAAoB,CAHpB,iBAAkB,CAElB,UACsB,CACtB,4EAGE,wBAAyB,CADzB,qBAAsB,CADtB,iBAE2B,CAC3B,yGAOE,wBAAyB,CACzB,mBAAoB,CAJpB,WAAY,CAHZ,UAAW,CAKX,UAAW,CAJX,iBAAkB,CAClB,UAAW,CAEX,SAGsB,CAC1B,wFAGE,wBAAyB,CADzB,qBAAsB,CADtB,iBAE2B,CACjC,6BAEE,wBAAyB,CADzB,yBAA0B,CAE1B,UAAW,CACX,eAAiB,CAEjB,gBAAiB,CACjB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CALpB,kBAKsB,CACtB,wDAGE,kBAAmB,CAFnB,YAAa,CACb,kBAAmB,CAEnB,6BAA8B,CAC9B,gBAAmB,CACnB,8DACE,YAAe,CACnB,qDAIE,4BAA8B,CAC9B,4BAA6B,CAC7B,yBAA0B,CAL1B,qBAAsB,CAMtB,eAAgB,CAJhB,eAAgB,CADhB,UAKkB,CAClB,oEAEE,4BAA8B,CAD9B,oBACgC,CAChC,iGACE,YAAe,CACnB,gEAEE,kBAAmB,CADnB,kBACqB,CACzB,uDACE,gBAAmB,CACrB,qDACE,eAAqB,CACvB,kDAGE,UAAW,CAFX,MAAO,CAGP,mBAAoB,CAEpB,iBAAkB,CADlB,mBAAoB,CAHpB,gBAIoB,CACtB,kDAIE,qBAAsB,CACtB,iBAAkB,CAJlB,oBAAqB,CACrB,YAAa,CACb,eAEoB,CACtB,8CACE,YAAe,CACjB,6CAME,6BAAoC,CAFpC,qBAAsB,CACtB,iBAAkB,CAJlB,oBAAqB,CACrB,YAAa,CACb,eAGsC,CACtC,oDACE,UAAa,CACf,sDACE,UAAa,CACf,wCACE,iEAEE,yBAA8B,CAC9B,UAAW,CAFX,cAEa,CAAE,CACvB,wCAEE,oBAAqB,CAErB,gBAAiB,CACjB,iBAAkB,CAJlB,iBAAkB,CAMlB,qBAAsB,CAJtB,SAAU,CAGV,UACwB,CACxB,wCACE,8CACE,gBAAmB,CAAE,CACzB,qDAEE,cAAe,CADf,SACiB,CACrB,4BAGE,kBAAmB,CAMnB,yBAA8B,CAP9B,YAAa,CAKb,WAAY,CAFZ,MAAO,CAJP,iBAAkB,CASlB,iBAAkB,CANlB,KAAM,CAIN,UAAW,CAFX,WAIoB,CACpB,iDAKE,eAAgB,CADhB,kBAAmB,CAHnB,oBAAqB,CAMrB,cAAe,CADf,eAAiB,CAJjB,aAAc,CACd,iBAIiB,CACjB,2EACE,qBAAsB,CACtB,UAAa,CACf,6EACE,qBAAsB,CACtB,aAAgB,CAExB,eAIE,qBAAsB,CAFtB,qBAAsB,CACtB,eAAgB,CAFhB,iBAGwB,CACxB,kCACE,wBAA2B,CAC7B,wCACE,0CACE,qBAAsB,CACtB,cAAiB,CAAE,CACvB,kCACE,wBAA2B,CAC7B,wCACE,wCACE,wBAAyB,CACzB,cAAiB,CAAE,CACvB,oCAEE,eAAgB,CADhB,qBACkB,CACpB,gCAGE,4BAA6B,CAD7B,yBAA0B,CAE1B,mBAAoB,CAHpB,iBAAkB,CAIlB,UAAa,CACf,oFACE,wBAAyB,CACzB,UAAgB,CAIlB,gMACE,wBAAyB,CACzB,UAAgB,CAClB,4CAGE,QAAS,CAET,UAAW,CADX,MAAO,CAHP,iBAAkB,CAClB,OAGa,CACb,iDAEE,WAAY,CADZ,KACc,CAChB,wCACE,kDACE,gBAAmB,CAAE,CAC3B,8CAIE,4BAA6B,CAD7B,yBAA0B,CAF1B,qBAAsB,CACtB,WAE+B,CAC/B,oDACE,YAAe,CACjB,oDACE,cAAiB,CACjB,0DACE,iBAAoB,CACpB,wEACE,kBAAqB,CAC7B,+BAKE,2BAA4B,CAF5B,qBAAsB,CAFtB,oBAAqB,CASrB,YAAa,CAFb,eAAgB,CAJhB,WAAY,CAFZ,iBAAkB,CAOlB,sBAAuB,CAHvB,qBAAsB,CACtB,kBAGe,CACf,gDAIE,wBAAyB,CAHzB,oBAAqB,CAErB,MAAO,CADP,eAAgB,CAGhB,UAAa,CACb,sEACE,2BAA8B,CAChC,uEACE,0BAA6B,CACjC,iDACE,wBAAyB,CACzB,YAAa,CACb,SAAY,CACZ,+GAEE,sBAAuB,CADvB,UAAW,CAEX,YAAe,CACnB,yDACE,qBAA2B,CAC3B,+HAEE,sBAAuB,CADvB,UAAW,CAEX,UAAgB,CACpB,oDAEE,kBAAmB,CADnB,mBAAoB,CAEpB,sBAAuB,CACvB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAsB,CACtB,8EACE,SAAY,CACZ,wGAIE,eAAgB,CAFhB,UAAW,CACX,cAAe,CAFf,UAGkB,CACxB,kIACE,wBAA2B,CAC7B,iEACE,oBAAqB,CACrB,SAAY,CACd,2DASE,4BAA6B,CAF7B,6BAA8B,CAC9B,0BAA2B,CAP3B,oBAAqB,CAErB,UAAW,CAGX,gBAAiB,CADjB,eAAgB,CAHhB,qBAAsB,CAEtB,SAK+B,CACjC,4DAGE,kBAAmB,CAOnB,yBAA8B,CAF9B,qBAAsB,CACtB,iBAAkB,CARlB,mBAAoB,CAIpB,WAAY,CAHZ,sBAAuB,CAKvB,gBAAiB,CAIjB,eAAgB,CAPhB,qBAAsB,CAEtB,UAKkB,CAClB,wCACE,kEAEE,yBAA8B,CAD9B,cACgC,CAAE,CACtC,kGAKE,sBAAuB,CAJvB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACyB,CACzB,wGAOE,eAAgB,CALhB,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACtB,gGAKE,eAAgB,CAJhB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACkB,CAClB,sGAOE,eAAgB,CALhB,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACxB,qEAEE,kBAAmB,CASnB,eAAgB,CADhB,kBAAmB,CAEnB,UAAW,CAXX,mBAAoB,CAapB,eAAgB,CADhB,eAAiB,CALjB,WAAY,CALZ,sBAAuB,CACvB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CAEpB,UAKkB,CAClB,wCACE,2EAEE,cAAe,CADf,UACiB,CAAE,CACvB,sHACE,eAAkB,CACpB,qHACE,YAAe,CACjB,yEACE,WAAc,CAChB,iHACE,YAAe,CACnB,wDAIE,kBAAmB,CAHnB,oBAAqB,CACrB,WAAY,CACZ,UACqB,CACzB,+BAOE,eAAgB,CALhB,4BAA6B,CAC7B,2BAA4B,CAC5B,yBAA0B,CAH1B,qBAAsB,CAOtB,eAAiB,CACjB,cAAe,CAHf,wBAGiB,CACjB,wCACE,qCAEE,+BAAoC,CADpC,cACsC,CAAE,CAC5C,wEAKE,eAAgB,CAHhB,iCAAkC,CAClC,kCAAmC,CACnC,yBAA0B,CAH1B,iBAIkB,CACpB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,kBAAqB,CACvB,uDACE,oBAAuB,CACzB,gDAME,mCAAoC,CAEpC,0BAA2B,CAD3B,cAAe,CAFf,gCAAiC,CAJjC,oBAAqB,CAErB,QAAS,CACT,iBAAkB,CAKlB,qBAAsB,CAPtB,OAOwB,CAC1B,oCAEE,UAAW,CADX,gBACa,CAEnB,2BASE,gCAAiC,CALjC,eAAgB,CAChB,qBAAsB,CACtB,mCAAwC,CAHxC,qBAAsB,CADtB,oBAAqB,CAKrB,cAAe,CACf,eAAgB,CAPhB,iBAAkB,CASlB,aAAgB,CAElB,iBAEE,iBAAkB,CADlB,WACoB,CAEtB,mBAGE,iBAAkB,CAClB,eAAgB,CAChB,cAAe,CAJf,yBAA2B,CAC3B,eAAgB,CAIhB,mBAAsB,CAExB,qCAEE,qBAAsB,CACtB,gBAAiB,CAFjB,iBAAkB,CAGlB,gBAAmB,CACnB,kEACE,UAAa,CACf,wCACE,8EAEE,kBAAmB,CADnB,cACqB,CAAE,CAC3B,iEACE,kBAAqB,CACrB,uEAUE,iBAAkB,CAAlB,kBAAkB,CAAlB,wBAAkB,CAHlB,UAAW,CANX,oBAAqB,CAIrB,UAAW,CAHX,iBAAkB,CAElB,UAAW,CADX,oBAAqB,CASrB,uBAAwB,CADxB,kBAAmB,CALnB,SAM0B,CAEhC,0CACE,yBAA4B,CAE9B,qBAIE,gCAAiC,CAFjC,cAAe,CADf,gBAAiB,CAEjB,eACmC,CACnC,+CAEE,UAAW,CACX,YAAa,CAFb,WAEe,CACf,sDAEE,kBAAmB,CADnB,UACqB,CACrB,8DACE,oCAA6C,CACjD,uDACE,yBAA4B,CAC9B,wCACE,qDAGE,kBAAmB,CADnB,UAAW,CADX,cAEqB,CAAE,CAC7B,sDAEE,UAAW,CADX,WAAY,CAEZ,iBAAoB,CACtB,gDACE,4BAA6B,CAG7B,UAAW,CACX,eAAiB,CAFjB,mBAEmB,CACrB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CAExB,yBACE,aAAgB,CAElB,yBAEE,aAAc,CADd,kBACgB,CAChB,0DAEE,0BAA2B,CAC3B,oBAAqB,CAFrB,kBAEuB,CACvB,wGAEE,gBAAiB,CADjB,cACmB,CACrB,kGAEE,iBAAkB,CADlB,eACoB,CACtB,uGACE,QAAS,CACT,UAAgB,CACpB,wDAEE,0BAA2B,CAD3B,oBAC6B,CAC7B,oFAGE,2BAAkC,CAClC,8BAA+B,CAC/B,mBAAoB,CACpB,2BAA4B,CAJ5B,eAAgB,CADhB,cAK8B,CAChC,qFAEE,eAAgB,CADhB,cACkB,CACpB,+FACE,0BAA6B,CAC/B,gGACE,2BAA8B,CAClC,kFAEE,aAAc,CACd,iBAAkB,CAFlB,SAEoB,CACtB,mEACE,kBAAqB,CAEzB,4BAGE,QAAS,CACT,MAAO,CAHP,iBAAkB,CAIlB,OAAQ,CAHR,KAAM,CAIN,aAAgB,CAElB,uEACE,sBAA0B,CAE5B,uBACE,wBAA2B,CAC3B,mDASE,4BAA6B,CAF7B,6BAA8B,CAC9B,0BAA2B,CAP3B,oBAAqB,CAErB,UAAW,CAGX,gBAAiB,CADjB,eAAgB,CAHhB,qBAAsB,CAEtB,SAK+B,CACjC,oDAOE,eAAgB,CALhB,4BAA6B,CAC7B,2BAA4B,CAC5B,yBAA0B,CAH1B,qBAAsB,CAOtB,eAAiB,CACjB,cAAe,CAHf,wBAGiB,CACjB,wCACE,0DAEE,+BAAoC,CADpC,cACsC,CAAE,CAC5C,6FAKE,eAAgB,CAHhB,iCAAkC,CAClC,kCAAmC,CACnC,yBAA0B,CAH1B,iBAIkB,CACpB,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,4BAAgC,CAClC,4EACE,oBAAuB,CACzB,qEAME,mCAAoC,CAEpC,0BAA2B,CAD3B,cAAe,CAFf,gCAAiC,CAJjC,oBAAqB,CAErB,QAAS,CACT,iBAAkB,CAKlB,qBAAsB,CAPtB,OAOwB,CAC1B,yDAEE,UAAW,CADX,gBACa,CACjB,oDAGE,kBAAmB,CAOnB,yBAA8B,CAF9B,qBAAsB,CACtB,iBAAkB,CARlB,mBAAoB,CAIpB,WAAY,CAHZ,sBAAuB,CAKvB,gBAAiB,CAIjB,eAAgB,CAPhB,qBAAsB,CAEtB,UAKkB,CAClB,wCACE,0DAEE,yBAA8B,CAD9B,cACgC,CAAE,CACtC,0FAKE,sBAAuB,CAJvB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACyB,CACzB,gGAOE,eAAgB,CALhB,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACtB,wFAKE,eAAgB,CAJhB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACkB,CAClB,8FAOE,eAAgB,CALhB,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB","file":"tabulator.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: #888;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #e6e6e6;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #cdcdcd;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #cdcdcd; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: #f3f3f3 !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #f3f3f3 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.css b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.css deleted file mode 100644 index 7908565..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.css +++ /dev/null @@ -1,1480 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #ddd; - background-color: #fff; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #ddd; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #ddd; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: white !important; - border-top: 1px solid #ddd; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #ececec !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #2975DD; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #2975DD; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #2975DD; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #ddd; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #ddd; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #ddd; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #f9f9f9; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #f5f5f5; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #ddd; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #9ABCEA; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #ddd; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #f9f9f9; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #ddd; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #ddd; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #ddd; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - background-color: #fff; - margin-bottom: 20px; - border: none; -} - -.tabulator .tabulator-header { - border-bottom: 2px solid #ddd; - background-color: #fff; - color: inherit; -} - -.tabulator .tabulator-header .tabulator-col { - background-color: #fff; - border-right: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 8px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 1px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - width: 100%; - border-bottom: 1px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #000; -} - -.tabulator .tabulator-tableholder .tabulator-table { - color: inherit; -} - -.tabulator .tabulator-footer { - border-top: 2px solid #ddd; - background: inherit; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; -} - -.tabulator .tabulator-footer .tabulator-paginator { - color: inherit; -} - -.tabulator.table-striped .tabulator-row.tabulator-row-even { - background-color: #f9f9f9; -} - -.tabulator.table-bordered { - border: 1px solid #ddd; -} - -.tabulator.table-bordered .tabulator-header .tabulator-col { - border-right: 1px solid #ddd; -} - -.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid #ddd; -} - -.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content { - padding: 5px; -} - -.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row { - min-height: 24px; -} - -.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 5px; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active { - background: #f5f5f5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success { - background: #dff0d8 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info { - background: #d9edf7 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning { - background: #fcf8e3 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger { - background: #f2dede !important; -} - -.tabulator-row { - min-height: 30px; - border-bottom: 1px solid #ddd; -} - -.tabulator-row.tabulator-row-even { - background-color: transparent; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #f5f5f5 !important; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC !important; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell { - padding: 8px; - border-right: none; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - border: 1px solid #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #333; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-group { - color: inherit; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - border: none; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #666; -} - -.tabulator-print-table .tabulator-data-tree-control { - border: 1px solid #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #333; -} - -/*# sourceMappingURL=tabulator_bootstrap3.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.css.map deleted file mode 100644 index 258f00e..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap3.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #ddd;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #ddd;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #ddd;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #ddd;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n margin-bottom: 20px;\n border: none; }\n .tabulator .tabulator-header {\n border-bottom: 2px solid #ddd;\n background-color: #fff;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #fff;\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n border-top: 2px solid #ddd;\n background: inherit; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator.table-striped .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator.table-bordered {\n border: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #ddd; }\n .tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 24px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success {\n background: #dff0d8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info {\n background: #d9edf7 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning {\n background: #fcf8e3 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger {\n background: #f2dede !important; }\n\n.tabulator-row {\n min-height: 30px;\n border-bottom: 1px solid #ddd; }\n .tabulator-row.tabulator-row-even {\n background-color: transparent; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell {\n padding: 8px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border: none; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n .tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.min.css deleted file mode 100644 index 6e08bdb..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{border:1px solid #ddd;font-size:14px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{border-bottom:1px solid #ddd;box-sizing:border-box;color:#555;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#fff;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#e6e6e6;border:1px solid #ddd;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#e6e6e6;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #aaa;border-top:1px solid #ddd;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#ececec!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#e6e6e6;border-top:1px solid #ddd;color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f3f3f3!important;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #ddd;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #ddd;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:22px;position:relative}.tabulator-row.tabulator-row-even{background-color:#f9f9f9}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #ddd;border-top:1px solid #ddd;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #ddd;border-top:1px solid #ddd;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #ddd;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #ddd;border-bottom-left-radius:1px;border-left:2px solid #ddd;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:14px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#f9f9f9;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:14px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #ddd;border-bottom-left-radius:1px;border-left:2px solid #ddd;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{background-color:#fff;border:none;margin-bottom:20px}.tabulator .tabulator-header{background-color:#fff;border-bottom:2px solid #ddd;color:inherit}.tabulator .tabulator-header .tabulator-col{background-color:#fff;border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:8px}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{border-bottom:1px solid #ddd;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer{background:inherit;border-top:2px solid #ddd}.tabulator .tabulator-footer .tabulator-calcs-holder{border-bottom:1px solid #ddd;border-top:1px solid #ddd}.tabulator .tabulator-footer .tabulator-paginator{color:inherit}.tabulator.table-striped .tabulator-row.tabulator-row-even{background-color:#f9f9f9}.tabulator.table-bordered{border:1px solid #ddd}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #ddd}.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content{padding:5px}.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row{min-height:24px}.tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success{background:#dff0d8!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info{background:#d9edf7!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{background:#fcf8e3!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger{background:#f2dede!important}.tabulator-row{border-bottom:1px solid #ddd;min-height:30px}.tabulator-row.tabulator-row-even{background-color:transparent}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5!important}}.tabulator-row.tabulator-selected{background-color:#9abcea!important}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc!important;cursor:pointer}}.tabulator-row .tabulator-cell{border-right:none;padding:8px}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-item,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border:none}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{border:1px solid #333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333} -/*# sourceMappingURL=tabulator_bootstrap3.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.min.css.map deleted file mode 100644 index 09e6881..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap3.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap3.scss"],"names":[],"mappings":"AAAA,WAEE,qBAAsB,CAEtB,cAAe,CAEf,eAAgB,CALhB,iBAAkB,CAIlB,eAAgB,CAEhB,+BAAgC,CAChC,4BAA6B,CAC7B,2BAA4B,CAC5B,0BAA2B,CAC3B,uBAA0B,CAC1B,iFACE,cAAiB,CACnB,0CACE,oBAAuB,CAGzB,sGACE,gBAAmB,CACrB,6BAIE,4BAA6B,CAF7B,qBAAsB,CAItB,UAAW,CACX,eAAiB,CAOjB,YAAa,CALb,eAAgB,CARhB,iBAAkB,CASlB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CALpB,kBAAmB,CALnB,UAWe,CACf,qDACE,YAAe,CACjB,wDAEE,eAAgB,CADhB,iBACkB,CAClB,2EACE,oBAAuB,CAC3B,4CAOE,eAAgB,CADhB,2BAA4B,CAH5B,qBAAsB,CAFtB,mBAAoB,CAGpB,qBAAsB,CACtB,0BAA2B,CAK3B,eAAgB,CARhB,iBAAkB,CAMlB,eAAgB,CAChB,qBACkB,CAClB,6DAGE,kBAAmB,CADnB,qBAAsB,CAEtB,mBAAoB,CAHpB,iBAGsB,CACxB,sEACE,wBAAyB,CACzB,UAAgB,CAClB,qEACE,wBAAyB,CACzB,UAAgB,CAClB,mEACE,qBAAsB,CAEtB,WAAY,CADZ,iBACc,CACd,kGACE,aAAgB,CAChB,wGACE,cAAe,CACf,UAAa,CACjB,+FACE,iBAAoB,CACtB,wFACE,qBAAsB,CAGtB,eAAgB,CAChB,sBAAuB,CACvB,qBAAsB,CAHtB,kBAAmB,CADnB,UAIwB,CACxB,iHAEE,kBAAsB,CADtB,kBACwB,CAC1B,gHAKE,eAAgB,CAFhB,qBAAsB,CAFtB,qBAAsB,CAGtB,WAAY,CAFZ,UAGkB,CACpB,+IACE,uBAA0B,CAC9B,yFAEE,kBAAmB,CAGnB,QAAS,CAJT,YAAa,CAEb,iBAAkB,CAGlB,SAAU,CAFV,KAEY,CACZ,0GAKE,4BAA6B,CAF7B,iCAAkC,CAClC,kCAAmC,CAFnC,QAAS,CADT,OAI+B,CACrC,0FAGE,yBAA0B,CAD1B,YAAa,CAGb,iBAAkB,CADlB,eAAgB,CAHhB,iBAIoB,CACtB,qEAEE,qBAAsB,CACtB,cAAe,CAFf,iBAAkB,CAIlB,iBAAkB,CADlB,UACoB,CACpB,8EACE,qBAAyB,CAC3B,yEACE,cAAiB,CACnB,sFAEE,QAAS,CADT,OACW,CACf,oFACE,kBAAqB,CACvB,wCACE,kGAEE,wBAAyB,CADzB,cAC2B,CAAE,CACjC,4HACE,UAAa,CACb,wCACE,gLAEE,4BAA6B,CAD7B,cAC+B,CAAE,CACrC,6IAEE,4BAA6B,CAD7B,eAC+B,CACnC,iIACE,UAAa,CACb,wCACE,qLAEE,4BAA6B,CAD7B,cAC+B,CAAE,CACrC,kJAEE,4BAA6B,CAD7B,eAC+B,CACnC,kIACE,UAAa,CACb,wCACE,sLAEE,yBAA0B,CAD1B,cAC4B,CAAE,CAClC,mJACE,kBAAmB,CACnB,yBAA0B,CAC1B,UAAa,CACjB,+GAIE,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAHvB,sBAAuB,CADvB,wBAIyB,CAC3B,oHACE,wBAA2B,CAC7B,2GACE,eAAgB,CAChB,gBAAmB,CACrB,uIAEE,mBAAoB,CADpB,eACsB,CACxB,4GAKE,WAAY,CAJZ,sBAAuB,CACvB,MAAO,CACP,OAAQ,CACR,OACc,CAClB,+CAEE,MAAO,CADP,eAAgB,CAEhB,UAAa,CACb,qEACE,2BAA8B,CAChC,sEACE,0BAA6B,CACjC,qDAGE,yBAA4B,CAE5B,4BAA6B,CAD7B,yBAA0B,CAH1B,qBAAsB,CACtB,oBAG+B,CAC/B,oEACE,yBAA8B,CAC9B,iGACE,YAAe,CACrB,2DACE,oBAAuB,CACvB,iEACE,YAAe,CACrB,kCAKE,gCAAiC,CADjC,aAAc,CAHd,iBAAkB,CAElB,kBAAmB,CADnB,UAGmC,CACnC,wCACE,YAAe,CACjB,yDAGE,kBAAmB,CAFnB,qBAAsB,CACtB,YAAa,CAEb,sBAAuB,CACvB,cAAe,CACf,UAAa,CACb,wFACE,eAAkB,CACpB,yFAIE,UAAW,CAHX,oBAAqB,CAKrB,cAAe,CADf,eAAiB,CAFjB,YAAa,CADb,iBAAkB,CAKlB,kBAAqB,CACzB,mDAGE,qBAAsB,CAGtB,UAAW,CAJX,oBAAqB,CAGrB,gBAAiB,CAJjB,iBAAkB,CAGlB,kBAEa,CACb,kFAEE,4BAA8B,CAD9B,eACgC,CAChC,sGACE,4BAA+B,CACjC,yGACE,yBAA4B,CAClC,2DAEE,OAAQ,CAER,mBAAoB,CAHpB,iBAAkB,CAElB,UACsB,CACtB,4EAGE,wBAAyB,CADzB,qBAAsB,CADtB,iBAE2B,CAC3B,yGAOE,wBAAyB,CACzB,mBAAoB,CAJpB,WAAY,CAHZ,UAAW,CAKX,UAAW,CAJX,iBAAkB,CAClB,UAAW,CAEX,SAGsB,CAC1B,wFAGE,wBAAyB,CADzB,qBAAsB,CADtB,iBAE2B,CACjC,6BAEE,wBAAyB,CADzB,yBAA0B,CAE1B,UAAW,CACX,eAAiB,CAEjB,gBAAiB,CACjB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CALpB,kBAKsB,CACtB,wDAGE,kBAAmB,CAFnB,YAAa,CACb,kBAAmB,CAEnB,6BAA8B,CAC9B,gBAAmB,CACnB,8DACE,YAAe,CACnB,qDAIE,4BAA8B,CAH9B,qBAAsB,CAMtB,eAAgB,CAJhB,eAAgB,CADhB,UAKkB,CAClB,oEAEE,4BAA8B,CAD9B,oBACgC,CAChC,iGACE,YAAe,CACnB,gEAEE,kBAAmB,CADnB,kBACqB,CACzB,uDACE,gBAAmB,CACrB,qDACE,eAAqB,CACvB,kDAGE,UAAW,CAFX,MAAO,CAGP,mBAAoB,CAEpB,iBAAkB,CADlB,mBAAoB,CAHpB,gBAIoB,CACtB,kDAIE,qBAAsB,CACtB,iBAAkB,CAJlB,oBAAqB,CACrB,YAAa,CACb,eAEoB,CACtB,8CACE,YAAe,CACjB,6CAME,6BAAoC,CAFpC,qBAAsB,CACtB,iBAAkB,CAJlB,oBAAqB,CACrB,YAAa,CACb,eAGsC,CACtC,oDACE,UAAa,CACf,sDACE,UAAa,CACf,wCACE,iEAEE,yBAA8B,CAC9B,UAAW,CAFX,cAEa,CAAE,CACvB,wCAEE,oBAAqB,CAErB,gBAAiB,CACjB,iBAAkB,CAJlB,iBAAkB,CAMlB,qBAAsB,CAJtB,SAAU,CAGV,UACwB,CACxB,wCACE,8CACE,gBAAmB,CAAE,CACzB,qDAEE,cAAe,CADf,SACiB,CACrB,4BAGE,kBAAmB,CAMnB,yBAA8B,CAP9B,YAAa,CAKb,WAAY,CAFZ,MAAO,CAJP,iBAAkB,CASlB,iBAAkB,CANlB,KAAM,CAIN,UAAW,CAFX,WAIoB,CACpB,iDAKE,eAAgB,CADhB,kBAAmB,CAHnB,oBAAqB,CAMrB,cAAe,CADf,eAAiB,CAJjB,aAAc,CACd,iBAIiB,CACjB,2EACE,qBAAsB,CACtB,UAAa,CACf,6EACE,qBAAsB,CACtB,aAAgB,CAExB,eAIE,qBAAsB,CAFtB,qBAAsB,CACtB,eAAgB,CAFhB,iBAGwB,CACxB,kCACE,wBAA2B,CAC7B,wCACE,0CACE,wBAAyB,CACzB,cAAiB,CAAE,CACvB,kCACE,wBAA2B,CAC7B,wCACE,wCACE,wBAAyB,CACzB,cAAiB,CAAE,CACvB,oCAEE,eAAgB,CADhB,qBACkB,CACpB,gCAGE,4BAA6B,CAD7B,yBAA0B,CAE1B,mBAAoB,CAHpB,iBAAkB,CAIlB,UAAa,CACf,oFACE,wBAAyB,CACzB,UAAgB,CAIlB,gMACE,wBAAyB,CACzB,UAAgB,CAClB,4CAGE,QAAS,CAET,UAAW,CADX,MAAO,CAHP,iBAAkB,CAClB,OAGa,CACb,iDAEE,WAAY,CADZ,KACc,CAChB,wCACE,kDACE,gBAAmB,CAAE,CAC3B,8CAIE,4BAA6B,CAD7B,yBAA0B,CAF1B,qBAAsB,CACtB,WAE+B,CAC/B,oDACE,YAAe,CACjB,oDACE,cAAiB,CACjB,0DACE,iBAAoB,CACpB,wEACE,kBAAqB,CAC7B,+BAKE,2BAA4B,CAF5B,qBAAsB,CAFtB,oBAAqB,CASrB,YAAa,CAFb,eAAgB,CAJhB,WAAY,CAFZ,iBAAkB,CAOlB,sBAAuB,CAHvB,qBAAsB,CACtB,kBAGe,CACf,gDAIE,wBAAyB,CAHzB,oBAAqB,CAErB,MAAO,CADP,eAAgB,CAGhB,UAAa,CACb,sEACE,2BAA8B,CAChC,uEACE,0BAA6B,CACjC,iDACE,wBAAyB,CACzB,YAAa,CACb,SAAY,CACZ,+GAEE,sBAAuB,CADvB,UAAW,CAEX,YAAe,CACnB,yDACE,qBAA2B,CAC3B,+HAEE,sBAAuB,CADvB,UAAW,CAEX,UAAgB,CACpB,oDAEE,kBAAmB,CADnB,mBAAoB,CAEpB,sBAAuB,CACvB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAsB,CACtB,8EACE,SAAY,CACZ,wGAIE,eAAgB,CAFhB,UAAW,CACX,cAAe,CAFf,UAGkB,CACxB,kIACE,wBAA2B,CAC7B,iEACE,oBAAqB,CACrB,SAAY,CACd,2DASE,4BAA6B,CAF7B,6BAA8B,CAC9B,0BAA2B,CAP3B,oBAAqB,CAErB,UAAW,CAGX,gBAAiB,CADjB,eAAgB,CAHhB,qBAAsB,CAEtB,SAK+B,CACjC,4DAGE,kBAAmB,CAOnB,yBAA8B,CAD9B,iBAAkB,CARlB,mBAAoB,CAIpB,WAAY,CAHZ,sBAAuB,CAKvB,gBAAiB,CAIjB,eAAgB,CAPhB,qBAAsB,CAEtB,UAKkB,CAClB,wCACE,kEAEE,yBAA8B,CAD9B,cACgC,CAAE,CACtC,kGAKE,sBAAuB,CAJvB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACyB,CACzB,wGAEE,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACtB,gGACE,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACkB,CAClB,sGAEE,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACxB,qEAEE,kBAAmB,CASnB,eAAgB,CADhB,kBAAmB,CAEnB,UAAW,CAXX,mBAAoB,CAapB,eAAgB,CADhB,eAAiB,CALjB,WAAY,CALZ,sBAAuB,CACvB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CAEpB,UAKkB,CAClB,wCACE,2EAEE,cAAe,CADf,UACiB,CAAE,CACvB,sHACE,eAAkB,CACpB,qHACE,YAAe,CACjB,yEACE,WAAc,CAChB,iHACE,YAAe,CACnB,wDAIE,kBAAmB,CAHnB,oBAAqB,CACrB,WAAY,CACZ,UACqB,CACzB,+BAOE,eAAgB,CALhB,4BAA6B,CAC7B,2BAA4B,CAC5B,yBAA0B,CAH1B,qBAAsB,CAOtB,eAAiB,CACjB,cAAe,CAHf,wBAGiB,CACjB,wCACE,qCAEE,+BAAoC,CADpC,cACsC,CAAE,CAC5C,wEAKE,eAAgB,CAHhB,iCAAkC,CAClC,kCAAmC,CACnC,yBAA0B,CAH1B,iBAIkB,CACpB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,kBAAqB,CACvB,uDACE,oBAAuB,CACzB,gDAME,mCAAoC,CAEpC,0BAA2B,CAD3B,cAAe,CAFf,gCAAiC,CAJjC,oBAAqB,CAErB,QAAS,CACT,iBAAkB,CAKlB,qBAAsB,CAPtB,OAOwB,CAC1B,oCAEE,UAAW,CADX,gBACa,CAEnB,2BASE,gCAAiC,CALjC,eAAgB,CAChB,qBAAsB,CACtB,mCAAwC,CAHxC,qBAAsB,CADtB,oBAAqB,CAKrB,cAAe,CACf,eAAgB,CAPhB,iBAAkB,CASlB,aAAgB,CAElB,iBAEE,iBAAkB,CADlB,WACoB,CAEtB,mBAGE,iBAAkB,CAClB,eAAgB,CAChB,cAAe,CAJf,yBAA2B,CAC3B,eAAgB,CAIhB,mBAAsB,CAExB,qCAEE,qBAAsB,CACtB,gBAAiB,CAFjB,iBAAkB,CAGlB,gBAAmB,CACnB,kEACE,UAAa,CACf,wCACE,8EAEE,kBAAmB,CADnB,cACqB,CAAE,CAC3B,iEACE,kBAAqB,CACrB,uEAUE,iBAAkB,CAAlB,kBAAkB,CAAlB,wBAAkB,CAHlB,UAAW,CANX,oBAAqB,CAIrB,UAAW,CAHX,iBAAkB,CAElB,UAAW,CADX,oBAAqB,CASrB,uBAAwB,CADxB,kBAAmB,CALnB,SAM0B,CAEhC,0CACE,yBAA4B,CAE9B,qBAIE,gCAAiC,CAFjC,cAAe,CADf,gBAAiB,CAEjB,eACmC,CACnC,+CAEE,UAAW,CACX,YAAa,CAFb,WAEe,CACf,sDAEE,kBAAmB,CADnB,UACqB,CACrB,8DACE,oCAA6C,CACjD,uDACE,yBAA4B,CAC9B,wCACE,qDAGE,kBAAmB,CADnB,UAAW,CADX,cAEqB,CAAE,CAC7B,sDAEE,UAAW,CADX,WAAY,CAEZ,iBAAoB,CACtB,gDACE,4BAA6B,CAG7B,UAAW,CACX,eAAiB,CAFjB,mBAEmB,CACrB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CAExB,yBACE,aAAgB,CAElB,yBAEE,aAAc,CADd,kBACgB,CAChB,0DAEE,0BAA2B,CAC3B,oBAAqB,CAFrB,kBAEuB,CACvB,wGAEE,gBAAiB,CADjB,cACmB,CACrB,kGAEE,iBAAkB,CADlB,eACoB,CACtB,uGACE,QAAS,CACT,UAAgB,CACpB,wDAEE,0BAA2B,CAD3B,oBAC6B,CAC7B,oFAGE,2BAAkC,CAClC,8BAA+B,CAC/B,mBAAoB,CACpB,2BAA4B,CAJ5B,eAAgB,CADhB,cAK8B,CAChC,qFAEE,eAAgB,CADhB,cACkB,CACpB,+FACE,0BAA6B,CAC/B,gGACE,2BAA8B,CAClC,kFAEE,aAAc,CACd,iBAAkB,CAFlB,SAEoB,CACtB,mEACE,kBAAqB,CAEzB,4BAGE,QAAS,CACT,MAAO,CAHP,iBAAkB,CAIlB,OAAQ,CAHR,KAAM,CAIN,aAAgB,CAElB,uEACE,sBAA0B,CAI1B,mDASE,4BAA6B,CAF7B,6BAA8B,CAC9B,0BAA2B,CAP3B,oBAAqB,CAErB,UAAW,CAGX,gBAAiB,CADjB,eAAgB,CAHhB,qBAAsB,CAEtB,SAK+B,CACjC,oDAOE,eAAgB,CALhB,4BAA6B,CAC7B,2BAA4B,CAC5B,yBAA0B,CAH1B,qBAAsB,CAOtB,eAAiB,CACjB,cAAe,CAHf,wBAGiB,CACjB,wCACE,0DAEE,+BAAoC,CADpC,cACsC,CAAE,CAC5C,6FAKE,eAAgB,CAHhB,iCAAkC,CAClC,kCAAmC,CACnC,yBAA0B,CAH1B,iBAIkB,CACpB,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,4BAAgC,CAClC,4EACE,oBAAuB,CACzB,qEAME,mCAAoC,CAEpC,0BAA2B,CAD3B,cAAe,CAFf,gCAAiC,CAJjC,oBAAqB,CAErB,QAAS,CACT,iBAAkB,CAKlB,qBAAsB,CAPtB,OAOwB,CAC1B,yDAEE,UAAW,CADX,gBACa,CACjB,oDAGE,kBAAmB,CAOnB,yBAA8B,CAD9B,iBAAkB,CARlB,mBAAoB,CAIpB,WAAY,CAHZ,sBAAuB,CAKvB,gBAAiB,CAIjB,eAAgB,CAPhB,qBAAsB,CAEtB,UAKkB,CAClB,wCACE,0DAEE,yBAA8B,CAD9B,cACgC,CAAE,CACtC,0FAKE,sBAAuB,CAJvB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACyB,CACzB,gGAEE,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACtB,wFACE,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACkB,CAClB,8FAEE,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CAE1B,WACE,qBAAsB,CAEtB,WAAY,CADZ,kBACc,CACd,6BAEE,qBAAsB,CADtB,4BAA6B,CAE7B,aAAgB,CAChB,4CACE,qBAAsB,CACtB,iBAAoB,CACpB,mEACE,WAAc,CAChB,0FACE,yBAA4B,CAChC,qDAEE,4BAA6B,CAD7B,UAC+B,CACnC,8DACE,UAAa,CACf,mDACE,aAAgB,CAClB,6BAEE,kBAAmB,CADnB,yBACqB,CACrB,qDACE,4BAA6B,CAC7B,yBAA4B,CAC9B,kDACE,aAAgB,CACpB,2DACE,wBAA2B,CAC7B,0BACE,qBAAwB,CAGxB,4JACE,2BAA8B,CAClC,mFACE,WAAc,CAChB,kFACE,eAAkB,CAClB,kGACE,WAAc,CAClB,yEACE,4BAAgC,CAClC,0EACE,4BAAgC,CAClC,uEACE,4BAAgC,CAClC,0EACE,4BAAgC,CAClC,yEACE,4BAAgC,CAEpC,eAEE,4BAA6B,CAD7B,eAC+B,CAC/B,kCACE,4BAA+B,CACjC,wCACE,0CACE,kCAAsC,CAAE,CAC5C,kCACE,kCAAsC,CACxC,wCACE,wCACE,kCAAoC,CACpC,cAAiB,CAAE,CACvB,+BAEE,iBAAkB,CADlB,WACoB,CACpB,4CACE,iBAAoB,CACtB,4DACE,qBAAwB,CAKtB,8SACE,eAAkB,CAC1B,+BACE,kBAAqB,CACrB,oCACE,UAAa,CAQnB,0LACE,aAAgB,CAElB,0DACE,WAAc,CAEhB,uBACE,wBAA2B,CAC3B,oDACE,kBAAqB,CACrB,yDACE,UAAa,CACjB,oDACE,qBAAwB,CAKtB,sRACE,eAAkB","file":"tabulator_bootstrap3.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #ddd;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #ddd;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #ddd;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #ddd;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n margin-bottom: 20px;\n border: none; }\n .tabulator .tabulator-header {\n border-bottom: 2px solid #ddd;\n background-color: #fff;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #fff;\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n border-top: 2px solid #ddd;\n background: inherit; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator.table-striped .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator.table-bordered {\n border: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #ddd; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #ddd; }\n .tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 24px; }\n .tabulator.table-condensed .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.success {\n background: #dff0d8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.info {\n background: #d9edf7 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning {\n background: #fcf8e3 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.danger {\n background: #f2dede !important; }\n\n.tabulator-row {\n min-height: 30px;\n border-bottom: 1px solid #ddd; }\n .tabulator-row.tabulator-row-even {\n background-color: transparent; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell {\n padding: 8px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border: none; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n .tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #333; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.css b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.css deleted file mode 100644 index 45b98f3..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.css +++ /dev/null @@ -1,1744 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #dee2e6; - background-color: #fff; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #dee2e6; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #dee2e6; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: white !important; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #ececec !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #2975DD; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #2975DD; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #2975DD; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #dee2e6; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid #dee2e6; - border-top: 1px solid #dee2e6; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #dee2e6; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #dee2e6; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #f9f9f9; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #f5f5f5; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #dee2e6; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #9ABCEA; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #dee2e6; - border-bottom: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #dee2e6; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #dee2e6; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #f9f9f9; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #dee2e6; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #dee2e6; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #dee2e6; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #dee2e6; - border-bottom: 2px solid #dee2e6; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #dee2e6; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - background-color: #fff; - border: none; -} - -.tabulator .tabulator-header { - border-top: 1px solid #dee2e6; - border-bottom: 2px solid #dee2e6; - color: inherit; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; - background-color: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 12px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - right: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 1px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input { - padding: .375rem .75rem; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: .25rem; - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - font-size: 1rem; - line-height: 1.5; - color: #495057; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus { - color: #495057; - background-color: #fff; - border: 1px solid #1D68CD; - outline: 0; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - width: 100%; - border-bottom: 1px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #000; -} - -.tabulator .tabulator-tableholder .tabulator-table { - color: inherit; -} - -.tabulator .tabulator-footer { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-paginator { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0; -} - -.tabulator .tabulator-footer .tabulator-page { - margin: 0; - margin-top: 5px; - padding: 8px 12px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="first"] { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="last"] { - border: 1px solid #dee2e6; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page.active { - border-color: #007bff; - background-color: #007bff; - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - border-color: #dee2e6; - background: #fff; - color: #6c757d; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - border-color: #dee2e6; - background: #e9ecef; - color: #0056b3; - } -} - -.tabulator.thead-dark .tabulator-header { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -.tabulator.thead-dark .tabulator-header .tabulator-col { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -.tabulator.table-dark { - background-color: #212529; -} - -.tabulator.table-dark:not(.thead-light) .tabulator-header { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -.tabulator.table-dark .tabulator-tableholder { - color: #fff; -} - -.tabulator.table-dark .tabulator-row { - border-color: #32383e; - background-color: #212529; - color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.table-dark .tabulator-row:hover { - background-color: #32383e; - } - .tabulator.table-dark .tabulator-row:hover .tabulator-cell { - background-color: rgba(255, 255, 255, 0.075); - } -} - -.tabulator.table-dark .tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -.tabulator.table-dark .tabulator-footer { - border-color: #32383e !important; -} - -.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder { - border-color: #32383e !important; - background: #212529 !important; -} - -.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row { - border-color: #32383e !important; - background-color: #212529 !important; - color: #fff !important; -} - -.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even { - background-color: #f9f9f9; -} - -.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover { - background-color: #f5f5f5; - cursor: pointer; - } - .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator.table-striped.table-dark .tabulator-row:nth-child(even) .tabulator-cell { - background-color: rgba(255, 255, 255, 0.05); -} - -.tabulator.table-bordered { - border: 1px solid #dee2e6; -} - -.tabulator.table-bordered .tabulator-header .tabulator-col { - border-right: 1px solid #dee2e6; -} - -.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid #dee2e6; -} - -.tabulator.table-borderless .tabulator-header { - border: none; -} - -.tabulator.table-borderless .tabulator-row { - border: none; -} - -.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content { - padding: 5px !important; -} - -.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row { - min-height: 26px; -} - -.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 5px !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary { - background: #b8daff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary { - background: #d6d8db !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success { - background: #c3e6cb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info { - background: #bee5eb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning { - background: #ffeeba !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger { - background: #f5c6cb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light { - background: #fdfdfe !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-dark { - background: #c6c8ca !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active { - background: #f5f5f5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary { - background: #007bff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success { - background: #28a745 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info { - background: #17a2b8 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning { - background: #ffc107 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger { - background: #dc3545 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark { - background: #343a40 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active { - background: #f5f5f5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary { - background: #b8daff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary { - background: #d6d8db !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success { - background: #c3e6cb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info { - background: #bee5eb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning { - background: #ffeeba !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger { - background: #f5c6cb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light { - background: #fdfdfe !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-dark { - background: #c6c8ca !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active { - background: #f5f5f5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary { - background: #007bff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success { - background: #28a745 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info { - background: #17a2b8 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning { - background: #ffc107 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger { - background: #dc3545 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark { - background: #343a40 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active { - background: #f5f5f5 !important; -} - -.tabulator-row { - min-height: 40px; - border-bottom: 1px solid #dee2e6; -} - -.tabulator-row .tabulator-cell { - padding: 12px; - border-right: none; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - border: 1px solid #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-edit-select-list { - background: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #fff; - } -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-group { - color: inherit; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: initial; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #666; -} - -.tabulator-print-table .tabulator-data-tree-control { - color: inherit; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -/*# sourceMappingURL=tabulator_bootstrap4.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.css.map deleted file mode 100644 index f2c1b4f..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap4.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap4.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #dee2e6;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #dee2e6;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #dee2e6;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #dee2e6;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n border: none; }\n .tabulator .tabulator-header {\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 12px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n padding: .375rem .75rem;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus {\n color: #495057;\n background-color: #fff;\n border: 1px solid #1D68CD;\n outline: 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #007bff;\n background-color: #007bff;\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0056b3; } }\n .tabulator.thead-dark .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark {\n background-color: #212529; }\n .tabulator.table-dark:not(.thead-light) .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark .tabulator-tableholder {\n color: #fff; }\n .tabulator.table-dark .tabulator-row {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-dark .tabulator-row:hover {\n background-color: #32383e; }\n .tabulator.table-dark .tabulator-row:hover .tabulator-cell {\n background-color: rgba(255, 255, 255, 0.075); } }\n .tabulator.table-dark .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-dark .tabulator-footer {\n border-color: #32383e !important; }\n .tabulator.table-dark .tabulator-footer .tabulator-calcs-holder {\n border-color: #32383e !important;\n background: #212529 !important; }\n .tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #32383e !important;\n background-color: #212529 !important;\n color: #fff !important; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator.table-striped.table-dark .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: rgba(255, 255, 255, 0.05); }\n .tabulator.table-bordered {\n border: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-borderless .tabulator-header {\n border: none; }\n .tabulator.table-borderless .tabulator-row {\n border: none; }\n .tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 26px; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: #b8daff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: #d6d8db !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: #c3e6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: #bee5eb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: #ffeeba !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: #f5c6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: #fdfdfe !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-dark {\n background: #c6c8ca !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: #007bff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: #28a745 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: #17a2b8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: #ffc107 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: #dc3545 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: #343a40 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #b8daff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #d6d8db !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #c3e6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #bee5eb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #ffeeba !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f5c6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #fdfdfe !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-dark {\n background: #c6c8ca !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #007bff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #28a745 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #17a2b8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #ffc107 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #dc3545 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #343a40 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #f5f5f5 !important; }\n\n.tabulator-row {\n min-height: 40px;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-cell {\n padding: 12px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: initial; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n color: inherit; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.min.css deleted file mode 100644 index d44adaa..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{border:1px solid #dee2e6;font-size:16px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#fff;border-bottom:1px solid #dee2e6;box-sizing:border-box;color:#555;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#fff;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#e6e6e6;border:1px solid #dee2e6;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#e6e6e6;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #aaa;border-top:1px solid #dee2e6;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#ececec!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#e6e6e6;border-top:1px solid #dee2e6;color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f3f3f3!important;border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #dee2e6;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #dee2e6;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:24px;position:relative}.tabulator-row.tabulator-row-even{background-color:#f9f9f9}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #dee2e6;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #dee2e6;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #dee2e6;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:16px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#f9f9f9;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#dee2e6;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #dee2e6}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:16px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #dee2e6;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #dee2e6;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #dee2e6;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #dee2e6;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{background-color:#fff;border:none}.tabulator .tabulator-header{border-bottom:2px solid #dee2e6;border-top:1px solid #dee2e6;color:inherit}.tabulator .tabulator-header .tabulator-col{background-color:#fff;border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:12px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #dee2e6}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{background-clip:padding-box;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;color:#495057;font-size:1rem;line-height:1.5;padding:.375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus{background-color:#fff;border:1px solid #1d68cd;color:#495057;outline:0}.tabulator .tabulator-header .tabulator-calcs-holder{border-bottom:1px solid #dee2e6;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer,.tabulator .tabulator-footer .tabulator-paginator,.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer .tabulator-pages{margin:0}.tabulator .tabulator-footer .tabulator-page{margin:5px 0 0;padding:8px 12px}.tabulator .tabulator-footer .tabulator-page[data-page=first]{border-bottom-left-radius:4px;border-top-left-radius:4px}.tabulator .tabulator-footer .tabulator-page[data-page=last]{border:1px solid #dee2e6;border-bottom-right-radius:4px;border-top-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{background-color:#007bff;border-color:#007bff;color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{background:#fff;border-color:#dee2e6;color:#6c757d}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{background:#e9ecef;border-color:#dee2e6;color:#0056b3}}.tabulator.thead-dark .tabulator-header,.tabulator.thead-dark .tabulator-header .tabulator-col{background-color:#212529;border-color:#32383e;color:#fff}.tabulator.table-dark{background-color:#212529}.tabulator.table-dark:not(.thead-light) .tabulator-header,.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col{background-color:#212529;border-color:#32383e;color:#fff}.tabulator.table-dark .tabulator-tableholder{color:#fff}.tabulator.table-dark .tabulator-row{background-color:#212529;border-color:#32383e;color:#fff}@media (hover:hover) and (pointer:fine){.tabulator.table-dark .tabulator-row:hover{background-color:#32383e}.tabulator.table-dark .tabulator-row:hover .tabulator-cell{background-color:hsla(0,0%,100%,.075)}}.tabulator.table-dark .tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator.table-dark .tabulator-footer{border-color:#32383e!important}.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder{background:#212529!important;border-color:#32383e!important}.tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row{background-color:#212529!important;border-color:#32383e!important;color:#fff!important}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even{background-color:#f9f9f9}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator.table-striped.table-dark .tabulator-row:nth-child(2n) .tabulator-cell{background-color:hsla(0,0%,100%,.05)}.tabulator.table-bordered{border:1px solid #dee2e6}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dee2e6}.tabulator.table-borderless .tabulator-header,.tabulator.table-borderless .tabulator-row{border:none}.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content{padding:5px!important}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row{min-height:26px}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary{background:#b8daff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary{background:#d6d8db!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success{background:#c3e6cb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info{background:#bee5eb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning{background:#ffeeba!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger{background:#f5c6cb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light{background:#fdfdfe!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-dark{background:#c6c8ca!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary{background:#007bff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success{background:#28a745!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info{background:#17a2b8!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning{background:#ffc107!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger{background:#dc3545!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark{background:#343a40!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary{background:#b8daff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary{background:#d6d8db!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success{background:#c3e6cb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info{background:#bee5eb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning{background:#ffeeba!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger{background:#f5c6cb!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light{background:#fdfdfe!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-dark{background:#c6c8ca!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active{background:#f5f5f5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary{background:#007bff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success{background:#28a745!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info{background:#17a2b8!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning{background:#ffc107!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger{background:#dc3545!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark{background:#343a40!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active{background:#f5f5f5!important}.tabulator-row{border-bottom:1px solid #dee2e6;min-height:40px}.tabulator-row .tabulator-cell{border-right:none;padding:12px}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:initial;text-align:initial}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{color:inherit}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc} -/*# sourceMappingURL=tabulator_bootstrap4.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.min.css.map deleted file mode 100644 index 2563766..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap4.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap4.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap4.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #dee2e6;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #dee2e6;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #dee2e6;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f9f9f9; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #dee2e6;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n border: none; }\n .tabulator .tabulator-header {\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 12px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n padding: .375rem .75rem;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus {\n color: #495057;\n background-color: #fff;\n border: 1px solid #1D68CD;\n outline: 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #007bff;\n background-color: #007bff;\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0056b3; } }\n .tabulator.thead-dark .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark {\n background-color: #212529; }\n .tabulator.table-dark:not(.thead-light) .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n .tabulator.table-dark .tabulator-tableholder {\n color: #fff; }\n .tabulator.table-dark .tabulator-row {\n border-color: #32383e;\n background-color: #212529;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-dark .tabulator-row:hover {\n background-color: #32383e; }\n .tabulator.table-dark .tabulator-row:hover .tabulator-cell {\n background-color: rgba(255, 255, 255, 0.075); } }\n .tabulator.table-dark .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table-dark .tabulator-footer {\n border-color: #32383e !important; }\n .tabulator.table-dark .tabulator-footer .tabulator-calcs-holder {\n border-color: #32383e !important;\n background: #212529 !important; }\n .tabulator.table-dark .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #32383e !important;\n background-color: #212529 !important;\n color: #fff !important; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even {\n background-color: #f9f9f9; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer; }\n .tabulator.table-striped:not(.table-dark) .tabulator-row.tabulator-row-even.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator.table-striped.table-dark .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: rgba(255, 255, 255, 0.05); }\n .tabulator.table-bordered {\n border: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-borderless .tabulator-header {\n border: none; }\n .tabulator.table-borderless .tabulator-row {\n border: none; }\n .tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 26px; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: #b8daff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: #d6d8db !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: #c3e6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: #bee5eb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: #ffeeba !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: #f5c6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: #fdfdfe !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-dark {\n background: #c6c8ca !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: #007bff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: #28a745 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: #17a2b8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: #ffc107 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: #dc3545 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: #343a40 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #b8daff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #d6d8db !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #c3e6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #bee5eb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #ffeeba !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f5c6cb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #fdfdfe !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-dark {\n background: #c6c8ca !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #f5f5f5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #007bff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #28a745 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #17a2b8 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #ffc107 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #dc3545 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #343a40 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #f5f5f5 !important; }\n\n.tabulator-row {\n min-height: 40px;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-cell {\n padding: 12px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: initial; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n color: inherit; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.css b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.css deleted file mode 100644 index 50f5513..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.css +++ /dev/null @@ -1,1771 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #dee2e6; - background-color: #fff; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #dee2e6; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #dee2e6; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: white !important; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #dadfe4 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #2975DD; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #2975DD; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #2975DD; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #dee2e6; - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid #dee2e6; - border-top: 1px solid #dee2e6; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #dee2e6; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #dee2e6; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #e9ecef; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #ced4da; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #dee2e6; - border-bottom: 1px solid #dee2e6; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #dee2e6; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #9ABCEA; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #dee2e6; - border-bottom: 2px solid #dee2e6; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #dee2e6; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #dee2e6; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #e9ecef; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #dee2e6; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #dee2e6; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #dee2e6; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #dee2e6; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #dee2e6; - border-bottom: 2px solid #dee2e6; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #dee2e6; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - background-color: #fff; - border: none; -} - -.tabulator .tabulator-header { - border-top: 1px solid #dee2e6; - border-bottom: 2px solid #dee2e6; - color: inherit; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; - background-color: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 12px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - right: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 1px solid #dee2e6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input { - padding: .375rem .75rem; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - border-radius: .25rem; - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - font-size: 1rem; - line-height: 1.5; - color: #495057; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus { - color: #495057; - background-color: #fff; - border: 1px solid #1D68CD; - outline: 0; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - width: 100%; - border-bottom: 1px solid #dee2e6; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #000; -} - -.tabulator .tabulator-tableholder .tabulator-table { - color: inherit; -} - -.tabulator .tabulator-footer { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-paginator { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0; -} - -.tabulator .tabulator-footer .tabulator-page { - margin: 0; - margin-top: 5px; - padding: 8px 12px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="first"] { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="last"] { - border: 1px solid #dee2e6; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page.active { - border-color: #0d6efd; - background-color: #0d6efd; - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - border-color: #dee2e6; - background: #fff; - color: #6c757d; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - border-color: #dee2e6; - background: #e9ecef; - color: #0a58ca; - } -} - -.tabulator.thead-dark .tabulator-header { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -.tabulator.thead-dark .tabulator-header .tabulator-col { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -.tabulator.table { - background-color: #fff; -} - -.tabulator.table:not(.thead-light) .tabulator-header { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -.tabulator.table:not(.thead-light) .tabulator-header .tabulator-col { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -.tabulator.table .tabulator-tableholder { - color: #212529; -} - -.tabulator.table .tabulator-row { - border-color: #dee2e6; - background-color: #fff; - color: #212529; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.table .tabulator-row:hover { - background-color: #dee2e6; - } - .tabulator.table .tabulator-row:hover .tabulator-cell { - background-color: #ced4da; - } -} - -.tabulator.table .tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -.tabulator.table .tabulator-footer { - border-color: #dee2e6 !important; -} - -.tabulator.table .tabulator-footer .tabulator-calcs-holder { - border-color: #dee2e6 !important; - background: #fff !important; -} - -.tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row { - border-color: #dee2e6 !important; - background-color: #fff !important; - color: #212529 !important; -} - -.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even { - background-color: #e9ecef; -} - -.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover { - background-color: #ced4da; - cursor: pointer; - } - .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator.table-striped.table .tabulator-row:nth-child(even) .tabulator-cell { - background-color: transparent; -} - -.tabulator.table-bordered { - border: 1px solid #dee2e6; -} - -.tabulator.table-bordered .tabulator-header .tabulator-col { - border-right: 1px solid #dee2e6; -} - -.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid #dee2e6; -} - -.tabulator.table-borderless .tabulator-header { - border: none; -} - -.tabulator.table-borderless .tabulator-row { - border: none; -} - -.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content { - padding: 5px !important; -} - -.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row { - min-height: 26px; -} - -.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 5px !important; -} - -.tabulator.table-sm .tabulator-row { - padding-top: 0; - padding-bottom: 0; -} - -.tabulator.table-sm .tabulator-col-resize-handle { - padding: 0; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary { - background: #cfe2ff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary { - background: #e2e3e5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success { - background: #d1e7dd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info { - background: #cff4fc !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning { - background: #fff3cd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger { - background: #f8d7da !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table { - background: #212529 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary { - background: #cfe2ff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary { - background: #e2e3e5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success { - background: #d1e7dd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info { - background: #cff4fc !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning { - background: #fff3cd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger { - background: #f8d7da !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark { - background: #212529 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary { - background: #cfe2ff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary { - background: #e2e3e5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success { - background: #d1e7dd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info { - background: #cff4fc !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning { - background: #fff3cd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger { - background: #f8d7da !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table { - background: #212529 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active { - background: #6c757d !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary { - background: #cfe2ff !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary { - background: #e2e3e5 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success { - background: #d1e7dd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info { - background: #cff4fc !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning { - background: #fff3cd !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger { - background: #f8d7da !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light { - background: #f8f9fa !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark { - background: #212529 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active { - background: #6c757d !important; -} - -.tabulator-row { - min-height: 40px; - border-bottom: 1px solid #dee2e6; -} - -.tabulator-row .tabulator-cell { - padding: 12px; - border-right: none; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - border: 1px solid #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-edit-select-list { - background: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #fff; - } -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-group { - color: inherit; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: initial; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #666; -} - -.tabulator-print-table .tabulator-data-tree-control { - color: inherit; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -.tabulator-popup-container { - background: #fff; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - color: #fff; - } -} - -/*# sourceMappingURL=tabulator_bootstrap5.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.css.map deleted file mode 100644 index 29518d8..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap5.scss"],"names":[],"mappings":"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","file":"tabulator_bootstrap5.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #dadfe4 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #dee2e6;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #e9ecef; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #ced4da;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #dee2e6;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #dee2e6;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #e9ecef; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #dee2e6;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n border: none; }\n .tabulator .tabulator-header {\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 12px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n padding: .375rem .75rem;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus {\n color: #495057;\n background-color: #fff;\n border: 1px solid #1D68CD;\n outline: 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #0d6efd;\n background-color: #0d6efd;\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0a58ca; } }\n .tabulator.thead-dark .tabulator-header {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table {\n background-color: #fff; }\n .tabulator.table:not(.thead-light) .tabulator-header {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table .tabulator-tableholder {\n color: #212529; }\n .tabulator.table .tabulator-row {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table .tabulator-row:hover {\n background-color: #dee2e6; }\n .tabulator.table .tabulator-row:hover .tabulator-cell {\n background-color: #ced4da; } }\n .tabulator.table .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table .tabulator-footer {\n border-color: #dee2e6 !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder {\n border-color: #dee2e6 !important;\n background: #fff !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #dee2e6 !important;\n background-color: #fff !important;\n color: #212529 !important; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even {\n background-color: #e9ecef; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover {\n background-color: #ced4da;\n cursor: pointer; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator.table-striped.table .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: transparent; }\n .tabulator.table-bordered {\n border: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-borderless .tabulator-header {\n border: none; }\n .tabulator.table-borderless .tabulator-row {\n border: none; }\n .tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 26px; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-row {\n padding-top: 0;\n padding-bottom: 0; }\n .tabulator.table-sm .tabulator-col-resize-handle {\n padding: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #6c757d !important; }\n\n.tabulator-row {\n min-height: 40px;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-cell {\n padding: 12px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: initial; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n color: inherit; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n\n.tabulator-popup-container {\n background: #fff; }\n\n.tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n\n@media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n color: #fff; } }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.min.css deleted file mode 100644 index 6bfa703..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{border:1px solid #dee2e6;font-size:16px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#fff;border-bottom:1px solid #dee2e6;box-sizing:border-box;color:#555;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#fff;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#e6e6e6;border:1px solid #dee2e6;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#e6e6e6;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #aaa;border-top:1px solid #dee2e6;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#dadfe4!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #dee2e6}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#e6e6e6;border-top:1px solid #dee2e6;color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f3f3f3!important;border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #dee2e6;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #dee2e6;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:24px;position:relative}.tabulator-row.tabulator-row-even{background-color:#e9ecef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#ced4da;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #dee2e6;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #dee2e6;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;border:1px solid #dee2e6;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:16px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#e9ecef;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#dee2e6;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #dee2e6}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:16px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #dee2e6;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #dee2e6;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #dee2e6;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #dee2e6}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #dee2e6;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{background-color:#fff;border:none}.tabulator .tabulator-header{border-bottom:2px solid #dee2e6;border-top:1px solid #dee2e6;color:inherit}.tabulator .tabulator-header .tabulator-col{background-color:#fff;border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:12px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #dee2e6}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{background-clip:padding-box;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;color:#495057;font-size:1rem;line-height:1.5;padding:.375rem .75rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus{background-color:#fff;border:1px solid #1d68cd;color:#495057;outline:0}.tabulator .tabulator-header .tabulator-calcs-holder{border-bottom:1px solid #dee2e6;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer,.tabulator .tabulator-footer .tabulator-paginator,.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer .tabulator-pages{margin:0}.tabulator .tabulator-footer .tabulator-page{margin:5px 0 0;padding:8px 12px}.tabulator .tabulator-footer .tabulator-page[data-page=first]{border-bottom-left-radius:4px;border-top-left-radius:4px}.tabulator .tabulator-footer .tabulator-page[data-page=last]{border:1px solid #dee2e6;border-bottom-right-radius:4px;border-top-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{background-color:#0d6efd;border-color:#0d6efd;color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{background:#fff;border-color:#dee2e6;color:#6c757d}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{background:#e9ecef;border-color:#dee2e6;color:#0a58ca}}.tabulator.thead-dark .tabulator-header,.tabulator.thead-dark .tabulator-header .tabulator-col{background-color:#fff;border-color:#dee2e6;color:#212529}.tabulator.table{background-color:#fff}.tabulator.table:not(.thead-light) .tabulator-header,.tabulator.table:not(.thead-light) .tabulator-header .tabulator-col{background-color:#fff;border-color:#dee2e6;color:#212529}.tabulator.table .tabulator-tableholder{color:#212529}.tabulator.table .tabulator-row{background-color:#fff;border-color:#dee2e6;color:#212529}@media (hover:hover) and (pointer:fine){.tabulator.table .tabulator-row:hover{background-color:#dee2e6}.tabulator.table .tabulator-row:hover .tabulator-cell{background-color:#ced4da}}.tabulator.table .tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator.table .tabulator-footer{border-color:#dee2e6!important}.tabulator.table .tabulator-footer .tabulator-calcs-holder{background:#fff!important;border-color:#dee2e6!important}.tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row{background-color:#fff!important;border-color:#dee2e6!important;color:#212529!important}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even{background-color:#e9ecef}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover{background-color:#ced4da;cursor:pointer}.tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator.table-striped.table .tabulator-row:nth-child(2n) .tabulator-cell{background-color:transparent}.tabulator.table-bordered{border:1px solid #dee2e6}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dee2e6}.tabulator.table-borderless .tabulator-header,.tabulator.table-borderless .tabulator-row{border:none}.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content{padding:5px!important}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row{min-height:26px}.tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:5px!important}.tabulator.table-sm .tabulator-row{padding-bottom:0;padding-top:0}.tabulator.table-sm .tabulator-col-resize-handle{padding:0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active{background:#6c757d!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary{background:#cfe2ff!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary{background:#e2e3e5!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success{background:#d1e7dd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info{background:#cff4fc!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning{background:#fff3cd!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger{background:#f8d7da!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark{background:#212529!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active{background:#6c757d!important}.tabulator-row{border-bottom:1px solid #dee2e6;min-height:40px}.tabulator-row .tabulator-cell{border-right:none;padding:12px}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:initial;text-align:initial}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666}.tabulator-print-table .tabulator-data-tree-control{color:inherit}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-popup-container{background:#fff}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{color:#fff}} -/*# sourceMappingURL=tabulator_bootstrap5.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.min.css.map deleted file mode 100644 index f83224e..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bootstrap5.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bootstrap5.scss"],"names":[],"mappings":"AAAA,WAEE,wBAAyB,CAEzB,cAAe,CAEf,eAAgB,CALhB,iBAAkB,CAIlB,eAAgB,CAEhB,+BAAgC,CAChC,4BAA6B,CAC7B,2BAA4B,CAC5B,0BAA2B,CAC3B,uBAA0B,CAC1B,iFACE,cAAiB,CACnB,0CACE,oBAAuB,CAGzB,sGACE,gBAAmB,CACrB,6BAKE,qBAAsB,CADtB,+BAAgC,CAFhC,qBAAsB,CAItB,UAAW,CACX,eAAiB,CAOjB,YAAa,CALb,eAAgB,CARhB,iBAAkB,CASlB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CALpB,kBAAmB,CALnB,UAWe,CACf,qDACE,YAAe,CACjB,wDAEE,eAAgB,CADhB,iBACkB,CAClB,2EACE,oBAAuB,CAC3B,4CAOE,eAAgB,CADhB,2BAA4B,CAH5B,qBAAsB,CAFtB,mBAAoB,CAGpB,qBAAsB,CACtB,0BAA2B,CAK3B,eAAgB,CARhB,iBAAkB,CAMlB,eAAgB,CAChB,qBACkB,CAClB,6DAGE,kBAAmB,CADnB,wBAAyB,CAEzB,mBAAoB,CAHpB,iBAGsB,CACxB,sEACE,wBAAyB,CACzB,UAAgB,CAClB,qEACE,wBAAyB,CACzB,UAAgB,CAClB,mEACE,qBAAsB,CAEtB,WAAY,CADZ,iBACc,CACd,kGACE,aAAgB,CAChB,wGACE,cAAe,CACf,UAAa,CACjB,+FACE,iBAAoB,CACtB,wFACE,qBAAsB,CAGtB,eAAgB,CAChB,sBAAuB,CACvB,qBAAsB,CAHtB,kBAAmB,CADnB,UAIwB,CACxB,iHAEE,kBAAsB,CADtB,kBACwB,CAC1B,gHAKE,eAAgB,CAFhB,qBAAsB,CAFtB,qBAAsB,CAGtB,WAAY,CAFZ,UAGkB,CACpB,+IACE,uBAA0B,CAC9B,yFAEE,kBAAmB,CAGnB,QAAS,CAJT,YAAa,CAEb,iBAAkB,CAGlB,SAAU,CAFV,KAEY,CACZ,0GAKE,4BAA6B,CAF7B,iCAAkC,CAClC,kCAAmC,CAFnC,QAAS,CADT,OAI+B,CACrC,0FAGE,yBAA0B,CAD1B,YAAa,CAGb,iBAAkB,CADlB,eAAgB,CAHhB,iBAIoB,CACtB,qEAEE,qBAAsB,CACtB,cAAe,CAFf,iBAAkB,CAIlB,iBAAkB,CADlB,UACoB,CACpB,8EACE,qBAAyB,CAC3B,yEACE,cAAiB,CACnB,sFAEE,QAAS,CADT,OACW,CACf,oFACE,kBAAqB,CACvB,wCACE,kGAEE,wBAAyB,CADzB,cAC2B,CAAE,CACjC,4HACE,UAAa,CACb,wCACE,gLAEE,4BAA6B,CAD7B,cAC+B,CAAE,CACrC,6IAEE,4BAA6B,CAD7B,eAC+B,CACnC,iIACE,UAAa,CACb,wCACE,qLAEE,4BAA6B,CAD7B,cAC+B,CAAE,CACrC,kJAEE,4BAA6B,CAD7B,eAC+B,CACnC,kIACE,UAAa,CACb,wCACE,sLAEE,yBAA0B,CAD1B,cAC4B,CAAE,CAClC,mJACE,kBAAmB,CACnB,yBAA0B,CAC1B,UAAa,CACjB,+GAIE,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAHvB,sBAAuB,CADvB,wBAIyB,CAC3B,oHACE,wBAA2B,CAC7B,2GACE,eAAgB,CAChB,gBAAmB,CACrB,uIAEE,mBAAoB,CADpB,eACsB,CACxB,4GAKE,WAAY,CAJZ,sBAAuB,CACvB,MAAO,CACP,OAAQ,CACR,OACc,CAClB,+CAEE,MAAO,CADP,eAAgB,CAEhB,UAAa,CACb,qEACE,8BAAiC,CACnC,sEACE,6BAAgC,CACpC,qDAGE,yBAA4B,CAE5B,4BAA6B,CAD7B,4BAA6B,CAH7B,qBAAsB,CACtB,oBAG+B,CAC/B,oEACE,yBAA8B,CAC9B,iGACE,YAAe,CACrB,2DACE,oBAAuB,CACvB,iEACE,YAAe,CACrB,kCAKE,gCAAiC,CADjC,aAAc,CAHd,iBAAkB,CAElB,kBAAmB,CADnB,UAGmC,CACnC,wCACE,YAAe,CACjB,yDAGE,kBAAmB,CAFnB,qBAAsB,CACtB,YAAa,CAEb,sBAAuB,CACvB,cAAe,CACf,UAAa,CACb,wFACE,eAAkB,CACpB,yFAIE,UAAW,CAHX,oBAAqB,CAKrB,cAAe,CADf,eAAiB,CAFjB,YAAa,CADb,iBAAkB,CAKlB,kBAAqB,CACzB,mDAGE,qBAAsB,CAGtB,UAAW,CAJX,oBAAqB,CAGrB,gBAAiB,CAJjB,iBAAkB,CAGlB,kBAEa,CACb,kFAEE,4BAA8B,CAD9B,eACgC,CAChC,sGACE,+BAAkC,CACpC,yGACE,4BAA+B,CACrC,2DAEE,OAAQ,CAER,mBAAoB,CAHpB,iBAAkB,CAElB,UACsB,CACtB,4EAGE,wBAAyB,CADzB,qBAAsB,CADtB,iBAE2B,CAC3B,yGAOE,wBAAyB,CACzB,mBAAoB,CAJpB,WAAY,CAHZ,UAAW,CAKX,UAAW,CAJX,iBAAkB,CAClB,UAAW,CAEX,SAGsB,CAC1B,wFAGE,wBAAyB,CADzB,qBAAsB,CADtB,iBAE2B,CACjC,6BAEE,wBAAyB,CADzB,4BAA6B,CAE7B,UAAW,CACX,eAAiB,CAEjB,gBAAiB,CACjB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CALpB,kBAKsB,CACtB,wDAGE,kBAAmB,CAFnB,YAAa,CACb,kBAAmB,CAEnB,6BAA8B,CAC9B,gBAAmB,CACnB,8DACE,YAAe,CACnB,qDAIE,4BAA8B,CAC9B,+BAAgC,CAChC,4BAA6B,CAL7B,qBAAsB,CAMtB,eAAgB,CAJhB,eAAgB,CADhB,UAKkB,CAClB,oEAEE,4BAA8B,CAD9B,oBACgC,CAChC,iGACE,YAAe,CACnB,gEAEE,kBAAmB,CADnB,kBACqB,CACzB,uDACE,gBAAmB,CACrB,qDACE,eAAqB,CACvB,kDAGE,UAAW,CAFX,MAAO,CAGP,mBAAoB,CAEpB,iBAAkB,CADlB,mBAAoB,CAHpB,gBAIoB,CACtB,kDAIE,wBAAyB,CACzB,iBAAkB,CAJlB,oBAAqB,CACrB,YAAa,CACb,eAEoB,CACtB,8CACE,YAAe,CACjB,6CAME,6BAAoC,CAFpC,wBAAyB,CACzB,iBAAkB,CAJlB,oBAAqB,CACrB,YAAa,CACb,eAGsC,CAGtC,sDACE,UAAa,CACf,wCACE,iEAEE,yBAA8B,CAC9B,UAAW,CAFX,cAEa,CAAE,CACvB,wCAEE,oBAAqB,CAErB,gBAAiB,CACjB,iBAAkB,CAJlB,iBAAkB,CAMlB,qBAAsB,CAJtB,SAAU,CAGV,UACwB,CACxB,wCACE,8CACE,gBAAmB,CAAE,CACzB,qDAEE,cAAe,CADf,SACiB,CACrB,4BAGE,kBAAmB,CAMnB,yBAA8B,CAP9B,YAAa,CAKb,WAAY,CAFZ,MAAO,CAJP,iBAAkB,CASlB,iBAAkB,CANlB,KAAM,CAIN,UAAW,CAFX,WAIoB,CACpB,iDAKE,eAAgB,CADhB,kBAAmB,CAHnB,oBAAqB,CAMrB,cAAe,CADf,eAAiB,CAJjB,aAAc,CACd,iBAIiB,CACjB,2EACE,qBAAsB,CACtB,UAAa,CACf,6EACE,qBAAsB,CACtB,aAAgB,CAExB,eAIE,qBAAsB,CAFtB,qBAAsB,CACtB,eAAgB,CAFhB,iBAGwB,CACxB,kCACE,wBAA2B,CAC7B,wCACE,0CACE,wBAAyB,CACzB,cAAiB,CAAE,CACvB,kCACE,wBAA2B,CAC7B,wCACE,wCACE,wBAAyB,CACzB,cAAiB,CAAE,CACvB,oCAEE,eAAgB,CADhB,qBACkB,CACpB,gCAGE,+BAAgC,CADhC,4BAA6B,CAE7B,mBAAoB,CAHpB,iBAAkB,CAIlB,UAAa,CACf,oFACE,wBAAyB,CACzB,UAAgB,CAIlB,gMACE,wBAAyB,CACzB,UAAgB,CAClB,4CAGE,QAAS,CAET,UAAW,CADX,MAAO,CAHP,iBAAkB,CAClB,OAGa,CACb,iDAEE,WAAY,CADZ,KACc,CAChB,wCACE,kDACE,gBAAmB,CAAE,CAC3B,8CAIE,+BAAgC,CADhC,4BAA6B,CAF7B,qBAAsB,CACtB,WAEkC,CAClC,oDACE,YAAe,CACjB,oDACE,cAAiB,CACjB,0DACE,iBAAoB,CACpB,wEACE,kBAAqB,CAC7B,+BAKE,8BAA+B,CAF/B,qBAAsB,CAFtB,oBAAqB,CASrB,YAAa,CAFb,eAAgB,CAJhB,WAAY,CAFZ,iBAAkB,CAOlB,sBAAuB,CAHvB,qBAAsB,CACtB,kBAGe,CACf,gDAIE,wBAAyB,CAHzB,oBAAqB,CAErB,MAAO,CADP,eAAgB,CAGhB,UAAa,CACb,sEACE,8BAAiC,CACnC,uEACE,6BAAgC,CACpC,iDACE,wBAAyB,CACzB,YAAa,CACb,SAAY,CACZ,+GAEE,sBAAuB,CADvB,UAAW,CAEX,YAAe,CACnB,yDACE,qBAA2B,CAC3B,+HAEE,sBAAuB,CADvB,UAAW,CAEX,UAAgB,CACpB,oDAEE,kBAAmB,CADnB,mBAAoB,CAEpB,sBAAuB,CACvB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAsB,CACtB,8EACE,SAAY,CACZ,wGAIE,eAAgB,CAFhB,UAAW,CACX,cAAe,CAFf,UAGkB,CACxB,kIACE,wBAA2B,CAC7B,iEACE,oBAAqB,CACrB,SAAY,CACd,2DASE,+BAAgC,CAFhC,6BAA8B,CAC9B,6BAA8B,CAP9B,oBAAqB,CAErB,UAAW,CAGX,gBAAiB,CADjB,eAAgB,CAHhB,qBAAsB,CAEtB,SAKkC,CACpC,4DAGE,kBAAmB,CAOnB,yBAA8B,CAF9B,qBAAsB,CACtB,iBAAkB,CARlB,mBAAoB,CAIpB,WAAY,CAHZ,sBAAuB,CAKvB,gBAAiB,CAIjB,eAAgB,CAPhB,qBAAsB,CAEtB,UAKkB,CAClB,wCACE,kEAEE,yBAA8B,CAD9B,cACgC,CAAE,CACtC,kGAKE,sBAAuB,CAJvB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACyB,CACzB,wGAOE,eAAgB,CALhB,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACtB,gGAKE,eAAgB,CAJhB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACkB,CAClB,sGAOE,eAAgB,CALhB,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACxB,qEAEE,kBAAmB,CASnB,eAAgB,CADhB,kBAAmB,CAEnB,UAAW,CAXX,mBAAoB,CAapB,eAAgB,CADhB,eAAiB,CALjB,WAAY,CALZ,sBAAuB,CACvB,qBAAsB,CACtB,uBAAwB,CACxB,wBAAyB,CACzB,mBAAoB,CAEpB,UAKkB,CAClB,wCACE,2EAEE,cAAe,CADf,UACiB,CAAE,CACvB,sHACE,eAAkB,CACpB,qHACE,YAAe,CACjB,yEACE,WAAc,CAChB,iHACE,YAAe,CACnB,wDAIE,kBAAmB,CAHnB,oBAAqB,CACrB,WAAY,CACZ,UACqB,CACzB,+BAOE,eAAgB,CALhB,4BAA6B,CAC7B,8BAA+B,CAC/B,yBAA0B,CAH1B,qBAAsB,CAOtB,eAAiB,CACjB,cAAe,CAHf,wBAGiB,CACjB,wCACE,qCAEE,+BAAoC,CADpC,cACsC,CAAE,CAC5C,wEAKE,eAAgB,CAHhB,iCAAkC,CAClC,kCAAmC,CACnC,yBAA0B,CAH1B,iBAIkB,CACpB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,iBAAoB,CACtB,uDACE,kBAAqB,CACvB,uDACE,oBAAuB,CACzB,gDAME,mCAAoC,CAEpC,0BAA2B,CAD3B,cAAe,CAFf,gCAAiC,CAJjC,oBAAqB,CAErB,QAAS,CACT,iBAAkB,CAKlB,qBAAsB,CAPtB,OAOwB,CAC1B,oCAEE,UAAW,CADX,gBACa,CAEnB,2BASE,gCAAiC,CAJjC,wBAAyB,CACzB,mCAAwC,CAHxC,qBAAsB,CADtB,oBAAqB,CAKrB,cAAe,CACf,eAAgB,CAPhB,iBAAkB,CASlB,aAAgB,CAElB,iBAEE,iBAAkB,CADlB,WACoB,CAEtB,mBAGE,iBAAkB,CAClB,eAAgB,CAChB,cAAe,CAJf,yBAA2B,CAC3B,eAAgB,CAIhB,mBAAsB,CAExB,qCAEE,qBAAsB,CACtB,gBAAiB,CAFjB,iBAAkB,CAGlB,gBAAmB,CACnB,kEACE,UAAa,CACf,wCACE,8EAEE,kBAAmB,CADnB,cACqB,CAAE,CAC3B,iEACE,kBAAqB,CACrB,uEAUE,oBAAqB,CAArB,kBAAqB,CAArB,wBAAqB,CAHrB,UAAW,CANX,oBAAqB,CAIrB,UAAW,CAHX,iBAAkB,CAElB,UAAW,CADX,oBAAqB,CASrB,uBAAwB,CADxB,kBAAmB,CALnB,SAM0B,CAEhC,0CACE,4BAA+B,CAEjC,qBAIE,gCAAiC,CAFjC,cAAe,CADf,gBAAiB,CAEjB,eACmC,CACnC,+CAEE,UAAW,CACX,YAAa,CAFb,WAEe,CACf,sDAEE,kBAAqB,CAGvB,uDACE,yBAA4B,CAC9B,wCACE,qDAGE,kBAAmB,CADnB,UAAW,CADX,cAEqB,CAAE,CAC7B,sDAEE,UAAW,CADX,WAAY,CAEZ,iBAAoB,CACtB,gDACE,+BAAgC,CAGhC,UAAW,CACX,eAAiB,CAFjB,mBAEmB,CACrB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CACtB,mKACE,iBAAoB,CAExB,yBACE,aAAgB,CAElB,yBAEE,aAAc,CADd,kBACgB,CAChB,0DAEE,0BAA2B,CAC3B,oBAAuB,CACvB,wGAEE,gBAAiB,CADjB,cACmB,CACrB,kGAEE,iBAAkB,CADlB,eACoB,CACtB,uGACE,QAAS,CACT,UAAgB,CACpB,wDAEE,6BAA8B,CAD9B,oBACgC,CAChC,oFAGE,2BAAkC,CAClC,8BAA+B,CAC/B,mBAAoB,CACpB,8BAA+B,CAJ/B,eAAgB,CADhB,cAKiC,CACnC,qFAEE,eAAgB,CADhB,cACkB,CACpB,+FACE,6BAAgC,CAClC,gGACE,8BAAiC,CACrC,kFAEE,aAAc,CACd,iBAAkB,CAFlB,SAEoB,CACtB,mEACE,kBAAqB,CAEzB,4BAGE,QAAS,CACT,MAAO,CAHP,iBAAkB,CAIlB,OAAQ,CAHR,KAAM,CAIN,aAAgB,CAElB,uEACE,sBAA0B,CAE5B,uBACE,wBAA2B,CAC3B,mDASE,+BAAgC,CAFhC,6BAA8B,CAC9B,6BAA8B,CAP9B,oBAAqB,CAErB,UAAW,CAGX,gBAAiB,CADjB,eAAgB,CAHhB,qBAAsB,CAEtB,SAKkC,CACpC,oDAOE,eAAgB,CALhB,4BAA6B,CAC7B,8BAA+B,CAC/B,yBAA0B,CAH1B,qBAAsB,CAOtB,eAAiB,CACjB,cAAe,CAHf,wBAGiB,CACjB,wCACE,0DAEE,+BAAoC,CADpC,cACsC,CAAE,CAC5C,6FAKE,eAAgB,CAHhB,iCAAkC,CAClC,kCAAmC,CACnC,yBAA0B,CAH1B,iBAIkB,CACpB,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,2BAA+B,CACjC,+EACE,4BAAgC,CAClC,4EACE,oBAAuB,CACzB,qEAME,mCAAoC,CAEpC,0BAA2B,CAD3B,cAAe,CAFf,gCAAiC,CAJjC,oBAAqB,CAErB,QAAS,CACT,iBAAkB,CAKlB,qBAAsB,CAPtB,OAOwB,CAC1B,yDAEE,UAAW,CADX,gBACa,CACjB,oDAGE,kBAAmB,CAOnB,yBAA8B,CAF9B,qBAAsB,CACtB,iBAAkB,CARlB,mBAAoB,CAIpB,WAAY,CAHZ,sBAAuB,CAKvB,gBAAiB,CAIjB,eAAgB,CAPhB,qBAAsB,CAEtB,UAKkB,CAClB,wCACE,0DAEE,yBAA8B,CAD9B,cACgC,CAAE,CACtC,0FAKE,sBAAuB,CAJvB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACyB,CACzB,gGAOE,eAAgB,CALhB,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CACtB,wFAKE,eAAgB,CAJhB,oBAAqB,CAErB,UAAW,CADX,iBAAkB,CAElB,SACkB,CAClB,8FAOE,eAAgB,CALhB,UAAW,CAGX,UAAW,CAFX,SAAU,CAFV,iBAAkB,CAGlB,OAAQ,CAER,SACkB,CAE1B,WACE,qBAAsB,CACtB,WAAc,CACd,6BAEE,+BAAgC,CADhC,4BAA6B,CAE7B,aAAgB,CAChB,4CAEE,qBAAsB,CADtB,iBACwB,CACxB,mEACE,YAAe,CACf,yFACE,OAAU,CACd,0FACE,4BAA+B,CACjC,2EAGE,2BAA4B,CAD5B,qBAAsB,CAEtB,wBAAyB,CACzB,oBAAqB,CAIrB,aAAc,CAFd,cAAe,CACf,eAAgB,CAPhB,sBAAuB,CAKvB,oEAGgB,CAChB,iFAEE,qBAAsB,CACtB,wBAAyB,CAFzB,aAAc,CAGd,SAAY,CAClB,qDAEE,+BAAgC,CADhC,UACkC,CACtC,8DACE,UAAa,CAKb,kIACE,aAAgB,CAClB,8CACE,QAAW,CACb,6CAEE,cAAe,CACf,gBAAmB,CACnB,8DAEE,6BAA8B,CAD9B,0BACgC,CAClC,6DACE,wBAAyB,CAEzB,8BAA+B,CAD/B,2BACiC,CACnC,oDAEE,wBAAyB,CADzB,oBAAqB,CAErB,UAAa,CACf,sDAEE,eAAgB,CADhB,oBAAqB,CAErB,aAAgB,CAClB,wCACE,kEAEE,kBAAmB,CADnB,oBAAqB,CAErB,aAAgB,CAAE,CAKxB,+FAEE,qBAAsB,CADtB,oBAAqB,CAErB,aAAgB,CACpB,iBACE,qBAAwB,CAKtB,yHAFA,qBAAsB,CADtB,oBAAqB,CAErB,aAIkB,CACpB,wCACE,aAAgB,CAClB,gCAEE,qBAAsB,CADtB,oBAAqB,CAErB,aAAgB,CAChB,wCACE,sCACE,wBAA2B,CAC3B,sDACE,wBAA2B,CAAE,CACnC,mDACE,wBAA2B,CAC/B,mCACE,8BAAkC,CAClC,2DAEE,yBAA2B,CAD3B,8BAC6B,CAC7B,0EAEE,+BAAiC,CADjC,8BAAgC,CAEhC,uBAA2B,CACnC,uEACE,wBAA2B,CAC3B,0FACE,wBAA2B,CAC7B,wCACE,kGACE,wBAAyB,CACzB,cAAiB,CACnB,gGACE,wBAAyB,CACzB,cAAiB,CAAE,CACzB,4EACE,4BAA+B,CACjC,0BACE,wBAA2B,CAG3B,4JACE,8BAAiC,CAGrC,yFACE,WAAc,CAChB,4EACE,qBAAyB,CAC3B,2EACE,eAAkB,CAClB,2FACE,qBAAyB,CAC7B,mCAEE,gBAAiB,CADjB,aACmB,CACrB,iDACE,SAAY,CACd,gFACE,4BAAgC,CAClC,kFACE,4BAAgC,CAClC,gFACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,gFACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,8EACE,4BAAgC,CAClC,wEACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,+EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,0EACE,4BAAgC,CAClC,6EACE,4BAAgC,CAClC,4EACE,4BAAgC,CAClC,2EACE,4BAAgC,CAClC,0EACE,4BAAgC,CAClC,4EACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,kGACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,gGACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,8FACE,4BAAgC,CAClC,wFACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,+FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,0FACE,4BAAgC,CAClC,6FACE,4BAAgC,CAClC,4FACE,4BAAgC,CAClC,2FACE,4BAAgC,CAClC,0FACE,4BAAgC,CAClC,4FACE,4BAAgC,CAEpC,eAEE,+BAAgC,CADhC,eACkC,CAClC,+BAEE,iBAAkB,CADlB,YACoB,CACpB,4CACE,iBAAoB,CACtB,4DACE,qBAAwB,CAKtB,8SACE,eAAkB,CAC1B,+BACE,kBAAqB,CACrB,oCACE,UAAa,CAEnB,4BACE,eAAkB,CAClB,oEACE,UAAa,CACb,4EACE,oCAA6C,CACjD,wCACE,mEACE,UAAa,CAAE,CAGnB,6HACE,aAAgB,CAEpB,0DAEE,mBAAoB,CADpB,kBACsB,CAExB,oDACE,kBAAqB,CACrB,yDACE,UAAa,CAEjB,oDACE,aAAgB,CAKd,sRACE,eAAkB,CAExB,2BACE,eAAkB,CAEpB,sDACE,UAAa,CACb,8DACE,oCAA6C,CAEjD,wCACE,qDACE,UAAa,CAAE","file":"tabulator_bootstrap5.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #dee2e6;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #dee2e6;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #dadfe4 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #dee2e6;\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #e9ecef; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #ced4da;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #dee2e6;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #dee2e6;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #e9ecef; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #dee2e6;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #dee2e6; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #dee2e6; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n background-color: #fff;\n border: none; }\n .tabulator .tabulator-header {\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 12px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid #dee2e6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n padding: .375rem .75rem;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ced4da;\n border-radius: .25rem;\n transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;\n font-size: 1rem;\n line-height: 1.5;\n color: #495057; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input:focus {\n color: #495057;\n background-color: #fff;\n border: 1px solid #1D68CD;\n outline: 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid #dee2e6; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #0d6efd;\n background-color: #0d6efd;\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0a58ca; } }\n .tabulator.thead-dark .tabulator-header {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table {\n background-color: #fff; }\n .tabulator.table:not(.thead-light) .tabulator-header {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n .tabulator.table .tabulator-tableholder {\n color: #212529; }\n .tabulator.table .tabulator-row {\n border-color: #dee2e6;\n background-color: #fff;\n color: #212529; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table .tabulator-row:hover {\n background-color: #dee2e6; }\n .tabulator.table .tabulator-row:hover .tabulator-cell {\n background-color: #ced4da; } }\n .tabulator.table .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n .tabulator.table .tabulator-footer {\n border-color: #dee2e6 !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder {\n border-color: #dee2e6 !important;\n background: #fff !important; }\n .tabulator.table .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n border-color: #dee2e6 !important;\n background-color: #fff !important;\n color: #212529 !important; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even {\n background-color: #e9ecef; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selectable:hover {\n background-color: #ced4da;\n cursor: pointer; }\n .tabulator.table-striped:not(.table) .tabulator-row.tabulator-row-even.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator.table-striped.table .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: transparent; }\n .tabulator.table-bordered {\n border: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6; }\n .tabulator.table-borderless .tabulator-header {\n border: none; }\n .tabulator.table-borderless .tabulator-row {\n border: none; }\n .tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row {\n min-height: 26px; }\n .tabulator.table-sm .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px !important; }\n .tabulator.table-sm .tabulator-row {\n padding-top: 0;\n padding-bottom: 0; }\n .tabulator.table-sm .tabulator-col-resize-handle {\n padding: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.table-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-dark {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.bg-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #6c757d !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #cfe2ff !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #e2e3e5 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #d1e7dd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #cff4fc !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #fff3cd !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #f8d7da !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #212529 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #6c757d !important; }\n\n.tabulator-row {\n min-height: 40px;\n border-bottom: 1px solid #dee2e6; }\n .tabulator-row .tabulator-cell {\n padding: 12px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: initial; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n color: inherit; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n\n.tabulator-popup-container {\n background: #fff; }\n\n.tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n\n@media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n color: #fff; } }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.css b/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.css deleted file mode 100644 index 095f1a1..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.css +++ /dev/null @@ -1,1444 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #999; - background-color: white; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: transparent; - color: #363636; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: transparent; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: rgba(0, 0, 0, 0); - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #009e86; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0); - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #363636; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #363636; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #363636; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #363636; - color: #363636; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: rgba(13, 13, 13, 0) !important; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: rgba(13, 13, 13, 0) !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: transparent; - white-space: nowrap; - overflow: visible; - color: #363636; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #ededed !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #009e86; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #009e86; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #009e86; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: transparent; - color: #363636; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: rgba(13, 13, 13, 0) !important; - border-bottom: 1px solid #aaa; - border-top: 1px solid #aaa; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: rgba(13, 13, 13, 0) !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #363636; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #dbdbdb; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #dbdbdb; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: transparent; -} - -.tabulator-row.tabulator-row-even { - background-color: #fafafa; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #fafafa; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #00d1b2; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #009e86; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #009e86; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #aaa; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #00d1b2; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #363636; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #363636; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #363636; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #363636; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: transparent; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #363636; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #363636; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: transparent; - border: 1px solid #aaa; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #fafafa; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #aaa; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #aaa; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #363636; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: transparent; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(0, 0, 0, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: transparent; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #363636; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #aaa; - padding: 4px; - padding-top: 6px; - color: #363636; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #363636; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #363636; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #363636; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #363636; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #363636; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #363636; -} - -.tabulator { - border: none; -} - -.tabulator .tabulator-header { - border: 1px solid #dbdbdb; - border-width: 0 0 2px; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - border: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.5em 0.75em; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - right: 0px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input { - border: 1px solid #dbdbdb; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - border: 1px solid #dbdbdb; - border-width: 2px 0 0; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell { - border-bottom-width: 0; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border: 1px solid #dbdbdb; - border-width: 0 0 2px; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border: 1px solid #dbdbdb; - border-width: 2px 0 0; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell { - border-bottom-width: 0; -} - -.tabulator .tabulator-footer { - padding: 0.5em 0.75em; - border: 1px solid #dbdbdb; - border-width: 2px 0 0; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - margin: -5px -10px 10px -10px; - border: 1px solid #dbdbdb; - border-width: 0 0 2px; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell { - border-bottom-width: 0; -} - -.tabulator .tabulator-footer .tabulator-page { - margin: 0 0.1875em; - padding: calc(0.375em - 1px) 0.75em; - border: 1px solid #dbdbdb; - font-size: 16px; -} - -.tabulator .tabulator-footer .tabulator-page.active { - border-color: #4a4a4a; - color: #363636; - font-weight: bold; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover { - cursor: pointer; - border-color: #b5b5b5; - background: inherit; - color: inherit; - } -} - -.tabulator.is-striped .tabulator-row:nth-child(even) { - background-color: #fafafa; -} - -.tabulator.is-bordered { - border: 1px solid #dbdbdb; -} - -.tabulator.is-bordered .tabulator-header .tabulator-col { - border-right: 1px solid #dbdbdb; -} - -.tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid #dbdbdb; -} - -.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.25em 0.5em; -} - -.tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 0.25em 0.5em; -} - -.tabulator-row { - min-height: 22px; -} - -.tabulator-row.tabulator-row-even { - background-color: inherit; -} - -.tabulator-row.tabulator-selected { - background-color: #00d1b2 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #009e86 !important; - } -} - -.tabulator-row .tabulator-cell { - padding: 0.5em 0.75em; - border: 1px solid #dbdbdb; - border-width: 0 0 1px; -} - -.tabulator-row.tabulator-group { - border-bottom: 1px solid #999; - border-right: none; - border-top: 1px solid #999; - color: #363636; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: none; - border-top: 1px solid #999; - color: #363636; -} - -.tabulator-popup-container { - background: white; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: white; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - color: white; - } -} - -/*# sourceMappingURL=tabulator_bulma.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.css.map deleted file mode 100644 index eb3de1e..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bulma.scss"],"names":[],"mappings":"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","file":"tabulator_bulma.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: white;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: transparent;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: rgba(0, 0, 0, 0);\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #009e86;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0); } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #363636;\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: transparent;\n white-space: nowrap;\n overflow: visible;\n color: #363636; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ededed !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #009e86; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #009e86;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #009e86; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: rgba(13, 13, 13, 0) !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #363636;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: transparent; }\n .tabulator-row.tabulator-row-even {\n background-color: #fafafa; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #009e86;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #009e86;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #00d1b2; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: transparent; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: transparent;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fafafa; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #363636;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #363636;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n\n.tabulator {\n border: none; }\n .tabulator .tabulator-header {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n border: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.75em; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n border: 1px solid #dbdbdb; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -5px -10px 10px -10px;\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0 0.1875em;\n padding: calc(0.375em - 1px) 0.75em;\n border: 1px solid #dbdbdb;\n font-size: 16px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #4a4a4a;\n color: #363636;\n font-weight: bold; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n border-color: #b5b5b5;\n background: inherit;\n color: inherit; } }\n .tabulator.is-striped .tabulator-row:nth-child(even) {\n background-color: #fafafa; }\n .tabulator.is-bordered {\n border: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.25em 0.5em; }\n .tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.25em 0.5em; }\n\n.tabulator-row {\n min-height: 22px; }\n .tabulator-row.tabulator-row-even {\n background-color: inherit; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #009e86 !important; } }\n .tabulator-row .tabulator-cell {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px; }\n .tabulator-row.tabulator-group {\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-popup-container {\n background: white; }\n\n.tabulator-edit-list .tabulator-edit-list-item.active {\n color: white; }\n\n@media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n color: white; } }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.min.css deleted file mode 100644 index b1443bd..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{background-color:#fff;border:1px solid #999;font-size:16px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:transparent;border-bottom:1px solid #999;box-sizing:border-box;color:#363636;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:transparent;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:transparent;border:1px solid #999;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#009e86;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:transparent;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#363636}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #363636;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#363636}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #363636;color:#363636}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{background:hsla(0,0%,5%,0)!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:hsla(0,0%,5%,0)!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:transparent;color:#363636;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#ededed!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #009e86;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#009e86;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #009e86;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:transparent;border-top:1px solid #999;color:#363636;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:hsla(0,0%,5%,0)!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:hsla(0,0%,5%,0)!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#363636;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #dbdbdb;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:transparent;box-sizing:border-box;min-height:24px;position:relative}.tabulator-row.tabulator-row-even{background-color:#fafafa}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#fafafa;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#00d1b2}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #aaa;border-top:1px solid #aaa;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#009e86;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #aaa;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#00d1b2}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #aaa;border-bottom-left-radius:1px;border-left:2px solid #aaa;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #363636;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#363636;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#363636;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#363636;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:transparent;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:transparent}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-right:1px solid #aaa;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #363636;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:transparent;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:16px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#fafafa;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:16px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#363636;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:transparent}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid rgba(0,0,0,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:transparent;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#363636;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;color:#363636;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #aaa;border-bottom-left-radius:1px;border-left:2px solid #aaa;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-right:1px solid #aaa;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #363636;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #363636;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#363636;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#363636;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#363636;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{border:none}.tabulator .tabulator-header{border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-header .tabulator-col{border-right:none}.tabulator .tabulator-header .tabulator-col.tabulator-moving{border:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .75em}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:0}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{border:1px solid #dbdbdb}.tabulator .tabulator-header .tabulator-calcs-holder{border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border:solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border:solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer{border:solid #dbdbdb;border-width:2px 0 0;padding:.5em .75em}.tabulator .tabulator-footer .tabulator-calcs-holder{border:solid #dbdbdb;border-width:0 0 2px;margin:-5px -10px 10px}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer .tabulator-page{border:1px solid #dbdbdb;font-size:16px;margin:0 .1875em;padding:calc(.375em - 1px) .75em}.tabulator .tabulator-footer .tabulator-page.active{border-color:#4a4a4a;color:#363636;font-weight:700}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{background:inherit;border-color:#b5b5b5;color:inherit;cursor:pointer}}.tabulator.is-striped .tabulator-row:nth-child(2n){background-color:#fafafa}.tabulator.is-bordered{border:1px solid #dbdbdb}.tabulator.is-bordered .tabulator-header .tabulator-col,.tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dbdbdb}.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content,.tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.25em .5em}.tabulator-row{min-height:22px}.tabulator-row.tabulator-row-even{background-color:inherit}.tabulator-row.tabulator-selected{background-color:#00d1b2!important}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#009e86!important}}.tabulator-row .tabulator-cell{border:solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em}.tabulator-print-table .tabulator-print-table-group,.tabulator-row.tabulator-group{border-bottom:1px solid #999;border-right:none;border-top:1px solid #999;color:#363636}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box}.tabulator-popup-container{background:#fff}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{color:#fff}} -/*# sourceMappingURL=tabulator_bulma.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.min.css.map deleted file mode 100644 index a40c920..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_bulma.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_bulma.scss"],"names":[],"mappings":"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","file":"tabulator_bulma.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: white;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: transparent;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: rgba(0, 0, 0, 0);\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #009e86;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0); } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #363636; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #363636;\n color: #363636; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: rgba(13, 13, 13, 0) !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: transparent;\n white-space: nowrap;\n overflow: visible;\n color: #363636; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ededed !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #009e86; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #009e86;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #009e86; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: rgba(13, 13, 13, 0) !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: rgba(13, 13, 13, 0) !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #363636;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: transparent; }\n .tabulator-row.tabulator-row-even {\n background-color: #fafafa; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #009e86;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #009e86;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #00d1b2; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: transparent;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: transparent; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: transparent;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fafafa; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #363636;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: transparent;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(0, 0, 0, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #363636;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636; }\n\n.tabulator {\n border: none; }\n .tabulator .tabulator-header {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n border: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.75em; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: 0px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n border: 1px solid #dbdbdb; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -5px -10px 10px -10px;\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0 0.1875em;\n padding: calc(0.375em - 1px) 0.75em;\n border: 1px solid #dbdbdb;\n font-size: 16px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n border-color: #4a4a4a;\n color: #363636;\n font-weight: bold; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n border-color: #b5b5b5;\n background: inherit;\n color: inherit; } }\n .tabulator.is-striped .tabulator-row:nth-child(even) {\n background-color: #fafafa; }\n .tabulator.is-bordered {\n border: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-bordered .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dbdbdb; }\n .tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.25em 0.5em; }\n .tabulator.is-narrow .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.25em 0.5em; }\n\n.tabulator-row {\n min-height: 22px; }\n .tabulator-row.tabulator-row-even {\n background-color: inherit; }\n .tabulator-row.tabulator-selected {\n background-color: #00d1b2 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #009e86 !important; } }\n .tabulator-row .tabulator-cell {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px; }\n .tabulator-row.tabulator-group {\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: none;\n border-top: 1px solid #999;\n color: #363636; }\n\n.tabulator-popup-container {\n background: white; }\n\n.tabulator-edit-list .tabulator-edit-list-item.active {\n color: white; }\n\n@media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n color: white; } }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.css b/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.css deleted file mode 100644 index a08932e..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.css +++ /dev/null @@ -1,1482 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid rgba(0, 0, 0, 0.12); - background-color: #fff; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid rgba(0, 0, 0, 0.12); - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #e94047; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: white !important; - border-top: 1px solid rgba(0, 0, 0, 0.12); - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #ebebeb !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #e94047; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #e94047; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #e94047; -} - -.tabulator .tabulator-footer { - border-top: 1px solid rgba(0, 0, 0, 0.12); - background-color: #e6e6e6; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #f3f3f3 !important; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - border-top: 1px solid rgba(0, 0, 0, 0.12); - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #f3f3f3 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid rgba(0, 0, 0, 0.12); - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid rgba(0, 0, 0, 0.12); - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #ee6e73; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #f8f8f8; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #f8f8f8; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #ee6e73; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #ee6e73; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid rgba(0, 0, 0, 0.12); - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #e94047; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #e94047; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid rgba(0, 0, 0, 0.12); - border-bottom: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid rgba(0, 0, 0, 0.12); - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #ee6e73; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #ee6e73; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid rgba(0, 0, 0, 0.12); - border-bottom: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid rgba(0, 0, 0, 0.12); - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid rgba(0, 0, 0, 0.12); - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #f8f8f8; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: rgba(0, 0, 0, 0.12); - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #ee6e73; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #ee6e73; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #ee6e73; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid rgba(0, 0, 0, 0.12); - border-bottom: 2px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid rgba(0, 0, 0, 0.12); - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - border: none; - background-color: #fff; - width: 100%; - max-width: 100%; -} - -.tabulator .tabulator-header { - color: inherit; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 15px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - right: -10px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 10px; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - width: 100%; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - min-width: 600%; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder .tabulator-table { - color: inherit; -} - -.tabulator .tabulator-footer { - background-color: transparent; - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-paginator { - color: inherit; -} - -.tabulator .tabulator-footer .tabulator-page { - margin: 0; - margin-top: 5px; - padding: 8px 12px; - border-radius: 0; - border-right: none; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page[data-page="next"], -.tabulator .tabulator-footer .tabulator-page:first-of-type { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page[data-page="prev"], -.tabulator .tabulator-footer .tabulator-page:last-of-type { - border: 1px solid rgba(0, 0, 0, 0.12); - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #ee6e73; -} - -.tabulator.striped .tabulator-row:nth-child(even) { - background-color: #f8f8f8; -} - -.tabulator.striped .tabulator-row:nth-child(even).tabulator-selected { - background-color: #ee6e73 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover { - background-color: #f8f8f8; - cursor: pointer; - } - .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected:hover { - background-color: #ee6e73 !important; - cursor: pointer; - } -} - -.tabulator-row { - min-height: 46px; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); -} - -.tabulator-row.tabulator-row-even { - background-color: #fff; -} - -.tabulator-row .tabulator-cell { - padding: 15px; - border-right: none; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - border: 1px solid #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #666; -} - -.tabulator-edit-select-list { - background: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #fff; - } -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-group { - color: inherit; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - border-left: none; - border-right: none; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #666; -} - -.tabulator-print-table .tabulator-data-tree-control { - border: 1px solid #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - background: #ccc; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - background: #ccc; -} - -/*# sourceMappingURL=tabulator_materialize.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.css.map deleted file mode 100644 index 2e484a9..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_materialize.scss"],"names":[],"mappings":"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","file":"tabulator_materialize.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #e94047;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ebebeb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #e94047; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #e94047;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #e94047; }\n .tabulator .tabulator-footer {\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #ee6e73; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f8f8f8; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f8f8f8;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #ee6e73; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #ee6e73;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #e94047;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #e94047;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #ee6e73;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #ee6e73; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.12);\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f8f8f8; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: rgba(0, 0, 0, 0.12);\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #ee6e73; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #ee6e73; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #ee6e73; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n background-color: #fff;\n width: 100%;\n max-width: 100%; }\n .tabulator .tabulator-header {\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 15px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: -10px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 10px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n background-color: transparent;\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px;\n border-radius: 0;\n border-right: none;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"next\"], .tabulator .tabulator-footer .tabulator-page:first-of-type {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"prev\"], .tabulator .tabulator-footer .tabulator-page:last-of-type {\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #ee6e73; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: #f8f8f8; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #ee6e73 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f8f8f8;\n cursor: pointer; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected:hover {\n background-color: #ee6e73 !important;\n cursor: pointer; } }\n\n.tabulator-row {\n min-height: 46px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n .tabulator-row .tabulator-cell {\n padding: 15px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border-left: none;\n border-right: none; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.min.css deleted file mode 100644 index efb5783..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{border:1px solid rgba(0,0,0,.12);font-size:16px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12);box-sizing:border-box;color:#555;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#fff;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#e6e6e6;border:1px solid rgba(0,0,0,.12);pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#e94047;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#e6e6e6;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid rgba(0,0,0,.12)}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid rgba(0,0,0,.12)}.tabulator .tabulator-header .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #aaa;border-top:1px solid rgba(0,0,0,.12);box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#ebebeb!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid rgba(0,0,0,.12)}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid rgba(0,0,0,.12)}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #e94047;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#e94047;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #e94047;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#e6e6e6;border-top:1px solid rgba(0,0,0,.12);color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f3f3f3!important;border-bottom:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12);box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid rgba(0,0,0,.12);border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{border:1px solid rgba(0,0,0,.12);border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:24px;position:relative}.tabulator-row.tabulator-row-even{background-color:#f8f8f8}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#f8f8f8;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#ee6e73}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#ee6e73;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12);pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#e94047;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12);box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid rgba(0,0,0,.12);box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid rgba(0,0,0,.12)}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #ee6e73;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#ee6e73}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid rgba(0,0,0,.12);border-bottom-left-radius:1px;border-left:2px solid rgba(0,0,0,.12);display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid rgba(0,0,0,.12);border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid rgba(0,0,0,.12);box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:16px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#f8f8f8;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:rgba(0,0,0,.12);border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid rgba(0,0,0,.12)}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:16px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#ee6e73;color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #ee6e73}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#ee6e73;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid rgba(0,0,0,.12);color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid rgba(0,0,0,.12);border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid rgba(0,0,0,.12);margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid rgba(0,0,0,.12)}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid rgba(0,0,0,.12);border-bottom-left-radius:1px;border-left:2px solid rgba(0,0,0,.12);display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid rgba(0,0,0,.12);border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{background-color:#fff;border:none;max-width:100%;width:100%}.tabulator .tabulator-header{color:inherit}.tabulator .tabulator-header .tabulator-col{border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:15px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{right:-10px}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid rgba(0,0,0,.12)}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:10px}.tabulator .tabulator-header .tabulator-calcs-holder{border-bottom:1px solid rgba(0,0,0,.12);width:100%}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder .tabulator-table{color:inherit}.tabulator .tabulator-footer{background-color:transparent;color:inherit}.tabulator .tabulator-footer .tabulator-paginator{color:inherit}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border-radius:0;border-right:none;margin:5px 0 0;padding:8px 12px}.tabulator .tabulator-footer .tabulator-page:first-of-type,.tabulator .tabulator-footer .tabulator-page[data-page=next]{border-bottom-left-radius:4px;border-top-left-radius:4px}.tabulator .tabulator-footer .tabulator-page:last-of-type,.tabulator .tabulator-footer .tabulator-page[data-page=prev]{border:1px solid rgba(0,0,0,.12);border-bottom-right-radius:4px;border-top-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{color:#ee6e73}.tabulator.striped .tabulator-row:nth-child(2n){background-color:#f8f8f8}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selected{background-color:#ee6e73!important}@media (hover:hover) and (pointer:fine){.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:#f8f8f8;cursor:pointer}.tabulator.striped .tabulator-row:nth-child(2n).tabulator-selected:hover{background-color:#ee6e73!important;cursor:pointer}}.tabulator-row{border-bottom:1px solid rgba(0,0,0,.12);min-height:46px}.tabulator-row.tabulator-row-even{background-color:#fff}.tabulator-row .tabulator-cell{border-right:none;padding:15px}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666;margin-left:10px}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item{color:inherit}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-group,.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:none;border-right:none}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{border:1px solid #ccc}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand,.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#ccc} -/*# sourceMappingURL=tabulator_materialize.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.min.css.map deleted file mode 100644 index 5007f67..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_materialize.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_materialize.scss"],"names":[],"mappings":"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","file":"tabulator_materialize.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid rgba(0, 0, 0, 0.12);\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #e94047;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ebebeb !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #e94047; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #e94047;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #e94047; }\n .tabulator .tabulator-footer {\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n background-color: #e6e6e6;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #f3f3f3 !important;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #f3f3f3 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #ee6e73; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #f8f8f8; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #f8f8f8;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #ee6e73; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #ee6e73;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #e94047;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #e94047;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #ee6e73;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #ee6e73; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, 0.12);\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #f8f8f8; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: rgba(0, 0, 0, 0.12);\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #ee6e73; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #ee6e73; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #ee6e73; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid rgba(0, 0, 0, 0.12);\n border-bottom: 2px solid rgba(0, 0, 0, 0.12); }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid rgba(0, 0, 0, 0.12);\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n background-color: #fff;\n width: 100%;\n max-width: 100%; }\n .tabulator .tabulator-header {\n color: inherit; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 15px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n right: -10px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 10px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n width: 100%;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 600%; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder .tabulator-table {\n color: inherit; }\n .tabulator .tabulator-footer {\n background-color: transparent;\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-paginator {\n color: inherit; }\n .tabulator .tabulator-footer .tabulator-page {\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px;\n border-radius: 0;\n border-right: none;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"next\"], .tabulator .tabulator-footer .tabulator-page:first-of-type {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page[data-page=\"prev\"], .tabulator .tabulator-footer .tabulator-page:last-of-type {\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px; }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #ee6e73; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: #f8f8f8; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #ee6e73 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f8f8f8;\n cursor: pointer; }\n .tabulator.striped .tabulator-row:nth-child(even).tabulator-selected:hover {\n background-color: #ee6e73 !important;\n cursor: pointer; } }\n\n.tabulator-row {\n min-height: 46px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.12); }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n .tabulator-row .tabulator-cell {\n padding: 15px;\n border-right: none; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #fff; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n .tabulator-edit-select-list .tabulator-edit-select-list-group {\n color: inherit; }\n\n.tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n border-left: none;\n border-right: none; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #666; }\n\n.tabulator-print-table .tabulator-data-tree-control {\n border: 1px solid #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n background: #ccc; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n background: #ccc; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.css b/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.css deleted file mode 100644 index 38d973d..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.css +++ /dev/null @@ -1,1375 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #333; - background-color: #222; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: #333; - color: #fff; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #333; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: #1a1a1a; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #999; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #ccc; - color: #333; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #1a1a1a; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #888; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #888; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: #404040 !important; - border-top: 1px solid #888; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #404040 !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #666; - white-space: nowrap; - overflow: visible; - color: #fff; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #373737 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #888; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #888; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #ccc; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #ccc; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #ccc; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #333; - color: #333; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #404040 !important; - border-bottom: 1px solid #888; - border-top: 1px solid #888; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #404040 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #333; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #666; -} - -.tabulator-row.tabulator-row-even { - background-color: #444; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #999; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #000; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #888; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #888; - border-bottom: 1px solid #888; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #999; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #ccc; - color: #333; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #ccc; - color: #333; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #888; - border-bottom: 1px solid #888; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #888; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #888; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #888; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #999; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #000; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #888; - border-bottom: 2px solid #888; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #fff; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #666; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #666; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #888; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #666; - border: 1px solid #888; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #444; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #888; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #888; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #fff; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #666; - background: #999; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(102, 102, 102, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #999; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #666; - background: #999; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #fff; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #888; - padding: 4px; - padding-top: 6px; - color: #fff; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #888; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #888; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #888; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #888; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #888; - border-bottom: 2px solid #888; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #888; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #fff; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #fff; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #fff; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #fff; -} - -.tabulator { - background-color: #222; -} - -.tabulator .tabulator-header .tabulator-col { - background-color: #333; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - color: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select { - border: 1px solid #999; - background: #444; - color: #fff; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - background: #1a1a1a !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #1a1a1a !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - background: #262626 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: #262626 !important; -} - -.tabulator .tabulator-footer .tabulator-paginator label { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page { - color: #333; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator-row.tabulator-group { - min-width: 100%; - color: #333; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-edit-select-list { - background: #fff; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item { - color: #666; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #999; - background: #444; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(153, 153, 153, 0.5); -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.focused { - outline: 1px solid #444; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #999; - background: #666; - } -} - -.tabulator-print-table .tabulator-print-table-group { - color: #333; -} - -/*# sourceMappingURL=tabulator_midnight.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.css.map deleted file mode 100644 index df4d2dc..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"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","file":"tabulator_midnight.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #333;\n background-color: #222;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #333;\n color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #333;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #1a1a1a;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #999;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #ccc;\n color: #333; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #1a1a1a; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: #404040 !important;\n border-top: 1px solid #888;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #404040 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #666;\n white-space: nowrap;\n overflow: visible;\n color: #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #373737 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #888; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #888; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #ccc; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #ccc;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #ccc; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #333;\n color: #333;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #404040 !important;\n border-bottom: 1px solid #888;\n border-top: 1px solid #888;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #404040 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #333;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #666; }\n .tabulator-row.tabulator-row-even {\n background-color: #444; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #999;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #000; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #888;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #888;\n border-bottom: 1px solid #888;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #999;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #ccc;\n color: #333; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #ccc;\n color: #333; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #888;\n border-bottom: 1px solid #888; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #888;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #999;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #000; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #888;\n border-bottom: 2px solid #888; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #fff;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #666;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #666; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #888;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #666;\n border: 1px solid #888;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #444; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #888;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #888; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #fff;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #666;\n background: #999; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(102, 102, 102, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #999; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #666;\n background: #999; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #fff;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #888;\n padding: 4px;\n padding-top: 6px;\n color: #fff;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #888;\n border-bottom: 2px solid #888; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #888;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #fff;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #fff; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n\n.tabulator {\n background-color: #222; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #333; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {\n border: 1px solid #999;\n background: #444;\n color: #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #1a1a1a !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #1a1a1a !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n background: #262626 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #262626 !important; }\n .tabulator .tabulator-footer .tabulator-paginator label {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page {\n color: #333;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n\n.tabulator-row.tabulator-group {\n min-width: 100%;\n color: #333; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: #666; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #999;\n background: #444; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(153, 153, 153, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #444; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #999;\n background: #666; } }\n\n.tabulator-print-table .tabulator-print-table-group {\n color: #333; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.min.css deleted file mode 100644 index 98fb857..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{border:1px solid #333;font-size:14px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#333;border-bottom:1px solid #999;box-sizing:border-box;color:#fff;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#333;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#1a1a1a;border:1px solid #999;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#999;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#ccc;color:#333}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#1a1a1a;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator .tabulator-header .tabulator-calcs-holder{background:#404040!important;border-bottom:1px solid #aaa;border-top:1px solid #888;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#404040!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#666;color:#fff;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#373737!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #888}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #888}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #ccc;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#ccc;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #ccc;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#333;border-top:1px solid #999;color:#333;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#404040!important;border-bottom:1px solid #888;border-top:1px solid #888;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#404040!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#333;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#666;box-sizing:border-box;min-height:22px;position:relative}.tabulator-row.tabulator-row-even{background-color:#444}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#000}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#888;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #888;border-top:1px solid #888;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#999;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#ccc;color:#333}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #888;border-top:1px solid #888;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #888;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #999;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#000}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #888;border-bottom-left-radius:1px;border-left:2px solid #888;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #fff;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#fff;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#fff;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#fff;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#666;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#666}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #888;border-top:1px solid #999;box-sizing:border-box;font-weight:700;padding:5px 5px 5px 10px}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#666;border:1px solid #888;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:14px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#444;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#888;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #888}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:14px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#fff;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#999;color:#666}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,40%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #999}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#999;color:#666;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#fff;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #888;color:#fff;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #888;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #888;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #888}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #888}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #888;border-bottom-left-radius:1px;border-left:2px solid #888;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #888;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #fff;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#fff;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#fff;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#fff;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{background-color:#222}.tabulator .tabulator-header .tabulator-col{background-color:#333}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input,.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select{background:#444;border:1px solid #999;color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder,.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#1a1a1a!important}.tabulator .tabulator-footer .tabulator-calcs-holder,.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#262626!important}.tabulator .tabulator-footer .tabulator-page-counter,.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page{color:#333;font-family:inherit;font-size:inherit;font-weight:inherit}.tabulator-row.tabulator-group{color:#333;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group span{color:#666}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item{color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{background:#444;color:#999}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,60%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #444}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{background:#666;color:#999}}.tabulator-print-table .tabulator-print-table-group{color:#333} -/*# sourceMappingURL=tabulator_midnight.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.min.css.map deleted file mode 100644 index 7901123..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_midnight.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"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","file":"tabulator_midnight.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #333;\n background-color: #222;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #333;\n color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #333;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #1a1a1a;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #999;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #ccc;\n color: #333; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #1a1a1a; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: #404040 !important;\n border-top: 1px solid #888;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #404040 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #666;\n white-space: nowrap;\n overflow: visible;\n color: #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #373737 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #888; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #888; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #ccc; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #ccc;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #ccc; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #333;\n color: #333;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #404040 !important;\n border-bottom: 1px solid #888;\n border-top: 1px solid #888;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #404040 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #333;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #666; }\n .tabulator-row.tabulator-row-even {\n background-color: #444; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #999;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #000; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #888;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #888;\n border-bottom: 1px solid #888;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #999;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #ccc;\n color: #333; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #ccc;\n color: #333; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #888;\n border-bottom: 1px solid #888; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #888;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #888; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #888; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #999;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #000; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #888;\n border-bottom: 2px solid #888; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #fff;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #666;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #666; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #888;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #666;\n border: 1px solid #888;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #444; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #888;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #888; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #fff;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #666;\n background: #999; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(102, 102, 102, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #999; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #666;\n background: #999; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #fff;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #888;\n padding: 4px;\n padding-top: 6px;\n color: #fff;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #888; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #888;\n border-bottom: 2px solid #888; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #888;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #fff;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #fff; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #fff; }\n\n.tabulator {\n background-color: #222; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #333; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n color: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {\n border: 1px solid #999;\n background: #444;\n color: #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #1a1a1a !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #1a1a1a !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n background: #262626 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #262626 !important; }\n .tabulator .tabulator-footer .tabulator-paginator label {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page {\n color: #333;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n\n.tabulator-row.tabulator-group {\n min-width: 100%;\n color: #333; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-edit-select-list {\n background: #fff; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item {\n color: #666; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #999;\n background: #444; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(153, 153, 153, 0.5); }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.focused {\n outline: 1px solid #444; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #999;\n background: #666; } }\n\n.tabulator-print-table .tabulator-print-table-group {\n color: #333; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_modern.css b/tmp/tabulator-5.6.1/dist/css/tabulator_modern.css deleted file mode 100644 index 0a6c240..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_modern.css +++ /dev/null @@ -1,1430 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #fff; - background-color: #fff; - font-size: 16px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #3759D7; - background-color: #fff; - color: #3759D7; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #fff; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #3759D7; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #3759D7; - color: #fff; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #2544b7; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #b7c3f1; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #fff; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #b7c3f1; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #b7c3f1; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #3759D7; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #3759D7; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #3759D7; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #3759D7; - color: #3759D7; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #fff; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #fff; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: white !important; - border-top: 1px solid #fff; - border-bottom: 1px solid #fff; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #f3f3f3; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #f2f2f2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #fff; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #fff; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #2544b7; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #2544b7; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #2544b7; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #fff; - color: #3759D7; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: white !important; - border-bottom: 1px solid #fff; - border-top: 1px solid #fff; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #3759D7; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #3759D7; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 24px; - background-color: #f3f3f3; -} - -.tabulator-row.tabulator-row-even { - background-color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #fff; - border-bottom: 1px solid #fff; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #3759D7; - color: #fff; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #2544b7; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #2544b7; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #fff; - border-bottom: 1px solid #fff; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 16px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #fff; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #fff; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #fff; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #9ABCEA; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #fff; - border-bottom: 2px solid #fff; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #f3f3f3; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #f3f3f3; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #fff; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #3759D7; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #3759D7; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #f3f3f3; - border: 1px solid #fff; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #fff; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #fff; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #fff; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 16px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #f3f3f3; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(243, 243, 243, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #f3f3f3; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #fff; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #fff; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #fff; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #fff; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #fff; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #fff; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #fff; - border-bottom: 2px solid #fff; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #fff; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #3759D7; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #3759D7; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator .tabulator-header { - border-bottom: 3px solid #3759D7; - margin-bottom: 4px; - padding-left: 10px; - font-size: 1.1em; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: 2px solid #fff; - background-color: #fff; -} - -.tabulator .tabulator-header .tabulator-col:nth-child(1) { - padding-left: 10px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - border: 1px solid #3759D7; - font-size: 1em; - color: #3759D7; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - border-top: 2px solid #3759D7; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - padding-left: 10px; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - border-top: 2px solid #3759D7 !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - padding-left: 0 !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell { - background: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #3759D7; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #3759D7; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #3759D7; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - border-top: 3px solid #3759D7 !important; - border-bottom: 2px solid #3759D7 !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell { - background: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child { - border-left: 10px solid transparent; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - border-bottom: none !important; -} - -.tabulator-row { - margin-bottom: 2px; -} - -.tabulator-row .tabulator-cell:first-child { - border-left: 10px solid #3759D7; -} - -.tabulator-row:nth-child(even) { - background-color: #627ce0; -} - -.tabulator-row:nth-child(even) .tabulator-cell { - background-color: #fff; -} - -.tabulator-row:nth-child(even) .tabulator-cell:first-child { - border-left: 10px solid #627ce0; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - cursor: pointer; - } - .tabulator-row.tabulator-selectable:hover .tabulator-cell { - background-color: #bbb; - } -} - -.tabulator-row.tabulator-selected .tabulator-cell { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover .tabulator-cell { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-moving { - pointer-events: none !important; -} - -.tabulator-row .tabulator-cell { - padding: 6px 4px; - border-right: 2px solid #fff; - background-color: #f3f3f3; -} - -.tabulator-row.tabulator-group { - min-width: 100%; - margin-bottom: 2px; - border-bottom: 2px solid #3759D7; - border-top: 2px solid #3759D7; - border-right: none; - background: #8ca0e8; -} - -.tabulator-row.tabulator-group span { - color: #3759D7; -} - -.tabulator-edit-select-list { - border: 1px solid #1D68CD; -} - -.tabulator-print-table .tabulator-print-table-group { - border-bottom: 2px solid #3759D7; - border-top: 2px solid #3759D7; - background: #8ca0e8; - margin-bottom: 2px; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #3759D7; -} - -/*# sourceMappingURL=tabulator_modern.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_modern.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_modern.css.map deleted file mode 100644 index 61d1b0d..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_modern.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"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","file":"tabulator_modern.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #fff;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #3759D7;\n background-color: #fff;\n color: #3759D7;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #fff;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #3759D7;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #3759D7;\n color: #fff; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #2544b7;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #b7c3f1; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #fff;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #b7c3f1; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #b7c3f1; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #3759D7;\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #f3f3f3;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #fff; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2544b7; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2544b7;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2544b7; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #3759D7;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #fff;\n border-top: 1px solid #fff;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #3759D7;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #3759D7; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #f3f3f3; }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #3759D7;\n color: #fff; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #2544b7;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #2544b7;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #fff;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #fff;\n border-bottom: 2px solid #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #f3f3f3;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #f3f3f3; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #fff;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3759D7;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3759D7;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #f3f3f3;\n border: 1px solid #fff;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fff; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #fff;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #fff; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #f3f3f3;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(243, 243, 243, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #f3f3f3;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #fff;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #fff;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #fff;\n border-bottom: 2px solid #fff; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #fff;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3759D7;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3759D7;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator .tabulator-header {\n border-bottom: 3px solid #3759D7;\n margin-bottom: 4px;\n padding-left: 10px;\n font-size: 1.1em; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: 2px solid #fff;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col:nth-child(1) {\n padding-left: 10px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n border: 1px solid #3759D7;\n font-size: 1em;\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 2px solid #3759D7; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n padding-left: 10px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border-top: 2px solid #3759D7 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n padding-left: 0 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n background: none; }\n\n.tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #3759D7; }\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #3759D7; }\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #3759D7; }\n\n.tabulator .tabulator-footer .tabulator-calcs-holder {\n border-top: 3px solid #3759D7 !important;\n border-bottom: 2px solid #3759D7 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n background: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child {\n border-left: 10px solid transparent; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n border-bottom: none !important; }\n\n.tabulator-row {\n margin-bottom: 2px; }\n .tabulator-row .tabulator-cell:first-child {\n border-left: 10px solid #3759D7; }\n .tabulator-row:nth-child(even) {\n background-color: #627ce0; }\n .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: #fff; }\n .tabulator-row:nth-child(even) .tabulator-cell:first-child {\n border-left: 10px solid #627ce0; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n cursor: pointer; }\n .tabulator-row.tabulator-selectable:hover .tabulator-cell {\n background-color: #bbb; } }\n .tabulator-row.tabulator-selected .tabulator-cell {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover .tabulator-cell {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 6px 4px;\n border-right: 2px solid #fff;\n background-color: #f3f3f3; }\n .tabulator-row.tabulator-group {\n min-width: 100%;\n margin-bottom: 2px;\n border-bottom: 2px solid #3759D7;\n border-top: 2px solid #3759D7;\n border-right: none;\n background: #8ca0e8; }\n .tabulator-row.tabulator-group span {\n color: #3759D7; }\n\n.tabulator-edit-select-list {\n border: 1px solid #1D68CD; }\n\n.tabulator-print-table .tabulator-print-table-group {\n border-bottom: 2px solid #3759D7;\n border-top: 2px solid #3759D7;\n background: #8ca0e8;\n margin-bottom: 2px; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #3759D7; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_modern.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_modern.min.css deleted file mode 100644 index 93d4bad..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_modern.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{background-color:#fff;border:1px solid #fff;font-size:16px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#fff;border-bottom:1px solid #3759d7;box-sizing:border-box;color:#3759d7;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#fff;border-right:1px solid #fff;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#e6e6e6;border:1px solid #3759d7;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#3759d7;color:#fff}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#2544b7;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #b7c3f1;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #fff;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#e6e6e6;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#b7c3f1}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #b7c3f1;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#3759d7}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #3759d7;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#3759d7}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #3759d7;color:#3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #fff;border-top:1px solid #fff;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#f3f3f3;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#f2f2f2!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #fff}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #fff}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2544b7;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2544b7;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2544b7;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#fff;border-top:1px solid #999;color:#3759d7;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #fff;border-top:1px solid #fff;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#3759d7;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#3759d7}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#f3f3f3;box-sizing:border-box;min-height:24px;position:relative}.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #fff;border-top:1px solid #fff;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#3759d7;color:#fff}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#2544b7;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #fff;border-top:1px solid #fff;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #fff;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #fff}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #fff;border-bottom-left-radius:1px;border-left:2px solid #fff;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#f3f3f3;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#f3f3f3}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #fff;border-top:1px solid #999;box-sizing:border-box;font-weight:700;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3759d7;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #3759d7;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#f3f3f3;border:1px solid #fff;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:16px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#fff;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#fff;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #fff}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:16px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:#f3f3f3}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,95%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#f3f3f3;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #fff;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #fff;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #fff;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #fff;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #fff}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #fff}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #fff;border-bottom-left-radius:1px;border-left:2px solid #fff;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #fff;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3759d7;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #3759d7;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator .tabulator-header{border-bottom:3px solid #3759d7;font-size:1.1em;margin-bottom:4px;padding-left:10px}.tabulator .tabulator-header .tabulator-col{background-color:#fff;border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-col:first-child{padding-left:10px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{border:1px solid #3759d7;color:#3759d7;font-size:1em}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:2px solid #3759d7}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{padding-left:10px}.tabulator .tabulator-header .tabulator-calcs-holder{border-top:2px solid #3759d7!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{padding-left:0!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#3759d7}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #3759d7}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #3759d7}.tabulator .tabulator-footer .tabulator-calcs-holder{border-bottom:2px solid #3759d7!important;border-top:3px solid #3759d7!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child{border-left:10px solid transparent}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none!important}.tabulator-row{margin-bottom:2px}.tabulator-row .tabulator-cell:first-child{border-left:10px solid #3759d7}.tabulator-row:nth-child(2n){background-color:#627ce0}.tabulator-row:nth-child(2n) .tabulator-cell{background-color:#fff}.tabulator-row:nth-child(2n) .tabulator-cell:first-child{border-left:10px solid #627ce0}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{cursor:pointer}.tabulator-row.tabulator-selectable:hover .tabulator-cell{background-color:#bbb}}.tabulator-row.tabulator-selected .tabulator-cell{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover .tabulator-cell{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-moving{pointer-events:none!important}.tabulator-row .tabulator-cell{background-color:#f3f3f3;border-right:2px solid #fff;padding:6px 4px}.tabulator-row.tabulator-group{background:#8ca0e8;border-bottom:2px solid #3759d7;border-right:none;border-top:2px solid #3759d7;margin-bottom:2px;min-width:100%}.tabulator-row.tabulator-group span{color:#3759d7}.tabulator-edit-select-list{border:1px solid #1d68cd}.tabulator-print-table .tabulator-print-table-group{background:#8ca0e8;border-bottom:2px solid #3759d7;border-top:2px solid #3759d7;margin-bottom:2px}.tabulator-print-table .tabulator-print-table-group span{color:#3759d7} -/*# sourceMappingURL=tabulator_modern.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_modern.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_modern.min.css.map deleted file mode 100644 index fa9eba5..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_modern.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"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","file":"tabulator_modern.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #fff;\n background-color: #fff;\n font-size: 16px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #3759D7;\n background-color: #fff;\n color: #3759D7;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #fff;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #3759D7;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #3759D7;\n color: #fff; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #2544b7;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #b7c3f1; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #fff;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #b7c3f1; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #b7c3f1; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3759D7; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #3759D7;\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #f3f3f3;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #fff; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2544b7; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2544b7;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2544b7; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #3759D7;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #fff;\n border-top: 1px solid #fff;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #3759D7;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #3759D7; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 24px;\n background-color: #f3f3f3; }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #3759D7;\n color: #fff; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #2544b7;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #2544b7;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #fff;\n border-bottom: 1px solid #fff; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 16px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #fff;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #fff; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #fff; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #fff;\n border-bottom: 2px solid #fff; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #f3f3f3;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #f3f3f3; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #fff;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3759D7;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3759D7;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #f3f3f3;\n border: 1px solid #fff;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fff; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #fff;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #fff; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 16px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #f3f3f3;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(243, 243, 243, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #f3f3f3;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #fff;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #fff;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #fff; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #fff;\n border-bottom: 2px solid #fff; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #fff;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3759D7;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3759D7;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator .tabulator-header {\n border-bottom: 3px solid #3759D7;\n margin-bottom: 4px;\n padding-left: 10px;\n font-size: 1.1em; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: 2px solid #fff;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-col:nth-child(1) {\n padding-left: 10px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n border: 1px solid #3759D7;\n font-size: 1em;\n color: #3759D7; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n border-top: 2px solid #3759D7; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n padding-left: 10px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n border-top: 2px solid #3759D7 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n padding-left: 0 !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n background: none; }\n\n.tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #3759D7; }\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #3759D7; }\n\n.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #3759D7; }\n\n.tabulator .tabulator-footer .tabulator-calcs-holder {\n border-top: 3px solid #3759D7 !important;\n border-bottom: 2px solid #3759D7 !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n background: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child {\n border-left: 10px solid transparent; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n border-bottom: none !important; }\n\n.tabulator-row {\n margin-bottom: 2px; }\n .tabulator-row .tabulator-cell:first-child {\n border-left: 10px solid #3759D7; }\n .tabulator-row:nth-child(even) {\n background-color: #627ce0; }\n .tabulator-row:nth-child(even) .tabulator-cell {\n background-color: #fff; }\n .tabulator-row:nth-child(even) .tabulator-cell:first-child {\n border-left: 10px solid #627ce0; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n cursor: pointer; }\n .tabulator-row.tabulator-selectable:hover .tabulator-cell {\n background-color: #bbb; } }\n .tabulator-row.tabulator-selected .tabulator-cell {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover .tabulator-cell {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 6px 4px;\n border-right: 2px solid #fff;\n background-color: #f3f3f3; }\n .tabulator-row.tabulator-group {\n min-width: 100%;\n margin-bottom: 2px;\n border-bottom: 2px solid #3759D7;\n border-top: 2px solid #3759D7;\n border-right: none;\n background: #8ca0e8; }\n .tabulator-row.tabulator-group span {\n color: #3759D7; }\n\n.tabulator-edit-select-list {\n border: 1px solid #1D68CD; }\n\n.tabulator-print-table .tabulator-print-table-group {\n border-bottom: 2px solid #3759D7;\n border-top: 2px solid #3759D7;\n background: #8ca0e8;\n margin-bottom: 2px; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #3759D7; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.css b/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.css deleted file mode 100644 index 1ac7969..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.css +++ /dev/null @@ -1,2102 +0,0 @@ -/******************************* - Site Settings -*******************************/ - -/*------------------- - Fonts ---------------------*/ - -/*------------------- - Base Sizes ---------------------*/ - -/* This is the single variable that controls them all */ - -/* The size of page text */ - -/*------------------- - Exact Pixel Values ---------------------*/ - -/* - These are used to specify exact pixel values in em - for things like borders that remain constantly - sized as emSize adjusts - - Since there are many more sizes than names for sizes, - these are named by their original pixel values. - -*/ - -/*------------------- - Border Radius ---------------------*/ - -/* See Power-user section below - for explanation of $px variables -*/ - -/*------------------- - Site Colors ---------------------*/ - -/*--- Colors ---*/ - -/*--- Light Colors ---*/ - -/*--- Neutrals ---*/ - -/*--- Colored Backgrounds ---*/ - -/*--- Colored Text ---*/ - -/*--- Colored Headers ---*/ - -/*--- Colored Border ---*/ - -/*------------------- - Alpha Colors ---------------------*/ - -/*------------------- - Brand Colors ---------------------*/ - -/*-------------- - Page Heading ----------------*/ - -/*------------------- - Page ---------------------*/ - -/*-------------- - Form Input ----------------*/ - -/* This adjusts the default form input across all elements */ - -/* Input Text Color */ - -/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */ - -/*------------------- - Focused Input ---------------------*/ - -/* Used on inputs, textarea etc */ - -/* Used on dropdowns, other larger blocks */ - -/*------------------- - Sizes ---------------------*/ - -/* - Sizes are all expressed in terms of 14px/em (default em) - This ensures these "ratios" remain constant despite changes in EM -*/ - -/*------------------- - Paragraph ---------------------*/ - -/*------------------- - Links ---------------------*/ - -/*------------------- - Highlighted Text ---------------------*/ - -/*------------------- - Em Sizes ---------------------*/ - -/* - This rounds $size values to the closest pixel then expresses that value in (r)em. - This ensures all size values round to exact pixels -*/ - -/* em */ - -/* rem */ - -/*------------------- - Loader ---------------------*/ - -/*------------------- - Grid ---------------------*/ - -/*------------------- - Transitions ---------------------*/ - -/*------------------- - Breakpoints ---------------------*/ - -/* Columns */ - -/******************************* - Power-User -*******************************/ - -/*------------------- - Emotive Colors ---------------------*/ - -/* Positive */ - -/* Negative */ - -/* Info */ - -/* Warning */ - -/*------------------- - Paths ---------------------*/ - -/* For source only. Modified in gulp for dist */ - -/*------------------- - Icons ---------------------*/ - -/* Maximum Glyph Width of Icon */ - -/*------------------- - Neutral Text ---------------------*/ - -/*------------------- - Brand Colors ---------------------*/ - -/*------------------- - Borders ---------------------*/ - -/*------------------- - Accents ---------------------*/ - -/* Differentiating Neutrals */ - -/* Differentiating Layers */ - -/*------------------- - Derived Values ---------------------*/ - -/* Loaders Position Offset */ - -/* Rendered Scrollbar Width */ - -/* Maximum Single Character Glyph Width, aka Capital "W" */ - -/* Used to match floats with text */ - -/* Header Spacing */ - -/* Minimum Mobile Width */ - -/* Positive / Negative Dupes */ - -/* Responsive */ - -/******************************* - States -*******************************/ - -/*------------------- - Disabled ---------------------*/ - -/*------------------- - Hover ---------------------*/ - -/*--- Shadows ---*/ - -/*--- Colors ---*/ - -/*--- Emotive ---*/ - -/*--- Brand ---*/ - -/*--- Dark Tones ---*/ - -/*--- Light Tones ---*/ - -/*------------------- - Focus ---------------------*/ - -/*--- Colors ---*/ - -/*--- Emotive ---*/ - -/*--- Brand ---*/ - -/*--- Dark Tones ---*/ - -/*--- Light Tones ---*/ - -/*------------------- - Down (:active) ---------------------*/ - -/*--- Colors ---*/ - -/*--- Emotive ---*/ - -/*--- Brand ---*/ - -/*--- Dark Tones ---*/ - -/*--- Light Tones ---*/ - -/*------------------- - Active ---------------------*/ - -/*--- Colors ---*/ - -/*--- Emotive ---*/ - -/*--- Brand ---*/ - -/*--- Dark Tones ---*/ - -/*--- Light Tones ---*/ - -/******************************* - Table -*******************************/ - -/*------------------- - Element ---------------------*/ - -/*-------------- - Parts ----------------*/ - -/* Table Row */ - -/* Table Cell */ - -/* Table Header */ - -/* Table Footer */ - -/* Responsive Size */ - -/*------------------- - Types ---------------------*/ - -/* Definition */ - -/*-------------- - Couplings ----------------*/ - -/*-------------- - States ----------------*/ - -/* Positive */ - -/* Negative */ - -/* Error */ - -/* Warning */ - -/* Active */ - -/*-------------- - Types ----------------*/ - -/* Attached */ - -/* Striped */ - -/* Selectable */ - -/* Sortable */ - -/* Colors */ - -/* Inverted */ - -/* Basic */ - -/* Padded */ - -/* Compact */ - -/* Sizes */ - -.tabulator { - position: relative; - border: 1px solid rgba(34, 36, 38, 0.15); - background-color: #FFFFFF; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: #F9FAFB; - color: rgba(0, 0, 0, 0.87); - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #ddd; - background: #F9FAFB; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: #dae1e7; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #ddd; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #dae1e7; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: white !important; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #e2e2e2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #2975DD; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #2975DD; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #2975DD; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: white !important; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #EFEFEF; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #ddd; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #DB2828; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #DB2828; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #9ABCEA; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #ddd; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #EFEFEF; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #ddd; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #ddd; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #ddd; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #ddd; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - width: 100%; - margin: 1em 0em; - border: 1px solid rgba(34, 36, 38, 0.15); - box-shadow: none; - border-radius: 0.28571rem; - color: rgba(0, 0, 0, 0.87); - /* Red */ - /* Orange */ - /* Yellow */ - /* Olive */ - /* Green */ - /* Teal */ - /* Blue */ - /* Violet */ - /* Purple */ - /* Pink */ - /* Brown */ - /* Grey */ - /* Black */ -} - -.tabulator .tabulator-header { - border-right: none; - border-bottom: 1px solid rgba(34, 36, 38, 0.1); - background-color: #F9FAFB; - box-shadow: none; - color: rgba(0, 0, 0, 0.87); - font-style: none; - font-weight: bold; - text-transform: none; -} - -.tabulator .tabulator-header .tabulator-col { - border-right: none; - background-color: #F9FAFB; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.92857em 0.78571em; -} - -.tabulator .tabulator-tableholder .tabulator-table { - background-color: transparent; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - background: #f2f2f2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #ddd; -} - -.tabulator .tabulator-footer { - padding: 0.78571em 0.78571em; - border-top: 1px solid rgba(34, 36, 38, 0.15); - box-shadow: none; - background: #F9FAFB; - text-align: right; - color: rgba(0, 0, 0, 0.87); - font-style: normal; - font-weight: normal; - text-transform: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - margin: -0.78571em -0.78571em 0.78571em -0.78571em; - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -0.78571em; - border-bottom: none; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive { - box-shadow: 0px 0px 0px #A3C293 inset; - background: #FCFFF5 !important; - color: #21BA45 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover { - background: #f7ffe6 !important; - color: #13ae38 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative { - box-shadow: 0px 0px 0px #E0B4B4 inset; - background: #FFF6F6 !important; - color: #DB2828 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover { - background: #ffe7e7 !important; - color: #d41616 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error { - box-shadow: 0px 0px 0px #E0B4B4 inset; - background: #FFF6F6 !important; - color: #DB2828 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover { - background: #ffe7e7 !important; - color: #d12323 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning { - box-shadow: 0px 0px 0px #C9BA9B inset; - background: #FFFAF3 !important; - color: #F2C037 !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover { - background: #fff4e4 !important; - color: #f1bb29 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active { - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset; - background: #E0E0E0 !important; - color: rgba(0, 0, 0, 0.87) !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover { - background: #f7ffe6 !important; - color: #13ae38 !important; - } -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active { - pointer-events: none; - color: rgba(0, 0, 0, 0.2); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover { - pointer-events: none; - color: rgba(0, 0, 0, 0.2); - } -} - -.tabulator.inverted { - background: #333333; - color: rgba(255, 255, 255, 0.9); - border: none; -} - -.tabulator.inverted .tabulator-header { - background-color: rgba(0, 0, 0, 0.15); - border-color: rgba(255, 255, 255, 0.1) !important; - color: rgba(255, 255, 255, 0.9); -} - -.tabulator.inverted .tabulator-header .tabulator-col { - border-color: rgba(255, 255, 255, 0.1) !important; -} - -.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row { - color: rgba(255, 255, 255, 0.9); - border: none; -} - -.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-color: rgba(255, 255, 255, 0.1) !important; -} - -.tabulator.inverted .tabulator-footer { - background: #FFFFFF; -} - -.tabulator.striped .tabulator-row:nth-child(even) { - background-color: #f2f2f2; -} - -.tabulator.celled { - border: 1px solid rgba(34, 36, 38, 0.15); -} - -.tabulator.celled .tabulator-header .tabulator-col { - border-right: 1px solid rgba(34, 36, 38, 0.1); -} - -.tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: 1px solid rgba(34, 36, 38, 0.1); -} - -.tabulator[class*="single line"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - border-right: none; -} - -.tabulator.red { - border-top: 0.2em solid #DB2828; -} - -.tabulator.inverted.red { - background-color: #DB2828 !important; - color: #FFFFFF !important; -} - -.tabulator.orange { - border-top: 0.2em solid #F2711C; -} - -.tabulator.inverted.orange { - background-color: #F2711C !important; - color: #FFFFFF !important; -} - -.tabulator.yellow { - border-top: 0.2em solid #FBBD08; -} - -.tabulator.inverted.yellow { - background-color: #FBBD08 !important; - color: #FFFFFF !important; -} - -.tabulator.olive { - border-top: 0.2em solid #B5CC18; -} - -.tabulator.inverted.olive { - background-color: #B5CC18 !important; - color: #FFFFFF !important; -} - -.tabulator.green { - border-top: 0.2em solid #21BA45; -} - -.tabulator.inverted.green { - background-color: #21BA45 !important; - color: #FFFFFF !important; -} - -.tabulator.teal { - border-top: 0.2em solid #00B5AD; -} - -.tabulator.inverted.teal { - background-color: #00B5AD !important; - color: #FFFFFF !important; -} - -.tabulator.blue { - border-top: 0.2em solid #2185D0; -} - -.tabulator.inverted.blue { - background-color: #2185D0 !important; - color: #FFFFFF !important; -} - -.tabulator.violet { - border-top: 0.2em solid #6435C9; -} - -.tabulator.inverted.violet { - background-color: #6435C9 !important; - color: #FFFFFF !important; -} - -.tabulator.purple { - border-top: 0.2em solid #A333C8; -} - -.tabulator.inverted.purple { - background-color: #A333C8 !important; - color: #FFFFFF !important; -} - -.tabulator.pink { - border-top: 0.2em solid #E03997; -} - -.tabulator.inverted.pink { - background-color: #E03997 !important; - color: #FFFFFF !important; -} - -.tabulator.brown { - border-top: 0.2em solid #A5673F; -} - -.tabulator.inverted.brown { - background-color: #A5673F !important; - color: #FFFFFF !important; -} - -.tabulator.grey { - border-top: 0.2em solid #767676; -} - -.tabulator.inverted.grey { - background-color: #767676 !important; - color: #FFFFFF !important; -} - -.tabulator.black { - border-top: 0.2em solid #1B1C1D; -} - -.tabulator.inverted.black { - background-color: #1B1C1D !important; - color: #FFFFFF !important; -} - -.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content { - padding: 1em 1em; -} - -.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { - top: 20px; -} - -.tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 1em 1em; -} - -.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content { - padding: 1.5em 1.5em; -} - -.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { - top: 26px; -} - -.tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 1.5em 1.5em; -} - -.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.5em 0.7em; -} - -.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { - top: 12px; -} - -.tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 0.5em 0.7em; -} - -.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content { - padding: 0.4em 0.6em; -} - -.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow { - top: 10px; -} - -.tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell { - padding: 0.4em 0.6em; -} - -.tabulator-row { - border-bottom: 1px solid rgba(34, 36, 38, 0.1); -} - -.tabulator-row.tabulator-row-even { - background-color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset; - background: #E0E0E0 !important; - color: rgba(0, 0, 0, 0.87) !important; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA !important; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC !important; - cursor: pointer; - } -} - -.tabulator-row.tabulator-moving { - pointer-events: none !important; -} - -.tabulator-row .tabulator-cell { - padding: 0.78571em 0.78571em; - border-right: none; - vertical-align: middle; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - color: #fff; -} - -.tabulator-row.tabulator-group { - background: #fafafa; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-menu { - background: #FFFFFF; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - background: #F9FAFB; - } -} - -.tabulator-edit-select-list { - background: #FFFFFF; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active { - color: #FFFFFF; -} - -.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-select-list .tabulator-edit-select-list-item:hover { - color: #FFFFFF; - } -} - -.tabulator-edit-select-list .tabulator-edit-select-list-notice { - color: inherit; -} - -.tabulator-print-table .tabulator-print-table-group { - background: #fafafa; -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #666; -} - -/*# sourceMappingURL=tabulator_semanticui.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.css.map deleted file mode 100644 index f43129b..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.css","sourcesContent":["/*******************************\n Site Settings\n*******************************/\n/*-------------------\n Fonts\n--------------------*/\n/*-------------------\n Base Sizes\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\n Exact Pixel Values\n--------------------*/\n/*\n These are used to specify exact pixel values in em\n for things like borders that remain constantly\n sized as emSize adjusts\n\n Since there are many more sizes than names for sizes,\n these are named by their original pixel values.\n\n*/\n/*-------------------\n Border Radius\n--------------------*/\n/* See Power-user section below\n for explanation of $px variables\n*/\n/*-------------------\n Site Colors\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\n Alpha Colors\n--------------------*/\n/*-------------------\n Brand Colors\n--------------------*/\n/*--------------\n Page Heading\n---------------*/\n/*-------------------\n Page\n--------------------*/\n/*--------------\n Form Input\n---------------*/\n/* This adjusts the default form input across all elements */\n/* Input Text Color */\n/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */\n/*-------------------\n Focused Input\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\n Sizes\n--------------------*/\n/*\n Sizes are all expressed in terms of 14px/em (default em)\n This ensures these \"ratios\" remain constant despite changes in EM\n*/\n/*-------------------\n Paragraph\n--------------------*/\n/*-------------------\n Links\n--------------------*/\n/*-------------------\n Highlighted Text\n--------------------*/\n/*-------------------\n Em Sizes\n--------------------*/\n/*\n This rounds $size values to the closest pixel then expresses that value in (r)em.\n This ensures all size values round to exact pixels\n*/\n/* em */\n/* rem */\n/*-------------------\n Loader\n--------------------*/\n/*-------------------\n Grid\n--------------------*/\n/*-------------------\n Transitions\n--------------------*/\n/*-------------------\n Breakpoints\n--------------------*/\n/* Columns */\n/*******************************\n Power-User\n*******************************/\n/*-------------------\n Emotive Colors\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\n Paths\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\n Icons\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\n Neutral Text\n--------------------*/\n/*-------------------\n Brand Colors\n--------------------*/\n/*-------------------\n Borders\n--------------------*/\n/*-------------------\n Accents\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\n Derived Values\n--------------------*/\n/* Loaders Position Offset */\n/* Rendered Scrollbar Width */\n/* Maximum Single Character Glyph Width, aka Capital \"W\" */\n/* Used to match floats with text */\n/* Header Spacing */\n/* Minimum Mobile Width */\n/* Positive / Negative Dupes */\n/* Responsive */\n/*******************************\n States\n*******************************/\n/*-------------------\n Disabled\n--------------------*/\n/*-------------------\n Hover\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Focus\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Down (:active)\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Active\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\n Table\n*******************************/\n/*-------------------\n Element\n--------------------*/\n/*--------------\n Parts\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\n Types\n--------------------*/\n/* Definition */\n/*--------------\n Couplings\n---------------*/\n/*--------------\n States\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\n Types\n---------------*/\n/* Attached */\n/* Striped */\n/* Selectable */\n/* Sortable */\n/* Colors */\n/* Inverted */\n/* Basic */\n/* Padded */\n/* Compact */\n/* Sizes */\n.tabulator {\n position: relative;\n border: 1px solid rgba(34, 36, 38, 0.15);\n background-color: #FFFFFF;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #F9FAFB;\n color: rgba(0, 0, 0, 0.87);\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #ddd;\n background: #F9FAFB;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #dae1e7;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #dae1e7; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n width: 100%;\n margin: 1em 0em;\n border: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n border-radius: 0.28571rem;\n color: rgba(0, 0, 0, 0.87);\n /* Red */\n /* Orange */\n /* Yellow */\n /* Olive */\n /* Green */\n /* Teal */\n /* Blue */\n /* Violet */\n /* Purple */\n /* Pink */\n /* Brown */\n /* Grey */\n /* Black */ }\n .tabulator .tabulator-header {\n border-right: none;\n border-bottom: 1px solid rgba(34, 36, 38, 0.1);\n background-color: #F9FAFB;\n box-shadow: none;\n color: rgba(0, 0, 0, 0.87);\n font-style: none;\n font-weight: bold;\n text-transform: none; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #F9FAFB; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.92857em 0.78571em; }\n .tabulator .tabulator-tableholder .tabulator-table {\n background-color: transparent; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 0.78571em 0.78571em;\n border-top: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n background: #F9FAFB;\n text-align: right;\n color: rgba(0, 0, 0, 0.87);\n font-style: normal;\n font-weight: normal;\n text-transform: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -0.78571em -0.78571em 0.78571em -0.78571em;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -0.78571em;\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive {\n box-shadow: 0px 0px 0px #A3C293 inset;\n background: #FCFFF5 !important;\n color: #21BA45 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover {\n background: #ffe7e7 !important;\n color: #d41616 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover {\n background: #ffe7e7 !important;\n color: #d12323 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning {\n box-shadow: 0px 0px 0px #C9BA9B inset;\n background: #FFFAF3 !important;\n color: #F2C037 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover {\n background: #fff4e4 !important;\n color: #f1bb29 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); } }\n .tabulator.inverted {\n background: #333333;\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-header {\n background-color: rgba(0, 0, 0, 0.15);\n border-color: rgba(255, 255, 255, 0.1) !important;\n color: rgba(255, 255, 255, 0.9); }\n .tabulator.inverted .tabulator-header .tabulator-col {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row {\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-footer {\n background: #FFFFFF; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: #f2f2f2; }\n .tabulator.celled {\n border: 1px solid rgba(34, 36, 38, 0.15); }\n .tabulator.celled .tabulator-header .tabulator-col {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator[class*=\"single line\"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: none; }\n .tabulator.red {\n border-top: 0.2em solid #DB2828; }\n .tabulator.inverted.red {\n background-color: #DB2828 !important;\n color: #FFFFFF !important; }\n .tabulator.orange {\n border-top: 0.2em solid #F2711C; }\n .tabulator.inverted.orange {\n background-color: #F2711C !important;\n color: #FFFFFF !important; }\n .tabulator.yellow {\n border-top: 0.2em solid #FBBD08; }\n .tabulator.inverted.yellow {\n background-color: #FBBD08 !important;\n color: #FFFFFF !important; }\n .tabulator.olive {\n border-top: 0.2em solid #B5CC18; }\n .tabulator.inverted.olive {\n background-color: #B5CC18 !important;\n color: #FFFFFF !important; }\n .tabulator.green {\n border-top: 0.2em solid #21BA45; }\n .tabulator.inverted.green {\n background-color: #21BA45 !important;\n color: #FFFFFF !important; }\n .tabulator.teal {\n border-top: 0.2em solid #00B5AD; }\n .tabulator.inverted.teal {\n background-color: #00B5AD !important;\n color: #FFFFFF !important; }\n .tabulator.blue {\n border-top: 0.2em solid #2185D0; }\n .tabulator.inverted.blue {\n background-color: #2185D0 !important;\n color: #FFFFFF !important; }\n .tabulator.violet {\n border-top: 0.2em solid #6435C9; }\n .tabulator.inverted.violet {\n background-color: #6435C9 !important;\n color: #FFFFFF !important; }\n .tabulator.purple {\n border-top: 0.2em solid #A333C8; }\n .tabulator.inverted.purple {\n background-color: #A333C8 !important;\n color: #FFFFFF !important; }\n .tabulator.pink {\n border-top: 0.2em solid #E03997; }\n .tabulator.inverted.pink {\n background-color: #E03997 !important;\n color: #FFFFFF !important; }\n .tabulator.brown {\n border-top: 0.2em solid #A5673F; }\n .tabulator.inverted.brown {\n background-color: #A5673F !important;\n color: #FFFFFF !important; }\n .tabulator.grey {\n border-top: 0.2em solid #767676; }\n .tabulator.inverted.grey {\n background-color: #767676 !important;\n color: #FFFFFF !important; }\n .tabulator.black {\n border-top: 0.2em solid #1B1C1D; }\n .tabulator.inverted.black {\n background-color: #1B1C1D !important;\n color: #FFFFFF !important; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1em 1em; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 20px; }\n .tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1em 1em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1.5em 1.5em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 26px; }\n .tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1.5em 1.5em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.7em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 12px; }\n .tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.5em 0.7em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.4em 0.6em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 10px; }\n .tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.4em 0.6em; }\n\n.tabulator-row {\n border-bottom: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; } }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 0.78571em 0.78571em;\n border-right: none;\n vertical-align: middle; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n color: #fff; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-menu {\n background: #FFFFFF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n background: #F9FAFB; } }\n\n.tabulator-edit-select-list {\n background: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #FFFFFF; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.min.css deleted file mode 100644 index 06a15cf..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{background-color:#fff;font-size:14px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{border-bottom:1px solid #999;box-sizing:border-box;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#f9fafb;border-right:1px solid #ddd;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#dae1e7;border:1px solid #999;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #ddd;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#dae1e7;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#e2e2e2!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#fff;border-top:1px solid #999;color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{border-bottom:1px solid #ddd;border-top:1px solid #ddd;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:22px;position:relative}.tabulator-row.tabulator-row-even{background-color:#efefef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #ddd;border-top:1px solid #ddd;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #ddd;border-top:1px solid #ddd;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #ddd;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #db2828}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#db2828}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #ddd;border-bottom-left-radius:1px;border-left:2px solid #ddd;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:14px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#efefef;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:14px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #ddd;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #ddd;border-bottom-left-radius:1px;border-left:2px solid #ddd;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{border:1px solid rgba(34,36,38,.15);border-radius:.28571rem;box-shadow:none;color:rgba(0,0,0,.87);margin:1em 0;width:100%}.tabulator .tabulator-header{border-bottom:1px solid rgba(34,36,38,.1);box-shadow:none;color:rgba(0,0,0,.87);font-style:none;font-weight:700;text-transform:none}.tabulator .tabulator-header,.tabulator .tabulator-header .tabulator-col{background-color:#f9fafb;border-right:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:.92857em .78571em}.tabulator .tabulator-tableholder .tabulator-table{background-color:transparent}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{background:#f9fafb;border-top:1px solid rgba(34,36,38,.15);box-shadow:none;color:rgba(0,0,0,.87);font-style:normal;font-weight:400;padding:.78571em;text-align:right;text-transform:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#fff!important;margin:-.78571em -.78571em .78571em}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-.78571em}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive{background:#fcfff5!important;box-shadow:inset 0 0 0 #a3c293;color:#21ba45!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover{background:#f7ffe6!important;color:#13ae38!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative{background:#fff6f6!important;box-shadow:inset 0 0 0 #e0b4b4;color:#db2828!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover{background:#ffe7e7!important;color:#d41616!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error{background:#fff6f6!important;box-shadow:inset 0 0 0 #e0b4b4;color:#db2828!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover{background:#ffe7e7!important;color:#d12323!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning{background:#fffaf3!important;box-shadow:inset 0 0 0 #c9ba9b;color:#f2c037!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover{background:#fff4e4!important;color:#f1bb29!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active{background:#e0e0e0!important;box-shadow:inset 0 0 0 rgba(0,0,0,.87);color:rgba(0,0,0,.87)!important}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover{background:#f7ffe6!important;color:#13ae38!important}}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active,.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active{color:rgba(0,0,0,.2);pointer-events:none}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover{color:rgba(0,0,0,.2);pointer-events:none}}.tabulator.inverted{background:#333;border:none;color:hsla(0,0%,100%,.9)}.tabulator.inverted .tabulator-header{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.9)}.tabulator.inverted .tabulator-header,.tabulator.inverted .tabulator-header .tabulator-col{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row{border:none;color:hsla(0,0%,100%,.9)}.tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-footer{background:#fff}.tabulator.striped .tabulator-row:nth-child(2n){background-color:#f2f2f2}.tabulator.celled{border:1px solid rgba(34,36,38,.15)}.tabulator.celled .tabulator-header .tabulator-col,.tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid rgba(34,36,38,.1)}.tabulator[class*="single line"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{border-right:none}.tabulator.red{border-top:.2em solid #db2828}.tabulator.inverted.red{background-color:#db2828!important;color:#fff!important}.tabulator.orange{border-top:.2em solid #f2711c}.tabulator.inverted.orange{background-color:#f2711c!important;color:#fff!important}.tabulator.yellow{border-top:.2em solid #fbbd08}.tabulator.inverted.yellow{background-color:#fbbd08!important;color:#fff!important}.tabulator.olive{border-top:.2em solid #b5cc18}.tabulator.inverted.olive{background-color:#b5cc18!important;color:#fff!important}.tabulator.green{border-top:.2em solid #21ba45}.tabulator.inverted.green{background-color:#21ba45!important;color:#fff!important}.tabulator.teal{border-top:.2em solid #00b5ad}.tabulator.inverted.teal{background-color:#00b5ad!important;color:#fff!important}.tabulator.blue{border-top:.2em solid #2185d0}.tabulator.inverted.blue{background-color:#2185d0!important;color:#fff!important}.tabulator.violet{border-top:.2em solid #6435c9}.tabulator.inverted.violet{background-color:#6435c9!important;color:#fff!important}.tabulator.purple{border-top:.2em solid #a333c8}.tabulator.inverted.purple{background-color:#a333c8!important;color:#fff!important}.tabulator.pink{border-top:.2em solid #e03997}.tabulator.inverted.pink{background-color:#e03997!important;color:#fff!important}.tabulator.brown{border-top:.2em solid #a5673f}.tabulator.inverted.brown{background-color:#a5673f!important;color:#fff!important}.tabulator.grey{border-top:.2em solid #767676}.tabulator.inverted.grey{background-color:#767676!important;color:#fff!important}.tabulator.black{border-top:.2em solid #1b1c1d}.tabulator.inverted.black{background-color:#1b1c1d!important;color:#fff!important}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content{padding:1em}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:20px}.tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:1em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content{padding:1.5em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:26px}.tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:1.5em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .7em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:12px}.tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.5em .7em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content{padding:.4em .6em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:10px}.tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell{padding:.4em .6em}.tabulator-row{border-bottom:1px solid rgba(34,36,38,.1)}.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background:#e0e0e0!important;box-shadow:inset 0 0 0 rgba(0,0,0,.87);color:rgba(0,0,0,.87)!important}}.tabulator-row.tabulator-selected{background-color:#9abcea!important}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc!important;cursor:pointer}}.tabulator-row.tabulator-moving{pointer-events:none!important}.tabulator-row .tabulator-cell{border-right:none;padding:.78571em;vertical-align:middle}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{color:#fff}.tabulator-row.tabulator-group{background:#fafafa}.tabulator-row.tabulator-group span{color:#666}.tabulator-menu{background:#fff}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#f9fafb}}.tabulator-edit-select-list{background:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}@media (hover:hover) and (pointer:fine){.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{color:#fff}}.tabulator-edit-select-list .tabulator-edit-select-list-notice{color:inherit}.tabulator-print-table .tabulator-print-table-group{background:#fafafa}.tabulator-print-table .tabulator-print-table-group span{color:#666} -/*# sourceMappingURL=tabulator_semanticui.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.min.css.map deleted file mode 100644 index c579bcd..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_semanticui.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_semanticui.scss"],"names":[],"mappings":"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","file":"tabulator_semanticui.min.css","sourcesContent":["/*******************************\n Site Settings\n*******************************/\n/*-------------------\n Fonts\n--------------------*/\n/*-------------------\n Base Sizes\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\n Exact Pixel Values\n--------------------*/\n/*\n These are used to specify exact pixel values in em\n for things like borders that remain constantly\n sized as emSize adjusts\n\n Since there are many more sizes than names for sizes,\n these are named by their original pixel values.\n\n*/\n/*-------------------\n Border Radius\n--------------------*/\n/* See Power-user section below\n for explanation of $px variables\n*/\n/*-------------------\n Site Colors\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\n Alpha Colors\n--------------------*/\n/*-------------------\n Brand Colors\n--------------------*/\n/*--------------\n Page Heading\n---------------*/\n/*-------------------\n Page\n--------------------*/\n/*--------------\n Form Input\n---------------*/\n/* This adjusts the default form input across all elements */\n/* Input Text Color */\n/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */\n/*-------------------\n Focused Input\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\n Sizes\n--------------------*/\n/*\n Sizes are all expressed in terms of 14px/em (default em)\n This ensures these \"ratios\" remain constant despite changes in EM\n*/\n/*-------------------\n Paragraph\n--------------------*/\n/*-------------------\n Links\n--------------------*/\n/*-------------------\n Highlighted Text\n--------------------*/\n/*-------------------\n Em Sizes\n--------------------*/\n/*\n This rounds $size values to the closest pixel then expresses that value in (r)em.\n This ensures all size values round to exact pixels\n*/\n/* em */\n/* rem */\n/*-------------------\n Loader\n--------------------*/\n/*-------------------\n Grid\n--------------------*/\n/*-------------------\n Transitions\n--------------------*/\n/*-------------------\n Breakpoints\n--------------------*/\n/* Columns */\n/*******************************\n Power-User\n*******************************/\n/*-------------------\n Emotive Colors\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\n Paths\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\n Icons\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\n Neutral Text\n--------------------*/\n/*-------------------\n Brand Colors\n--------------------*/\n/*-------------------\n Borders\n--------------------*/\n/*-------------------\n Accents\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\n Derived Values\n--------------------*/\n/* Loaders Position Offset */\n/* Rendered Scrollbar Width */\n/* Maximum Single Character Glyph Width, aka Capital \"W\" */\n/* Used to match floats with text */\n/* Header Spacing */\n/* Minimum Mobile Width */\n/* Positive / Negative Dupes */\n/* Responsive */\n/*******************************\n States\n*******************************/\n/*-------------------\n Disabled\n--------------------*/\n/*-------------------\n Hover\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Focus\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Down (:active)\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\n Active\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\n Table\n*******************************/\n/*-------------------\n Element\n--------------------*/\n/*--------------\n Parts\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\n Types\n--------------------*/\n/* Definition */\n/*--------------\n Couplings\n---------------*/\n/*--------------\n States\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\n Types\n---------------*/\n/* Attached */\n/* Striped */\n/* Selectable */\n/* Sortable */\n/* Colors */\n/* Inverted */\n/* Basic */\n/* Padded */\n/* Compact */\n/* Sizes */\n.tabulator {\n position: relative;\n border: 1px solid rgba(34, 36, 38, 0.15);\n background-color: #FFFFFF;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #F9FAFB;\n color: rgba(0, 0, 0, 0.87);\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #ddd;\n background: #F9FAFB;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #dae1e7;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #dae1e7; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #DB2828; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n width: 100%;\n margin: 1em 0em;\n border: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n border-radius: 0.28571rem;\n color: rgba(0, 0, 0, 0.87);\n /* Red */\n /* Orange */\n /* Yellow */\n /* Olive */\n /* Green */\n /* Teal */\n /* Blue */\n /* Violet */\n /* Purple */\n /* Pink */\n /* Brown */\n /* Grey */\n /* Black */ }\n .tabulator .tabulator-header {\n border-right: none;\n border-bottom: 1px solid rgba(34, 36, 38, 0.1);\n background-color: #F9FAFB;\n box-shadow: none;\n color: rgba(0, 0, 0, 0.87);\n font-style: none;\n font-weight: bold;\n text-transform: none; }\n .tabulator .tabulator-header .tabulator-col {\n border-right: none;\n background-color: #F9FAFB; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.92857em 0.78571em; }\n .tabulator .tabulator-tableholder .tabulator-table {\n background-color: transparent; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-footer {\n padding: 0.78571em 0.78571em;\n border-top: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n background: #F9FAFB;\n text-align: right;\n color: rgba(0, 0, 0, 0.87);\n font-style: normal;\n font-weight: normal;\n text-transform: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -0.78571em -0.78571em 0.78571em -0.78571em;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -0.78571em;\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive {\n box-shadow: 0px 0px 0px #A3C293 inset;\n background: #FCFFF5 !important;\n color: #21BA45 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.positive:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.positive:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.negative:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.negative:hover {\n background: #ffe7e7 !important;\n color: #d41616 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.error:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.error:hover {\n background: #ffe7e7 !important;\n color: #d12323 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning {\n box-shadow: 0px 0px 0px #C9BA9B inset;\n background: #FFFAF3 !important;\n color: #F2C037 !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.warning:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.warning:hover {\n background: #fff4e4 !important;\n color: #f1bb29 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active:hover, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important; } }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell.active {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.disabled:hover {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2); } }\n .tabulator.inverted {\n background: #333333;\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-header {\n background-color: rgba(0, 0, 0, 0.15);\n border-color: rgba(255, 255, 255, 0.1) !important;\n color: rgba(255, 255, 255, 0.9); }\n .tabulator.inverted .tabulator-header .tabulator-col {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row {\n color: rgba(255, 255, 255, 0.9);\n border: none; }\n .tabulator.inverted .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-color: rgba(255, 255, 255, 0.1) !important; }\n .tabulator.inverted .tabulator-footer {\n background: #FFFFFF; }\n .tabulator.striped .tabulator-row:nth-child(even) {\n background-color: #f2f2f2; }\n .tabulator.celled {\n border: 1px solid rgba(34, 36, 38, 0.15); }\n .tabulator.celled .tabulator-header .tabulator-col {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator.celled .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator[class*=\"single line\"] .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: none; }\n .tabulator.red {\n border-top: 0.2em solid #DB2828; }\n .tabulator.inverted.red {\n background-color: #DB2828 !important;\n color: #FFFFFF !important; }\n .tabulator.orange {\n border-top: 0.2em solid #F2711C; }\n .tabulator.inverted.orange {\n background-color: #F2711C !important;\n color: #FFFFFF !important; }\n .tabulator.yellow {\n border-top: 0.2em solid #FBBD08; }\n .tabulator.inverted.yellow {\n background-color: #FBBD08 !important;\n color: #FFFFFF !important; }\n .tabulator.olive {\n border-top: 0.2em solid #B5CC18; }\n .tabulator.inverted.olive {\n background-color: #B5CC18 !important;\n color: #FFFFFF !important; }\n .tabulator.green {\n border-top: 0.2em solid #21BA45; }\n .tabulator.inverted.green {\n background-color: #21BA45 !important;\n color: #FFFFFF !important; }\n .tabulator.teal {\n border-top: 0.2em solid #00B5AD; }\n .tabulator.inverted.teal {\n background-color: #00B5AD !important;\n color: #FFFFFF !important; }\n .tabulator.blue {\n border-top: 0.2em solid #2185D0; }\n .tabulator.inverted.blue {\n background-color: #2185D0 !important;\n color: #FFFFFF !important; }\n .tabulator.violet {\n border-top: 0.2em solid #6435C9; }\n .tabulator.inverted.violet {\n background-color: #6435C9 !important;\n color: #FFFFFF !important; }\n .tabulator.purple {\n border-top: 0.2em solid #A333C8; }\n .tabulator.inverted.purple {\n background-color: #A333C8 !important;\n color: #FFFFFF !important; }\n .tabulator.pink {\n border-top: 0.2em solid #E03997; }\n .tabulator.inverted.pink {\n background-color: #E03997 !important;\n color: #FFFFFF !important; }\n .tabulator.brown {\n border-top: 0.2em solid #A5673F; }\n .tabulator.inverted.brown {\n background-color: #A5673F !important;\n color: #FFFFFF !important; }\n .tabulator.grey {\n border-top: 0.2em solid #767676; }\n .tabulator.inverted.grey {\n background-color: #767676 !important;\n color: #FFFFFF !important; }\n .tabulator.black {\n border-top: 0.2em solid #1B1C1D; }\n .tabulator.inverted.black {\n background-color: #1B1C1D !important;\n color: #FFFFFF !important; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1em 1em; }\n .tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 20px; }\n .tabulator.padded .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1em 1em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1.5em 1.5em; }\n .tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 26px; }\n .tabulator.padded.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1.5em 1.5em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.7em; }\n .tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 12px; }\n .tabulator.compact .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.5em 0.7em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.4em 0.6em; }\n .tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 10px; }\n .tabulator.compact.very .tabulator-tableholder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.4em 0.6em; }\n\n.tabulator-row {\n border-bottom: 1px solid rgba(34, 36, 38, 0.1); }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA !important; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC !important;\n cursor: pointer; } }\n .tabulator-row.tabulator-moving {\n pointer-events: none !important; }\n .tabulator-row .tabulator-cell {\n padding: 0.78571em 0.78571em;\n border-right: none;\n vertical-align: middle; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n color: #fff; }\n .tabulator-row.tabulator-group {\n background: #fafafa; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-menu {\n background: #FFFFFF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n background: #F9FAFB; } }\n\n.tabulator-edit-select-list {\n background: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #FFFFFF; }\n .tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n color: #FFFFFF; } }\n .tabulator-edit-select-list .tabulator-edit-select-list-notice {\n color: inherit; }\n\n.tabulator-print-table .tabulator-print-table-group {\n background: #fafafa; }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #666; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_simple.css b/tmp/tabulator-5.6.1/dist/css/tabulator_simple.css deleted file mode 100644 index 057dabd..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_simple.css +++ /dev/null @@ -1,1321 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #999; - background-color: #fff; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #999; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #ddd; - background: #fff; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #999; - background: #e6e6e6; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #ddd; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #e6e6e6; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #666; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #666; - color: #666; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: white !important; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: white !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #f2f2f2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #ddd; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #2975DD; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #2975DD; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #2975DD; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #999; - background-color: #fff; - color: #555; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: white !important; - border-bottom: 1px solid #ddd; - border-top: 1px solid #ddd; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: white !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #555; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #d00; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #9ABCEA; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #769BCC; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #D6D6D6; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #3876ca; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #ddd; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #9ABCEA; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #ddd; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #fff; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #ddd; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #ddd; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #ddd; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #ddd; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #ddd; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #ddd; - border-bottom: 2px solid #ddd; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #ddd; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #666; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #666; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - border: none; - background-color: #fff; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - background: #f2f2f2 !important; - border-bottom: 1px solid #999; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #f2f2f2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #000; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - background: #f2f2f2 !important; - border-bottom: 1px solid #fff; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: #f2f2f2 !important; -} - -.tabulator-row { - border-bottom: 1px solid #ddd; -} - -.tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator-row.tabulator-group span { - color: #666; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #666; -} - -/*# sourceMappingURL=tabulator_simple.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_simple.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_simple.css.map deleted file mode 100644 index 3091baf..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_simple.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"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","file":"tabulator_simple.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #ddd;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fff; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #f2f2f2 !important;\n border-bottom: 1px solid #999; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n background: #f2f2f2 !important;\n border-bottom: 1px solid #fff; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #f2f2f2 !important; }\n\n.tabulator-row {\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #666; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_simple.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_simple.min.css deleted file mode 100644 index 2add1d0..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_simple.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{border:1px solid #999;font-size:14px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#fff;border-bottom:1px solid #999;box-sizing:border-box;color:#555;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#fff;border-right:1px solid #ddd;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#e6e6e6;border:1px solid #999;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#d6d6d6;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #ddd;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#e6e6e6;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #666;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#f2f2f2!important;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#2975dd;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #2975dd;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#fff;border-top:1px solid #999;color:#555;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#555;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{box-sizing:border-box;min-height:22px;position:relative}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #ddd;border-top:1px solid #ddd;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#d6d6d6;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #ddd;border-top:1px solid #ddd;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #ddd;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9abcea}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #ddd;border-bottom-left-radius:1px;border-left:2px solid #ddd;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:14px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#fff;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:14px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #ddd;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #ddd;border-bottom-left-radius:1px;border-left:2px solid #ddd;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #666;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{background-color:#fff;border:none}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #999}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator-row{border-bottom:1px solid #ddd}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row.tabulator-group span{color:#666}.tabulator-print-table .tabulator-print-table-group span{color:#666;margin-left:10px} -/*# sourceMappingURL=tabulator_simple.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_simple.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_simple.min.css.map deleted file mode 100644 index 83d4bcb..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_simple.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"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","file":"tabulator_simple.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #999;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #ddd;\n background: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #e6e6e6;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #e6e6e6; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #666; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #666;\n color: #666; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #2975DD; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #2975DD;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #2975DD; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #999;\n background-color: #fff;\n color: #555;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: white !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #d00; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #9ABCEA; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #D6D6D6;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #3876ca;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #ddd;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #9ABCEA; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ddd;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #fff; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #ddd;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #ddd; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #ddd;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #ddd; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n background-color: #fff; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #f2f2f2 !important;\n border-bottom: 1px solid #999; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #f2f2f2 !important; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #000; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n background: #f2f2f2 !important;\n border-bottom: 1px solid #fff; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #f2f2f2 !important; }\n\n.tabulator-row {\n border-bottom: 1px solid #ddd; }\n .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator-row.tabulator-group span {\n color: #666; }\n\n.tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #666; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_site.css b/tmp/tabulator-5.6.1/dist/css/tabulator_site.css deleted file mode 100644 index 7af39d8..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_site.css +++ /dev/null @@ -1,1406 +0,0 @@ -.tabulator { - position: relative; - border: 1px solid #222; - background-color: #fff; - font-size: 14px; - text-align: left; - overflow: hidden; - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); -} - -.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableholder .tabulator-table { - min-width: 100%; -} - -.tabulator[tabulator-layout="fitDataTable"] { - display: inline-block; -} - -.tabulator.tabulator-block-select { - user-select: none; -} - -.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) { - user-select: none; -} - -.tabulator .tabulator-header { - position: relative; - box-sizing: border-box; - width: 100%; - border-bottom: 1px solid #3FB449; - background-color: #222; - color: #fff; - font-weight: bold; - white-space: nowrap; - overflow: hidden; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - outline: none; -} - -.tabulator .tabulator-header.tabulator-header-hidden { - display: none; -} - -.tabulator .tabulator-header .tabulator-header-contents { - position: relative; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - flex-direction: column; - justify-content: flex-start; - border-right: 1px solid #aaa; - background: #222; - text-align: left; - vertical-align: bottom; - overflow: hidden; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-moving { - position: absolute; - border: 1px solid #3FB449; - background: #090909; - pointer-events: none; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight { - background-color: #70c28e; - color: #000000; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-range-selected { - background-color: #269b51; - color: #FFFFFF; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button { - padding: 0 8px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover { - cursor: pointer; - opacity: .6; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder { - position: relative; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title { - box-sizing: border-box; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - border: 1px solid #999; - padding: 1px; - background: #fff; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - display: flex; - align-items: center; - position: absolute; - top: 0; - bottom: 0; - right: 4px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - position: relative; - display: flex; - border-top: 1px solid #aaa; - overflow: hidden; - margin-right: -1px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea { - height: auto !important; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg { - margin-top: 3px; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear { - width: 0; - height: 0; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 25px; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover { - cursor: pointer; - background-color: #090909; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter { - color: #bbb; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #bbb; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter { - color: #3FB449; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="ascending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-top: none; - border-bottom: 6px solid #3FB449; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter { - color: #3FB449; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid #555; - } -} - -.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="descending"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow { - border-bottom: none; - border-top: 6px solid #3FB449; - color: #3FB449; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - display: flex; - align-items: center; - justify-content: center; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title { - transform: rotate(180deg); -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-top: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; -} - -.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; -} - -.tabulator .tabulator-header .tabulator-frozen { - position: sticky; - left: 0; - z-index: 11; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - background: #2f2f2f !important; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #2f2f2f !important; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder { - display: inline-block; -} - -.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty { - display: none; -} - -.tabulator .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator .tabulator-tableholder:focus { - outline: none; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - min-width: 100%; - width: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode="virtual"] { - min-height: 100%; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - padding: 10px; - color: #ccc; - font-weight: bold; - font-size: 20px; - white-space: normal; -} - -.tabulator .tabulator-tableholder .tabulator-table { - position: relative; - display: inline-block; - background-color: #fff; - white-space: nowrap; - overflow: visible; - color: #333; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #e2e2e2 !important; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top { - border-bottom: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom { - border-top: 2px solid #aaa; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid #269b51; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: #269b51; - border-radius: 999px; -} - -.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid #269b51; -} - -.tabulator .tabulator-footer { - border-top: 1px solid #3FB449; - background-color: #222; - color: #222; - font-weight: bold; - white-space: nowrap; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator .tabulator-footer .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - padding: 5px 10px; -} - -.tabulator .tabulator-footer .tabulator-footer-contents:empty { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - text-align: left; - background: #2f2f2f !important; - border-bottom: 1px solid #aaa; - border-top: 1px solid #aaa; - overflow: hidden; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - display: inline-block; - background: #2f2f2f !important; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle { - display: none; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder:only-child { - margin-bottom: -5px; - border-bottom: none; -} - -.tabulator .tabulator-footer > * + .tabulator-page-counter { - margin-left: 10px; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - font-weight: normal; -} - -.tabulator .tabulator-footer .tabulator-paginator { - flex: 1; - text-align: right; - color: #222; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator .tabulator-footer .tabulator-page-size { - display: inline-block; - margin: 0 5px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; -} - -.tabulator .tabulator-footer .tabulator-pages { - margin: 0 7px; -} - -.tabulator .tabulator-footer .tabulator-page { - display: inline-block; - margin: 0 2px; - padding: 2px 5px; - border: 1px solid #aaa; - border-radius: 3px; - background: rgba(255, 255, 255, 0.2); -} - -.tabulator .tabulator-footer .tabulator-page.active { - color: #3FB449; -} - -.tabulator .tabulator-footer .tabulator-page:disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-footer .tabulator-page:not(disabled):hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } -} - -.tabulator .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - margin-left: -3px; - margin-right: -3px; - z-index: 11; - vertical-align: middle; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator .tabulator-col-resize-handle:hover { - cursor: ew-resize; - } -} - -.tabulator .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-right: 0; -} - -.tabulator .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - top: 0; - left: 0; - z-index: 100; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; -} - -.tabulator .tabulator-alert .tabulator-alert-msg { - display: inline-block; - margin: 0 auto; - padding: 10px 20px; - border-radius: 10px; - background: #fff; - font-weight: bold; - font-size: 16px; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; -} - -.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error { - border: 4px solid #D00; - color: #590000; -} - -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: 22px; - background-color: #fff; -} - -.tabulator-row.tabulator-row-even { - background-color: #EFEFEF; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selectable:hover { - background-color: #bbb; - cursor: pointer; - } -} - -.tabulator-row.tabulator-selected { - background-color: #70c28e; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-selected:hover { - background-color: #269b51; - cursor: pointer; - } -} - -.tabulator-row.tabulator-row-moving { - border: 1px solid #000; - background: #fff; -} - -.tabulator-row.tabulator-moving { - position: absolute; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; - pointer-events: none; - z-index: 15; -} - -.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header { - background-color: #70c28e; - color: #000000; -} - -.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #269b51; - color: #FFFFFF; -} - -.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header { - background-color: #269b51; - color: #FFFFFF; -} - -.tabulator-row .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; -} - -.tabulator-row .tabulator-row-resize-handle.prev { - top: 0; - bottom: auto; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-row-resize-handle:hover { - cursor: ns-resize; - } -} - -.tabulator-row .tabulator-responsive-collapse { - box-sizing: border-box; - padding: 5px; - border-top: 1px solid #aaa; - border-bottom: 1px solid #aaa; -} - -.tabulator-row .tabulator-responsive-collapse:empty { - display: none; -} - -.tabulator-row .tabulator-responsive-collapse table { - font-size: 14px; -} - -.tabulator-row .tabulator-responsive-collapse table tr td { - position: relative; -} - -.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type { - padding-right: 10px; -} - -.tabulator-row .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - border-right: 1px solid #aaa; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-frozen { - display: inline-block; - position: sticky; - left: 0; - background-color: inherit; - z-index: 11; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-right: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-left: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell.tabulator-editing { - border: 1px solid #1D68CD; - outline: none; - padding: 0; -} - -.tabulator-row .tabulator-cell.tabulator-editing input, -.tabulator-row .tabulator-cell.tabulator-editing select { - border: 1px; - background: transparent; - outline: none; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail { - border: 1px solid #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-validation-fail input, -.tabulator-row .tabulator-cell.tabulator-validation-fail select { - border: 1px; - background: transparent; - color: #dd0000; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box { - width: 80%; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; -} - -.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) { - background-color: #70c28e; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - height: 15px; - width: 15px; - border-radius: 20px; - background: #666; - color: #fff; - font-weight: bold; - font-size: 1.1em; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover { - opacity: .7; - cursor: pointer; - } -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close { - display: initial; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg { - stroke: #fff; -} - -.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close { - display: none; -} - -.tabulator-row .tabulator-cell .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - border-radius: 14px; -} - -.tabulator-row.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #3FB449; - border-bottom: 0; -} - -.tabulator-row.tabulator-group.tabulator-group-level-1 { - padding-left: 30px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-2 { - padding-left: 50px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-3 { - padding-left: 70px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-4 { - padding-left: 90px; -} - -.tabulator-row.tabulator-group.tabulator-group-level-5 { - padding-left: 110px; -} - -.tabulator-row.tabulator-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-row.tabulator-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #3FB449; - vertical-align: middle; -} - -.tabulator-row.tabulator-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - background: #fff; - border: 1px solid #aaa; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - padding: 3px 5px; - border-radius: 2px; - box-shadow: none; - font-size: 12px; - pointer-events: none; -} - -.tabulator-menu .tabulator-menu-item { - position: relative; - box-sizing: border-box; - padding: 5px 10px; - user-select: none; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled { - opacity: .5; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: #EFEFEF; - } -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu { - padding-right: 25px; -} - -.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after { - display: inline-block; - position: absolute; - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - content: ''; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #aaa; - vertical-align: top; - transform: rotate(45deg); -} - -.tabulator-menu .tabulator-menu-separator { - border-top: 1px solid #aaa; -} - -.tabulator-edit-list { - max-height: 200px; - font-size: 14px; - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} - -.tabulator-edit-list .tabulator-edit-list-item { - padding: 4px; - color: #333; - outline: none; -} - -.tabulator-edit-list .tabulator-edit-list-item.active { - color: #fff; - background: #1D68CD; -} - -.tabulator-edit-list .tabulator-edit-list-item.active.focused { - outline: 1px solid rgba(255, 255, 255, 0.5); -} - -.tabulator-edit-list .tabulator-edit-list-item.focused { - outline: 1px solid #1D68CD; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-edit-list .tabulator-edit-list-item:hover { - cursor: pointer; - color: #fff; - background: #1D68CD; - } -} - -.tabulator-edit-list .tabulator-edit-list-placeholder { - padding: 4px; - color: #333; - text-align: center; -} - -.tabulator-edit-list .tabulator-edit-list-group { - border-bottom: 1px solid #aaa; - padding: 4px; - padding-top: 6px; - color: #333; - font-weight: bold; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 { - padding-left: 12px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 { - padding-left: 20px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 { - padding-left: 28px; -} - -.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, -.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 { - padding-left: 36px; -} - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col { - text-align: initial; - border-left: 1px solid #aaa; - border-right: initial; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { - padding-right: 0; - padding-left: 25px; -} - -.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter { - left: 8px; - right: initial; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell { - border-right: initial; - border-left: 1px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - border-left: initial; - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { - border-left: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right { - border-right: 2px solid #aaa; -} - -.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; -} - -.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder { - text-align: initial; -} - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - height: 9px; - width: 7px; - margin-top: -9px; - margin-right: 5px; - border-bottom-left-radius: 1px; - border-left: 2px solid #aaa; - border-bottom: 2px solid #aaa; -} - -.tabulator-print-table .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid #aaa; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - min-width: 100%; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid #3FB449; - border-bottom: 0; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td { - padding-left: 30px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td { - padding-left: 50px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td { - padding-left: 70px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td { - padding-left: 90px !important; -} - -.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td { - padding-left: 110px !important; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle { - display: inline-block; -} - -.tabulator-print-table .tabulator-print-table-group .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid #3FB449; - vertical-align: middle; -} - -.tabulator-print-table .tabulator-print-table-group span { - margin-left: 10px; - color: #d00; -} - -.tabulator-print-table .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - height: 11px; - width: 11px; - margin-right: 5px; - border: 1px solid #333; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - overflow: hidden; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-data-tree-control:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: transparent; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - height: 7px; - width: 1px; - background: #333; -} - -.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - height: 1px; - width: 7px; - background: #333; -} - -.tabulator { - border: none; - border-bottom: 5px solid #222; -} - -.tabulator[tabulator-layout="fitColumns"] .tabulator-row .tabulator-cell:last-of-type { - border-right: none; -} - -.tabulator .tabulator-header { - border-bottom: 3px solid #3FB449; -} - -.tabulator .tabulator-header .tabulator-col { - background-color: #222; -} - -.tabulator .tabulator-header .tabulator-col .tabulator-col-content { - padding: 8px; -} - -.tabulator .tabulator-header .tabulator-calcs-holder { - background: #3c3c3c !important; - border-top: 1px solid #aaa; - border-bottom: none; -} - -.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row { - background: #3c3c3c !important; -} - -.tabulator .tabulator-tableholder .tabulator-placeholder span { - color: #3FB449; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs { - font-weight: bold; - background: #484848 !important; - color: #fff; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-top { - border-bottom: none; -} - -.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-bottom { - border-top: none; -} - -.tabulator .tabulator-footer { - padding: 5px 10px; - padding-top: 8px; - border-top: 3px solid #3FB449; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder { - margin: -8px -10px 8px -10px; - background: #3c3c3c !important; - border-top: none; - border-bottom: 1px solid #aaa; -} - -.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row { - background: #3c3c3c !important; - color: #fff !important; -} - -.tabulator .tabulator-footer .tabulator-paginator label { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page-counter { - color: #fff; -} - -.tabulator .tabulator-footer .tabulator-page { - background-color: #fff; - color: #222; - font-family: inherit; - font-weight: inherit; - font-size: inherit; -} - -.tabulator-row .tabulator-cell { - padding: 6px; -} - -.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar { - background: #3FB449; -} - -.tabulator-row.tabulator-group { - border-right: 1px solid #aaa; - border-top: 1px solid #000; - border-bottom: 2px solid #3FB449; - background: #222; - color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-row.tabulator-group:hover { - background-color: #090909; - } -} - -.tabulator-row.tabulator-group span { - color: #3FB449; -} - -.tabulator-print-table { - border-collapse: collapse; -} - -.tabulator-print-table .tabulator-print-table-group { - border-bottom: 2px solid #3FB449; - background: #222; - color: #fff; -} - -@media (hover: hover) and (pointer: fine) { - .tabulator-print-table .tabulator-print-table-group:hover { - background-color: #090909; - } -} - -.tabulator-print-table .tabulator-print-table-group span { - color: #3FB449; -} - -/*# sourceMappingURL=tabulator_site.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_site.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_site.css.map deleted file mode 100644 index 0bf269c..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_site.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"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","file":"tabulator_site.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #222;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #3FB449;\n background-color: #222;\n color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #222;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #3FB449;\n background: #090909;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #70c28e;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #269b51;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #090909; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #3FB449;\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: #2f2f2f !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #2f2f2f !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #269b51; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #269b51;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #269b51; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #3FB449;\n background-color: #222;\n color: #222;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #2f2f2f !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #2f2f2f !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #222;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #3FB449; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #70c28e; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #269b51;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #70c28e;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #269b51;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #269b51;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #70c28e; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3FB449;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3FB449;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3FB449;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3FB449;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n border-bottom: 5px solid #222; }\n .tabulator[tabulator-layout=\"fitColumns\"] .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator .tabulator-header {\n border-bottom: 3px solid #3FB449; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #222; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #3c3c3c !important;\n border-top: 1px solid #aaa;\n border-bottom: none; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #3c3c3c !important; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #3FB449; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #484848 !important;\n color: #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-top {\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-bottom {\n border-top: none; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n padding-top: 8px;\n border-top: 3px solid #3FB449; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -8px -10px 8px -10px;\n background: #3c3c3c !important;\n border-top: none;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #3c3c3c !important;\n color: #fff !important; }\n .tabulator .tabulator-footer .tabulator-paginator label {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page {\n background-color: #fff;\n color: #222;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n\n.tabulator-row .tabulator-cell {\n padding: 6px; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n background: #3FB449; }\n\n.tabulator-row.tabulator-group {\n border-right: 1px solid #aaa;\n border-top: 1px solid #000;\n border-bottom: 2px solid #3FB449;\n background: #222;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n background-color: #090909; } }\n .tabulator-row.tabulator-group span {\n color: #3FB449; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n border-bottom: 2px solid #3FB449;\n background: #222;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n background-color: #090909; } }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #3FB449; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_site.min.css b/tmp/tabulator-5.6.1/dist/css/tabulator_site.min.css deleted file mode 100644 index 2b6e1a4..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_site.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.tabulator{background-color:#fff;border:1px solid #222;font-size:14px;overflow:hidden;position:relative;text-align:left;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select,.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{background-color:#222;border-bottom:1px solid #3fb449;box-sizing:border-box;color:#fff;font-weight:700;outline:none;overflow:hidden;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap;width:100%}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{background:#222;border-right:1px solid #aaa;box-sizing:border-box;display:inline-flex;flex-direction:column;justify-content:flex-start;overflow:hidden;position:relative;text-align:left;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col.tabulator-moving{background:#090909;border:1px solid #3fb449;pointer-events:none;position:absolute}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#70c28e;color:#000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#269b51;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;padding:4px;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{text-overflow:clip;white-space:normal}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{background:#fff;border:1px solid #999;box-sizing:border-box;padding:1px;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{align-items:center;bottom:0;display:flex;position:absolute;right:4px;top:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-left:6px solid transparent;border-right:6px solid transparent;height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{border-top:1px solid #aaa;display:flex;margin-right:-1px;overflow:hidden;position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{box-sizing:border-box;margin-top:2px;position:relative;text-align:center;width:100%}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{height:0;width:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:#090909;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #bbb;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#3fb449}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-bottom:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:6px solid #3fb449;border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#3fb449}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{border-top:6px solid #555;cursor:pointer}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #3fb449;color:#3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{align-items:center;display:flex;justify-content:center;text-orientation:mixed;writing-mode:vertical-rl}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-bottom:20px;padding-right:0}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{bottom:auto;justify-content:center;left:0;right:0;top:4px}.tabulator .tabulator-header .tabulator-frozen{left:0;position:sticky;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{background:#2f2f2f!important;border-bottom:1px solid #aaa;box-sizing:border-box;display:inline-block}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#2f2f2f!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{-webkit-overflow-scrolling:touch;overflow:auto;position:relative;white-space:nowrap;width:100%}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{align-items:center;box-sizing:border-box;display:flex;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{color:#ccc;display:inline-block;font-size:20px;font-weight:700;padding:10px;text-align:center;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{background-color:#fff;color:#333;display:inline-block;overflow:visible;position:relative;white-space:nowrap}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#e2e2e2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-range-overlay{inset:0;pointer-events:none;position:absolute;z-index:10}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{border:1px solid #269b51;box-sizing:border-box;position:absolute}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active:after{background-color:#269b51;border-radius:999px;bottom:-3px;content:"";height:6px;position:absolute;right:-3px;width:6px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{border:2px solid #269b51;box-sizing:border-box;position:absolute}.tabulator .tabulator-footer{background-color:#222;border-top:1px solid #3fb449;color:#222;font-weight:700;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;white-space:nowrap}.tabulator .tabulator-footer .tabulator-footer-contents{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#2f2f2f!important;border-top:1px solid #aaa;box-sizing:border-box;overflow:hidden;text-align:left;width:100%}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#2f2f2f!important;display:inline-block}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{border-bottom:none;margin-bottom:-5px}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{color:#222;flex:1;font-family:inherit;font-size:inherit;font-weight:inherit;text-align:right}.tabulator .tabulator-footer .tabulator-page-size{border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 5px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{background:hsla(0,0%,100%,.2);border:1px solid #aaa;border-radius:3px;display:inline-block;margin:0 2px;padding:2px 5px}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{background:rgba(0,0,0,.2);color:#fff;cursor:pointer}}.tabulator .tabulator-col-resize-handle{display:inline-block;margin-left:-3px;margin-right:-3px;position:relative;vertical-align:middle;width:6px;z-index:11}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{margin-right:0;width:3px}.tabulator .tabulator-alert{align-items:center;background:rgba(0,0,0,.4);display:flex;height:100%;left:0;position:absolute;text-align:center;top:0;width:100%;z-index:100}.tabulator .tabulator-alert .tabulator-alert-msg{background:#fff;border-radius:10px;display:inline-block;font-size:16px;font-weight:700;margin:0 auto;padding:10px 20px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{background-color:#fff;box-sizing:border-box;min-height:22px;position:relative}.tabulator-row.tabulator-row-even{background-color:#efefef}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#70c28e}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#269b51;cursor:pointer}}.tabulator-row.tabulator-row-moving{background:#fff;border:1px solid #000}.tabulator-row.tabulator-moving{border-bottom:1px solid #aaa;border-top:1px solid #aaa;pointer-events:none;position:absolute;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#70c28e;color:#000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header,.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#269b51;color:#fff}.tabulator-row .tabulator-row-resize-handle{bottom:0;height:5px;left:0;position:absolute;right:0}.tabulator-row .tabulator-row-resize-handle.prev{bottom:auto;top:0}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{border-bottom:1px solid #aaa;border-top:1px solid #aaa;box-sizing:border-box;padding:5px}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{border-right:1px solid #aaa;box-sizing:border-box;display:inline-block;outline:none;overflow:hidden;padding:4px;position:relative;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.tabulator-row .tabulator-cell.tabulator-frozen{background-color:inherit;display:inline-block;left:0;position:sticky;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{background:transparent;border:1px;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{background:transparent;border:1px;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{align-items:center;display:inline-flex;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#666;height:3px;margin-top:2px;width:100%}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#70c28e}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom:2px solid #aaa;border-bottom-left-radius:1px;border-left:2px solid #aaa;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{align-items:center;background:#666;border-radius:20px;color:#fff;display:inline-flex;font-size:1.1em;font-weight:700;height:15px;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;width:15px}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{cursor:pointer;opacity:.7}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{border-radius:14px;display:inline-block;height:14px;width:14px}.tabulator-row.tabulator-group{background:#ccc;border-bottom:1px solid #999;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;margin-right:10px}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #3fb449;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-row.tabulator-group span{color:#d00;margin-left:10px}.tabulator-popup-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:inline-block;font-size:14px;overflow-y:auto;position:absolute;z-index:10000}.tabulator-popup{border-radius:3px;padding:5px}.tabulator-tooltip{border-radius:2px;box-shadow:none;font-size:12px;max-width:Min(500px,100%);padding:3px 5px;pointer-events:none}.tabulator-menu .tabulator-menu-item{box-sizing:border-box;padding:5px 10px;position:relative;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{background:#efefef;cursor:pointer}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{border-color:#aaa;border-style:solid;border-width:1px 1px 0 0;content:"";display:inline-block;height:7px;position:absolute;right:10px;top:calc(5px + .4em);transform:rotate(45deg);vertical-align:top;width:7px}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{-webkit-overflow-scrolling:touch;font-size:14px;max-height:200px;overflow-y:auto}.tabulator-edit-list .tabulator-edit-list-item{color:#333;outline:none;padding:4px}.tabulator-edit-list .tabulator-edit-list-item.active{background:#1d68cd;color:#fff}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{background:#1d68cd;color:#fff;cursor:pointer}}.tabulator-edit-list .tabulator-edit-list-placeholder{color:#333;padding:4px;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;color:#333;font-weight:700;padding:6px 4px 4px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{direction:rtl;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{border-left:1px solid #aaa;border-right:initial;text-align:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-left:-1px;margin-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-left:25px;padding-right:0}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa;margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-left:5px;margin-right:0}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{margin-left:0;margin-right:-3px;width:3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table .tabulator-data-tree-branch{border-bottom:2px solid #aaa;border-bottom-left-radius:1px;border-left:2px solid #aaa;display:inline-block;height:9px;margin-right:5px;margin-top:-9px;vertical-align:middle;width:7px}.tabulator-print-table .tabulator-print-table-group{background:#ccc;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;box-sizing:border-box;font-weight:700;min-width:100%;padding:5px 5px 5px 10px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:rgba(0,0,0,.1);cursor:pointer}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{border-bottom:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;margin-right:10px}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{border-bottom:6px solid transparent;border-left:6px solid #3fb449;border-right:0;border-top:6px solid transparent;display:inline-block;height:0;margin-right:16px;vertical-align:middle;width:0}.tabulator-print-table .tabulator-print-table-group span{color:#d00;margin-left:10px}.tabulator-print-table .tabulator-data-tree-control{align-items:center;background:rgba(0,0,0,.1);border:1px solid #333;border-radius:2px;display:inline-flex;height:11px;justify-content:center;margin-right:5px;overflow:hidden;vertical-align:middle;width:11px}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{background:rgba(0,0,0,.2);cursor:pointer}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{background:transparent;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{background:#333;display:inline-block;height:7px;position:relative;width:1px}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{background:#333;content:"";height:1px;left:-3px;position:absolute;top:3px;width:7px}.tabulator{border:none;border-bottom:5px solid #222}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator .tabulator-header{border-bottom:3px solid #3fb449}.tabulator .tabulator-header .tabulator-col{background-color:#222}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:8px}.tabulator .tabulator-header .tabulator-calcs-holder{background:#3c3c3c!important;border-bottom:none;border-top:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#3fb449}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{background:#484848!important;color:#fff;font-weight:700}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-top{border-bottom:none}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-bottom{border-top:none}.tabulator .tabulator-footer{border-top:3px solid #3fb449;padding:8px 10px 5px}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#3c3c3c!important;border-bottom:1px solid #aaa;border-top:none;margin:-8px -10px 8px}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!important}.tabulator .tabulator-footer .tabulator-page-counter,.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page{background-color:#fff;color:#222;font-family:inherit;font-size:inherit;font-weight:inherit}.tabulator-row .tabulator-cell{padding:6px}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{background:#3fb449}.tabulator-row.tabulator-group{background:#222;border-bottom:2px solid #3fb449;border-right:1px solid #aaa;border-top:1px solid #000;color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{background-color:#090909}}.tabulator-row.tabulator-group span{color:#3fb449}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{background:#222;border-bottom:2px solid #3fb449;color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{background-color:#090909}}.tabulator-print-table .tabulator-print-table-group span{color:#3fb449} -/*# sourceMappingURL=tabulator_site.min.css.map */ \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/css/tabulator_site.min.css.map b/tmp/tabulator-5.6.1/dist/css/tabulator_site.min.css.map deleted file mode 100644 index 7076256..0000000 --- a/tmp/tabulator-5.6.1/dist/css/tabulator_site.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"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","file":"tabulator_site.min.css","sourcesContent":[".tabulator {\n position: relative;\n border: 1px solid #222;\n background-color: #fff;\n font-size: 14px;\n text-align: left;\n overflow: hidden;\n -webkit-transform: translateZ(0);\n -moz-transform: translateZ(0);\n -ms-transform: translateZ(0);\n -o-transform: translateZ(0);\n transform: translateZ(0); }\n .tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableholder .tabulator-table {\n min-width: 100%; }\n .tabulator[tabulator-layout=\"fitDataTable\"] {\n display: inline-block; }\n .tabulator.tabulator-block-select {\n user-select: none; }\n .tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing) {\n user-select: none; }\n .tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid #3FB449;\n background-color: #222;\n color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n outline: none; }\n .tabulator .tabulator-header.tabulator-header-hidden {\n display: none; }\n .tabulator .tabulator-header .tabulator-header-contents {\n position: relative;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-header-contents .tabulator-headers {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-col {\n display: inline-flex;\n position: relative;\n box-sizing: border-box;\n flex-direction: column;\n justify-content: flex-start;\n border-right: 1px solid #aaa;\n background: #222;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden; }\n .tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #3FB449;\n background: #090909;\n pointer-events: none; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-highlight {\n background-color: #70c28e;\n color: #000000; }\n .tabulator .tabulator-header .tabulator-col.tabulator-range-selected {\n background-color: #269b51;\n color: #FFFFFF; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button {\n padding: 0 8px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover {\n cursor: pointer;\n opacity: .6; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {\n position: relative; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap {\n white-space: normal;\n text-overflow: initial; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button + .tabulator-title-editor {\n width: calc(100% - 22px); }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 4px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n margin-right: -1px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px; }\n .tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover {\n cursor: pointer;\n background-color: #090909; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter {\n color: #bbb; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-bottom: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"ascending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter {\n color: #3FB449; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover {\n cursor: pointer;\n border-top: 6px solid #555; } }\n .tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"descending\"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {\n border-bottom: none;\n border-top: 6px solid #3FB449;\n color: #3FB449; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: flex;\n align-items: center;\n justify-content: center; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n transform: rotate(180deg); }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px; }\n .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {\n justify-content: center;\n left: 0;\n right: 0;\n top: 4px;\n bottom: auto; }\n .tabulator .tabulator-header .tabulator-frozen {\n position: sticky;\n left: 0;\n z-index: 11; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n display: inline-block;\n background: #2f2f2f !important;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #2f2f2f !important; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder {\n display: inline-block; }\n .tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none; }\n .tabulator .tabulator-tableholder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator .tabulator-tableholder:focus {\n outline: none; }\n .tabulator .tabulator-tableholder .tabulator-placeholder {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 100%;\n width: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n min-height: 100%; }\n .tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents {\n display: inline-block;\n text-align: center;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n white-space: normal; }\n .tabulator .tabulator-tableholder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n color: #333; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #e2e2e2 !important; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #aaa; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n pointer-events: none; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range {\n position: absolute;\n box-sizing: border-box;\n border: 1px solid #269b51; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after {\n content: '';\n position: absolute;\n right: -3px;\n bottom: -3px;\n width: 6px;\n height: 6px;\n background-color: #269b51;\n border-radius: 999px; }\n .tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active {\n position: absolute;\n box-sizing: border-box;\n border: 2px solid #269b51; }\n .tabulator .tabulator-footer {\n border-top: 1px solid #3FB449;\n background-color: #222;\n color: #222;\n font-weight: bold;\n white-space: nowrap;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator .tabulator-footer .tabulator-footer-contents {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n padding: 5px 10px; }\n .tabulator .tabulator-footer .tabulator-footer-contents:empty {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n text-align: left;\n background: #2f2f2f !important;\n border-bottom: 1px solid #aaa;\n border-top: 1px solid #aaa;\n overflow: hidden; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n display: inline-block;\n background: #2f2f2f !important; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none; }\n .tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none; }\n .tabulator .tabulator-footer > * + .tabulator-page-counter {\n margin-left: 10px; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n font-weight: normal; }\n .tabulator .tabulator-footer .tabulator-paginator {\n flex: 1;\n text-align: right;\n color: #222;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n .tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px; }\n .tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px; }\n .tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2); }\n .tabulator .tabulator-footer .tabulator-page.active {\n color: #3FB449; }\n .tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-footer .tabulator-page:not(disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff; } }\n .tabulator .tabulator-col-resize-handle {\n position: relative;\n display: inline-block;\n width: 6px;\n margin-left: -3px;\n margin-right: -3px;\n z-index: 11;\n vertical-align: middle; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize; } }\n .tabulator .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-right: 0; }\n .tabulator .tabulator-alert {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center; }\n .tabulator .tabulator-alert .tabulator-alert-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg {\n border: 4px solid #333;\n color: #000; }\n .tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error {\n border: 4px solid #D00;\n color: #590000; }\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: #fff; }\n .tabulator-row.tabulator-row-even {\n background-color: #EFEFEF; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selectable:hover {\n background-color: #bbb;\n cursor: pointer; } }\n .tabulator-row.tabulator-selected {\n background-color: #70c28e; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-selected:hover {\n background-color: #269b51;\n cursor: pointer; } }\n .tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff; }\n .tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15; }\n .tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header {\n background-color: #70c28e;\n color: #000000; }\n .tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #269b51;\n color: #FFFFFF; }\n .tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header {\n background-color: #269b51;\n color: #FFFFFF; }\n .tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px; }\n .tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize; } }\n .tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa; }\n .tabulator-row .tabulator-responsive-collapse:empty {\n display: none; }\n .tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px; }\n .tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative; }\n .tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px; }\n .tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n border-right: 1px solid #aaa;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-frozen {\n display: inline-block;\n position: sticky;\n left: 0;\n background-color: inherit;\n z-index: 11; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa; }\n .tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n outline: none;\n padding: 0; }\n .tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n outline: none; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000; }\n .tabulator-row .tabulator-cell.tabulator-row-handle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666; }\n .tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header) {\n background-color: #70c28e; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty {\n display: inline-block;\n width: 7px; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n cursor: pointer; } }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg {\n stroke: #fff; }\n .tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none; }\n .tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px; }\n .tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3FB449;\n border-bottom: 0; }\n .tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px; }\n .tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px; }\n .tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px; }\n .tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px; }\n .tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px; }\n .tabulator-row.tabulator-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3FB449;\n vertical-align: middle; }\n .tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00; }\n\n.tabulator-popup-container {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #aaa;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000; }\n\n.tabulator-popup {\n padding: 5px;\n border-radius: 3px; }\n\n.tabulator-tooltip {\n max-width: Min(500px, 100%);\n padding: 3px 5px;\n border-radius: 2px;\n box-shadow: none;\n font-size: 12px;\n pointer-events: none; }\n\n.tabulator-menu .tabulator-menu-item {\n position: relative;\n box-sizing: border-box;\n padding: 5px 10px;\n user-select: none; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {\n opacity: .5; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {\n cursor: pointer;\n background: #EFEFEF; } }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu {\n padding-right: 25px; }\n .tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after {\n display: inline-block;\n position: absolute;\n top: calc(5px + .4em);\n right: 10px;\n height: 7px;\n width: 7px;\n content: '';\n border-width: 1px 1px 0 0;\n border-style: solid;\n border-color: #aaa;\n vertical-align: top;\n transform: rotate(45deg); }\n\n.tabulator-menu .tabulator-menu-separator {\n border-top: 1px solid #aaa; }\n\n.tabulator-edit-list {\n max-height: 200px;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch; }\n .tabulator-edit-list .tabulator-edit-list-item {\n padding: 4px;\n color: #333;\n outline: none; }\n .tabulator-edit-list .tabulator-edit-list-item.active {\n color: #fff;\n background: #1D68CD; }\n .tabulator-edit-list .tabulator-edit-list-item.active.focused {\n outline: 1px solid rgba(255, 255, 255, 0.5); }\n .tabulator-edit-list .tabulator-edit-list-item.focused {\n outline: 1px solid #1D68CD; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-edit-list .tabulator-edit-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD; } }\n .tabulator-edit-list .tabulator-edit-list-placeholder {\n padding: 4px;\n color: #333;\n text-align: center; }\n .tabulator-edit-list .tabulator-edit-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2 {\n padding-left: 12px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3 {\n padding-left: 20px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4 {\n padding-left: 28px; }\n .tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5, .tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5 {\n padding-left: 36px; }\n\n.tabulator.tabulator-ltr {\n direction: ltr; }\n\n.tabulator.tabulator-rtl {\n text-align: initial;\n direction: rtl; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col {\n text-align: initial;\n border-left: 1px solid #aaa;\n border-right: initial; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n margin-right: initial;\n margin-left: -1px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-left: 25px; }\n .tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {\n left: 8px;\n right: initial; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell {\n border-right: initial;\n border-left: 1px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n margin-right: initial;\n margin-left: 5px;\n border-bottom-left-radius: initial;\n border-bottom-right-radius: 1px;\n border-left: initial;\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {\n margin-right: initial;\n margin-left: 5px; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {\n border-left: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right {\n border-right: 2px solid #aaa; }\n .tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type {\n width: 3px;\n margin-left: 0;\n margin-right: -3px; }\n .tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder {\n text-align: initial; }\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000; }\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa; }\n .tabulator-print-table .tabulator-print-table-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #aaa;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n min-width: 100%; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1); } }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #3FB449;\n border-bottom: 0; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {\n padding-left: 30px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {\n padding-left: 50px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {\n padding-left: 70px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {\n padding-left: 90px !important; }\n .tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {\n padding-left: 110px !important; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {\n display: inline-block; }\n .tabulator-print-table .tabulator-print-table-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #3FB449;\n vertical-align: middle; }\n .tabulator-print-table .tabulator-print-table-group span {\n margin-left: 10px;\n color: #d00; }\n .tabulator-print-table .tabulator-data-tree-control {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2); } }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333; }\n .tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333; }\n\n.tabulator {\n border: none;\n border-bottom: 5px solid #222; }\n .tabulator[tabulator-layout=\"fitColumns\"] .tabulator-row .tabulator-cell:last-of-type {\n border-right: none; }\n .tabulator .tabulator-header {\n border-bottom: 3px solid #3FB449; }\n .tabulator .tabulator-header .tabulator-col {\n background-color: #222; }\n .tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 8px; }\n .tabulator .tabulator-header .tabulator-calcs-holder {\n background: #3c3c3c !important;\n border-top: 1px solid #aaa;\n border-bottom: none; }\n .tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: #3c3c3c !important; }\n .tabulator .tabulator-tableholder .tabulator-placeholder span {\n color: #3FB449; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #484848 !important;\n color: #fff; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-top {\n border-bottom: none; }\n .tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs-bottom {\n border-top: none; }\n .tabulator .tabulator-footer {\n padding: 5px 10px;\n padding-top: 8px;\n border-top: 3px solid #3FB449; }\n .tabulator .tabulator-footer .tabulator-calcs-holder {\n margin: -8px -10px 8px -10px;\n background: #3c3c3c !important;\n border-top: none;\n border-bottom: 1px solid #aaa; }\n .tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: #3c3c3c !important;\n color: #fff !important; }\n .tabulator .tabulator-footer .tabulator-paginator label {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page-counter {\n color: #fff; }\n .tabulator .tabulator-footer .tabulator-page {\n background-color: #fff;\n color: #222;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit; }\n\n.tabulator-row .tabulator-cell {\n padding: 6px; }\n .tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n background: #3FB449; }\n\n.tabulator-row.tabulator-group {\n border-right: 1px solid #aaa;\n border-top: 1px solid #000;\n border-bottom: 2px solid #3FB449;\n background: #222;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-row.tabulator-group:hover {\n background-color: #090909; } }\n .tabulator-row.tabulator-group span {\n color: #3FB449; }\n\n.tabulator-print-table {\n border-collapse: collapse; }\n .tabulator-print-table .tabulator-print-table-group {\n border-bottom: 2px solid #3FB449;\n background: #222;\n color: #fff; }\n @media (hover: hover) and (pointer: fine) {\n .tabulator-print-table .tabulator-print-table-group:hover {\n background-color: #090909; } }\n .tabulator-print-table .tabulator-print-table-group span {\n color: #3FB449; }\n"]} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/js/jquery_wrapper.js b/tmp/tabulator-5.6.1/dist/js/jquery_wrapper.js deleted file mode 100644 index aef69a3..0000000 --- a/tmp/tabulator-5.6.1/dist/js/jquery_wrapper.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the Tabulator package. - * - * (c) Oliver Folkerd - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * Full Documentation & Demos can be found at: http://olifolkerd.github.io/tabulator/ - * - */ - -(function (root, factory) { - "use strict"; - if (typeof define === 'function' && define.amd) { - define(['jquery', 'tabulator', 'jquery-ui'], factory); - } - else if(typeof module !== 'undefined' && module.exports) { - module.exports = factory( - require('jquery'), - require('tabulator'), - require('jquery-ui') - ); - } - else { - factory(root.jQuery, root.Tabulator); - } -}(this, function ($, Tabulator) { - - $.widget("ui.tabulator", { - _create:function(){ - var options = Object.assign({}, this.options); - var props = []; - - delete options.create; - delete options.disabled; - - this.table = new Tabulator(this.element[0], options); - window.table = this.table; - - //retrieve properties on prototype - props = Object.getOwnPropertyNames(Object.getPrototypeOf(Object.getPrototypeOf(this.table))); - - //retrieve properties added by modules - props = props.concat(Object.getOwnPropertyNames(this.table)); - - //map tabulator functions to jquery wrapper - for(let key of props){ - if(typeof this.table[key] === "function" && key.charAt(0) !== "_"){ - this[key] = this.table[key].bind(this.table); - } - } - }, - - _setOption: function(option, value){ - console.error("Tabulator jQuery wrapper does not support setting options after the table has been instantiated"); - }, - - _destroy: function(option, value){ - this.table.destroy(); - }, - }); -})); diff --git a/tmp/tabulator-5.6.1/dist/js/tabulator.js b/tmp/tabulator-5.6.1/dist/js/tabulator.js deleted file mode 100644 index ce8b256..0000000 --- a/tmp/tabulator-5.6.1/dist/js/tabulator.js +++ /dev/null @@ -1,28005 +0,0 @@ -/* Tabulator v5.6.1 (c) Oliver Folkerd 2024 */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tabulator = factory()); -}(this, (function () { 'use strict'; - - var defaultOptions = { - - debugEventsExternal:false, //flag to console log events - debugEventsInternal:false, //flag to console log events - debugInvalidOptions:true, //allow toggling of invalid option warnings - debugInvalidComponentFuncs:true, //allow toggling of invalid component warnings - debugInitialization:true, //allow toggling of pre initialization function call warnings - debugDeprecation:true, //allow toggling of deprecation warnings - - height:false, //height of tabulator - minHeight:false, //minimum height of tabulator - maxHeight:false, //maximum height of tabulator - - columnHeaderVertAlign:"top", //vertical alignment of column headers - - popupContainer:false, - - columns:[],//store for colum header info - columnDefaults:{}, //store column default props - - data:false, //default starting data - - autoColumns:false, //build columns from data row structure - autoColumnsDefinitions:false, - - nestedFieldSeparator:".", //separator for nested data - - footerElement:false, //hold footer element - - index:"id", //filed for row index - - textDirection:"auto", - - addRowPos:"bottom", //position to insert blank rows, top|bottom - - headerVisible:true, //hide header - - renderVertical:"virtual", - renderHorizontal:"basic", - renderVerticalBuffer:0, // set virtual DOM buffer size - - scrollToRowPosition:"top", - scrollToRowIfVisible:true, - - scrollToColumnPosition:"left", - scrollToColumnIfVisible:true, - - rowFormatter:false, - rowFormatterPrint:null, - rowFormatterClipboard:null, - rowFormatterHtmlOutput:null, - - rowHeight:null, - - placeholder:false, - - dataLoader:true, - dataLoaderLoading:false, - dataLoaderError:false, - dataLoaderErrorTimeout:3000, - - dataSendParams:{}, - - dataReceiveParams:{}, - }; - - class CoreFeature{ - - constructor(table){ - this.table = table; - } - - ////////////////////////////////////////// - /////////////// DataLoad ///////////////// - ////////////////////////////////////////// - - reloadData(data, silent, columnsChanged){ - return this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged); - } - - ////////////////////////////////////////// - ///////////// Localization /////////////// - ////////////////////////////////////////// - - langText(){ - return this.table.modules.localize.getText(...arguments); - } - - langBind(){ - return this.table.modules.localize.bind(...arguments); - } - - langLocale(){ - return this.table.modules.localize.getLocale(...arguments); - } - - - ////////////////////////////////////////// - ////////// Inter Table Comms ///////////// - ////////////////////////////////////////// - - commsConnections(){ - return this.table.modules.comms.getConnections(...arguments); - } - - commsSend(){ - return this.table.modules.comms.send(...arguments); - } - - ////////////////////////////////////////// - //////////////// Layout ///////////////// - ////////////////////////////////////////// - - layoutMode(){ - return this.table.modules.layout.getMode(); - } - - layoutRefresh(force){ - return this.table.modules.layout.layout(force); - } - - - ////////////////////////////////////////// - /////////////// Event Bus //////////////// - ////////////////////////////////////////// - - subscribe(){ - return this.table.eventBus.subscribe(...arguments); - } - - unsubscribe(){ - return this.table.eventBus.unsubscribe(...arguments); - } - - subscribed(key){ - return this.table.eventBus.subscribed(key); - } - - subscriptionChange(){ - return this.table.eventBus.subscriptionChange(...arguments); - } - - dispatch(){ - return this.table.eventBus.dispatch(...arguments); - } - - chain(){ - return this.table.eventBus.chain(...arguments); - } - - confirm(){ - return this.table.eventBus.confirm(...arguments); - } - - dispatchExternal(){ - return this.table.externalEvents.dispatch(...arguments); - } - - subscribedExternal(key){ - return this.table.externalEvents.subscribed(key); - } - - subscriptionChangeExternal(){ - return this.table.externalEvents.subscriptionChange(...arguments); - } - - ////////////////////////////////////////// - //////////////// Options ///////////////// - ////////////////////////////////////////// - - options(key){ - return this.table.options[key]; - } - - setOption(key, value){ - if(typeof value !== "undefined"){ - this.table.options[key] = value; - } - - return this.table.options[key]; - } - - ////////////////////////////////////////// - /////////// Deprecation Checks /////////// - ////////////////////////////////////////// - - deprecationCheck(oldOption, newOption, convert){ - return this.table.deprecationAdvisor.check(oldOption, newOption, convert); - } - - deprecationCheckMsg(oldOption, msg){ - return this.table.deprecationAdvisor.checkMsg(oldOption, msg); - } - - deprecationMsg(msg){ - return this.table.deprecationAdvisor.msg(msg); - } - ////////////////////////////////////////// - //////////////// Modules ///////////////// - ////////////////////////////////////////// - - module(key){ - return this.table.module(key); - } - } - - //public column object - class ColumnComponent { - constructor (column){ - this._column = column; - this.type = "ColumnComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._column.table.componentFunctionBinder.handle("column", target._column, name); - } - } - }); - } - - getElement(){ - return this._column.getElement(); - } - - getDefinition(){ - return this._column.getDefinition(); - } - - getField(){ - return this._column.getField(); - } - - getTitleDownload() { - return this._column.getTitleDownload(); - } - - getCells(){ - var cells = []; - - this._column.cells.forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - isVisible(){ - return this._column.visible; - } - - show(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.show(); - }); - }else { - this._column.show(); - } - } - - hide(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.hide(); - }); - }else { - this._column.hide(); - } - } - - toggle(){ - if(this._column.visible){ - this.hide(); - }else { - this.show(); - } - } - - delete(){ - return this._column.delete(); - } - - getSubColumns(){ - var output = []; - - if(this._column.columns.length){ - this._column.columns.forEach(function(column){ - output.push(column.getComponent()); - }); - } - - return output; - } - - getParentColumn(){ - return this._column.parent instanceof Column ? this._column.parent.getComponent() : false; - } - - _getSelf(){ - return this._column; - } - - scrollTo(position, ifVisible){ - return this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible); - } - - getTable(){ - return this._column.table; - } - - move(to, after){ - var toColumn = this._column.table.columnManager.findColumn(to); - - if(toColumn){ - this._column.table.columnManager.moveColumn(this._column, toColumn, after); - }else { - console.warn("Move Error - No matching column found:", toColumn); - } - } - - getNextColumn(){ - var nextCol = this._column.nextColumn(); - - return nextCol ? nextCol.getComponent() : false; - } - - getPrevColumn(){ - var prevCol = this._column.prevColumn(); - - return prevCol ? prevCol.getComponent() : false; - } - - updateDefinition(updates){ - return this._column.updateDefinition(updates); - } - - getWidth(){ - return this._column.getWidth(); - } - - setWidth(width){ - var result; - - if(width === true){ - result = this._column.reinitializeWidth(true); - }else { - result = this._column.setWidth(width); - } - - this._column.table.columnManager.rerenderColumns(true); - - return result; - } - } - - var defaultColumnOptions = { - "title": undefined, - "field": undefined, - "columns": undefined, - "visible": undefined, - "hozAlign": undefined, - "vertAlign": undefined, - "width": undefined, - "minWidth": 40, - "maxWidth": undefined, - "maxInitialWidth": undefined, - "cssClass": undefined, - "variableHeight": undefined, - "headerVertical": undefined, - "headerHozAlign": undefined, - "headerWordWrap": false, - "editableTitle": undefined, - }; - - //public cell object - class CellComponent { - - constructor (cell){ - this._cell = cell; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._cell.table.componentFunctionBinder.handle("cell", target._cell, name); - } - } - }); - } - - getValue(){ - return this._cell.getValue(); - } - - getOldValue(){ - return this._cell.getOldValue(); - } - - getInitialValue(){ - return this._cell.initialValue; - } - - getElement(){ - return this._cell.getElement(); - } - - getRow(){ - return this._cell.row.getComponent(); - } - - getData(transform){ - return this._cell.row.getData(transform); - } - getType(){ - return "cell"; - } - getField(){ - return this._cell.column.getField(); - } - - getColumn(){ - return this._cell.column.getComponent(); - } - - setValue(value, mutate){ - if(typeof mutate == "undefined"){ - mutate = true; - } - - this._cell.setValue(value, mutate); - } - - restoreOldValue(){ - this._cell.setValueActual(this._cell.getOldValue()); - } - - restoreInitialValue(){ - this._cell.setValueActual(this._cell.initialValue); - } - - checkHeight(){ - this._cell.checkHeight(); - } - - getTable(){ - return this._cell.table; - } - - _getSelf(){ - return this._cell; - } - } - - class Cell extends CoreFeature{ - constructor(column, row){ - super(column.table); - - this.table = column.table; - this.column = column; - this.row = row; - this.element = null; - this.value = null; - this.initialValue; - this.oldValue = null; - this.modules = {}; - - this.height = null; - this.width = null; - this.minWidth = null; - - this.component = null; - - this.loaded = false; //track if the cell has been added to the DOM yet - - this.build(); - } - - //////////////// Setup Functions ///////////////// - //generate element - build(){ - this.generateElement(); - - this.setWidth(); - - this._configureCell(); - - this.setValueActual(this.column.getFieldValue(this.row.data)); - - this.initialValue = this.value; - } - - generateElement(){ - this.element = document.createElement('div'); - this.element.className = "tabulator-cell"; - this.element.setAttribute("role", "gridcell"); - } - - _configureCell(){ - var element = this.element, - field = this.column.getField(), - vertAligns = { - top:"flex-start", - bottom:"flex-end", - middle:"center", - }, - hozAligns = { - left:"flex-start", - right:"flex-end", - center:"center", - }; - - //set text alignment - element.style.textAlign = this.column.hozAlign; - - if(this.column.vertAlign){ - element.style.display = "inline-flex"; - - element.style.alignItems = vertAligns[this.column.vertAlign] || ""; - - if(this.column.hozAlign){ - element.style.justifyContent = hozAligns[this.column.hozAlign] || ""; - } - } - - if(field){ - element.setAttribute("tabulator-field", field); - } - - //add class to cell if needed - if(this.column.definition.cssClass){ - var classNames = this.column.definition.cssClass.split(" "); - classNames.forEach((className) => { - element.classList.add(className); - }); - } - - this.dispatch("cell-init", this); - - //hide cell if not visible - if(!this.column.visible){ - this.hide(); - } - } - - //generate cell contents - _generateContents(){ - var val; - - val = this.chain("cell-format", this, null, () => { - return this.element.innerHTML = this.value; - }); - - switch(typeof val){ - case "object": - if(val instanceof Node){ - - //clear previous cell contents - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.element.appendChild(val); - }else { - this.element.innerHTML = ""; - - if(val != null){ - console.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); - } - } - break; - case "undefined": - this.element.innerHTML = ""; - break; - default: - this.element.innerHTML = val; - } - } - - cellRendered(){ - this.dispatch("cell-rendered", this); - } - - //////////////////// Getters //////////////////// - getElement(containerOnly){ - if(!this.loaded){ - this.loaded = true; - if(!containerOnly){ - this.layoutElement(); - } - } - - return this.element; - } - - getValue(){ - return this.value; - } - - getOldValue(){ - return this.oldValue; - } - - //////////////////// Actions //////////////////// - setValue(value, mutate, force){ - var changed = this.setValueProcessData(value, mutate, force); - - if(changed){ - this.dispatch("cell-value-updated", this); - - this.cellRendered(); - - if(this.column.definition.cellEdited){ - this.column.definition.cellEdited.call(this.table, this.getComponent()); - } - - this.dispatchExternal("cellEdited", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - } - } - - setValueProcessData(value, mutate, force){ - var changed = false; - - if(this.value !== value || force){ - - changed = true; - - if(mutate){ - value = this.chain("cell-value-changing", [this, value], null, value); - } - } - - this.setValueActual(value); - - if(changed){ - this.dispatch("cell-value-changed", this); - } - - return changed; - } - - setValueActual(value){ - this.oldValue = this.value; - - this.value = value; - - this.dispatch("cell-value-save-before", this); - - this.column.setFieldValue(this.row.data, value); - - this.dispatch("cell-value-save-after", this); - - if(this.loaded){ - this.layoutElement(); - } - } - - layoutElement(){ - this._generateContents(); - - this.dispatch("cell-layout", this); - } - - setWidth(){ - this.width = this.column.width; - this.element.style.width = this.column.widthStyled; - } - - clearWidth(){ - this.width = ""; - this.element.style.width = ""; - } - - getWidth(){ - return this.width || this.element.offsetWidth; - } - - setMinWidth(){ - this.minWidth = this.column.minWidth; - this.element.style.minWidth = this.column.minWidthStyled; - } - - setMaxWidth(){ - this.maxWidth = this.column.maxWidth; - this.element.style.maxWidth = this.column.maxWidthStyled; - } - - checkHeight(){ - // var height = this.element.css("height"); - this.row.reinitializeHeight(); - } - - clearHeight(){ - this.element.style.height = ""; - this.height = null; - - this.dispatch("cell-height", this, ""); - } - - setHeight(){ - this.height = this.row.height; - this.element.style.height = this.row.heightStyled; - - this.dispatch("cell-height", this, this.row.heightStyled); - } - - getHeight(){ - return this.height || this.element.offsetHeight; - } - - show(){ - this.element.style.display = this.column.vertAlign ? "inline-flex" : ""; - } - - hide(){ - this.element.style.display = "none"; - } - - delete(){ - this.dispatch("cell-delete", this); - - if(!this.table.rowManager.redrawBlock && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.column.deleteCell(this); - this.row.deleteCell(this); - this.calcs = {}; - } - - getIndex(){ - return this.row.getCellIndex(this); - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new CellComponent(this); - } - - return this.component; - } - } - - class Column extends CoreFeature{ - - constructor(def, parent){ - super(parent.table); - - this.definition = def; //column definition - this.parent = parent; //hold parent object - this.type = "column"; //type of element - this.columns = []; //child columns - this.cells = []; //cells bound to this column - this.element = this.createElement(); //column header element - this.contentElement = false; - this.titleHolderElement = false; - this.titleElement = false; - this.groupElement = this.createGroupElement(); //column group holder element - this.isGroup = false; - this.hozAlign = ""; //horizontal text alignment - this.vertAlign = ""; //vert text alignment - - //multi dimensional filed handling - this.field =""; - this.fieldStructure = ""; - this.getFieldValue = ""; - this.setFieldValue = ""; - - this.titleDownload = null; - this.titleFormatterRendered = false; - - this.mapDefinitions(); - - this.setField(this.definition.field); - - this.modules = {}; //hold module variables; - - this.width = null; //column width - this.widthStyled = ""; //column width pre-styled to improve render efficiency - this.maxWidth = null; //column maximum width - this.maxWidthStyled = ""; //column maximum pre-styled to improve render efficiency - this.maxInitialWidth = null; - this.minWidth = null; //column minimum width - this.minWidthStyled = ""; //column minimum pre-styled to improve render efficiency - this.widthFixed = false; //user has specified a width for this column - - this.visible = true; //default visible state - - this.component = null; - - //initialize column - if(this.definition.columns){ - - this.isGroup = true; - - this.definition.columns.forEach((def, i) => { - var newCol = new Column(def, this); - this.attachColumn(newCol); - }); - - this.checkColumnVisibility(); - }else { - parent.registerColumnField(this); - } - - this._initialize(); - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.setAttribute("role", "columnheader"); - el.setAttribute("aria-sort", "none"); - - switch(this.table.options.columnHeaderVertAlign){ - case "middle": - el.style.justifyContent = "center"; - break; - case "bottom": - el.style.justifyContent = "flex-end"; - break; - } - - return el; - } - - createGroupElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col-group-cols"); - - return el; - } - - mapDefinitions(){ - var defaults = this.table.options.columnDefaults; - - //map columnDefaults onto column definitions - if(defaults){ - for(let key in defaults){ - if(typeof this.definition[key] === "undefined"){ - this.definition[key] = defaults[key]; - } - } - } - - this.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition); - } - - checkDefinition(){ - Object.keys(this.definition).forEach((key) => { - if(Column.defaultOptionList.indexOf(key) === -1){ - console.warn("Invalid column definition option in '" + (this.field || this.definition.title) + "' column:", key); - } - }); - } - - setField(field){ - this.field = field; - this.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : []; - this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData; - this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData; - } - - //register column position with column manager - registerColumnPosition(column){ - this.parent.registerColumnPosition(column); - } - - //register column position with column manager - registerColumnField(column){ - this.parent.registerColumnField(column); - } - - //trigger position registration - reRegisterPosition(){ - if(this.isGroup){ - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - }else { - this.registerColumnPosition(this); - } - } - - //build header element - _initialize(){ - var def = this.definition; - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(def.headerVertical){ - this.element.classList.add("tabulator-col-vertical"); - - if(def.headerVertical === "flip"){ - this.element.classList.add("tabulator-col-vertical-flip"); - } - } - - this.contentElement = this._buildColumnHeaderContent(); - - this.element.appendChild(this.contentElement); - - if(this.isGroup){ - this._buildGroupHeader(); - }else { - this._buildColumnHeader(); - } - - this.dispatch("column-init", this); - } - - //build header element for header - _buildColumnHeader(){ - var def = this.definition; - - this.dispatch("column-layout", this); - - //set column visibility - if(typeof def.visible != "undefined"){ - if(def.visible){ - this.show(true); - }else { - this.hide(true); - } - } - - //assign additional css classes to column header - if(def.cssClass){ - var classNames = def.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - if(def.field){ - this.element.setAttribute("tabulator-field", def.field); - } - - //set min width if present - this.setMinWidth(parseInt(def.minWidth)); - - if (def.maxInitialWidth) { - this.maxInitialWidth = parseInt(def.maxInitialWidth); - } - - if(def.maxWidth){ - this.setMaxWidth(parseInt(def.maxWidth)); - } - - this.reinitializeWidth(); - - //set horizontal text alignment - this.hozAlign = this.definition.hozAlign; - this.vertAlign = this.definition.vertAlign; - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - } - - _buildColumnHeaderContent(){ - var contentElement = document.createElement("div"); - contentElement.classList.add("tabulator-col-content"); - - this.titleHolderElement = document.createElement("div"); - this.titleHolderElement.classList.add("tabulator-col-title-holder"); - - contentElement.appendChild(this.titleHolderElement); - - this.titleElement = this._buildColumnHeaderTitle(); - - this.titleHolderElement.appendChild(this.titleElement); - - return contentElement; - } - - //build title element of column - _buildColumnHeaderTitle(){ - var def = this.definition; - - var titleHolderElement = document.createElement("div"); - titleHolderElement.classList.add("tabulator-col-title"); - - if(def.headerWordWrap){ - titleHolderElement.classList.add("tabulator-col-title-wrap"); - } - - if(def.editableTitle){ - var titleElement = document.createElement("input"); - titleElement.classList.add("tabulator-title-editor"); - - titleElement.addEventListener("click", (e) => { - e.stopPropagation(); - titleElement.focus(); - }); - - titleElement.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - titleElement.addEventListener("change", () => { - def.title = titleElement.value; - this.dispatchExternal("columnTitleChanged", this.getComponent()); - }); - - titleHolderElement.appendChild(titleElement); - - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - titleElement.value = text || (def.title || " "); - }); - }else { - titleElement.value = def.title || " "; - } - - }else { - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - this._formatColumnHeaderTitle(titleHolderElement, text || (def.title || " ")); - }); - }else { - this._formatColumnHeaderTitle(titleHolderElement, def.title || " "); - } - } - - return titleHolderElement; - } - - _formatColumnHeaderTitle(el, title){ - var contents = this.chain("column-format", [this, title, el], null, () => { - return title; - }); - - switch(typeof contents){ - case "object": - if(contents instanceof Node){ - el.appendChild(contents); - }else { - el.innerHTML = ""; - console.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); - } - break; - case "undefined": - el.innerHTML = ""; - break; - default: - el.innerHTML = contents; - } - } - - //build header element for column group - _buildGroupHeader(){ - this.element.classList.add("tabulator-col-group"); - this.element.setAttribute("role", "columngroup"); - this.element.setAttribute("aria-title", this.definition.title); - - //asign additional css classes to column header - if(this.definition.cssClass){ - var classNames = this.definition.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - - this.element.appendChild(this.groupElement); - } - - //flat field lookup - _getFlatData(data){ - return data[this.field]; - } - - //nested field lookup - _getNestedData(data){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length, - output; - - for(let i = 0; i < length; i++){ - - dataObj = dataObj[structure[i]]; - - output = dataObj; - - if(!dataObj){ - break; - } - } - - return output; - } - - //flat field set - _setFlatData(data, value){ - if(this.field){ - data[this.field] = value; - } - } - - //nested field set - _setNestedData(data, value){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length; - - for(let i = 0; i < length; i++){ - - if(i == length -1){ - dataObj[structure[i]] = value; - }else { - if(!dataObj[structure[i]]){ - if(typeof value !== "undefined"){ - dataObj[structure[i]] = {}; - }else { - break; - } - } - - dataObj = dataObj[structure[i]]; - } - } - } - - //attach column to this group - attachColumn(column){ - if(this.groupElement){ - this.columns.push(column); - this.groupElement.appendChild(column.getElement()); - - column.columnRendered(); - }else { - console.warn("Column Warning - Column being attached to another column instead of column group"); - } - } - - //vertically align header in column - verticalAlign(alignment, height){ - - //calculate height of column header and group holder element - var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight); - // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight; - - this.element.style.height = parentHeight + "px"; - - this.dispatch("column-height", this, this.element.style.height); - - if(this.isGroup){ - this.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + "px"; - } - - //vertically align cell contents - // if(!this.isGroup && alignment !== "top"){ - // if(alignment === "bottom"){ - // this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + "px"; - // }else{ - // this.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + "px"; - // } - // } - - this.columns.forEach(function(column){ - column.verticalAlign(alignment); - }); - } - - //clear vertical alignment - clearVerticalAlign(){ - this.element.style.paddingTop = ""; - this.element.style.height = ""; - this.element.style.minHeight = ""; - this.groupElement.style.minHeight = ""; - - this.columns.forEach(function(column){ - column.clearVerticalAlign(); - }); - - this.dispatch("column-height", this, ""); - } - - //// Retrieve Column Information //// - //return column header element - getElement(){ - return this.element; - } - - //return column group element - getGroupElement(){ - return this.groupElement; - } - - //return field name - getField(){ - return this.field; - } - - getTitleDownload() { - return this.titleDownload; - } - - //return the first column in a group - getFirstColumn(){ - if(!this.isGroup){ - return this; - }else { - if(this.columns.length){ - return this.columns[0].getFirstColumn(); - }else { - return false; - } - } - } - - //return the last column in a group - getLastColumn(){ - if(!this.isGroup){ - return this; - }else { - if(this.columns.length){ - return this.columns[this.columns.length -1].getLastColumn(); - }else { - return false; - } - } - } - - //return all columns in a group - getColumns(traverse){ - var columns = []; - - if(traverse){ - this.columns.forEach((column) => { - columns.push(column); - - columns = columns.concat(column.getColumns(true)); - }); - }else { - columns = this.columns; - } - - return columns; - } - - //return all columns in a group - getCells(){ - return this.cells; - } - - //retrieve the top column in a group of columns - getTopColumn(){ - if(this.parent.isGroup){ - return this.parent.getTopColumn(); - }else { - return this; - } - } - - //return column definition object - getDefinition(updateBranches){ - var colDefs = []; - - if(this.isGroup && updateBranches){ - this.columns.forEach(function(column){ - colDefs.push(column.getDefinition(true)); - }); - - this.definition.columns = colDefs; - } - - return this.definition; - } - - //////////////////// Actions //////////////////// - checkColumnVisibility(){ - var visible = false; - - this.columns.forEach(function(column){ - if(column.visible){ - visible = true; - } - }); - - if(visible){ - this.show(); - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - }else { - this.hide(); - } - } - - //show column - show(silent, responsiveToggle){ - if(!this.visible){ - this.visible = true; - - this.element.style.display = ""; - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.show(); - }); - - if(!this.isGroup && this.width === null){ - this.reinitializeWidth(); - } - - this.table.columnManager.verticalAlignHeaders(); - - this.dispatch("column-show", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), true); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - //hide column - hide(silent, responsiveToggle){ - if(this.visible){ - this.visible = false; - - this.element.style.display = "none"; - - this.table.columnManager.verticalAlignHeaders(); - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.hide(); - }); - - this.dispatch("column-hide", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - matchChildWidths(){ - var childWidth = 0; - - if(this.contentElement && this.columns.length){ - this.columns.forEach(function(column){ - if(column.visible){ - childWidth += column.getWidth(); - } - }); - - this.contentElement.style.maxWidth = (childWidth - 1) + "px"; - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - } - } - - removeChild(child){ - var index = this.columns.indexOf(child); - - if(index > -1){ - this.columns.splice(index, 1); - } - - if(!this.columns.length){ - this.delete(); - } - } - - setWidth(width){ - this.widthFixed = true; - this.setWidthActual(width); - } - - setWidthActual(width){ - if(isNaN(width)){ - width = Math.floor((this.table.element.clientWidth/100) * parseInt(width)); - } - - width = Math.max(this.minWidth, width); - - if(this.maxWidth){ - width = Math.min(this.maxWidth, width); - } - - this.width = width; - this.widthStyled = width ? width + "px" : ""; - - this.element.style.width = this.widthStyled; - - if(!this.isGroup){ - this.cells.forEach(function(cell){ - cell.setWidth(); - }); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - this.dispatch("column-width", this); - } - - checkCellHeights(){ - var rows = []; - - this.cells.forEach(function(cell){ - if(cell.row.heightInitialized){ - if(cell.row.getElement().offsetParent !== null){ - rows.push(cell.row); - cell.row.clearCellHeight(); - }else { - cell.row.heightInitialized = false; - } - } - }); - - rows.forEach(function(row){ - row.calcHeight(); - }); - - rows.forEach(function(row){ - row.setCellHeight(); - }); - } - - getWidth(){ - var width = 0; - - if(this.isGroup){ - this.columns.forEach(function(column){ - if(column.visible){ - width += column.getWidth(); - } - }); - }else { - width = this.width; - } - - return width; - } - - getLeftOffset(){ - var offset = this.element.offsetLeft; - - if(this.parent.isGroup){ - offset += this.parent.getLeftOffset(); - } - - return offset; - } - - getHeight(){ - return Math.ceil(this.element.getBoundingClientRect().height); - } - - setMinWidth(minWidth){ - if(this.maxWidth && minWidth > this.maxWidth){ - minWidth = this.maxWidth; - - console.warn("the minWidth ("+ minWidth + "px) for column '" + this.field + "' cannot be bigger that its maxWidth ("+ this.maxWidthStyled + ")"); - } - - this.minWidth = minWidth; - this.minWidthStyled = minWidth ? minWidth + "px" : ""; - - this.element.style.minWidth = this.minWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMinWidth(); - }); - } - - setMaxWidth(maxWidth){ - if(this.minWidth && maxWidth < this.minWidth){ - maxWidth = this.minWidth; - - console.warn("the maxWidth ("+ maxWidth + "px) for column '" + this.field + "' cannot be smaller that its minWidth ("+ this.minWidthStyled + ")"); - } - - this.maxWidth = maxWidth; - this.maxWidthStyled = maxWidth ? maxWidth + "px" : ""; - - this.element.style.maxWidth = this.maxWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMaxWidth(); - }); - } - - delete(){ - return new Promise((resolve, reject) => { - if(this.isGroup){ - this.columns.forEach(function(column){ - column.delete(); - }); - } - - this.dispatch("column-delete", this); - - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.contentElement = false; - this.titleElement = false; - this.groupElement = false; - - if(this.parent.isGroup){ - this.parent.removeChild(this); - } - - this.table.columnManager.deregisterColumn(this); - - this.table.columnManager.rerenderColumns(true); - - this.dispatch("column-deleted", this); - - resolve(); - }); - } - - columnRendered(){ - if(this.titleFormatterRendered){ - this.titleFormatterRendered(); - } - - this.dispatch("column-rendered", this); - } - - //////////////// Cell Management ///////////////// - //generate cell for this column - generateCell(row){ - var cell = new Cell(this, row); - - this.cells.push(cell); - - return cell; - } - - nextColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._nextVisibleColumn(index + 1) : false; - } - - _nextVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._nextVisibleColumn(index + 1); - } - - prevColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._prevVisibleColumn(index - 1) : false; - } - - _prevVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._prevVisibleColumn(index - 1); - } - - reinitializeWidth(force){ - this.widthFixed = false; - - //set width if present - if(typeof this.definition.width !== "undefined" && !force){ - // maxInitialWidth ignored here as width specified - this.setWidth(this.definition.width); - } - - this.dispatch("column-width-fit-before", this); - - this.fitToData(force); - - this.dispatch("column-width-fit-after", this); - } - - //set column width to maximum cell width for non group columns - fitToData(force){ - if(this.isGroup){ - return; - } - - if(!this.widthFixed){ - this.element.style.width = ""; - - this.cells.forEach((cell) => { - cell.clearWidth(); - }); - } - - var maxWidth = this.element.offsetWidth; - - if(!this.width || !this.widthFixed){ - this.cells.forEach((cell) => { - var width = cell.getWidth(); - - if(width > maxWidth){ - maxWidth = width; - } - }); - - if(maxWidth){ - var setTo = maxWidth + 1; - if (this.maxInitialWidth && !force) { - setTo = Math.min(setTo, this.maxInitialWidth); - } - this.setWidthActual(setTo); - } - } - } - - updateDefinition(updates){ - var definition; - - if(!this.isGroup){ - if(!this.parent.isGroup){ - definition = Object.assign({}, this.getDefinition()); - definition = Object.assign(definition, updates); - - return this.table.columnManager.addColumn(definition, false, this) - .then((column) => { - - if(definition.field == this.field){ - this.field = false; //clear field name to prevent deletion of duplicate column from arrays - } - - return this.delete() - .then(() => { - return column.getComponent(); - }); - - }); - }else { - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - }else { - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - } - - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new ColumnComponent(this); - } - - return this.component; - } - - getPosition(){ - return this.table.columnManager.getVisibleColumnsByIndex().indexOf(this) + 1; - } - } - - Column.defaultOptionList = defaultColumnOptions; - - class Helpers{ - - static elVisible(el){ - return !(el.offsetWidth <= 0 && el.offsetHeight <= 0); - } - - static elOffset(el){ - var box = el.getBoundingClientRect(); - - return { - top: box.top + window.pageYOffset - document.documentElement.clientTop, - left: box.left + window.pageXOffset - document.documentElement.clientLeft - }; - } - - static retrieveNestedData(separator, field, data){ - var structure = separator ? field.split(separator) : [field], - length = structure.length, - output; - - for(let i = 0; i < length; i++){ - - data = data[structure[i]]; - - output = data; - - if(!data){ - break; - } - } - - return output; - } - - static deepClone(obj, clone, list = []){ - var objectProto = {}.__proto__, - arrayProto = [].__proto__; - - if (!clone){ - clone = Object.assign(Array.isArray(obj) ? [] : {}, obj); - } - - for(var i in obj) { - let subject = obj[i], - match, copy; - - if(subject != null && typeof subject === "object" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){ - match = list.findIndex((item) => { - return item.subject === subject; - }); - - if(match > -1){ - clone[i] = list[match].copy; - }else { - copy = Object.assign(Array.isArray(subject) ? [] : {}, subject); - - list.unshift({subject, copy}); - - clone[i] = this.deepClone(subject, copy, list); - } - } - } - - return clone; - } - } - - class OptionsList { - constructor(table, msgType, defaults = {}){ - this.table = table; - this.msgType = msgType; - this.registeredDefaults = Object.assign({}, defaults); - } - - register(option, value){ - this.registeredDefaults[option] = value; - } - - generate(defaultOptions, userOptions = {}){ - var output = Object.assign({}, this.registeredDefaults), - warn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true; - - Object.assign(output, defaultOptions); - - for (let key in userOptions){ - if(!output.hasOwnProperty(key)){ - if(warn){ - console.warn("Invalid " + this.msgType + " option:", key); - } - - output[key] = userOptions.key; - } - } - - - for (let key in output){ - if(key in userOptions){ - output[key] = userOptions[key]; - }else { - if(Array.isArray(output[key])){ - output[key] = Object.assign([], output[key]); - }else if(typeof output[key] === "object" && output[key] !== null){ - output[key] = Object.assign({}, output[key]); - }else if (typeof output[key] === "undefined"){ - delete output[key]; - } - } - } - - return output; - } - } - - class Renderer extends CoreFeature{ - constructor(table){ - super(table); - - this.elementVertical = table.rowManager.element; - this.elementHorizontal = table.columnManager.element; - this.tableElement = table.rowManager.tableElement; - - this.verticalFillMode = "fit"; // used by row manager to determine how to size the render area ("fit" - fits container to the contents, "fill" - fills the container without resizing it) - } - - - /////////////////////////////////// - /////// Internal Bindings ///////// - /////////////////////////////////// - - initialize(){ - //initialize core functionality - } - - clearRows(){ - //clear down existing rows layout - } - - clearColumns(){ - //clear down existing columns layout - } - - - reinitializeColumnWidths(columns){ - //resize columns to fit data - } - - - renderRows(){ - //render rows from a clean slate - } - - renderColumns(){ - //render columns from a clean slate - } - - rerenderRows(callback){ - // rerender rows and keep position - if(callback){ - callback(); - } - } - - rerenderColumns(update, blockRedraw){ - //rerender columns - } - - renderRowCells(row){ - //render the cells in a row - } - - rerenderRowCells(row, force){ - //rerender the cells in a row - } - - scrollColumns(left, dir){ - //handle horizontal scrolling - } - - scrollRows(top, dir){ - //handle vertical scrolling - } - - resize(){ - //container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION) - } - - scrollToRow(row){ - //scroll to a specific row - } - - scrollToRowNearestTop(row){ - //determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom - } - - visibleRows(includingBuffer){ - //return the visible rows - return []; - } - - /////////////////////////////////// - //////// Helper Functions ///////// - /////////////////////////////////// - - rows(){ - return this.table.rowManager.getDisplayRows(); - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else { - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - /////////////////////////////////// - /////// External Triggers ///////// - /////// (DO NOT OVERRIDE) ///////// - /////////////////////////////////// - - clear(){ - //clear down existing layout - this.clearRows(); - this.clearColumns(); - } - - render(){ - //render from a clean slate - this.renderRows(); - this.renderColumns(); - } - - rerender(callback){ - // rerender and keep position - this.rerenderRows(); - this.rerenderColumns(); - } - - scrollToRowPosition(row, position, ifVisible){ - var rowIndex = this.rows().indexOf(row), - rowEl = row.getElement(), - offset = 0; - - return new Promise((resolve, reject) => { - if(rowIndex > -1){ - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToRowIfVisible; - } - - //check row visibility - if(!ifVisible){ - if(Helpers.elVisible(rowEl)){ - offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top; - - if(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){ - resolve(); - return false; - } - } - } - - if(typeof position === "undefined"){ - position = this.table.options.scrollToRowPosition; - } - - if(position === "nearest"){ - position = this.scrollToRowNearestTop(row) ? "top" : "bottom"; - } - - //scroll to row - this.scrollToRow(row); - - //align to correct position - switch(position){ - case "middle": - case "center": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2); - }else { - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2); - } - - break; - - case "bottom": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight; - }else { - this.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight; - } - - break; - - case "top": - this.elementVertical.scrollTop = rowEl.offsetTop; - break; - } - - resolve(); - - }else { - console.warn("Scroll Error - Row not visible"); - reject("Scroll Error - Row not visible"); - } - }); - } - } - - class BasicHorizontal extends Renderer{ - constructor(table){ - super(table); - } - - renderRowCells(row, inFragment) { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - if(!inFragment){ - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - reinitializeColumnWidths(columns){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - } - } - - class VirtualDomHorizontal extends Renderer{ - constructor(table){ - super(table); - - this.leftCol = 0; - this.rightCol = 0; - this.scrollLeft = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - - this.fitDataColAvg = 0; - - this.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen - - this.visibleRows = null; - - this.initialized = false; - this.isFitData = false; - - this.columns = []; - } - - initialize(){ - this.compatibilityCheck(); - this.layoutCheck(); - this.vertScrollListen(); - } - - compatibilityCheck(){ - if(this.options("layout") == "fitDataTable"){ - console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"); - } - - if(this.options("responsiveLayout")){ - console.warn("Horizontal Virtual DOM is not compatible with responsive columns"); - } - - if(this.options("rtl")){ - console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction"); - } - } - - layoutCheck(){ - this.isFitData = this.options("layout").startsWith('fitData'); - } - - vertScrollListen(){ - this.subscribe("scroll-vertical", this.clearVisRowCache.bind(this)); - this.subscribe("data-refreshed", this.clearVisRowCache.bind(this)); - } - - clearVisRowCache(){ - this.visibleRows = null; - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - renderColumns(row, force){ - this.dataChange(); - } - - - scrollColumns(left, dir){ - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer)); - } - } - - calcWindowBuffer(){ - var buffer = this.elementVertical.clientWidth; - - this.table.columnManager.columnsByIndex.forEach((column) => { - if(column.visible){ - var width = column.getWidth(); - - if(width > buffer){ - buffer = width; - } - } - }); - - this.windowBuffer = buffer * 2; - } - - rerenderColumns(update, blockRedraw){ - var old = { - cols:this.columns, - leftCol:this.leftCol, - rightCol:this.rightCol, - }, - colPos = 0; - - if(update && !this.initialized){ - return; - } - - this.clear(); - - this.calcWindowBuffer(); - - this.scrollLeft = this.elementVertical.scrollLeft; - - this.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer; - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - this.table.columnManager.columnsByIndex.forEach((column) => { - var config = {}, - width; - - if(column.visible){ - if(!column.modules.frozen){ - width = column.getWidth(); - - config.leftPos = colPos; - config.rightPos = colPos + width; - - config.width = width; - - if (this.isFitData) { - config.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true; - } - - if((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){ - //column is visible - - if(this.leftCol == -1){ - this.leftCol = this.columns.length; - this.vDomPadLeft = colPos; - } - - this.rightCol = this.columns.length; - }else { - // column is hidden - if(this.leftCol !== -1){ - this.vDomPadRight += width; - } - } - - this.columns.push(column); - - column.modules.vdomHoz = config; - - colPos += width; - } - } - }); - - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - - this.initialized = true; - - if(!blockRedraw){ - if(!update || this.reinitChanged(old)){ - this.reinitializeRows(); - } - } - - this.elementVertical.scrollLeft = this.scrollLeft; - } - - renderRowCells(row){ - if(this.initialized){ - this.initializeRow(row); - }else { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - rerenderRowCells(row, force){ - this.reinitializeRow(row, force); - } - - reinitializeColumnWidths(columns){ - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.columns[i].reinitializeWidth(); - } - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - deinitialize(){ - this.initialized = false; - } - - clear(){ - this.columns = []; - - this.leftCol = -1; - this.rightCol = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - } - - dataChange(){ - var change = false, - row, rowEl; - - if(this.isFitData){ - this.table.columnManager.columnsByIndex.forEach((column) => { - if(!column.definition.width && column.visible){ - change = true; - } - }); - - if(change && this.table.rowManager.getDisplayRows().length){ - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - row = this.chain("rows-sample", [1], [], () => { - return this.table.rowManager.getDisplayRows(); - })[0]; - - if(row){ - rowEl = row.getElement(); - - row.generateCells(); - - this.tableElement.appendChild(rowEl); - - for(let colEnd = 0; colEnd < row.cells.length; colEnd++){ - let cell = row.cells[colEnd]; - rowEl.appendChild(cell.getElement()); - - cell.column.reinitializeWidth(); - } - - rowEl.parentNode.removeChild(rowEl); - - this.rerenderColumns(false, true); - } - } - }else { - if(this.options("layout") === "fitColumns"){ - this.layoutRefresh(); - this.rerenderColumns(false, true); - } - } - } - - reinitChanged(old){ - var match = true; - - if(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){ - return true; - } - - old.cols.forEach((col, i) => { - if(col !== this.columns[i]){ - match = false; - } - }); - - return !match; - } - - reinitializeRows(){ - var visibleRows = this.getVisibleRows(), - otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - visibleRows.forEach((row) => { - this.reinitializeRow(row, true); - }); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - } - - getVisibleRows(){ - if (!this.visibleRows){ - this.visibleRows = this.table.rowManager.getVisibleRows(); - } - - return this.visibleRows; - } - - scroll(diff){ - this.vDomScrollPosLeft += diff; - this.vDomScrollPosRight += diff; - - if(Math.abs(diff) > (this.windowBuffer / 2)){ - this.rerenderColumns(); - }else { - if(diff > 0){ - //scroll right - this.addColRight(); - this.removeColLeft(); - }else { - //scroll left - this.addColLeft(); - this.removeColRight(); - } - } - } - - colPositionAdjust (start, end, diff){ - for(let i = start; i < end; i++){ - let column = this.columns[i]; - - column.modules.vdomHoz.leftPos += diff; - column.modules.vdomHoz.rightPos += diff; - } - } - - addColRight(){ - var changes = false, - working = true; - - while(working){ - - let column = this.columns[this.rightCol + 1]; - - if(column){ - if(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling); - cell.cellRendered(); - } - }); - - this.fitDataColActualWidthCheck(column); - - this.rightCol++; // Don't move this below the >= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - - if(this.rightCol >= (this.columns.length - 1)){ - this.vDomPadRight = 0; - }else { - this.vDomPadRight -= column.getWidth(); - } - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - addColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol - 1]; - - if(column){ - if(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement()); - cell.cellRendered(); - } - }); - - this.leftCol--; // don't move this below the <= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - - if(this.leftCol <= 0){ // replicating logic in addColRight - this.vDomPadLeft = 0; - }else { - this.vDomPadLeft -= column.getWidth(); - } - - let diff = this.fitDataColActualWidthCheck(column); - - if(diff){ - this.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff; - this.vDomPadRight -= diff; - } - - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - removeColRight(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.rightCol]; - - if(column){ - if(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColRight", ex.message); - } - } - }); - - this.vDomPadRight += column.getWidth(); - this.rightCol --; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - removeColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol]; - - if(column){ - if(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColLeft", ex.message); - } - } - }); - - this.vDomPadLeft += column.getWidth(); - this.leftCol ++; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - fitDataColActualWidthCheck(column){ - var newWidth, widthDiff; - - if(column.modules.vdomHoz.fitDataCheck){ - column.reinitializeWidth(); - - newWidth = column.getWidth(); - widthDiff = newWidth - column.modules.vdomHoz.width; - - if(widthDiff){ - column.modules.vdomHoz.rightPos += widthDiff; - column.modules.vdomHoz.width = newWidth; - this.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff); - } - - column.modules.vdomHoz.fitDataCheck = false; - } - - return widthDiff; - } - - initializeRow(row){ - if(row.type !== "group"){ - row.modules.vdomHoz = { - leftCol:this.leftCol, - rightCol:this.rightCol, - }; - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.leftColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.appendCell(row, this.columns[i]); - } - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.rightColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - } - } - - appendCell(row, column){ - if(column && column.visible){ - let cell = row.getCell(column); - - row.getElement().appendChild(cell.getElement()); - cell.cellRendered(); - } - } - - reinitializeRow(row, force){ - if(row.type !== "group"){ - if(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){ - - var rowEl = row.getElement(); - while(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild); - - this.initializeRow(row); - } - } - } - } - - class ColumnManager extends CoreFeature { - - constructor (table){ - super(table); - - this.blockHozScrollEvent = false; - this.headersElement = null; - this.contentsElement = null; - this.element = null ; //containing element - this.columns = []; // column definition object - this.columnsByIndex = []; //columns by index - this.columnsByField = {}; //columns by field - this.scrollLeft = 0; - this.optionsList = new OptionsList(this.table, "column definition", defaultColumnOptions); - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockUpdate = null; //store latest redraw update only status - - this.renderer = null; - } - - ////////////// Setup Functions ///////////////// - - initialize(){ - this.initializeRenderer(); - - this.headersElement = this.createHeadersElement(); - this.contentsElement = this.createHeaderContentsElement(); - this.element = this.createHeaderElement(); - - this.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild); - this.element.insertBefore(this.contentsElement, this.element.firstChild); - - this.initializeScrollWheelWatcher(); - - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("scrollbar-vertical", this.padVerticalScrollbar.bind(this)); - } - - padVerticalScrollbar(width){ - if(this.table.rtl){ - this.headersElement.style.marginLeft = width + "px"; - }else { - this.headersElement.style.marginRight = width + "px"; - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": VirtualDomHorizontal, - "basic": BasicHorizontal, - }; - - if(typeof this.table.options.renderHorizontal === "string"){ - renderClass = renderers[this.table.options.renderHorizontal]; - }else { - renderClass = this.table.options.renderHorizontal; - } - - if(renderClass){ - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - }else { - console.error("Unable to find matching renderer:", this.table.options.renderHorizontal); - } - } - - - createHeadersElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-headers"); - el.setAttribute("role", "row"); - - return el; - } - - createHeaderContentsElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header-contents"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - createHeaderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header"); - el.setAttribute("role", "rowgroup"); - - if(!this.table.options.headerVisible){ - el.classList.add("tabulator-header-hidden"); - } - - return el; - } - - //return containing element - getElement(){ - return this.element; - } - - //return containing contents element - getContentsElement(){ - return this.contentsElement; - } - - - //return header containing element - getHeadersElement(){ - return this.headersElement; - } - - //scroll horizontally to match table body - scrollHorizontal(left){ - this.contentsElement.scrollLeft = left; - - this.scrollLeft = left; - - this.renderer.scrollColumns(left); - } - - initializeScrollWheelWatcher(){ - this.contentsElement.addEventListener("wheel", (e) => { - var left; - - if(e.deltaX){ - left = this.contentsElement.scrollLeft + e.deltaX; - - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - } - - ///////////// Column Setup Functions ///////////// - generateColumnsFromRowData(data){ - var cols = [], - definitions = this.table.options.autoColumnsDefinitions, - row, sorter; - - if(data && data.length){ - - row = data[0]; - - for(var key in row){ - let col = { - field:key, - title:key, - }; - - let value = row[key]; - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - case "object": - if(Array.isArray(value)){ - sorter = "array"; - }else { - sorter = "string"; - } - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else { - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - }else { - sorter = "string"; - } - } - break; - } - - col.sorter = sorter; - - cols.push(col); - } - - if(definitions){ - - switch(typeof definitions){ - case "function": - this.table.options.columns = definitions.call(this.table, cols); - break; - - case "object": - if(Array.isArray(definitions)){ - cols.forEach((col) => { - var match = definitions.find((def) => { - return def.field === col.field; - }); - - if(match){ - Object.assign(col, match); - } - }); - - }else { - cols.forEach((col) => { - if(definitions[col.field]){ - Object.assign(col, definitions[col.field]); - } - }); - } - - this.table.options.columns = cols; - break; - } - }else { - this.table.options.columns = cols; - } - - this.setColumns(this.table.options.columns); - } - } - - setColumns(cols, row){ - while(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild); - - this.columns = []; - this.columnsByIndex = []; - this.columnsByField = {}; - - this.dispatch("columns-loading"); - - cols.forEach((def, i) => { - this._addColumn(def); - }); - - this._reIndexColumns(); - - this.dispatch("columns-loaded"); - - this.rerenderColumns(false, true); - - this.redraw(true); - } - - _addColumn(definition, before, nextToColumn){ - var column = new Column(definition, this), - colEl = column.getElement(), - index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn; - - if(nextToColumn && index > -1){ - var topColumn = nextToColumn.getTopColumn(); - var parentIndex = this.columns.indexOf(topColumn); - var nextEl = topColumn.getElement(); - - if(before){ - this.columns.splice(parentIndex, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl); - }else { - this.columns.splice(parentIndex + 1, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling); - } - }else { - if(before){ - this.columns.unshift(column); - this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild); - }else { - this.columns.push(column); - this.headersElement.appendChild(column.getElement()); - } - } - - column.columnRendered(); - - return column; - } - - registerColumnField(col){ - if(col.definition.field){ - this.columnsByField[col.definition.field] = col; - } - } - - registerColumnPosition(col){ - this.columnsByIndex.push(col); - } - - _reIndexColumns(){ - this.columnsByIndex = []; - - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - } - - //ensure column headers take up the correct amount of space in column groups - verticalAlignHeaders(){ - var minHeight = 0; - - if(!this.redrawBlock){ - - this.headersElement.style.height=""; - - this.columns.forEach((column) => { - column.clearVerticalAlign(); - }); - - this.columns.forEach((column) => { - var height = column.getHeight(); - - if(height > minHeight){ - minHeight = height; - } - }); - - this.headersElement.style.height = minHeight + "px"; - - this.columns.forEach((column) => { - column.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight); - }); - - this.table.rowManager.adjustTableSize(); - } - } - - //////////////// Column Details ///////////////// - findColumn(subject){ - var columns; - - if(typeof subject == "object"){ - - if(subject instanceof Column){ - //subject is column element - return subject; - }else if(subject instanceof ColumnComponent){ - //subject is public column component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - - columns = []; - - this.columns.forEach((column) => { - columns.push(column); - columns = columns.concat(column.getColumns(true)); - }); - - //subject is a HTML element of the column header - let match = columns.find((column) => { - return column.element === subject; - }); - - return match || false; - } - - }else { - //subject should be treated as the field name of the column - return this.columnsByField[subject] || false; - } - - //catch all for any other type of input - return false; - } - - getColumnByField(field){ - return this.columnsByField[field]; - } - - getColumnsByFieldRoot(root){ - var matches = []; - - Object.keys(this.columnsByField).forEach((field) => { - var fieldRoot = this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator)[0] : field; - if(fieldRoot === root){ - matches.push(this.columnsByField[field]); - } - }); - - return matches; - } - - getColumnByIndex(index){ - return this.columnsByIndex[index]; - } - - getFirstVisibleColumn(){ - var index = this.columnsByIndex.findIndex((col) => { - return col.visible; - }); - - return index > -1 ? this.columnsByIndex[index] : false; - } - - getVisibleColumnsByIndex() { - return this.columnsByIndex.filter((col) => col.visible); - } - - getColumns(){ - return this.columns; - } - - findColumnIndex(column){ - return this.columnsByIndex.findIndex((col) => { - return column === col; - }); - } - - //return all columns that are not groups - getRealColumns(){ - return this.columnsByIndex; - } - - //traverse across columns and call action - traverse(callback){ - this.columnsByIndex.forEach((column,i) =>{ - callback(column, i); - }); - } - - //get definitions of actual columns - getDefinitions(active){ - var output = []; - - this.columnsByIndex.forEach((column) => { - if(!active || (active && column.visible)){ - output.push(column.getDefinition()); - } - }); - - return output; - } - - //get full nested definition tree - getDefinitionTree(){ - var output = []; - - this.columns.forEach((column) => { - output.push(column.getDefinition(true)); - }); - - return output; - } - - getComponents(structured){ - var output = [], - columns = structured ? this.columns : this.columnsByIndex; - - columns.forEach((column) => { - output.push(column.getComponent()); - }); - - return output; - } - - getWidth(){ - var width = 0; - - this.columnsByIndex.forEach((column) => { - if(column.visible){ - width += column.getWidth(); - } - }); - - return width; - } - - moveColumn(from, to, after){ - to.element.parentNode.insertBefore(from.element, to.element); - - if(after){ - to.element.parentNode.insertBefore(to.element, from.element); - } - - this.moveColumnActual(from, to, after); - - this.verticalAlignHeaders(); - - this.table.rowManager.reinitialize(); - } - - moveColumnActual(from, to, after){ - if(from.parent.isGroup){ - this._moveColumnInArray(from.parent.columns, from, to, after); - }else { - this._moveColumnInArray(this.columns, from, to, after); - } - - this._moveColumnInArray(this.columnsByIndex, from, to, after, true); - - this.rerenderColumns(true); - - this.dispatch("column-moved", from, to, after); - - if(this.subscribedExternal("columnMoved")){ - this.dispatchExternal("columnMoved", from.getComponent(), this.table.columnManager.getComponents()); - } - } - - _moveColumnInArray(columns, from, to, after, updateRows){ - var fromIndex = columns.indexOf(from), - toIndex, rows = []; - - if (fromIndex > -1) { - - columns.splice(fromIndex, 1); - - toIndex = columns.indexOf(to); - - if (toIndex > -1) { - - if(after){ - toIndex = toIndex+1; - } - - }else { - toIndex = fromIndex; - } - - columns.splice(toIndex, 0, from); - - if(updateRows){ - - rows = this.chain("column-moving-rows", [from, to, after], null, []) || []; - - rows = rows.concat(this.table.rowManager.rows); - - rows.forEach(function(row){ - if(row.cells.length){ - var cell = row.cells.splice(fromIndex, 1)[0]; - row.cells.splice(toIndex, 0, cell); - } - }); - - } - } - } - - scrollToColumn(column, position, ifVisible){ - var left = 0, - offset = column.getLeftOffset(), - adjust = 0, - colEl = column.getElement(); - - - return new Promise((resolve, reject) => { - - if(typeof position === "undefined"){ - position = this.table.options.scrollToColumnPosition; - } - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToColumnIfVisible; - } - - if(column.visible){ - - //align to correct position - switch(position){ - case "middle": - case "center": - adjust = -this.element.clientWidth / 2; - break; - - case "right": - adjust = colEl.clientWidth - this.headersElement.clientWidth; - break; - } - - //check column visibility - if(!ifVisible){ - if(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){ - return false; - } - } - - //calculate scroll position - left = offset + adjust; - - left = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0); - - this.table.rowManager.scrollHorizontal(left); - this.scrollHorizontal(left); - - resolve(); - }else { - console.warn("Scroll Error - Column not visible"); - reject("Scroll Error - Column not visible"); - } - - }); - } - - //////////////// Cell Management ///////////////// - generateCells(row){ - var cells = []; - - this.columnsByIndex.forEach((column) => { - cells.push(column.generateCell(row)); - }); - - return cells; - } - - //////////////// Column Management ///////////////// - getFlexBaseWidth(){ - var totalWidth = this.table.element.clientWidth, //table element width - fixedWidth = 0; - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - this.columnsByIndex.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width || 0; - - minWidth = parseInt(column.minWidth); - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width) ; - }else { - colWidth = parseInt(width); - } - }else { - colWidth = width; - } - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - } - }); - - return fixedWidth; - } - - addColumn(definition, before, nextToColumn){ - return new Promise((resolve, reject) => { - var column = this._addColumn(definition, before, nextToColumn); - - this._reIndexColumns(); - - this.dispatch("column-add", definition, before, nextToColumn); - - if(this.layoutMode() != "fitColumns"){ - column.reinitializeWidth(); - } - - this.redraw(true); - - this.table.rowManager.reinitialize(); - - this.rerenderColumns(); - - resolve(column); - }); - } - - //remove column from system - deregisterColumn(column){ - var field = column.getField(), - index; - - //remove from field list - if(field){ - delete this.columnsByField[field]; - } - - //remove from index list - index = this.columnsByIndex.indexOf(column); - - if(index > -1){ - this.columnsByIndex.splice(index, 1); - } - - //remove from column list - index = this.columns.indexOf(column); - - if(index > -1){ - this.columns.splice(index, 1); - } - - this.verticalAlignHeaders(); - - this.redraw(); - } - - rerenderColumns(update, silent){ - if(!this.redrawBlock){ - this.renderer.rerenderColumns(update, silent); - }else { - if(update === false || (update === true && this.redrawBlockUpdate === null)){ - this.redrawBlockUpdate = update; - } - } - } - - blockRedraw(){ - this.redrawBlock = true; - this.redrawBlockUpdate = null; - } - - restoreRedraw(){ - this.redrawBlock = false; - this.verticalAlignHeaders(); - this.renderer.rerenderColumns(this.redrawBlockUpdate); - - } - - //redraw columns - redraw(force){ - if(Helpers.elVisible(this.element)){ - this.verticalAlignHeaders(); - } - - if(force){ - this.table.rowManager.resetScroll(); - this.table.rowManager.reinitialize(); - } - - if(!this.confirm("table-redrawing", force)){ - this.layoutRefresh(force); - } - - this.dispatch("table-redraw", force); - - this.table.footerManager.redraw(); - } - } - - //public row object - class RowComponent { - - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - getIndex(){ - return this._row.getData("data")[this._row.table.options.index]; - } - - getPosition(){ - return this._row.getPosition(); - } - - watchPosition(callback){ - return this._row.watchPosition(callback); - } - - delete(){ - return this._row.delete(); - } - - scrollTo(position, ifVisible){ - return this._row.table.rowManager.scrollToRow(this._row, position, ifVisible); - } - - move(to, after){ - this._row.moveToRow(to, after); - } - - update(data){ - return this._row.updateData(data); - } - - normalizeHeight(){ - this._row.normalizeHeight(true); - } - - _getSelf(){ - return this._row; - } - - reformat(){ - return this._row.reinitialize(); - } - - getTable(){ - return this._row.table; - } - - getNextRow(){ - var row = this._row.nextRow(); - return row ? row.getComponent() : row; - } - - getPrevRow(){ - var row = this._row.prevRow(); - return row ? row.getComponent() : row; - } - } - - class Row extends CoreFeature{ - constructor (data, parent, type = "row"){ - super(parent.table); - - this.parent = parent; - this.data = {}; - this.type = type; //type of element - this.element = false; - this.modules = {}; //hold module variables; - this.cells = []; - this.height = 0; //hold element height - this.heightStyled = ""; //hold element height pre-styled to improve render efficiency - this.manualHeight = false; //user has manually set row height - this.outerHeight = 0; //hold elements outer height - this.initialized = false; //element has been rendered - this.heightInitialized = false; //element has resized cells to fit - this.position = 0; //store position of element in row list - this.positionWatchers = []; - - this.component = null; - - this.created = false; - - this.setData(data); - } - - create(){ - if(!this.created){ - this.created = true; - this.generateElement(); - } - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.setAttribute("role", "row"); - - this.element = el; - } - - getElement(){ - this.create(); - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - generateElement(){ - this.createElement(); - this.dispatch("row-init", this); - } - - generateCells(){ - this.cells = this.table.columnManager.generateCells(this); - } - - //functions to setup on first render - initialize(force, inFragment){ - this.create(); - - if(!this.initialized || force){ - - this.deleteCells(); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.dispatch("row-layout-before", this); - - this.generateCells(); - - this.initialized = true; - - this.table.columnManager.renderer.renderRowCells(this, inFragment); - - if(force){ - this.normalizeHeight(); - } - - this.dispatch("row-layout", this); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - - this.dispatch("row-layout-after", this); - }else { - this.table.columnManager.renderer.rerenderRowCells(this, inFragment); - } - } - - rendered(){ - this.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - - reinitializeHeight(){ - this.heightInitialized = false; - - if(this.element && this.element.offsetParent !== null){ - this.normalizeHeight(true); - } - } - - deinitialize(){ - this.initialized = false; - } - - deinitializeHeight(){ - this.heightInitialized = false; - } - - reinitialize(children){ - this.initialized = false; - this.heightInitialized = false; - - if(!this.manualHeight){ - this.height = 0; - this.heightStyled = ""; - } - - if(this.element && this.element.offsetParent !== null){ - this.initialize(true); - } - - this.dispatch("row-relayout", this); - } - - //get heights when doing bulk row style calcs in virtual DOM - calcHeight(force){ - var maxHeight = 0, - minHeight; - - if(this.table.options.rowHeight){ - this.height = this.table.options.rowHeight; - }else { - minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0; - - this.cells.forEach(function(cell){ - var height = cell.getHeight(); - if(height > maxHeight){ - maxHeight = height; - } - }); - - if(force){ - this.height = Math.max(maxHeight, minHeight); - }else { - this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight); - } - } - - this.heightStyled = this.height ? this.height + "px" : ""; - this.outerHeight = this.element.offsetHeight; - } - - //set of cells - setCellHeight(){ - this.cells.forEach(function(cell){ - cell.setHeight(); - }); - - this.heightInitialized = true; - } - - clearCellHeight(){ - this.cells.forEach(function(cell){ - cell.clearHeight(); - }); - } - - //normalize the height of elements in the row - normalizeHeight(force){ - if(force && !this.table.options.rowHeight){ - this.clearCellHeight(); - } - - this.calcHeight(force); - - this.setCellHeight(); - } - - //set height of rows - setHeight(height, force){ - if(this.height != height || force){ - - this.manualHeight = true; - - this.height = height; - this.heightStyled = height ? height + "px" : ""; - - this.setCellHeight(); - - // this.outerHeight = this.element.outerHeight(); - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - //return rows outer Width - getWidth(){ - return this.element.offsetWidth; - } - - //////////////// Cell Management ///////////////// - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Data Management ///////////////// - setData(data){ - this.data = this.chain("row-data-init-before", [this, data], undefined, data); - - this.dispatch("row-data-init-after", this); - } - - //update the rows data - updateData(updatedData){ - var visible = this.element && Helpers.elVisible(this.element), - tempData = {}, - newRowData; - - return new Promise((resolve, reject) => { - - if(typeof updatedData === "string"){ - updatedData = JSON.parse(updatedData); - } - - this.dispatch("row-data-save-before", this); - - if(this.subscribed("row-data-changing")){ - tempData = Object.assign(tempData, this.data); - tempData = Object.assign(tempData, updatedData); - } - - newRowData = this.chain("row-data-changing", [this, tempData, updatedData], null, updatedData); - - //set data - for (let attrname in newRowData) { - this.data[attrname] = newRowData[attrname]; - } - - this.dispatch("row-data-save-after", this); - - //update affected cells only - for (let attrname in updatedData) { - - let columns = this.table.columnManager.getColumnsByFieldRoot(attrname); - - columns.forEach((column) => { - let cell = this.getCell(column.getField()); - - if(cell){ - let value = column.getFieldValue(newRowData); - if(cell.getValue() !== value){ - cell.setValueProcessData(value); - - if(visible){ - cell.cellRendered(); - } - } - } - }); - } - - //Partial reinitialization if visible - if(visible){ - this.normalizeHeight(true); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - }else { - this.initialized = false; - this.height = 0; - this.heightStyled = ""; - } - - this.dispatch("row-data-changed", this, visible, updatedData); - - //this.reinitialize(); - - this.dispatchExternal("rowUpdated", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - resolve(); - }); - } - - getData(transform){ - if(transform){ - return this.chain("row-data-retrieve", [this, transform], null, this.data); - } - - return this.data; - } - - getCell(column){ - var match = false; - - column = this.table.columnManager.findColumn(column); - - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - match = this.cells.find(function(cell){ - return cell.column === column; - }); - - return match; - } - - getCellIndex(findCell){ - return this.cells.findIndex(function(cell){ - return cell === findCell; - }); - } - - findCell(subject){ - return this.cells.find((cell) => { - return cell.element === subject; - }); - } - - getCells(){ - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - return this.cells; - } - - nextRow(){ - var row = this.table.rowManager.nextDisplayRow(this, true); - return row || false; - } - - prevRow(){ - var row = this.table.rowManager.prevDisplayRow(this, true); - return row || false; - } - - moveToRow(to, before){ - var toRow = this.table.rowManager.findRow(to); - - if(toRow){ - this.table.rowManager.moveRowActual(this, toRow, !before); - this.table.rowManager.refreshActiveData("display", false, true); - }else { - console.warn("Move Error - No matching row found:", to); - } - } - - ///////////////////// Actions ///////////////////// - delete(){ - this.dispatch("row-delete", this); - - this.deleteActual(); - - return Promise.resolve(); - } - - deleteActual(blockRedraw){ - this.detachModules(); - - this.table.rowManager.deleteRow(this, blockRedraw); - - this.deleteCells(); - - this.initialized = false; - this.heightInitialized = false; - this.element = false; - - this.dispatch("row-deleted", this); - } - - detachModules(){ - this.dispatch("row-deleting", this); - } - - deleteCells(){ - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - } - - wipe(){ - this.detachModules(); - this.deleteCells(); - - if(this.element){ - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - this.element = false; - this.modules = {}; - } - - isDisplayed(){ - return this.table.rowManager.getDisplayRows().includes(this); - } - - getPosition(){ - return this.isDisplayed() ? this.position : false; - } - - setPosition(position){ - if(position != this.position){ - this.position = position; - - this.positionWatchers.forEach((callback) => { - callback(this.position); - }); - } - } - - watchPosition(callback){ - this.positionWatchers.push(callback); - - callback(this.position); - } - - getGroup(){ - return this.modules.group || false; - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new RowComponent(this); - } - - return this.component; - } - } - - class BasicVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - } - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.scrollTop = 0; - element.scrollLeft = 0; - - element.style.minWidth = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - } - - renderRows() { - var element = this.tableElement, - onlyGroupHeaders = true, - tableFrag = document.createDocumentFragment(), - rows = this.rows(); - - rows.forEach((row, index) => { - this.styleRow(row, index); - row.initialize(false, true); - - if (row.type !== "group") { - onlyGroupHeaders = false; - } - - tableFrag.appendChild(row.getElement()); - }); - - element.appendChild(tableFrag); - - rows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - rows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else { - element.style.minWidth = ""; - } - } - - - rerenderRows(callback){ - this.clearRows(); - - if(callback){ - callback(); - } - - this.renderRows(); - - if(!this.rows().length){ - this.table.rowManager.tableEmpty(); - } - } - - scrollToRowNearestTop(row){ - var rowTop = Helpers.elOffset(row.getElement()).top; - - return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop)); - } - - scrollToRow(row){ - var rowEl = row.getElement(); - - this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop; - } - - visibleRows(includingBuffer){ - return this.rows(); - } - - } - - class VirtualDomVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomRowHeight = 20; //approximation of row heights for padding - - this.vDomTop = 0; //hold position for first rendered row in the virtual DOM - this.vDomBottom = 0; //hold position for last rendered row in the virtual DOM - - this.vDomScrollPosTop = 0; //last scroll position of the vDom top; - this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom; - - this.vDomTopPad = 0; //hold value of padding for top of virtual DOM - this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM - - this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go - - this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling - - this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows) - this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin - - this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed - this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.style.paddingTop = ""; - element.style.paddingBottom = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - - this.elementVertical.scrollTop = 0; - this.elementVertical.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomTop = 0; - this.vDomBottom = 0; - this.vDomTopPad = 0; - this.vDomBottomPad = 0; - this.vDomScrollPosTop = 0; - this.vDomScrollPosBottom = 0; - } - - renderRows(){ - this._virtualRenderFill(); - } - - rerenderRows(callback){ - var scrollTop = this.elementVertical.scrollTop; - var topRow = false; - var topOffset = false; - - var left = this.table.rowManager.scrollLeft; - - var rows = this.rows(); - - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - - if(rows[i]){ - var diff = scrollTop - rows[i].getElement().offsetTop; - - if(topOffset === false || Math.abs(diff) < topOffset){ - topOffset = diff; - topRow = i; - }else { - break; - } - } - } - - rows.forEach((row) => { - row.deinitializeHeight(); - }); - - if(callback){ - callback(); - } - - if(this.rows().length){ - this._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0); - }else { - this.clear(); - this.table.rowManager.tableEmpty(); - } - - this.scrollColumns(left); - } - - scrollColumns(left){ - this.table.rowManager.scrollHorizontal(left); - } - - scrollRows(top, dir){ - var topDiff = top - this.vDomScrollPosTop; - var bottomDiff = top - this.vDomScrollPosBottom; - var margin = this.vDomWindowBuffer * 2; - var rows = this.rows(); - - this.scrollTop = top; - - if(-topDiff > margin || bottomDiff > margin){ - //if big scroll redraw table; - var left = this.table.rowManager.scrollLeft; - this._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length)); - this.scrollColumns(left); - }else { - - if(dir){ - //scrolling up - if(topDiff < 0){ - this._addTopRow(rows, -topDiff); - } - - if(bottomDiff < 0){ - //hide bottom row if needed - if(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){ - this._removeBottomRow(rows, -bottomDiff); - }else { - this.vDomScrollPosBottom = this.scrollTop; - } - } - }else { - - if(bottomDiff >= 0){ - this._addBottomRow(rows, bottomDiff); - } - - //scrolling down - if(topDiff >= 0){ - //hide top row if needed - if(this.scrollTop > this.vDomWindowBuffer){ - this._removeTopRow(rows, topDiff); - }else { - this.vDomScrollPosTop = this.scrollTop; - } - } - } - } - } - - resize(){ - this.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight; - } - - scrollToRowNearestTop(row){ - var rowIndex = this.rows().indexOf(row); - - return !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex)); - } - - scrollToRow(row){ - var index = this.rows().indexOf(row); - - if(index > -1){ - this._virtualRenderFill(index, true); - } - } - - visibleRows(includingBuffer){ - var topEdge = this.elementVertical.scrollTop, - bottomEdge = this.elementVertical.clientHeight + topEdge, - topFound = false, - topRow = 0, - bottomRow = 0, - rows = this.rows(); - - if(includingBuffer){ - topRow = this.vDomTop; - bottomRow = this.vDomBottom; - }else { - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - if(rows[i]){ - if(!topFound){ - if((topEdge - rows[i].getElement().offsetTop) >= 0){ - topRow = i; - }else { - topFound = true; - - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else { - break; - } - } - }else { - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else { - break; - } - } - } - } - } - - return rows.slice(topRow, bottomRow + 1); - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - //full virtual render - _virtualRenderFill(position, forceMove, offset) { - var element = this.tableElement, - holder = this.elementVertical, - topPad = 0, - rowsHeight = 0, - rowHeight = 0, - heightOccupied = 0, - topPadHeight = 0, - i = 0, - rows = this.rows(), - rowsCount = rows.length, - index = 0, - row, - rowFragment, - renderedRows = [], - totalRowsRendered = 0, - rowsToRender = 0, - fixedHeight = this.table.rowManager.fixedHeight, - containerHeight = this.elementVertical.clientHeight, - avgRowHeight = this.table.options.rowHeight, - resized = true; - - position = position || 0; - - offset = offset || 0; - - if(!position){ - this.clear(); - }else { - while(element.firstChild) element.removeChild(element.firstChild); - - //check if position is too close to bottom of table - heightOccupied = (rowsCount - position + 1) * this.vDomRowHeight; - - if(heightOccupied < containerHeight){ - position -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight); - if(position < 0){ - position = 0; - } - } - - //calculate initial pad - topPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position); - position -= topPad; - } - - if(rowsCount && Helpers.elVisible(this.elementVertical)){ - this.vDomTop = position; - this.vDomBottom = position -1; - - if(fixedHeight || this.table.options.maxHeight) { - if(avgRowHeight) { - rowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight); - } - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender)); - } - else { - rowsToRender = rowsCount; - } - - while(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) { - renderedRows = []; - rowFragment = document.createDocumentFragment(); - - i = 0; - - while ((i < rowsToRender) && this.vDomBottom < rowsCount -1) { - index = this.vDomBottom + 1, - row = rows[index]; - - this.styleRow(row, index); - - row.initialize(false, true); - if(!row.heightInitialized && !this.table.options.rowHeight){ - row.clearCellHeight(); - } - - rowFragment.appendChild(row.getElement()); - renderedRows.push(row); - this.vDomBottom ++; - i++; - } - - if(!renderedRows.length){ - break; - } - - element.appendChild(rowFragment); - - // NOTE: The next 3 loops are separate on purpose - // This is to batch up the dom writes and reads which drastically improves performance - - renderedRows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - renderedRows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - renderedRows.forEach((row) => { - rowHeight = row.getHeight(); - - if(totalRowsRendered < topPad){ - topPadHeight += rowHeight; - }else { - rowsHeight += rowHeight; - } - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - totalRowsRendered++; - }); - - resized = this.table.rowManager.adjustTableSize(); - containerHeight = this.elementVertical.clientHeight; - if(resized && (fixedHeight || this.table.options.maxHeight)) - { - avgRowHeight = rowsHeight / totalRowsRendered; - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight))); - } - } - - if(!position){ - this.vDomTopPad = 0; - //adjust row height to match average of rendered elements - this.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered); - this.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1); - - this.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight; - }else { - this.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset; - this.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0); - } - - element.style.paddingTop = this.vDomTopPad+"px"; - element.style.paddingBottom = this.vDomBottomPad+"px"; - - if(forceMove){ - this.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0); - } - - this.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight); - - //adjust for horizontal scrollbar if present (and not at top of table) - if(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){ - this.scrollTop += this.elementVertical.offsetHeight - containerHeight; - } - - this.vDomScrollPosTop = this.scrollTop; - this.vDomScrollPosBottom = this.scrollTop; - - holder.scrollTop = this.scrollTop; - - this.dispatch("render-virtual-fill"); - } - } - - _addTopRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomTop -1, - i = 0, - working = true; - - while(working){ - if(this.vDomTop){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.insertBefore(row.getElement(), table.firstChild); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomTop--; - index--; - i++; - - }else { - working = false; - } - - }else { - working = false; - } - - }else { - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomTopPad -= paddingAdjust; - - if(this.vDomTopPad < 0){ - this.vDomTopPad = index * this.vDomRowHeight; - } - - if(index < 1){ - this.vDomTopPad = 0; - } - - table.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop -= paddingAdjust; - } - } - - _removeTopRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomTop], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomTop++; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomTopPad += paddingAdjust; - this.tableElement.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer; - } - } - - _addBottomRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomBottom + 1, - i = 0, - working = true; - - while(working){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.appendChild(row.getElement()); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomBottom++; - index++; - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomBottomPad -= paddingAdjust; - - if(this.vDomBottomPad < 0 || index == rows.length -1){ - this.vDomBottomPad = 0; - } - - table.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom += paddingAdjust; - } - } - - _removeBottomRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomBottom], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomBottom --; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomBottomPad += paddingAdjust; - - if(this.vDomBottomPad < 0){ - this.vDomBottomPad = 0; - } - - this.tableElement.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom -= paddingAdjust; - } - } - - _quickNormalizeRowHeight(rows){ - for(let row of rows){ - row.calcHeight(); - } - - for(let row of rows){ - row.setCellHeight(); - } - } - } - - class RowManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.element = this.createHolderElement(); //containing element - this.tableElement = this.createTableElement(); //table element - this.heightFixer = this.createTableElement(); //table element - this.placeholder = null; //placeholder element - this.placeholderContents = null; //placeholder element - - this.firstRender = false; //handle first render - this.renderMode = "virtual"; //current rendering mode - this.fixedHeight = false; //current rendering mode - - this.rows = []; //hold row data objects - this.activeRowsPipeline = []; //hold calculation of active rows - this.activeRows = []; //rows currently available to on display in the table - this.activeRowsCount = 0; //count of active rows - - this.displayRows = []; //rows currently on display in the table - this.displayRowsCount = 0; //count of display rows - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed - this.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed - - this.dataPipeline = []; //hold data pipeline tasks - this.displayPipeline = []; //hold data display pipeline tasks - - this.scrollbarWidth = 0; - - this.renderer = null; - } - - //////////////// Setup Functions ///////////////// - - createHolderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-tableholder"); - el.setAttribute("tabindex", 0); - // el.setAttribute("role", "rowgroup"); - - return el; - } - - createTableElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-table"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - initializePlaceholder(){ - var placeholder = this.table.options.placeholder; - - if(typeof placeholder === "function"){ - placeholder = placeholder.call(this.table); - } - - placeholder = this.chain("placeholder", [placeholder], placeholder, placeholder) || placeholder; - - //configure placeholder element - if(placeholder){ - let el = document.createElement("div"); - el.classList.add("tabulator-placeholder"); - - if(typeof placeholder == "string"){ - let contents = document.createElement("div"); - contents.classList.add("tabulator-placeholder-contents"); - contents.innerHTML = placeholder; - - el.appendChild(contents); - - this.placeholderContents = contents; - - }else if(typeof HTMLElement !== "undefined" && placeholder instanceof HTMLElement){ - - el.appendChild(placeholder); - this.placeholderContents = placeholder; - }else { - console.warn("Invalid placeholder provided, must be string or HTML Element", placeholder); - - this.el = null; - } - - this.placeholder = el; - } - } - - //return containing element - getElement(){ - return this.element; - } - - //return table element - getTableElement(){ - return this.tableElement; - } - - initialize(){ - this.initializePlaceholder(); - this.initializeRenderer(); - - //initialize manager - this.element.appendChild(this.tableElement); - - this.firstRender = true; - - //scroll header along with table body - this.element.addEventListener("scroll", () => { - var left = this.element.scrollLeft, - leftDir = this.scrollLeft > left, - top = this.element.scrollTop, - topDir = this.scrollTop > top; - - //handle horizontal scrolling - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.dispatch("scroll-horizontal", left, leftDir); - this.dispatchExternal("scrollHorizontal", left, leftDir); - - this._positionPlaceholder(); - } - - //handle vertical scrolling - if(this.scrollTop != top){ - this.scrollTop = top; - - this.renderer.scrollRows(top, topDir); - - this.dispatch("scroll-vertical", top, topDir); - this.dispatchExternal("scrollVertical", top, topDir); - } - }); - } - - ////////////////// Row Manipulation ////////////////// - findRow(subject){ - if(typeof subject == "object"){ - if(subject instanceof Row){ - //subject is row element - return subject; - }else if(subject instanceof RowComponent){ - //subject is public row component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - //subject is a HTML element of the row - let match = this.rows.find((row) => { - return row.getElement() === subject; - }); - - return match || false; - }else if(subject === null){ - return false; - } - }else if(typeof subject == "undefined"){ - return false; - }else { - //subject should be treated as the index of the row - let match = this.rows.find((row) => { - return row.data[this.table.options.index] == subject; - }); - - return match || false; - } - - //catch all for any other type of input - return false; - } - - getRowFromDataObject(data){ - var match = this.rows.find((row) => { - return row.data === data; - }); - - return match || false; - } - - getRowFromPosition(position){ - return this.getDisplayRows().find((row) => { - return row.getPosition() === position && row.isDisplayed(); - }); - } - - scrollToRow(row, position, ifVisible){ - return this.renderer.scrollToRowPosition(row, position, ifVisible); - } - - ////////////////// Data Handling ////////////////// - setData(data, renderInPosition, columnsChanged){ - return new Promise((resolve, reject)=>{ - if(renderInPosition && this.getDisplayRows().length){ - if(this.table.options.pagination){ - this._setDataActual(data, true); - }else { - this.reRenderInPosition(() => { - this._setDataActual(data); - }); - } - }else { - if(this.table.options.autoColumns && columnsChanged && this.table.initialized){ - this.table.columnManager.generateColumnsFromRowData(data); - } - this.resetScroll(); - - this._setDataActual(data); - } - - resolve(); - }); - } - - _setDataActual(data, renderInPosition){ - this.dispatchExternal("dataProcessing", data); - - this._wipeElements(); - - if(Array.isArray(data)){ - this.dispatch("data-processing", data); - - data.forEach((def, i) => { - if(def && typeof def === "object"){ - var row = new Row(def, this); - this.rows.push(row); - }else { - console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def); - } - }); - - this.refreshActiveData(false, false, renderInPosition); - - this.dispatch("data-processed", data); - this.dispatchExternal("dataProcessed", data); - }else { - console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data, "\nData: ", data); - } - } - - _wipeElements(){ - this.dispatch("rows-wipe"); - - this.destroy(); - - this.adjustTableSize(); - - this.dispatch("rows-wiped"); - } - - destroy(){ - this.rows.forEach((row) => { - row.wipe(); - }); - - this.rows = []; - this.activeRows = []; - this.activeRowsPipeline = []; - this.activeRowsCount = 0; - this.displayRows = []; - this.displayRowsCount = 0; - } - - deleteRow(row, blockRedraw){ - var allIndex = this.rows.indexOf(row), - activeIndex = this.activeRows.indexOf(row); - - if(activeIndex > -1){ - this.activeRows.splice(activeIndex, 1); - } - - if(allIndex > -1){ - this.rows.splice(allIndex, 1); - } - - this.setActiveRows(this.activeRows); - - this.displayRowIterator((rows) => { - var displayIndex = rows.indexOf(row); - - if(displayIndex > -1){ - rows.splice(displayIndex, 1); - } - }); - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - this.regenerateRowPositions(); - - this.dispatchExternal("rowDeleted", row.getComponent()); - - if(!this.displayRowsCount){ - this.tableEmpty(); - } - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.getData()); - } - } - - addRow(data, pos, index, blockRedraw){ - var row = this.addRowActual(data, pos, index, blockRedraw); - return row; - } - - //add multiple rows - addRows(data, pos, index, refreshDisplayOnly){ - var rows = []; - - return new Promise((resolve, reject) => { - pos = this.findAddRowPos(pos); - - if(!Array.isArray(data)){ - data = [data]; - } - - if((typeof index == "undefined" && pos) || (typeof index !== "undefined" && !pos)){ - data.reverse(); - } - - data.forEach((item, i) => { - var row = this.addRow(item, pos, index, true); - rows.push(row); - this.dispatch("row-added", row, item, pos, index); - }); - - this.refreshActiveData(refreshDisplayOnly ? "displayPipeline" : false, false, true); - - this.regenerateRowPositions(); - - if(this.displayRowsCount){ - this._clearPlaceholder(); - } - - resolve(rows); - }); - } - - findAddRowPos(pos){ - if(typeof pos === "undefined"){ - pos = this.table.options.addRowPos; - } - - if(pos === "pos"){ - pos = true; - } - - if(pos === "bottom"){ - pos = false; - } - - return pos; - } - - addRowActual(data, pos, index, blockRedraw){ - var row = data instanceof Row ? data : new Row(data || {}, this), - top = this.findAddRowPos(pos), - allIndex = -1, - activeIndex, chainResult; - - if(!index){ - chainResult = this.chain("row-adding-position", [row, top], null, {index, top}); - - index = chainResult.index; - top = chainResult.top; - } - - if(typeof index !== "undefined"){ - index = this.findRow(index); - } - - index = this.chain("row-adding-index", [row, index, top], null, index); - - if(index){ - allIndex = this.rows.indexOf(index); - } - - if(index && allIndex > -1){ - activeIndex = this.activeRows.indexOf(index); - - this.displayRowIterator(function(rows){ - var displayIndex = rows.indexOf(index); - - if(displayIndex > -1){ - rows.splice((top ? displayIndex : displayIndex + 1), 0, row); - } - }); - - if(activeIndex > -1){ - this.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row); - } - - this.rows.splice((top ? allIndex : allIndex + 1), 0, row); - - }else { - - if(top){ - - this.displayRowIterator(function(rows){ - rows.unshift(row); - }); - - this.activeRows.unshift(row); - this.rows.unshift(row); - }else { - this.displayRowIterator(function(rows){ - rows.push(row); - }); - - this.activeRows.push(row); - this.rows.push(row); - } - } - - this.setActiveRows(this.activeRows); - - this.dispatchExternal("rowAdded", row.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - return row; - } - - moveRow(from, to, after){ - this.dispatch("row-move", from, to, after); - - this.moveRowActual(from, to, after); - - this.regenerateRowPositions(); - - this.dispatch("row-moved", from, to, after); - this.dispatchExternal("rowMoved", from.getComponent()); - } - - moveRowActual(from, to, after){ - this.moveRowInArray(this.rows, from, to, after); - this.moveRowInArray(this.activeRows, from, to, after); - - this.displayRowIterator((rows) => { - this.moveRowInArray(rows, from, to, after); - }); - - this.dispatch("row-moving", from, to, after); - } - - moveRowInArray(rows, from, to, after){ - var fromIndex, toIndex, start, end; - - if(from !== to){ - - fromIndex = rows.indexOf(from); - - if (fromIndex > -1) { - - rows.splice(fromIndex, 1); - - toIndex = rows.indexOf(to); - - if (toIndex > -1) { - - if(after){ - rows.splice(toIndex+1, 0, from); - }else { - rows.splice(toIndex, 0, from); - } - - }else { - rows.splice(fromIndex, 0, from); - } - } - - //restyle rows - if(rows === this.getDisplayRows()){ - - start = fromIndex < toIndex ? fromIndex : toIndex; - end = toIndex > fromIndex ? toIndex : fromIndex +1; - - for(let i = start; i <= end; i++){ - if(rows[i]){ - this.styleRow(rows[i], i); - } - } - } - } - } - - clearData(){ - this.setData([]); - } - - getRowIndex(row){ - return this.findRowIndex(row, this.rows); - } - - getDisplayRowIndex(row){ - var index = this.getDisplayRows().indexOf(row); - return index > -1 ? index : false; - } - - nextDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - nextRow = false; - - - if(index !== false && index < this.displayRowsCount -1){ - nextRow = this.getDisplayRows()[index+1]; - } - - if(nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")){ - return this.nextDisplayRow(nextRow, rowOnly); - } - - return nextRow; - } - - prevDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - prevRow = false; - - if(index){ - prevRow = this.getDisplayRows()[index-1]; - } - - if(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")){ - return this.prevDisplayRow(prevRow, rowOnly); - } - - return prevRow; - } - - findRowIndex(row, list){ - var rowIndex; - - row = this.findRow(row); - - if(row){ - rowIndex = list.indexOf(row); - - if(rowIndex > -1){ - return rowIndex; - } - } - - return false; - } - - getData(active, transform){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - if(row.type == "row"){ - output.push(row.getData(transform || "data")); - } - }); - - return output; - } - - getComponents(active){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - return output; - } - - getDataCount(active){ - var rows = this.getRows(active); - - return rows.length; - } - - scrollHorizontal(left){ - this.scrollLeft = left; - this.element.scrollLeft = left; - - this.dispatch("scroll-horizontal", left); - } - - registerDataPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.dataPipeline.push({handler, priority}); - this.dataPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else { - console.error("Data pipeline handlers must have a priority in order to be registered"); - } - } - - registerDisplayPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.displayPipeline.push({handler, priority}); - this.displayPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else { - console.error("Display pipeline handlers must have a priority in order to be registered"); - } - } - - //set active data set - refreshActiveData(handler, skipStage, renderInPosition){ - var table = this.table, - stage = "", - index = 0, - cascadeOrder = ["all", "dataPipeline", "display", "displayPipeline", "end"]; - - if(!this.table.destroyed){ - if(typeof handler === "function"){ - index = this.dataPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "dataPipeline"; - - if(skipStage){ - if(index == this.dataPipeline.length - 1){ - stage = "display"; - }else { - index++; - } - } - }else { - index = this.displayPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "displayPipeline"; - - if(skipStage){ - if(index == this.displayPipeline.length - 1){ - stage = "end"; - }else { - index++; - } - } - }else { - console.error("Unable to refresh data, invalid handler provided", handler); - return; - } - } - }else { - stage = handler || "all"; - index = 0; - } - - if(this.redrawBlock){ - if(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){ - this.redrawBlockRestoreConfig = { - handler: handler, - skipStage: skipStage, - renderInPosition: renderInPosition, - stage:stage, - index:index, - }; - } - - return; - }else { - if(Helpers.elVisible(this.element)){ - if(renderInPosition){ - this.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition)); - }else { - this.refreshPipelines(handler, stage, index, renderInPosition); - - if(!handler){ - this.table.columnManager.renderer.renderColumns(); - } - - this.renderTable(); - - if(table.options.layoutColumnsOnNewData){ - this.table.columnManager.redraw(true); - } - } - }else { - this.refreshPipelines(handler, stage, index, renderInPosition); - } - - this.dispatch("data-refreshed"); - } - } - } - - refreshPipelines(handler, stage, index, renderInPosition){ - this.dispatch("data-refreshing"); - - if(!handler || !this.activeRowsPipeline[0]){ - this.activeRowsPipeline[0] = this.rows.slice(0); - } - - //cascade through data refresh stages - switch(stage){ - case "all": - //handle case where all data needs refreshing - - case "dataPipeline": - for(let i = index; i < this.dataPipeline.length; i++){ - let result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0)); - - this.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0); - } - - this.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]); - - case "display": - index = 0; - this.resetDisplayRows(); - - case "displayPipeline": - for(let i = index; i < this.displayPipeline.length; i++){ - let result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition); - - this.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i); - } - - case "end": - //case to handle scenario when trying to skip past end stage - this.regenerateRowPositions(); - } - - if(this.getDisplayRows().length){ - this._clearPlaceholder(); - } - } - - //regenerate row positions - regenerateRowPositions(){ - var rows = this.getDisplayRows(); - var index = 1; - - rows.forEach((row) => { - if (row.type === "row"){ - row.setPosition(index); - index++; - } - }); - } - - setActiveRows(activeRows){ - this.activeRows = this.activeRows = Object.assign([], activeRows); - this.activeRowsCount = this.activeRows.length; - } - - //reset display rows array - resetDisplayRows(){ - this.displayRows = []; - - this.displayRows.push(this.activeRows.slice(0)); - - this.displayRowsCount = this.displayRows[0].length; - } - - //set display row pipeline data - setDisplayRows(displayRows, index){ - this.displayRows[index] = displayRows; - - if(index == this.displayRows.length -1){ - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - } - - getDisplayRows(index){ - if(typeof index == "undefined"){ - return this.displayRows.length ? this.displayRows[this.displayRows.length -1] : []; - }else { - return this.displayRows[index] || []; - } - } - - getVisibleRows(chain, viewable){ - var rows = Object.assign([], this.renderer.visibleRows(!viewable)); - - if(chain){ - rows = this.chain("rows-visible", [viewable], rows, rows); - } - - return rows; - } - - //repeat action across display rows - displayRowIterator(callback){ - this.activeRowsPipeline.forEach(callback); - this.displayRows.forEach(callback); - - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - - //return only actual rows (not group headers etc) - getRows(type){ - var rows = []; - - switch(type){ - case "active": - rows = this.activeRows; - break; - - case "display": - rows = this.table.rowManager.getDisplayRows(); - break; - - case "visible": - rows = this.getVisibleRows(false, true); - break; - - default: - rows = this.chain("rows-retrieve", type, null, this.rows) || this.rows; - } - - return rows; - } - - ///////////////// Table Rendering ///////////////// - //trigger rerender of table in current position - reRenderInPosition(callback){ - if(this.redrawBlock){ - if(callback){ - callback(); - }else { - this.redrawBlockRenderInPosition = true; - } - }else { - this.dispatchExternal("renderStarted"); - - this.renderer.rerenderRows(callback); - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - } - - scrollBarCheck(){ - var scrollbarWidth = 0; - - //adjust for vertical scrollbar moving table when present - if(this.element.scrollHeight > this.element.clientHeight){ - scrollbarWidth = this.element.offsetWidth - this.element.clientWidth; - } - - if(scrollbarWidth !== this.scrollbarWidth){ - this.scrollbarWidth = scrollbarWidth; - this.dispatch("scrollbar-vertical", scrollbarWidth); - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": VirtualDomVertical, - "basic": BasicVertical, - }; - - if(typeof this.table.options.renderVertical === "string"){ - renderClass = renderers[this.table.options.renderVertical]; - }else { - renderClass = this.table.options.renderVertical; - } - - if(renderClass){ - this.renderMode = this.table.options.renderVertical; - - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - - if((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){ - this.fixedHeight = true; - }else { - this.fixedHeight = false; - } - }else { - console.error("Unable to find matching renderer:", this.table.options.renderVertical); - } - } - - getRenderMode(){ - return this.renderMode; - } - - renderTable(){ - this.dispatchExternal("renderStarted"); - - this.element.scrollTop = 0; - - this._clearTable(); - - if(this.displayRowsCount){ - this.renderer.renderRows(); - - if(this.firstRender){ - this.firstRender = false; - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.layoutRefresh(true); - } - }else { - this.renderEmptyScroll(); - } - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.dispatch("table-layout"); - - if(!this.displayRowsCount){ - this._showPlaceholder(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - - //show scrollbars on empty table div - renderEmptyScroll(){ - if(this.placeholder){ - this.tableElement.style.display = "none"; - }else { - this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px"; - // this.tableElement.style.minHeight = "1px"; - // this.tableElement.style.visibility = "hidden"; - } - } - - _clearTable(){ - this._clearPlaceholder(); - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.renderer.clearRows(); - } - - tableEmpty(){ - this.renderEmptyScroll(); - this._showPlaceholder(); - } - - checkPlaceholder(){ - if(this.displayRowsCount){ - this._clearPlaceholder(); - }else { - this.tableEmpty(); - } - } - - _showPlaceholder(){ - if(this.placeholder){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - this.initializePlaceholder(); - - this.placeholder.setAttribute("tabulator-render-mode", this.renderMode); - - this.getElement().appendChild(this.placeholder); - this._positionPlaceholder(); - - this.adjustTableSize(); - } - } - - _clearPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - // clear empty table placeholder min - this.tableElement.style.minWidth = ""; - this.tableElement.style.display = ""; - } - - _positionPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.style.width = this.table.columnManager.getWidth() + "px"; - this.placeholderContents.style.width = this.table.rowManager.element.clientWidth + "px"; - this.placeholderContents.style.marginLeft = this.scrollLeft + "px"; - } - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else { - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - //normalize height of active rows - normalizeHeight(){ - this.activeRows.forEach(function(row){ - row.normalizeHeight(); - }); - } - - //adjust the height of the table holder to fit in the Tabulator element - adjustTableSize(){ - let initialHeight = this.element.clientHeight, minHeight; - let resized = false; - - if(this.renderer.verticalFillMode === "fill"){ - let otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0)); - - if(this.fixedHeight){ - minHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + "px"; - - const height = "calc(100% - " + otherHeight + "px)"; - this.element.style.minHeight = minHeight || "calc(100% - " + otherHeight + "px)"; - this.element.style.height = height; - this.element.style.maxHeight = height; - } else { - this.element.style.height = ""; - this.element.style.height = - this.table.element.clientHeight - otherHeight + "px"; - this.element.scrollTop = this.scrollTop; - } - - this.renderer.resize(); - - //check if the table has changed size when dealing with variable height tables - if(!this.fixedHeight && initialHeight != this.element.clientHeight){ - resized = true; - if(this.subscribed("table-resize")){ - this.dispatch("table-resize"); - }else { - this.redraw(); - } - } - - this.scrollBarCheck(); - } - - this._positionPlaceholder(); - return resized; - } - - //reinitialize all rows - reinitialize(){ - this.rows.forEach(function(row){ - row.reinitialize(true); - }); - } - - //prevent table from being redrawn - blockRedraw (){ - this.redrawBlock = true; - this.redrawBlockRestoreConfig = false; - } - - //restore table redrawing - restoreRedraw (){ - this.redrawBlock = false; - - if(this.redrawBlockRestoreConfig){ - this.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition); - - this.redrawBlockRestoreConfig = false; - }else { - if(this.redrawBlockRenderInPosition){ - this.reRenderInPosition(); - } - } - - this.redrawBlockRenderInPosition = false; - } - - //redraw table - redraw (force){ - this.adjustTableSize(); - this.table.tableWidth = this.table.element.clientWidth; - - if(!force){ - this.reRenderInPosition(); - this.scrollHorizontal(this.scrollLeft); - }else { - this.renderTable(); - } - } - - resetScroll(){ - this.element.scrollLeft = 0; - this.element.scrollTop = 0; - - if(this.table.browser === "ie"){ - var event = document.createEvent("Event"); - event.initEvent("scroll", false, true); - this.element.dispatchEvent(event); - }else { - this.element.dispatchEvent(new Event('scroll')); - } - } - } - - class FooterManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.active = false; - this.element = this.createElement(); //containing element - this.containerElement = this.createContainerElement(); //containing element - this.external = false; - } - - initialize(){ - this.initializeElement(); - } - - createElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer"); - - return el; - } - - - createContainerElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer-contents"); - - this.element.appendChild(el); - - return el; - } - - initializeElement(){ - if(this.table.options.footerElement){ - - switch(typeof this.table.options.footerElement){ - case "string": - if(this.table.options.footerElement[0] === "<"){ - this.containerElement.innerHTML = this.table.options.footerElement; - }else { - this.external = true; - this.containerElement = document.querySelector(this.table.options.footerElement); - } - break; - - default: - this.element = this.table.options.footerElement; - break; - } - } - } - - getElement(){ - return this.element; - } - - append(element){ - this.activate(); - - this.containerElement.appendChild(element); - this.table.rowManager.adjustTableSize(); - } - - prepend(element){ - this.activate(); - - this.element.insertBefore(element, this.element.firstChild); - this.table.rowManager.adjustTableSize(); - } - - remove(element){ - element.parentNode.removeChild(element); - this.deactivate(); - } - - deactivate(force){ - if(!this.element.firstChild || force){ - if(!this.external){ - this.element.parentNode.removeChild(this.element); - } - this.active = false; - } - } - - activate(){ - if(!this.active){ - this.active = true; - if(!this.external){ - this.table.element.appendChild(this.getElement()); - this.table.element.style.display = ''; - } - } - } - - redraw(){ - this.dispatch("footer-redraw"); - } - } - - class InteractionManager extends CoreFeature { - - constructor (table){ - super(table); - - this.el = null; - - this.abortClasses = ["tabulator-headers", "tabulator-table"]; - - this.previousTargets = {}; - - this.listeners = [ - "click", - "dblclick", - "contextmenu", - "mouseenter", - "mouseleave", - "mouseover", - "mouseout", - "mousemove", - "mouseup", - "mousedown", - "touchstart", - "touchend", - ]; - - this.componentMap = { - "tabulator-cell":"cell", - "tabulator-row":"row", - "tabulator-group":"group", - "tabulator-col":"column", - }; - - this.pseudoTrackers = { - "row":{ - subscriber:null, - target:null, - }, - "cell":{ - subscriber:null, - target:null, - }, - "group":{ - subscriber:null, - target:null, - }, - "column":{ - subscriber:null, - target:null, - }, - }; - - this.pseudoTracking = false; - } - - initialize(){ - this.el = this.table.element; - - this.buildListenerMap(); - this.bindSubscriptionWatchers(); - } - - buildListenerMap(){ - var listenerMap = {}; - - this.listeners.forEach((listener) => { - listenerMap[listener] = { - handler:null, - components:[], - }; - }); - - this.listeners = listenerMap; - } - - bindPseudoEvents(){ - Object.keys(this.pseudoTrackers).forEach((key) => { - this.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key); - this.subscribe(key + "-mouseover", this.pseudoTrackers[key].subscriber); - }); - - this.pseudoTracking = true; - } - - pseudoMouseEnter(key, e, target){ - if(this.pseudoTrackers[key].target !== target){ - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, this.pseudoTrackers[key].target); - } - - this.pseudoMouseLeave(key, e); - - this.pseudoTrackers[key].target = target; - - this.dispatch(key + "-mouseenter", e, target); - } - } - - pseudoMouseLeave(key, e){ - var leaveList = Object.keys(this.pseudoTrackers), - linkedKeys = { - "row":["cell"], - "cell":["row"], - }; - - leaveList = leaveList.filter((item) => { - var links = linkedKeys[key]; - return item !== key && (!links || (links && !links.includes(item))); - }); - - - leaveList.forEach((key) => { - var target = this.pseudoTrackers[key].target; - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, target); - - this.pseudoTrackers[key].target = null; - } - }); - } - - - bindSubscriptionWatchers(){ - var listeners = Object.keys(this.listeners), - components = Object.values(this.componentMap); - - for(let comp of components){ - for(let listener of listeners){ - let key = comp + "-" + listener; - - this.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener)); - } - } - - this.subscribe("table-destroy", this.clearWatchers.bind(this)); - } - - subscriptionChanged(component, key, added){ - var listener = this.listeners[key].components, - index = listener.indexOf(component), - changed = false; - - if(added){ - if(index === -1){ - listener.push(component); - changed = true; - } - }else { - if(!this.subscribed(component + "-" + key)){ - if(index > -1){ - listener.splice(index, 1); - changed = true; - } - } - } - - if((key === "mouseenter" || key === "mouseleave") && !this.pseudoTracking){ - this.bindPseudoEvents(); - } - - if(changed){ - this.updateEventListeners(); - } - } - - updateEventListeners(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.components.length){ - if(!listener.handler){ - listener.handler = this.track.bind(this, key); - this.el.addEventListener(key, listener.handler); - // this.el.addEventListener(key, listener.handler, {passive: true}) - } - }else { - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } - } - - track(type, e){ - var path = (e.composedPath && e.composedPath()) || e.path; - - var targets = this.findTargets(path); - targets = this.bindComponents(type, targets); - - this.triggerEvents(type, e, targets); - - if(this.pseudoTracking && (type == "mouseover" || type == "mouseleave") && !Object.keys(targets).length){ - this.pseudoMouseLeave("none", e); - } - } - - findTargets(path){ - var targets = {}; - - let componentMap = Object.keys(this.componentMap); - - for (let el of path) { - let classList = el.classList ? [...el.classList] : []; - - let abort = classList.filter((item) => { - return this.abortClasses.includes(item); - }); - - if(abort.length){ - break; - } - - let elTargets = classList.filter((item) => { - return componentMap.includes(item); - }); - - for (let target of elTargets) { - if(!targets[this.componentMap[target]]){ - targets[this.componentMap[target]] = el; - } - } - } - - if(targets.group && targets.group === targets.row){ - delete targets.row; - } - - return targets; - } - - bindComponents(type, targets){ - //ensure row component is looked up before cell - var keys = Object.keys(targets).reverse(), - listener = this.listeners[type], - matches = {}, - targetMatches = {}; - - for(let key of keys){ - let component, - target = targets[key], - previousTarget = this.previousTargets[key]; - - if(previousTarget && previousTarget.target === target){ - component = previousTarget.component; - }else { - switch(key){ - case "row": - case "group": - if(listener.components.includes("row") || listener.components.includes("cell") || listener.components.includes("group")){ - let rows = this.table.rowManager.getVisibleRows(true); - - component = rows.find((row) => { - return row.getElement() === target; - }); - - if(targets["row"] && targets["row"].parentNode && targets["row"].parentNode.closest(".tabulator-row")){ - targets[key] = false; - } - } - break; - - case "column": - if(listener.components.includes("column")){ - component = this.table.columnManager.findColumn(target); - } - break; - - case "cell": - if(listener.components.includes("cell")){ - if(matches["row"] instanceof Row){ - component = matches["row"].findCell(target); - }else { - if(targets["row"]){ - console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"); - } - } - } - break; - } - } - - if(component){ - matches[key] = component; - targetMatches[key] = { - target:target, - component:component, - }; - } - } - - this.previousTargets = targetMatches; - - return matches; - } - - triggerEvents(type, e, targets){ - var listener = this.listeners[type]; - - for(let key in targets){ - if(targets[key] && listener.components.includes(key)){ - this.dispatch(key + "-" + type, e, targets[key]); - } - } - } - - clearWatchers(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } - } - - class ComponentFunctionBinder{ - - constructor(table){ - this.table = table; - - this.bindings = {}; - } - - bind(type, funcName, handler){ - if(!this.bindings[type]){ - this.bindings[type] = {}; - } - - if(this.bindings[type][funcName]){ - console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, handler); - }else { - this.bindings[type][funcName] = handler; - } - } - - handle(type, component, name){ - if(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){ - return this.bindings[type][name].bind(null, component); - }else { - if(name !== "then" && typeof name === "string" && !name.startsWith("_")){ - if(this.table.options.debugInvalidComponentFuncs){ - console.error("The " + type + " component does not have a " + name + " function, have you checked that you have the correct Tabulator module installed?"); - } - } - } - } - } - - class DataLoader extends CoreFeature{ - constructor(table){ - super(table); - - this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request - this.loading = false; - } - - initialize(){} - - load(data, params, config, replace, silent, columnsChanged){ - var requestNo = ++this.requestOrder; - - if(this.table.destroyed){ - return Promise.resolve(); - } - - this.dispatchExternal("dataLoading", data); - - //parse json data to array - if (data && (data.indexOf("{") == 0 || data.indexOf("[") == 0)){ - data = JSON.parse(data); - } - - if(this.confirm("data-loading", [data, params, config, silent])){ - this.loading = true; - - if(!silent){ - this.alertLoader(); - } - - //get params for request - params = this.chain("data-params", [data, config, silent], params || {}, params || {}); - - params = this.mapParams(params, this.table.options.dataSendParams); - - var result = this.chain("data-load", [data, params, config, silent], false, Promise.resolve([])); - - return result.then((response) => { - if(!this.table.destroyed){ - if(!Array.isArray(response) && typeof response == "object"){ - response = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams)); - } - - var rowData = this.chain("data-loaded", response, null, response); - - if(requestNo == this.requestOrder){ - this.clearAlert(); - - if(rowData !== false){ - this.dispatchExternal("dataLoaded", rowData); - this.table.rowManager.setData(rowData, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - } - }else { - console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made"); - } - }else { - console.warn("Data Load Response Blocked - Table has been destroyed"); - } - }).catch((error) => { - console.error("Data Load Error: ", error); - this.dispatchExternal("dataLoadError", error); - - if(!silent){ - this.alertError(); - } - - setTimeout(() => { - this.clearAlert(); - }, this.table.options.dataLoaderErrorTimeout); - }) - .finally(() => { - this.loading = false; - }); - }else { - this.dispatchExternal("dataLoaded", data); - - if(!data){ - data = []; - } - - this.table.rowManager.setData(data, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - return Promise.resolve(); - } - } - - mapParams(params, map){ - var output = {}; - - for(let key in params){ - output[map.hasOwnProperty(key) ? map[key] : key] = params[key]; - } - - return output; - } - - objectInvert(obj){ - var output = {}; - - for(let key in obj){ - output[obj[key]] = key; - } - - return output; - } - - blockActiveLoad(){ - this.requestOrder++; - } - - alertLoader(){ - var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader; - - if(shouldLoad){ - this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading")); - } - } - - alertError(){ - this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error"); - } - - clearAlert(){ - this.table.alertManager.clear(); - } - } - - class ExternalEventBus { - - constructor(table, optionsList, debug){ - this.table = table; - this.events = {}; - this.optionsList = optionsList || {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push(callback); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else { - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - }else { - delete this.events[key]; - } - }else { - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(), - result; - - if(this.events[key]){ - this.events[key].forEach((callback, i) => { - let callResult = callback.apply(this.table, args); - - if(!i){ - result = callResult; - } - }); - } - - return result; - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "ExternalEvent:" + args[0]; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } - } - - class InternalEventBus { - - constructor(debug){ - this.events = {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this); - this.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback, priority = 10000){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push({callback, priority}); - - this.events[key].sort((a, b) => { - return a.priority - b.priority; - }); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item.callback === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else { - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - } - }else { - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _chain(key, args, initialValue, fallback){ - var value = initialValue; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - value = subscriber.callback.apply(this, args.concat([value])); - }); - - return value; - }else { - return typeof fallback === "function" ? fallback() : fallback; - } - } - - _confirm(key, args){ - var confirmed = false; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - if(subscriber.callback.apply(this, args)){ - confirmed = true; - } - }); - } - - return confirmed; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(); - - if(this.events[key]){ - this.events[key].forEach((subscriber) => { - subscriber.callback.apply(this, args); - }); - } - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } - - _debugChain(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._chain(...arguments); - } - - _debugConfirm(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._confirm(...arguments); - } - } - - class DeprecationAdvisor extends CoreFeature{ - - constructor(table){ - super(table); - } - - _warnUser(){ - if(this.options("debugDeprecation")){ - console.warn(...arguments); - } - } - - check(oldOption, newOption, convert){ - var msg = ""; - - if(typeof this.options(oldOption) !== "undefined"){ - msg = "Deprecated Setup Option - Use of the %c" + oldOption + "%c option is now deprecated"; - - if(newOption){ - msg = msg + ", Please use the %c" + newOption + "%c option instead"; - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - - if(convert){ - this.table.options[newOption] = this.table.options[oldOption]; - } - }else { - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;'); - } - - return false; - }else { - return true; - } - } - - checkMsg(oldOption, msg){ - if(typeof this.options(oldOption) !== "undefined"){ - this._warnUser("%cDeprecated Setup Option - Use of the %c" + oldOption + " %c option is now deprecated, " + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - - return false; - }else { - return true; - } - } - - msg(msg){ - this._warnUser(msg); - } - } - - class TableRegistry { - - static register(table){ - TableRegistry.tables.push(table); - } - - static deregister(table){ - var index = TableRegistry.tables.indexOf(table); - - if(index > -1){ - TableRegistry.tables.splice(index, 1); - } - } - - static lookupTable(query, silent){ - var results = [], - matches, match; - - if(typeof query === "string"){ - matches = document.querySelectorAll(query); - - if(matches.length){ - for(var i = 0; i < matches.length; i++){ - match = TableRegistry.matchElement(matches[i]); - - if(match){ - results.push(match); - } - } - } - - }else if((typeof HTMLElement !== "undefined" && query instanceof HTMLElement) || query instanceof Tabulator){ - match = TableRegistry.matchElement(query); - - if(match){ - results.push(match); - } - }else if(Array.isArray(query)){ - query.forEach(function(item){ - results = results.concat(TableRegistry.lookupTable(item)); - }); - }else { - if(!silent){ - console.warn("Table Connection Error - Invalid Selector", query); - } - } - - return results; - } - - static matchElement(element){ - return TableRegistry.tables.find(function(table){ - return element instanceof Tabulator ? table === element : table.element === element; - }); - } - } - - TableRegistry.tables = []; - - class Popup extends CoreFeature{ - constructor(table, element, parent){ - super(table); - - this.element = element; - this.container = this._lookupContainer(); - - this.parent = parent; - - this.reversedX = false; - this.childPopup = null; - this.blurable = false; - this.blurCallback = null; - this.blurEventsBound = false; - this.renderedCallback = null; - - this.visible = false; - this.hideable = true; - - this.element.classList.add("tabulator-popup-container"); - - this.blurEvent = this.hide.bind(this, false); - this.escEvent = this._escapeCheck.bind(this); - - this.destroyBinding = this.tableDestroyed.bind(this); - this.destroyed = false; - } - - tableDestroyed(){ - this.destroyed = true; - this.hide(true); - } - - _lookupContainer(){ - var container = this.table.options.popupContainer; - - if(typeof container === "string"){ - container = document.querySelector(container); - - if(!container){ - console.warn("Menu Error - no container element found matching selector:", this.table.options.popupContainer , "(defaulting to document body)"); - } - }else if (container === true){ - container = this.table.element; - } - - if(container && !this._checkContainerIsParent(container)){ - container = false; - console.warn("Menu Error - container element does not contain this table:", this.table.options.popupContainer , "(defaulting to document body)"); - } - - if(!container){ - container = document.body; - } - - return container; - } - - _checkContainerIsParent(container, element = this.table.element){ - if(container === element){ - return true; - }else { - return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false; - } - } - - renderCallback(callback){ - this.renderedCallback = callback; - } - - containerEventCoords(e){ - var touch = !(e instanceof MouseEvent); - - var x = touch ? e.touches[0].pageX : e.pageX; - var y = touch ? e.touches[0].pageY : e.pageY; - - if(this.container !== document.body){ - let parentOffset = Helpers.elOffset(this.container); - - x -= parentOffset.left; - y -= parentOffset.top; - } - - return {x, y}; - } - - elementPositionCoords(element, position = "right"){ - var offset = Helpers.elOffset(element), - containerOffset, x, y; - - if(this.container !== document.body){ - containerOffset = Helpers.elOffset(this.container); - - offset.left -= containerOffset.left; - offset.top -= containerOffset.top; - } - - switch(position){ - case "right": - x = offset.left + element.offsetWidth; - y = offset.top - 1; - break; - - case "bottom": - x = offset.left; - y = offset.top + element.offsetHeight; - break; - - case "left": - x = offset.left; - y = offset.top - 1; - break; - - case "top": - x = offset.left; - y = offset.top; - break; - - case "center": - x = offset.left + (element.offsetWidth / 2); - y = offset.top + (element.offsetHeight / 2); - break; - - } - - return {x, y, offset}; - } - - show(origin, position){ - var x, y, parentEl, parentOffset, coords; - - if(this.destroyed || this.table.destroyed){ - return this; - } - - if(origin instanceof HTMLElement){ - parentEl = origin; - coords = this.elementPositionCoords(origin, position); - - parentOffset = coords.offset; - x = coords.x; - y = coords.y; - - }else if(typeof origin === "number"){ - parentOffset = {top:0, left:0}; - x = origin; - y = position; - }else { - coords = this.containerEventCoords(origin); - - x = coords.x; - y = coords.y; - - this.reversedX = false; - } - - this.element.style.top = y + "px"; - this.element.style.left = x + "px"; - - this.container.appendChild(this.element); - - if(typeof this.renderedCallback === "function"){ - this.renderedCallback(); - } - - this._fitToScreen(x, y, parentEl, parentOffset, position); - - this.visible = true; - - this.subscribe("table-destroy", this.destroyBinding); - - this.element.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - return this; - } - - _fitToScreen(x, y, parentEl, parentOffset, position){ - var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop; - - //move menu to start on right edge if it is too close to the edge of the screen - if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){ - this.element.style.left = ""; - - if(parentEl){ - this.element.style.right = (this.container.offsetWidth - parentOffset.left) + "px"; - }else { - this.element.style.right = (this.container.offsetWidth - x) + "px"; - } - - this.reversedX = true; - } - - //move menu to start on bottom edge if it is too close to the edge of the screen - if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) { - if(parentEl){ - switch(position){ - case "bottom": - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + "px"; - break; - - default: - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + "px"; - } - - }else { - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + "px"; - } - } - } - - isVisible(){ - return this.visible; - } - - hideOnBlur(callback){ - this.blurable = true; - - if(this.visible){ - setTimeout(() => { - if(this.visible){ - this.table.rowManager.element.addEventListener("scroll", this.blurEvent); - this.subscribe("cell-editing", this.blurEvent); - document.body.addEventListener("click", this.blurEvent); - document.body.addEventListener("contextmenu", this.blurEvent); - document.body.addEventListener("mousedown", this.blurEvent); - window.addEventListener("resize", this.blurEvent); - document.body.addEventListener("keydown", this.escEvent); - - this.blurEventsBound = true; - } - }, 100); - - this.blurCallback = callback; - } - - return this; - } - - _escapeCheck(e){ - if(e.keyCode == 27){ - this.hide(); - } - } - - blockHide(){ - this.hideable = false; - } - - restoreHide(){ - this.hideable = true; - } - - hide(silent = false){ - if(this.visible && this.hideable){ - if(this.blurable && this.blurEventsBound){ - document.body.removeEventListener("keydown", this.escEvent); - document.body.removeEventListener("click", this.blurEvent); - document.body.removeEventListener("contextmenu", this.blurEvent); - document.body.removeEventListener("mousedown", this.blurEvent); - window.removeEventListener("resize", this.blurEvent); - this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); - this.unsubscribe("cell-editing", this.blurEvent); - - this.blurEventsBound = false; - } - - if(this.childPopup){ - this.childPopup.hide(); - } - - if(this.parent){ - this.parent.childPopup = null; - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.visible = false; - - if(this.blurCallback && !silent){ - this.blurCallback(); - } - - this.unsubscribe("table-destroy", this.destroyBinding); - } - - return this; - } - - child(element){ - if(this.childPopup){ - this.childPopup.hide(); - } - - this.childPopup = new Popup(this.table, element, this); - - return this.childPopup; - } - } - - class Module extends CoreFeature{ - - constructor(table, name){ - super(table); - - this._handler = null; - } - - initialize(){ - // setup module when table is initialized, to be overridden in module - } - - - /////////////////////////////////// - ////// Options Registration /////// - /////////////////////////////////// - - registerTableOption(key, value){ - this.table.optionsList.register(key, value); - } - - registerColumnOption(key, value){ - this.table.columnManager.optionsList.register(key, value); - } - - /////////////////////////////////// - /// Public Function Registration /// - /////////////////////////////////// - - registerTableFunction(name, func){ - if(typeof this.table[name] === "undefined"){ - this.table[name] = (...args) => { - this.table.initGuard(name); - - return func(...args); - }; - }else { - console.warn("Unable to bind table function, name already in use", name); - } - } - - registerComponentFunction(component, func, handler){ - return this.table.componentFunctionBinder.bind(component, func, handler); - } - - /////////////////////////////////// - ////////// Data Pipeline ////////// - /////////////////////////////////// - - registerDataHandler(handler, priority){ - this.table.rowManager.registerDataPipelineHandler(handler, priority); - this._handler = handler; - } - - registerDisplayHandler(handler, priority){ - this.table.rowManager.registerDisplayPipelineHandler(handler, priority); - this._handler = handler; - } - - displayRows(adjust){ - var index = this.table.rowManager.displayRows.length - 1, - lookupIndex; - - if(this._handler){ - lookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => { - return item.handler === this._handler; - }); - - if(lookupIndex > -1){ - index = lookupIndex; - } - } - - if(adjust){ - index = index + adjust; - } - - if(this._handler){ - if(index > -1){ - return this.table.rowManager.getDisplayRows(index); - }else { - return this.activeRows(); - } - } - } - - activeRows(){ - return this.table.rowManager.activeRows; - } - - refreshData(renderInPosition, handler){ - if(!handler){ - handler = this._handler; - } - - if(handler){ - this.table.rowManager.refreshActiveData(handler, false, renderInPosition); - } - } - - /////////////////////////////////// - //////// Footer Management //////// - /////////////////////////////////// - - footerAppend(element){ - return this.table.footerManager.append(element); - } - - footerPrepend(element){ - return this.table.footerManager.prepend(element); - } - - footerRemove(element){ - return this.table.footerManager.remove(element); - } - - /////////////////////////////////// - //////// Popups Management //////// - /////////////////////////////////// - - popup(menuEl, menuContainer){ - return new Popup(this.table, menuEl, menuContainer); - } - - /////////////////////////////////// - //////// Alert Management //////// - /////////////////////////////////// - - alert(content, type){ - return this.table.alertManager.alert(content, type); - } - - clearAlert(){ - return this.table.alertManager.clear(); - } - - } - - //resize columns to fit data they contain - function fitData(columns, forced){ - if(forced){ - this.table.columnManager.renderer.reinitializeColumnWidths(columns); - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } - - //resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable - function fitDataGeneral(columns, forced){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } - - //resize columns to fit data the contain and stretch last column to fill table - function fitDataStretch(columns, forced){ - var colsWidth = 0, - tableWidth = this.table.rowManager.element.clientWidth, - gap = 0, - lastCol = false; - - columns.forEach((column, i) => { - if(!column.widthFixed){ - column.reinitializeWidth(); - } - - if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){ - lastCol = column; - } - - if(column.visible){ - colsWidth += column.getWidth(); - } - }); - - if(lastCol){ - gap = tableWidth - colsWidth + lastCol.getWidth(); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - lastCol.setWidth(0); - this.table.modules.responsiveLayout.update(); - } - - if(gap > 0){ - lastCol.setWidth(gap); - }else { - lastCol.reinitializeWidth(); - } - }else { - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } - } - - //resize columns to fit - function fitColumns(columns, forced){ - var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width - var fixedWidth = 0; //total width of columns with a defined width - var flexWidth = 0; //total width available to flexible columns - var flexGrowUnits = 0; //total number of widthGrow blocks across all columns - var flexColWidth = 0; //desired width of flexible columns - var flexColumns = []; //array of flexible width columns - var fixedShrinkColumns = []; //array of fixed width columns that can shrink - var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns - var overflowWidth = 0; //horizontal overflow width - var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps - - function calcWidth(width){ - var colWidth; - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width); - }else { - colWidth = parseInt(width); - } - }else { - colWidth = width; - } - - return colWidth; - } - - //ensure columns resize to take up the correct amount of space - function scaleColumns(columns, freeSpace, colWidth, shrinkCols){ - var oversizeCols = [], - oversizeSpace = 0, - remainingSpace = 0, - nextColWidth = 0, - remainingFlexGrowUnits = flexGrowUnits, - gap = 0, - changeUnits = 0, - undersizeCols = []; - - function calcGrow(col){ - return (colWidth * (col.column.definition.widthGrow || 1)); - } - - function calcShrink(col){ - return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0))); - } - - columns.forEach(function(col, i){ - var width = shrinkCols ? calcShrink(col) : calcGrow(col); - if(col.column.minWidth >= width){ - oversizeCols.push(col); - }else { - if(col.column.maxWidth && col.column.maxWidth < width){ - col.width = col.column.maxWidth; - freeSpace -= col.column.maxWidth; - - remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - - if(remainingFlexGrowUnits){ - colWidth = Math.floor(freeSpace/remainingFlexGrowUnits); - } - }else { - undersizeCols.push(col); - changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - } - } - }); - - if(oversizeCols.length){ - oversizeCols.forEach(function(col){ - oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth; - col.width = col.column.minWidth; - }); - - remainingSpace = freeSpace - oversizeSpace; - - nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace; - - gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols); - }else { - gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace; - - undersizeCols.forEach(function(column){ - column.width = shrinkCols ? calcShrink(column) : calcGrow(column); - }); - } - - return gap; - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - columns.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width; - minWidth = parseInt(column.minWidth); - - if(width){ - - colWidth = calcWidth(width); - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - if(column.definition.widthShrink){ - fixedShrinkColumns.push({ - column:column, - width:colWidth > minWidth ? colWidth : minWidth - }); - flexShrinkUnits += column.definition.widthShrink; - } - - }else { - flexColumns.push({ - column:column, - width:0, - }); - flexGrowUnits += column.definition.widthGrow || 1; - } - } - }); - - //calculate available space - flexWidth = totalWidth - fixedWidth; - - //calculate correct column size - flexColWidth = Math.floor(flexWidth / flexGrowUnits); - - //generate column widths - gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false); - - //increase width of last column to account for rounding errors - if(flexColumns.length && gapFill > 0){ - flexColumns[flexColumns.length-1].width += gapFill; - } - - //calculate space for columns to be shrunk into - flexColumns.forEach(function(col){ - flexWidth -= col.width; - }); - - overflowWidth = Math.abs(gapFill) + flexWidth; - - //shrink oversize columns if there is no available space - if(overflowWidth > 0 && flexShrinkUnits){ - gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true); - } - - //decrease width of last column to account for rounding errors - if(gapFill && fixedShrinkColumns.length){ - fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill; - } - - flexColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); - - fixedShrinkColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); - } - - var defaultModes = { - fitData:fitData, - fitDataFill:fitDataGeneral, - fitDataTable:fitDataGeneral, - fitDataStretch:fitDataStretch, - fitColumns:fitColumns , - }; - - class Layout extends Module{ - - constructor(table){ - super(table, "layout"); - - this.mode = null; - - this.registerTableOption("layout", "fitData"); //layout type - this.registerTableOption("layoutColumnsOnNewData", false); //update column widths on setData - - this.registerColumnOption("widthGrow"); - this.registerColumnOption("widthShrink"); - } - - //initialize layout system - initialize(){ - var layout = this.table.options.layout; - - if(Layout.modes[layout]){ - this.mode = layout; - }else { - console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout); - this.mode = 'fitData'; - } - - this.table.element.setAttribute("tabulator-layout", this.mode); - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - initializeColumn(column){ - if(column.definition.widthGrow){ - column.definition.widthGrow = Number(column.definition.widthGrow); - } - if(column.definition.widthShrink){ - column.definition.widthShrink = Number(column.definition.widthShrink); - } - } - - getMode(){ - return this.mode; - } - - //trigger table layout - layout(dataChanged){ - this.dispatch("layout-refreshing"); - Layout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged); - this.dispatch("layout-refreshed"); - } - } - - Layout.moduleName = "layout"; - - //load defaults - Layout.modes = defaultModes; - - var defaultLangs = { - "default":{ //hold default locale text - "groups":{ - "item":"item", - "items":"items", - }, - "columns":{ - }, - "data":{ - "loading":"Loading", - "error":"Error", - }, - "pagination":{ - "page_size":"Page Size", - "page_title":"Show Page", - "first":"First", - "first_title":"First Page", - "last":"Last", - "last_title":"Last Page", - "prev":"Prev", - "prev_title":"Prev Page", - "next":"Next", - "next_title":"Next Page", - "all":"All", - "counter":{ - "showing": "Showing", - "of": "of", - "rows": "rows", - "pages": "pages", - } - }, - "headerFilters":{ - "default":"filter column...", - "columns":{} - } - }, - }; - - class Localize extends Module{ - - constructor(table){ - super(table); - - this.locale = "default"; //current locale - this.lang = false; //current language - this.bindings = {}; //update events to call when locale is changed - this.langList = {}; - - this.registerTableOption("locale", false); //current system language - this.registerTableOption("langs", {}); - } - - initialize(){ - this.langList = Helpers.deepClone(Localize.langs); - - if(this.table.options.columnDefaults.headerFilterPlaceholder !== false){ - this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder); - } - - for(let locale in this.table.options.langs){ - this.installLang(locale, this.table.options.langs[locale]); - } - - this.setLocale(this.table.options.locale); - - this.registerTableFunction("setLocale", this.setLocale.bind(this)); - this.registerTableFunction("getLocale", this.getLocale.bind(this)); - this.registerTableFunction("getLang", this.getLang.bind(this)); - } - - //set header placeholder - setHeaderFilterPlaceholder(placeholder){ - this.langList.default.headerFilters.default = placeholder; - } - - //setup a lang description object - installLang(locale, lang){ - if(this.langList[locale]){ - this._setLangProp(this.langList[locale], lang); - }else { - this.langList[locale] = lang; - } - } - - _setLangProp(lang, values){ - for(let key in values){ - if(lang[key] && typeof lang[key] == "object"){ - this._setLangProp(lang[key], values[key]); - }else { - lang[key] = values[key]; - } - } - } - - //set current locale - setLocale(desiredLocale){ - desiredLocale = desiredLocale || "default"; - - //fill in any matching language values - function traverseLang(trans, path){ - for(var prop in trans){ - if(typeof trans[prop] == "object"){ - if(!path[prop]){ - path[prop] = {}; - } - traverseLang(trans[prop], path[prop]); - }else { - path[prop] = trans[prop]; - } - } - } - - //determining correct locale to load - if(desiredLocale === true && navigator.language){ - //get local from system - desiredLocale = navigator.language.toLowerCase(); - } - - if(desiredLocale){ - //if locale is not set, check for matching top level locale else use default - if(!this.langList[desiredLocale]){ - let prefix = desiredLocale.split("-")[0]; - - if(this.langList[prefix]){ - console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix); - desiredLocale = prefix; - }else { - console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale); - desiredLocale = "default"; - } - } - } - - this.locale = desiredLocale; - - //load default lang template - this.lang = Helpers.deepClone(this.langList.default || {}); - - if(desiredLocale != "default"){ - traverseLang(this.langList[desiredLocale], this.lang); - } - - this.dispatchExternal("localized", this.locale, this.lang); - - this._executeBindings(); - } - - //get current locale - getLocale(locale){ - return this.locale; - } - - //get lang object for given local or current if none provided - getLang(locale){ - return locale ? this.langList[locale] : this.lang; - } - - //get text for current locale - getText(path, value){ - var fillPath = value ? path + "|" + value : path, - pathArray = fillPath.split("|"), - text = this._getLangElement(pathArray, this.locale); - - // if(text === false){ - // console.warn("Localization Error - Matching localized text not found for given path: ", path); - // } - - return text || ""; - } - - //traverse langs object and find localized copy - _getLangElement(path, locale){ - var root = this.lang; - - path.forEach(function(level){ - var rootPath; - - if(root){ - rootPath = root[level]; - - if(typeof rootPath != "undefined"){ - root = rootPath; - }else { - root = false; - } - } - }); - - return root; - } - - //set update binding - bind(path, callback){ - if(!this.bindings[path]){ - this.bindings[path] = []; - } - - this.bindings[path].push(callback); - - callback(this.getText(path), this.lang); - } - - //iterate through bindings and trigger updates - _executeBindings(){ - for(let path in this.bindings){ - this.bindings[path].forEach((binding) => { - binding(this.getText(path), this.lang); - }); - } - } - } - - Localize.moduleName = "localize"; - - //load defaults - Localize.langs = defaultLangs; - - class Comms extends Module{ - - constructor(table){ - super(table); - } - - initialize(){ - this.registerTableFunction("tableComms", this.receive.bind(this)); - } - - getConnections(selectors){ - var connections = [], - connection; - - connection = TableRegistry.lookupTable(selectors); - - connection.forEach((con) =>{ - if(this.table !== con){ - connections.push(con); - } - }); - - return connections; - } - - send(selectors, module, action, data){ - var connections = this.getConnections(selectors); - - connections.forEach((connection) => { - connection.tableComms(this.table.element, module, action, data); - }); - - if(!connections.length && selectors){ - console.warn("Table Connection Error - No tables matching selector found", selectors); - } - } - - receive(table, module, action, data){ - if(this.table.modExists(module)){ - return this.table.modules[module].commsReceived(table, action, data); - }else { - console.warn("Inter-table Comms Error - no such module:", module); - } - } - } - - Comms.moduleName = "comms"; - - var coreModules = /*#__PURE__*/Object.freeze({ - __proto__: null, - LayoutModule: Layout, - LocalizeModule: Localize, - CommsModule: Comms - }); - - class ModuleBinder { - - constructor(tabulator, modules){ - this.bindStaticFunctionality(tabulator); - this.bindModules(tabulator, coreModules, true); - - if(modules){ - this.bindModules(tabulator, modules); - } - } - - bindStaticFunctionality(tabulator){ - tabulator.moduleBindings = {}; - - tabulator.extendModule = function(name, property, values){ - if(tabulator.moduleBindings[name]){ - var source = tabulator.moduleBindings[name][property]; - - if(source){ - if(typeof values == "object"){ - for(let key in values){ - source[key] = values[key]; - } - }else { - console.warn("Module Error - Invalid value type, it must be an object"); - } - }else { - console.warn("Module Error - property does not exist:", property); - } - }else { - console.warn("Module Error - module does not exist:", name); - } - }; - - tabulator.registerModule = function(modules){ - if(!Array.isArray(modules)){ - modules = [modules]; - } - - modules.forEach((mod) => { - tabulator.registerModuleBinding(mod); - }); - }; - - tabulator.registerModuleBinding = function(mod){ - tabulator.moduleBindings[mod.moduleName] = mod; - }; - - tabulator.findTable = function(query){ - var results = TableRegistry.lookupTable(query, true); - return Array.isArray(results) && !results.length ? false : results; - }; - - //ensure that module are bound to instantiated function - tabulator.prototype.bindModules = function(){ - var orderedStartMods = [], - orderedEndMods = [], - unOrderedMods = []; - - this.modules = {}; - - for(var name in tabulator.moduleBindings){ - let mod = tabulator.moduleBindings[name]; - let module = new mod(this); - - this.modules[name] = module; - - if(mod.prototype.moduleCore){ - this.modulesCore.push(module); - }else { - if(mod.moduleInitOrder){ - if(mod.moduleInitOrder < 0){ - orderedStartMods.push(module); - }else { - orderedEndMods.push(module); - } - - }else { - unOrderedMods.push(module); - } - } - } - - orderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - orderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - - this.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods)); - }; - } - - bindModules(tabulator, modules, core){ - var mods = Object.values(modules); - - if(core){ - mods.forEach((mod) => { - mod.prototype.moduleCore = true; - }); - } - - tabulator.registerModule(mods); - } - } - - class Alert extends CoreFeature{ - constructor(table){ - super(table); - - this.element = this._createAlertElement(); - this.msgElement = this._createMsgElement(); - this.type = null; - - this.element.appendChild(this.msgElement); - } - - _createAlertElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert"); - return el; - } - - _createMsgElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert-msg"); - el.setAttribute("role", "alert"); - return el; - } - - _typeClass(){ - return "tabulator-alert-state-" + this.type; - } - - alert(content, type = "msg"){ - if(content){ - this.clear(); - - this.dispatch("alert-show", type); - - this.type = type; - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - - this.msgElement.classList.add(this._typeClass()); - - if(typeof content === "function"){ - content = content(); - } - - if(content instanceof HTMLElement){ - this.msgElement.appendChild(content); - }else { - this.msgElement.innerHTML = content; - } - - this.table.element.appendChild(this.element); - } - } - - clear(){ - this.dispatch("alert-hide", this.type); - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.msgElement.classList.remove(this._typeClass()); - } - } - - class Tabulator { - - constructor(element, options){ - - this.options = {}; - - this.columnManager = null; // hold Column Manager - this.rowManager = null; //hold Row Manager - this.footerManager = null; //holder Footer Manager - this.alertManager = null; //hold Alert Manager - this.vdomHoz = null; //holder horizontal virtual dom - this.externalEvents = null; //handle external event messaging - this.eventBus = null; //handle internal event messaging - this.interactionMonitor = false; //track user interaction - this.browser = ""; //hold current browser type - this.browserSlow = false; //handle reduced functionality for slower browsers - this.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance - this.rtl = false; //check if the table is in RTL mode - this.originalElement = null; //hold original table element if it has been replaced - - this.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions - this.dataLoader = false; //bind component functions - - this.modules = {}; //hold all modules bound to this table - this.modulesCore = []; //hold core modules bound to this table (for initialization purposes) - this.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes) - - this.deprecationAdvisor = new DeprecationAdvisor(this); - this.optionsList = new OptionsList(this, "table constructor"); - - this.initialized = false; - this.destroyed = false; - - if(this.initializeElement(element)){ - - this.initializeCoreSystems(options); - - //delay table creation to allow event bindings immediately after the constructor - setTimeout(() => { - this._create(); - }); - } - - TableRegistry.register(this); //register table for inter-device communication - } - - initializeElement(element){ - if(typeof HTMLElement !== "undefined" && element instanceof HTMLElement){ - this.element = element; - return true; - }else if(typeof element === "string"){ - this.element = document.querySelector(element); - - if(this.element){ - return true; - }else { - console.error("Tabulator Creation Error - no element found matching selector: ", element); - return false; - } - }else { - console.error("Tabulator Creation Error - Invalid element provided:", element); - return false; - } - } - - initializeCoreSystems(options){ - this.columnManager = new ColumnManager(this); - this.rowManager = new RowManager(this); - this.footerManager = new FooterManager(this); - this.dataLoader = new DataLoader(this); - this.alertManager = new Alert(this); - - this.bindModules(); - - this.options = this.optionsList.generate(Tabulator.defaultOptions, options); - - this._clearObjectPointers(); - - this._mapDeprecatedFunctionality(); - - this.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal); - this.eventBus = new InternalEventBus(this.options.debugEventsInternal); - - this.interactionMonitor = new InteractionManager(this); - - this.dataLoader.initialize(); - // this.columnManager.initialize(); - // this.rowManager.initialize(); - this.footerManager.initialize(); - } - - //convert deprecated functionality to new functions - _mapDeprecatedFunctionality(){ - //all previously deprecated functionality removed in the 5.0 release - } - - _clearSelection(){ - - this.element.classList.add("tabulator-block-select"); - - if (window.getSelection) { - if (window.getSelection().empty) { // Chrome - window.getSelection().empty(); - } else if (window.getSelection().removeAllRanges) { // Firefox - window.getSelection().removeAllRanges(); - } - } else if (document.selection) { // IE? - document.selection.empty(); - } - - this.element.classList.remove("tabulator-block-select"); - } - - //create table - _create(){ - this.externalEvents.dispatch("tableBuilding"); - this.eventBus.dispatch("table-building"); - - this._rtlCheck(); - - this._buildElement(); - - this._initializeTable(); - - this._loadInitialData(); - - this.initialized = true; - - this.externalEvents.dispatch("tableBuilt"); - } - - _rtlCheck(){ - var style = window.getComputedStyle(this.element); - - switch(this.options.textDirection){ - case"auto": - if(style.direction !== "rtl"){ - break; - } - - case "rtl": - this.element.classList.add("tabulator-rtl"); - this.rtl = true; - break; - - case "ltr": - this.element.classList.add("tabulator-ltr"); - - default: - this.rtl = false; - } - } - - //clear pointers to objects in default config object - _clearObjectPointers(){ - this.options.columns = this.options.columns.slice(0); - - if(Array.isArray(this.options.data) && !this.options.reactiveData){ - this.options.data = this.options.data.slice(0); - } - } - - //build tabulator element - _buildElement(){ - var element = this.element, - options = this.options, - newElement; - - if(element.tagName === "TABLE"){ - this.originalElement = this.element; - newElement = document.createElement("div"); - - //transfer attributes to new element - var attributes = element.attributes; - - // loop through attributes and apply them on div - for(var i in attributes){ - if(typeof attributes[i] == "object"){ - newElement.setAttribute(attributes[i].name, attributes[i].value); - } - } - - // replace table with div element - element.parentNode.replaceChild(newElement, element); - - this.element = element = newElement; - } - - element.classList.add("tabulator"); - element.setAttribute("role", "grid"); - - //empty element - while(element.firstChild) element.removeChild(element.firstChild); - - //set table height - if(options.height){ - options.height = isNaN(options.height) ? options.height : options.height + "px"; - element.style.height = options.height; - } - - //set table min height - if(options.minHeight !== false){ - options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px"; - element.style.minHeight = options.minHeight; - } - - //set table maxHeight - if(options.maxHeight !== false){ - options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px"; - element.style.maxHeight = options.maxHeight; - } - } - - //initialize core systems and modules - _initializeTable(){ - var element = this.element, - options = this.options; - - this.interactionMonitor.initialize(); - - this.columnManager.initialize(); - this.rowManager.initialize(); - - this._detectBrowser(); - - //initialize core modules - this.modulesCore.forEach((mod) => { - mod.initialize(); - }); - - //build table elements - element.appendChild(this.columnManager.getElement()); - element.appendChild(this.rowManager.getElement()); - - if(options.footerElement){ - this.footerManager.activate(); - } - - if(options.autoColumns && options.data){ - - this.columnManager.generateColumnsFromRowData(this.options.data); - } - - //initialize regular modules - this.modulesRegular.forEach((mod) => { - mod.initialize(); - }); - - this.columnManager.setColumns(options.columns); - - this.eventBus.dispatch("table-built"); - } - - _loadInitialData(){ - this.dataLoader.load(this.options.data); - this.columnManager.verticalAlignHeaders(); - } - - //deconstructor - destroy(){ - var element = this.element; - - this.destroyed = true; - - TableRegistry.deregister(this); //deregister table from inter-device communication - - this.eventBus.dispatch("table-destroy"); - - //clear row data - this.rowManager.destroy(); - - //clear DOM - while(element.firstChild) element.removeChild(element.firstChild); - element.classList.remove("tabulator"); - - this.externalEvents.dispatch("tableDestroyed"); - } - - _detectBrowser(){ - var ua = navigator.userAgent||navigator.vendor||window.opera; - - if(ua.indexOf("Trident") > -1){ - this.browser = "ie"; - this.browserSlow = true; - }else if(ua.indexOf("Edge") > -1){ - this.browser = "edge"; - this.browserSlow = true; - }else if(ua.indexOf("Firefox") > -1){ - this.browser = "firefox"; - this.browserSlow = false; - }else if(ua.indexOf("Mac OS") > -1){ - this.browser = "safari"; - this.browserSlow = false; - }else { - this.browser = "other"; - this.browserSlow = false; - } - - this.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.slice(0,4)); - } - - initGuard(func, msg){ - var stack, line; - - if(this.options.debugInitialization && !this.initialized){ - if(!func){ - stack = new Error().stack.split("\n"); - - line = stack[0] == "Error" ? stack[2] : stack[1]; - - if(line[0] == " "){ - func = line.trim().split(" ")[1].split(".")[1]; - }else { - func = line.trim().split("@")[0]; - } - } - - console.warn("Table Not Initialized - Calling the " + func + " function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function." + (msg ? " " + msg : "")); - } - - return this.initialized; - } - - ////////////////// Data Handling ////////////////// - //block table redrawing - blockRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-blocking"); - - this.rowManager.blockRedraw(); - this.columnManager.blockRedraw(); - - this.eventBus.dispatch("redraw-blocked"); - } - - //restore table redrawing - restoreRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-restoring"); - - this.rowManager.restoreRedraw(); - this.columnManager.restoreRedraw(); - - this.eventBus.dispatch("redraw-restored"); - } - - //load data - setData(data, params, config){ - this.initGuard(false, "To set initial data please use the 'data' property in the table constructor."); - - return this.dataLoader.load(data, params, config, false); - } - - //clear data - clearData(){ - this.initGuard(); - - this.dataLoader.blockActiveLoad(); - this.rowManager.clearData(); - } - - //get table data array - getData(active){ - return this.rowManager.getData(active); - } - - //get table data array count - getDataCount(active){ - return this.rowManager.getDataCount(active); - } - - //replace data, keeping table in position with same sort - replaceData(data, params, config){ - this.initGuard(); - - return this.dataLoader.load(data, params, config, true, true); - } - - //update table data - updateData(data){ - var responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - if(row){ - responses++; - - row.updateData(item) - .then(()=>{ - responses--; - - if(!responses){ - resolve(); - } - }) - .catch((e) => { - reject("Update Error - Unable to update row", item, e); - }); - }else { - reject("Update Error - Unable to find row", item); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - addData(data, pos, index){ - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - this.rowManager.addRows(data, pos, index) - .then((rows) => { - var output = []; - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - resolve(output); - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //update table data - updateOrAddData(data){ - var rows = [], - responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - responses++; - - if(row){ - row.updateData(item) - .then(()=>{ - responses--; - rows.push(row.getComponent()); - - if(!responses){ - resolve(rows); - } - }); - }else { - this.rowManager.addRows(item) - .then((newRows)=>{ - responses--; - rows.push(newRows[0].getComponent()); - - if(!responses){ - resolve(rows); - } - }); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //get row object - getRow(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getComponent(); - }else { - console.warn("Find Error - No matching row found:", index); - return false; - } - } - - //get row object - getRowFromPosition(position){ - var row = this.rowManager.getRowFromPosition(position); - - if(row){ - return row.getComponent(); - }else { - console.warn("Find Error - No matching row found:", position); - return false; - } - } - - //delete row from table - deleteRow(index){ - var foundRows = []; - - this.initGuard(); - - if(!Array.isArray(index)){ - index = [index]; - } - - //find matching rows - for(let item of index){ - let row = this.rowManager.findRow(item, true); - - if(row){ - foundRows.push(row); - }else { - console.error("Delete Error - No matching row found:", item); - return Promise.reject("Delete Error - No matching row found"); - } - } - - //sort rows into correct order to ensure smooth delete from table - foundRows.sort((a, b) => { - return this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1; - }); - - //delete rows - foundRows.forEach((row) =>{ - row.delete(); - }); - - this.rowManager.reRenderInPosition(); - - return Promise.resolve(); - } - - //add row to table - addRow(data, pos, index){ - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - return this.rowManager.addRows(data, pos, index, true) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - - //update a row if it exists otherwise create it - updateOrAddRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return row.getComponent(); - }); - }else { - return this.rowManager.addRows(data) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - } - - //update row data - updateRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return Promise.resolve(row.getComponent()); - }); - }else { - console.warn("Update Error - No matching row found:", index); - return Promise.reject("Update Error - No matching row found"); - } - } - - //scroll to row in DOM - scrollToRow(index, position, ifVisible){ - var row = this.rowManager.findRow(index); - - if(row){ - return this.rowManager.scrollToRow(row, position, ifVisible); - }else { - console.warn("Scroll Error - No matching row found:", index); - return Promise.reject("Scroll Error - No matching row found"); - } - } - - moveRow(from, to, after){ - var fromRow = this.rowManager.findRow(from); - - this.initGuard(); - - if(fromRow){ - fromRow.moveToRow(to, after); - }else { - console.warn("Move Error - No matching row found:", from); - } - } - - getRows(active){ - return this.rowManager.getComponents(active); - } - - //get position of row in table - getRowPosition(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getPosition(); - }else { - console.warn("Position Error - No matching row found:", index); - return false; - } - } - - /////////////// Column Functions /////////////// - setColumns(definition){ - this.initGuard(false, "To set initial columns please use the 'columns' property in the table constructor"); - - this.columnManager.setColumns(definition); - } - - getColumns(structured){ - return this.columnManager.getComponents(structured); - } - - getColumn(field){ - var column = this.columnManager.findColumn(field); - - if(column){ - return column.getComponent(); - }else { - console.warn("Find Error - No matching column found:", field); - return false; - } - } - - getColumnDefinitions(){ - return this.columnManager.getDefinitionTree(); - } - - showColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.show(); - }else { - console.warn("Column Show Error - No matching column found:", field); - return false; - } - } - - hideColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.hide(); - }else { - console.warn("Column Hide Error - No matching column found:", field); - return false; - } - } - - toggleColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - if(column.visible){ - column.hide(); - }else { - column.show(); - } - }else { - console.warn("Column Visibility Toggle Error - No matching column found:", field); - return false; - } - } - - addColumn(definition, before, field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - return this.columnManager.addColumn(definition, before, column) - .then((column) => { - return column.getComponent(); - }); - } - - deleteColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.delete(); - }else { - console.warn("Column Delete Error - No matching column found:", field); - return Promise.reject(); - } - } - - updateColumnDefinition(field, definition){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.updateDefinition(definition); - }else { - console.warn("Column Update Error - No matching column found:", field); - return Promise.reject(); - } - } - - moveColumn(from, to, after){ - var fromColumn = this.columnManager.findColumn(from), - toColumn = this.columnManager.findColumn(to); - - this.initGuard(); - - if(fromColumn){ - if(toColumn){ - this.columnManager.moveColumn(fromColumn, toColumn, after); - }else { - console.warn("Move Error - No matching column found:", toColumn); - } - }else { - console.warn("Move Error - No matching column found:", from); - } - } - - //scroll to column in DOM - scrollToColumn(field, position, ifVisible){ - return new Promise((resolve, reject) => { - var column = this.columnManager.findColumn(field); - - if(column){ - return this.columnManager.scrollToColumn(column, position, ifVisible); - }else { - console.warn("Scroll Error - No matching column found:", field); - return Promise.reject("Scroll Error - No matching column found"); - } - }); - } - - //////////// General Public Functions //////////// - //redraw list without updating data - redraw(force){ - this.initGuard(); - - this.columnManager.redraw(force); - this.rowManager.redraw(force); - } - - setHeight(height){ - this.options.height = isNaN(height) ? height : height + "px"; - this.element.style.height = this.options.height; - this.rowManager.initializeRenderer(); - this.rowManager.redraw(true); - } - - //////////////////// Event Bus /////////////////// - - on(key, callback){ - this.externalEvents.subscribe(key, callback); - } - - off(key, callback){ - this.externalEvents.unsubscribe(key, callback); - } - - dispatchEvent(){ - var args = Array.from(arguments); - args.shift(); - - this.externalEvents.dispatch(...arguments); - } - - //////////////////// Alerts /////////////////// - - alert(contents, type){ - this.initGuard(); - - this.alertManager.alert(contents, type); - } - - clearAlert(){ - this.initGuard(); - - this.alertManager.clear(); - } - - ////////////// Extension Management ////////////// - modExists(plugin, required){ - if(this.modules[plugin]){ - return true; - }else { - if(required){ - console.error("Tabulator Module Not Installed: " + plugin); - } - return false; - } - } - - module(key){ - var mod = this.modules[key]; - - if(!mod){ - console.error("Tabulator module not installed: " + key); - } - - return mod; - } - } - - //default setup options - Tabulator.defaultOptions = defaultOptions; - - //bind modules and static functionality - new ModuleBinder(Tabulator); - - var defaultAccessors = {}; - - class Accessor extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types - - this.registerColumnOption("accessor"); - this.registerColumnOption("accessorParams"); - this.registerColumnOption("accessorData"); - this.registerColumnOption("accessorDataParams"); - this.registerColumnOption("accessorDownload"); - this.registerColumnOption("accessorDownloadParams"); - this.registerColumnOption("accessorClipboard"); - this.registerColumnOption("accessorClipboardParams"); - this.registerColumnOption("accessorPrint"); - this.registerColumnOption("accessorPrintParams"); - this.registerColumnOption("accessorHtmlOutput"); - this.registerColumnOption("accessorHtmlOutputParams"); - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-retrieve", this.transformRow.bind(this)); - } - - //initialize column accessor - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - accessor; - - if(column.definition[key]){ - accessor = this.lookupAccessor(column.definition[key]); - - if(accessor){ - match = true; - - config[key] = { - accessor:accessor, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.accessor = config; - } - } - - lookupAccessor(value){ - var accessor = false; - - //set column accessor - switch(typeof value){ - case "string": - if(Accessor.accessors[value]){ - accessor = Accessor.accessors[value]; - }else { - console.warn("Accessor Error - No such accessor found, ignoring: ", value); - } - break; - - case "function": - accessor = value; - break; - } - - return accessor; - } - - //apply accessor to row - transformRow(row, type){ - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - rowComponent = row.getComponent(); - - //clone data object with deep copy to isolate internal data from returned result - var data = Helpers.deepClone(row.data || {}); - - this.table.columnManager.traverse(function(column){ - var value, accessor, params, colComponent; - - if(column.modules.accessor){ - - accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false; - - if(accessor){ - value = column.getFieldValue(data); - - if(value != "undefined"){ - colComponent = column.getComponent(); - params = typeof accessor.params === "function" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params; - column.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent)); - } - } - } - }); - - return data; - } - } - - //load defaults - Accessor.moduleName = "accessor"; - Accessor.accessors = defaultAccessors; - - var defaultConfig = { - method: "GET", - }; - - function generateParamsList(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else { - output.push({key:prefix, value:data}); - } - - return output; - } - - function serializeParams(params){ - var output = generateParamsList(params), - encoded = []; - - output.forEach(function(item){ - encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value)); - }); - - return encoded.join("&"); - } - - function urlBuilder(url, config, params){ - if(url){ - if(params && Object.keys(params).length){ - if(!config.method || config.method.toLowerCase() == "get"){ - config.method = "get"; - - url += (url.includes("?") ? "&" : "?") + serializeParams(params); - } - } - } - - return url; - } - - function defaultLoaderPromise(url, config, params){ - var contentType; - - return new Promise((resolve, reject) => { - //set url - url = this.urlGenerator.call(this.table, url, config, params); - - //set body content if not GET request - if(config.method.toUpperCase() != "GET"){ - contentType = typeof this.table.options.ajaxContentType === "object" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType]; - if(contentType){ - - for(var key in contentType.headers){ - if(!config.headers){ - config.headers = {}; - } - - if(typeof config.headers[key] === "undefined"){ - config.headers[key] = contentType.headers[key]; - } - } - - config.body = contentType.body.call(this, url, config, params); - - }else { - console.warn("Ajax Error - Invalid ajaxContentType value:", this.table.options.ajaxContentType); - } - } - - if(url){ - //configure headers - if(typeof config.headers === "undefined"){ - config.headers = {}; - } - - if(typeof config.headers.Accept === "undefined"){ - config.headers.Accept = "application/json"; - } - - if(typeof config.headers["X-Requested-With"] === "undefined"){ - config.headers["X-Requested-With"] = "XMLHttpRequest"; - } - - if(typeof config.mode === "undefined"){ - config.mode = "cors"; - } - - if(config.mode == "cors"){ - if(typeof config.headers["Origin"] === "undefined"){ - config.headers["Origin"] = window.location.origin; - } - - if(typeof config.credentials === "undefined"){ - config.credentials = 'same-origin'; - } - }else { - if(typeof config.credentials === "undefined"){ - config.credentials = 'include'; - } - } - - //send request - fetch(url, config) - .then((response)=>{ - if(response.ok) { - response.json() - .then((data)=>{ - resolve(data); - }).catch((error)=>{ - reject(error); - console.warn("Ajax Load Error - Invalid JSON returned", error); - }); - }else { - console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText); - reject(response); - } - }) - .catch((error)=>{ - console.error("Ajax Load Error - Connection Error: ", error); - reject(error); - }); - }else { - console.warn("Ajax Load Error - No URL Set"); - resolve([]); - } - }); - } - - function generateParamsList$1(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList$1(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList$1(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else { - output.push({key:prefix, value:data}); - } - - return output; - } - - var defaultContentTypeFormatters = { - "json":{ - headers:{ - 'Content-Type': 'application/json', - }, - body:function(url, config, params){ - return JSON.stringify(params); - }, - }, - "form":{ - headers:{ - }, - body:function(url, config, params){ - - var output = generateParamsList$1(params), - form = new FormData(); - - output.forEach(function(item){ - form.append(item.key, item.value); - }); - - return form; - }, - }, - }; - - class Ajax extends Module{ - - constructor(table){ - super(table); - - this.config = {}; //hold config object for ajax request - this.url = ""; //request URL - this.urlGenerator = false; - this.params = false; //request parameters - - this.loaderPromise = false; - - this.registerTableOption("ajaxURL", false); //url for ajax loading - this.registerTableOption("ajaxURLGenerator", false); - this.registerTableOption("ajaxParams", {}); //params for ajax loading - this.registerTableOption("ajaxConfig", "get"); //ajax request type - this.registerTableOption("ajaxContentType", "form"); //ajax request type - this.registerTableOption("ajaxRequestFunc", false); //promise function - - this.registerTableOption("ajaxRequesting", function(){}); - this.registerTableOption("ajaxResponse", false); - - this.contentTypeFormatters = Ajax.contentTypeFormatters; - } - - //initialize setup options - initialize(){ - this.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise; - this.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator; - - if(this.table.options.ajaxURL){ - this.setUrl(this.table.options.ajaxURL); - } - - - this.setDefaultConfig(this.table.options.ajaxConfig); - - this.registerTableFunction("getAjaxUrl", this.getUrl.bind(this)); - - this.subscribe("data-loading", this.requestDataCheck.bind(this)); - this.subscribe("data-params", this.requestParams.bind(this)); - this.subscribe("data-load", this.requestData.bind(this)); - } - - requestParams(data, config, silent, params){ - var ajaxParams = this.table.options.ajaxParams; - - if(ajaxParams){ - if(typeof ajaxParams === "function"){ - ajaxParams = ajaxParams.call(this.table); - } - - params = Object.assign(Object.assign({}, ajaxParams), params); - } - - return params; - } - - requestDataCheck(data, params, config, silent){ - return !!((!data && this.url) || typeof data === "string"); - } - - requestData(url, params, config, silent, previousData){ - var ajaxConfig; - - if(!previousData && this.requestDataCheck(url)){ - if(url){ - this.setUrl(url); - } - - ajaxConfig = this.generateConfig(config); - - return this.sendRequest(this.url, params, ajaxConfig); - }else { - return previousData; - } - } - - setDefaultConfig(config = {}){ - this.config = Object.assign({}, Ajax.defaultConfig); - - if(typeof config == "string"){ - this.config.method = config; - }else { - Object.assign(this.config, config); - } - } - - //load config object - generateConfig(config = {}){ - var ajaxConfig = Object.assign({}, this.config); - - if(typeof config == "string"){ - ajaxConfig.method = config; - }else { - Object.assign(ajaxConfig, config); - } - - return ajaxConfig; - } - - //set request url - setUrl(url){ - this.url = url; - } - - //get request url - getUrl(){ - return this.url; - } - - //send ajax request - sendRequest(url, params, config){ - if(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){ - return this.loaderPromise(url, config, params) - .then((data)=>{ - if(this.table.options.ajaxResponse){ - data = this.table.options.ajaxResponse.call(this.table, url, params, data); - } - - return data; - }); - }else { - return Promise.reject(); - } - } - } - - Ajax.moduleName = "ajax"; - - //load defaults - Ajax.defaultConfig = defaultConfig; - Ajax.defaultURLGenerator = urlBuilder; - Ajax.defaultLoaderPromise = defaultLoaderPromise; - Ajax.contentTypeFormatters = defaultContentTypeFormatters; - - var defaultPasteActions = { - replace:function(data){ - return this.table.setData(data); - }, - update:function(data){ - return this.table.updateOrAddData(data); - }, - insert:function(data){ - return this.table.addData(data); - }, - range:function(data){ - var rows = [], - range = this.table.modules.selectRange.activeRange, - singleCell = false, - bounds, startCell, startRow, rowWidth, dataLength; - - dataLength = data.length; - - if(range){ - bounds = range.getBounds(); - startCell = bounds.start; - - if(bounds.start === bounds.end){ - singleCell = true; - } - - if(startCell){ - rows = this.table.rowManager.activeRows.slice(); - startRow = rows.indexOf(startCell.row); - - if(singleCell){ - rowWidth = data.length; - }else { - rowWidth = (rows.indexOf(bounds.end.row) - startRow) + 1; - } - - - if(startRow >-1){ - this.table.blockRedraw(); - - rows = rows.slice(startRow, startRow + rowWidth); - - rows.forEach((row, i) => { - row.updateData(data[i % dataLength]); - }); - - this.table.restoreRedraw(); - } - } - } - - return rows; - } - }; - - var defaultPasteParsers = { - table:function(clipboard){ - var data = [], - headerFindSuccess = true, - columns = this.table.columnManager.columns, - columnMap = [], - rows = []; - - //get data from clipboard into array of columns and rows. - clipboard = clipboard.split("\n"); - - clipboard.forEach(function(row){ - data.push(row.split("\t")); - }); - - if(data.length && !(data.length === 1 && data[0].length < 2)){ - - //check if headers are present by title - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else { - headerFindSuccess = false; - } - }); - - //check if column headers are present by field - if(!headerFindSuccess){ - headerFindSuccess = true; - columnMap = []; - - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.field && value.trim() && column.field.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else { - headerFindSuccess = false; - } - }); - - if(!headerFindSuccess){ - columnMap = this.table.columnManager.columnsByIndex; - } - } - - //remove header row if found - if(headerFindSuccess){ - data.shift(); - } - - data.forEach(function(item){ - var row = {}; - - item.forEach(function(value, i){ - if(columnMap[i]){ - row[columnMap[i].field] = value; - } - }); - - rows.push(row); - }); - - return rows; - }else { - return false; - } - }, - range:function(clipboard){ - var data = [], - rows = [], - range = this.table.modules.selectRange.activeRange, - singleCell = false, - bounds, startCell, colWidth, columnMap, startCol; - - if(range){ - bounds = range.getBounds(); - startCell = bounds.start; - - if(bounds.start === bounds.end){ - singleCell = true; - } - - if(startCell){ - //get data from clipboard into array of columns and rows. - clipboard = clipboard.split("\n"); - - clipboard.forEach(function(row){ - data.push(row.split("\t")); - }); - - if(data.length){ - columnMap = this.table.columnManager.getVisibleColumnsByIndex(); - startCol = columnMap.indexOf(startCell.column); - - if(startCol > -1){ - if(singleCell){ - colWidth = data[0].length; - }else { - colWidth = (columnMap.indexOf(bounds.end.column) - startCol) + 1; - } - - columnMap = columnMap.slice(startCol, startCol + colWidth); - - data.forEach((item) => { - var row = {}; - var itemLength = item.length; - - columnMap.forEach(function(col, i){ - row[col.field] = item[i % itemLength]; - }); - - rows.push(row); - }); - - return rows; - } - } - } - } - - return false; - } - }; - - class Clipboard extends Module{ - - constructor(table){ - super(table); - - this.mode = true; - this.pasteParser = function(){}; - this.pasteAction = function(){}; - this.customSelection = false; - this.rowRange = false; - this.blocked = true; //block copy actions not originating from this command - - this.registerTableOption("clipboard", false); //enable clipboard - this.registerTableOption("clipboardCopyStyled", true); //formatted table data - this.registerTableOption("clipboardCopyConfig", false); //clipboard config - this.registerTableOption("clipboardCopyFormatter", false); //DEPRECATED - REMOVE in 5.0 - this.registerTableOption("clipboardCopyRowRange", "active"); //restrict clipboard to visible rows only - this.registerTableOption("clipboardPasteParser", "table"); //convert pasted clipboard data to rows - this.registerTableOption("clipboardPasteAction", "insert"); //how to insert pasted data into the table - - this.registerColumnOption("clipboard"); - this.registerColumnOption("titleClipboard"); - } - - initialize(){ - this.mode = this.table.options.clipboard; - - this.rowRange = this.table.options.clipboardCopyRowRange; - - if(this.mode === true || this.mode === "copy"){ - this.table.element.addEventListener("copy", (e) => { - var plain, html, list; - - if(!this.blocked){ - e.preventDefault(); - - if(this.customSelection){ - plain = this.customSelection; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - } - }else { - - list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, "clipboard"); - - html = this.table.modules.export.generateHTMLTable(list); - plain = html ? this.generatePlainContent(list) : ""; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - html = this.table.options.clipboardCopyFormatter("html", html); - } - } - - if (window.clipboardData && window.clipboardData.setData) { - window.clipboardData.setData('Text', plain); - } else if (e.clipboardData && e.clipboardData.setData) { - e.clipboardData.setData('text/plain', plain); - if(html){ - e.clipboardData.setData('text/html', html); - } - } else if (e.originalEvent && e.originalEvent.clipboardData.setData) { - e.originalEvent.clipboardData.setData('text/plain', plain); - if(html){ - e.originalEvent.clipboardData.setData('text/html', html); - } - } - - this.dispatchExternal("clipboardCopied", plain, html); - - this.reset(); - } - }); - } - - if(this.mode === true || this.mode === "paste"){ - this.table.element.addEventListener("paste", (e) => { - this.paste(e); - }); - } - - this.setPasteParser(this.table.options.clipboardPasteParser); - this.setPasteAction(this.table.options.clipboardPasteAction); - - this.registerTableFunction("copyToClipboard", this.copy.bind(this)); - } - - reset(){ - this.blocked = true; - this.customSelection = false; - } - - generatePlainContent (list) { - var output = []; - - list.forEach((row) => { - var rowData = []; - - row.columns.forEach((col) => { - var value = ""; - - if(col){ - - if(row.type === "group"){ - col.value = col.component.getKey(); - } - - if(col.value === null){ - value = ""; - }else { - switch(typeof col.value){ - case "object": - value = JSON.stringify(col.value); - break; - - case "undefined": - value = ""; - break; - - default: - value = col.value; - } - } - } - - rowData.push(value); - }); - - output.push(rowData.join("\t")); - }); - - return output.join("\n"); - } - - copy (range, internal) { - var sel, textRange; - this.blocked = false; - this.customSelection = false; - - - if (this.mode === true || this.mode === "copy") { - - this.rowRange = range || this.table.options.clipboardCopyRowRange; - - if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { - range = document.createRange(); - range.selectNodeContents(this.table.element); - sel = window.getSelection(); - - if (sel.toString() && internal) { - this.customSelection = sel.toString(); - } - - sel.removeAllRanges(); - sel.addRange(range); - } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") { - textRange = document.body.createTextRange(); - textRange.moveToElementText(this.table.element); - textRange.select(); - } - - document.execCommand('copy'); - - if (sel) { - sel.removeAllRanges(); - } - } - } - - //PASTE EVENT HANDLING - setPasteAction(action){ - - switch(typeof action){ - case "string": - this.pasteAction = Clipboard.pasteActions[action]; - - if(!this.pasteAction){ - console.warn("Clipboard Error - No such paste action found:", action); - } - break; - - case "function": - this.pasteAction = action; - break; - } - } - - setPasteParser(parser){ - switch(typeof parser){ - case "string": - this.pasteParser = Clipboard.pasteParsers[parser]; - - if(!this.pasteParser){ - console.warn("Clipboard Error - No such paste parser found:", parser); - } - break; - - case "function": - this.pasteParser = parser; - break; - } - } - - paste(e){ - var data, rowData, rows; - - if(this.checkPasteOrigin(e)){ - - data = this.getPasteData(e); - - rowData = this.pasteParser.call(this, data); - - if(rowData){ - e.preventDefault(); - - if(this.table.modExists("mutator")){ - rowData = this.mutateData(rowData); - } - - rows = this.pasteAction.call(this, rowData); - - this.dispatchExternal("clipboardPasted", data, rowData, rows); - }else { - this.dispatchExternal("clipboardPasteError", data); - } - } - } - - mutateData(data){ - var output = []; - - if(Array.isArray(data)){ - data.forEach((row) => { - output.push(this.table.modules.mutator.transformRow(row, "clipboard")); - }); - }else { - output = data; - } - - return output; - } - - - checkPasteOrigin(e){ - var valid = true; - var blocked = this.confirm("clipboard-paste", [e]); - - if(blocked || !["DIV", "SPAN"].includes(e.target.tagName)){ - valid = false; - } - - return valid; - } - - getPasteData(e){ - var data; - - if (window.clipboardData && window.clipboardData.getData) { - data = window.clipboardData.getData('Text'); - } else if (e.clipboardData && e.clipboardData.getData) { - data = e.clipboardData.getData('text/plain'); - } else if (e.originalEvent && e.originalEvent.clipboardData.getData) { - data = e.originalEvent.clipboardData.getData('text/plain'); - } - - return data; - } - } - - Clipboard.moduleName = "clipboard"; - - //load defaults - Clipboard.pasteActions = defaultPasteActions; - Clipboard.pasteParsers = defaultPasteParsers; - - class CalcComponent{ - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getTable(){ - return this._row.table; - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - _getSelf(){ - return this._row; - } - } - - var defaultCalculations = { - "avg":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2; - - if(values.length){ - output = values.reduce(function(sum, value){ - return Number(sum) + Number(value); - }); - - output = output / values.length; - - output = precision !== false ? output.toFixed(precision) : output; - } - - return parseFloat(output).toString(); - }, - "max":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value > output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "min":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value < output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "sum":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - if(values.length){ - values.forEach(function(value){ - value = Number(value); - - output += !isNaN(value) ? Number(value) : 0; - }); - } - - return precision !== false ? output.toFixed(precision) : output; - }, - "concat":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - output = values.reduce(function(sum, value){ - return String(sum) + String(value); - }); - } - - return output; - }, - "count":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - values.forEach(function(value){ - if(value){ - output ++; - } - }); - } - - return output; - }, - "unique":function(values, data, calcParams){ - var unique = values.filter((value, index) => { - return (values || value === 0) && values.indexOf(value) === index; - }); - - return unique.length; - }, - }; - - class ColumnCalcs extends Module{ - - constructor(table){ - super(table); - - this.topCalcs = []; - this.botCalcs = []; - this.genColumn = false; - this.topElement = this.createElement(); - this.botElement = this.createElement(); - this.topRow = false; - this.botRow = false; - this.topInitialized = false; - this.botInitialized = false; - - this.blocked = false; - this.recalcAfterBlock = false; - - this.registerTableOption("columnCalcs", true); - - this.registerColumnOption("topCalc"); - this.registerColumnOption("topCalcParams"); - this.registerColumnOption("topCalcFormatter"); - this.registerColumnOption("topCalcFormatterParams"); - this.registerColumnOption("bottomCalc"); - this.registerColumnOption("bottomCalcParams"); - this.registerColumnOption("bottomCalcFormatter"); - this.registerColumnOption("bottomCalcFormatterParams"); - } - - createElement (){ - var el = document.createElement("div"); - el.classList.add("tabulator-calcs-holder"); - return el; - } - - initialize(){ - this.genColumn = new Column({field:"value"}, this); - - this.subscribe("cell-value-changed", this.cellValueChanged.bind(this)); - this.subscribe("column-init", this.initializeColumnCheck.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("column-moved", this.recalcActiveRows.bind(this)); - this.subscribe("column-add", this.recalcActiveRows.bind(this)); - this.subscribe("data-refreshed", this.recalcActiveRowsRefresh.bind(this)); - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - - this.subscribe("redraw-blocked", this.blockRedraw.bind(this)); - this.subscribe("redraw-restored", this.restoreRedraw.bind(this)); - - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - - this.registerTableFunction("getCalcResults", this.getResults.bind(this)); - this.registerTableFunction("recalc", this.userRecalc.bind(this)); - - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - - tableRedraw(force){ - this.recalc(this.table.rowManager.activeRows); - - if(force){ - this.redraw(); - } - } - - blockRedraw(){ - this.blocked = true; - this.recalcAfterBlock = false; - } - - - restoreRedraw(){ - this.blocked = false; - - if(this.recalcAfterBlock){ - this.recalcAfterBlock = false; - this.recalcActiveRowsRefresh(); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - userRecalc(){ - this.recalc(this.table.rowManager.activeRows); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - blockCheck(){ - if(this.blocked){ - this.recalcAfterBlock = true; - } - - return this.blocked; - } - - visibleRows(viewable, rows){ - if(this.topRow){ - rows.unshift(this.topRow); - } - - if(this.botRow){ - rows.push(this.botRow); - } - - return rows; - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.recalcRowGroup(row); - }else { - this.recalcActiveRows(); - } - } - - recalcActiveRowsRefresh(){ - if(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){ - this.recalcAll(); - }else { - this.recalcActiveRows(); - } - } - - recalcActiveRows(){ - this.recalc(this.table.rowManager.activeRows); - } - - cellValueChanged(cell){ - if(cell.column.definition.topCalc || cell.column.definition.bottomCalc){ - if(this.table.options.groupBy){ - if(this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both"){ - this.recalcActiveRows(); - } - - if(this.table.options.columnCalcs != "table"){ - this.recalcRowGroup(cell.row); - } - }else { - this.recalcActiveRows(); - } - } - } - - initializeColumnCheck(column){ - if(column.definition.topCalc || column.definition.bottomCalc){ - this.initializeColumn(column); - } - } - - //initialize column calcs - initializeColumn(column){ - var def = column.definition; - - var config = { - topCalcParams:def.topCalcParams || {}, - botCalcParams:def.bottomCalcParams || {}, - }; - - if(def.topCalc){ - - switch(typeof def.topCalc){ - case "string": - if(ColumnCalcs.calculations[def.topCalc]){ - config.topCalc = ColumnCalcs.calculations[def.topCalc]; - }else { - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc); - } - break; - - case "function": - config.topCalc = def.topCalc; - break; - - } - - if(config.topCalc){ - column.modules.columnCalcs = config; - this.topCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeTopRow(); - } - } - - } - - if(def.bottomCalc){ - switch(typeof def.bottomCalc){ - case "string": - if(ColumnCalcs.calculations[def.bottomCalc]){ - config.botCalc = ColumnCalcs.calculations[def.bottomCalc]; - }else { - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc); - } - break; - - case "function": - config.botCalc = def.bottomCalc; - break; - - } - - if(config.botCalc){ - column.modules.columnCalcs = config; - this.botCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeBottomRow(); - } - } - } - - } - - //dummy functions to handle being mock column manager - registerColumnField(){} - - removeCalcs(){ - var changed = false; - - if(this.topInitialized){ - this.topInitialized = false; - this.topElement.parentNode.removeChild(this.topElement); - changed = true; - } - - if(this.botInitialized){ - this.botInitialized = false; - this.footerRemove(this.botElement); - changed = true; - } - - if(changed){ - this.table.rowManager.adjustTableSize(); - } - } - - reinitializeCalcs(){ - if(this.topCalcs.length){ - this.initializeTopRow(); - } - - if(this.botCalcs.length){ - this.initializeBottomRow(); - } - } - - initializeTopRow(){ - var fragment = document.createDocumentFragment(); - - if(!this.topInitialized){ - - fragment.appendChild(document.createElement("br")); - fragment.appendChild(this.topElement); - - this.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling); - this.topInitialized = true; - } - } - - initializeBottomRow(){ - if(!this.botInitialized){ - this.footerPrepend(this.botElement); - this.botInitialized = true; - } - } - - scrollHorizontal(left){ - if(this.botInitialized && this.botRow){ - this.botElement.scrollLeft = left; - } - } - - recalc(rows){ - var data, row; - - if(!this.blockCheck()){ - if(this.topInitialized || this.botInitialized){ - data = this.rowsToData(rows); - - if(this.topInitialized){ - if(this.topRow){ - this.topRow.deleteCells(); - } - - row = this.generateRow("top", data); - this.topRow = row; - while(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild); - this.topElement.appendChild(row.getElement()); - row.initialize(true); - } - - if(this.botInitialized){ - if(this.botRow){ - this.botRow.deleteCells(); - } - - row = this.generateRow("bottom", data); - this.botRow = row; - while(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild); - this.botElement.appendChild(row.getElement()); - row.initialize(true); - } - - this.table.rowManager.adjustTableSize(); - - //set resizable handles - if(this.table.modExists("frozenColumns")){ - this.table.modules.frozenColumns.layout(); - } - } - } - } - - recalcRowGroup(row){ - this.recalcGroup(this.table.modules.groupRows.getRowGroup(row)); - } - - recalcAll(){ - if(this.topCalcs.length || this.botCalcs.length){ - if(this.table.options.columnCalcs !== "group"){ - this.recalcActiveRows(); - } - - if(this.table.options.groupBy && this.table.options.columnCalcs !== "table"){ - - var groups = this.table.modules.groupRows.getChildGroups(); - - groups.forEach((group) => { - this.recalcGroup(group); - }); - } - } - } - - recalcGroup(group){ - var data, rowData; - - if(!this.blockCheck()){ - if(group){ - if(group.calcs){ - if(group.calcs.bottom){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("bottom", data); - - group.calcs.bottom.updateData(rowData); - group.calcs.bottom.reinitialize(); - } - - if(group.calcs.top){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("top", data); - - group.calcs.top.updateData(rowData); - group.calcs.top.reinitialize(); - } - } - } - } - } - - //generate top stats row - generateTopRow(rows){ - return this.generateRow("top", this.rowsToData(rows)); - } - //generate bottom stats row - generateBottomRow(rows){ - return this.generateRow("bottom", this.rowsToData(rows)); - } - - rowsToData(rows){ - var data = []; - - rows.forEach((row) => { - data.push(row.getData()); - - if(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){ - if(row.modules.dataTree && row.modules.dataTree.open){ - var children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row)); - data = data.concat(children); - } - } - }); - - return data; - } - - //generate stats row - generateRow(pos, data){ - var rowData = this.generateRowData(pos, data), - row; - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.disable(); - } - - row = new Row(rowData, this, "calc"); - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.enable(); - } - - row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos); - - row.component = false; - - row.getComponent = () => { - if(!row.component){ - row.component = new CalcComponent(row); - } - - return row.component; - }; - - row.generateCells = () => { - - var cells = []; - - this.table.columnManager.columnsByIndex.forEach((column) => { - - //set field name of mock column - this.genColumn.setField(column.getField()); - this.genColumn.hozAlign = column.hozAlign; - - if(column.definition[pos + "CalcFormatter"] && this.table.modExists("format")){ - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]), - params: column.definition[pos + "CalcFormatterParams"] || {}, - }; - }else { - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter("plaintext"), - params:{} - }; - } - - //ensure css class definition is replicated to calculation cell - this.genColumn.definition.cssClass = column.definition.cssClass; - - //generate cell and assign to correct column - var cell = new Cell(this.genColumn, row); - cell.getElement(); - cell.column = column; - cell.setWidth(); - - column.cells.push(cell); - cells.push(cell); - - if(!column.visible){ - cell.hide(); - } - }); - - row.cells = cells; - }; - - return row; - } - - //generate stats row - generateRowData(pos, data){ - var rowData = {}, - calcs = pos == "top" ? this.topCalcs : this.botCalcs, - type = pos == "top" ? "topCalc" : "botCalc", - params, paramKey; - - calcs.forEach(function(column){ - var values = []; - - if(column.modules.columnCalcs && column.modules.columnCalcs[type]){ - data.forEach(function(item){ - values.push(column.getFieldValue(item)); - }); - - paramKey = type + "Params"; - params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey]; - - column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params)); - } - }); - - return rowData; - } - - hasTopCalcs(){ - return !!(this.topCalcs.length); - } - - hasBottomCalcs(){ - return !!(this.botCalcs.length); - } - - //handle table redraw - redraw(){ - if(this.topRow){ - this.topRow.normalizeHeight(true); - } - if(this.botRow){ - this.botRow.normalizeHeight(true); - } - } - - //return the calculated - getResults(){ - var results = {}, - groups; - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - groups = this.table.modules.groupRows.getGroups(true); - - groups.forEach((group) => { - results[group.getKey()] = this.getGroupResults(group); - }); - }else { - results = { - top: this.topRow ? this.topRow.getData() : {}, - bottom: this.botRow ? this.botRow.getData() : {}, - }; - } - - return results; - } - - //get results from a group - getGroupResults(group){ - var groupObj = group._getSelf(), - subGroups = group.getSubGroups(), - subGroupResults = {}, - results = {}; - - subGroups.forEach((subgroup) => { - subGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup); - }); - - results = { - top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {}, - bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {}, - groups: subGroupResults, - }; - - return results; - } - - adjustForScrollbar(width){ - if(this.botRow){ - if(this.table.rtl){ - this.botElement.style.paddingLeft = width + "px"; - }else { - this.botElement.style.paddingRight = width + "px"; - } - } - } - } - - ColumnCalcs.moduleName = "columnCalcs"; - - //load defaults - ColumnCalcs.calculations = defaultCalculations; - - class DataTree extends Module{ - - constructor(table){ - super(table); - - this.indent = 10; - this.field = ""; - this.collapseEl = null; - this.expandEl = null; - this.branchEl = null; - this.elementField = false; - - this.startOpen = function(){}; - - this.registerTableOption("dataTree", false); //enable data tree - this.registerTableOption("dataTreeFilter", true); //filter child rows - this.registerTableOption("dataTreeSort", true); //sort child rows - this.registerTableOption("dataTreeElementColumn", false); - this.registerTableOption("dataTreeBranchElement", true);//show data tree branch element - this.registerTableOption("dataTreeChildIndent", 9); //data tree child indent in px - this.registerTableOption("dataTreeChildField", "_children");//data tre column field to look for child rows - this.registerTableOption("dataTreeCollapseElement", false);//data tree row collapse element - this.registerTableOption("dataTreeExpandElement", false);//data tree row expand element - this.registerTableOption("dataTreeStartExpanded", false); - this.registerTableOption("dataTreeChildColumnCalcs", false);//include visible data tree rows in column calculations - this.registerTableOption("dataTreeSelectPropagate", false);//selecting a parent row selects its children - - //register component functions - this.registerComponentFunction("row", "treeCollapse", this.collapseRow.bind(this)); - this.registerComponentFunction("row", "treeExpand", this.expandRow.bind(this)); - this.registerComponentFunction("row", "treeToggle", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "getTreeParent", this.getTreeParent.bind(this)); - this.registerComponentFunction("row", "getTreeChildren", this.getRowChildren.bind(this)); - this.registerComponentFunction("row", "addTreeChild", this.addTreeChildRow.bind(this)); - this.registerComponentFunction("row", "isTreeExpanded", this.isRowExpanded.bind(this)); - } - - initialize(){ - if(this.table.options.dataTree){ - var dummyEl = null, - options = this.table.options; - - this.field = options.dataTreeChildField; - this.indent = options.dataTreeChildIndent; - - if(this.options("movableRows")){ - console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"); - } - - if(options.dataTreeBranchElement){ - - if(options.dataTreeBranchElement === true){ - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch"); - }else { - if(typeof options.dataTreeBranchElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeBranchElement; - this.branchEl = dummyEl.firstChild; - }else { - this.branchEl = options.dataTreeBranchElement; - } - } - }else { - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch-empty"); - } - - if(options.dataTreeCollapseElement){ - if(typeof options.dataTreeCollapseElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeCollapseElement; - this.collapseEl = dummyEl.firstChild; - }else { - this.collapseEl = options.dataTreeCollapseElement; - } - }else { - this.collapseEl = document.createElement("div"); - this.collapseEl.classList.add("tabulator-data-tree-control"); - this.collapseEl.tabIndex = 0; - this.collapseEl.innerHTML = "
        "; - } - - if(options.dataTreeExpandElement){ - if(typeof options.dataTreeExpandElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeExpandElement; - this.expandEl = dummyEl.firstChild; - }else { - this.expandEl = options.dataTreeExpandElement; - } - }else { - this.expandEl = document.createElement("div"); - this.expandEl.classList.add("tabulator-data-tree-control"); - this.expandEl.tabIndex = 0; - this.expandEl.innerHTML = "
        "; - } - - - switch(typeof options.dataTreeStartExpanded){ - case "boolean": - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded; - }; - break; - - case "function": - this.startOpen = options.dataTreeStartExpanded; - break; - - default: - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded[index]; - }; - break; - } - - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("row-deleted", this.rowDelete.bind(this),0); - this.subscribe("row-data-changed", this.rowDataChanged.bind(this), 10); - this.subscribe("cell-value-updated", this.cellValueChanged.bind(this)); - this.subscribe("edit-cancelled", this.cellValueChanged.bind(this)); - this.subscribe("column-moving-rows", this.columnMoving.bind(this)); - this.subscribe("table-built", this.initializeElementField.bind(this)); - this.subscribe("table-redrawing", this.tableRedrawing.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 30); - } - } - - tableRedrawing(force){ - var rows; - - if(force){ - rows = this.table.rowManager.getRows(); - - rows.forEach((row) => { - this.reinitializeRowChildren(row); - }); - } - } - - initializeElementField(){ - var firstCol = this.table.columnManager.getFirstVisibleColumn(); - - this.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false); - } - - getRowChildren(row){ - return this.getTreeChildren(row, true); - } - - columnMoving(){ - var rows = []; - - this.table.rowManager.rows.forEach((row) => { - rows = rows.concat(this.getTreeChildren(row, false, true)); - }); - - return rows; - } - - rowDataChanged(row, visible, updatedData){ - if(this.redrawNeeded(updatedData)){ - this.initializeRow(row); - - if(visible){ - this.layoutRow(row); - this.refreshData(true); - } - } - } - - cellValueChanged(cell){ - var field = cell.column.getField(); - - if(field === this.elementField){ - this.layoutRow(cell.row); - } - } - - initializeRow(row){ - var childArray = row.getData()[this.field]; - var isArray = Array.isArray(childArray); - - var children = isArray || (!isArray && typeof childArray === "object" && childArray !== null); - - if(!children && row.modules.dataTree && row.modules.dataTree.branchEl){ - row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl); - } - - if(!children && row.modules.dataTree && row.modules.dataTree.controlEl){ - row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl); - } - - row.modules.dataTree = { - index: row.modules.dataTree ? row.modules.dataTree.index : 0, - open: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false, - controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false, - branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false, - parent: row.modules.dataTree ? row.modules.dataTree.parent : false, - children:children, - }; - } - - reinitializeRowChildren(row){ - var children = this.getTreeChildren(row, false, true); - - children.forEach(function(child){ - child.reinitialize(true); - }); - } - - layoutRow(row){ - var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0], - el = cell.getElement(), - config = row.modules.dataTree; - - if(config.branchEl){ - if(config.branchEl.parentNode){ - config.branchEl.parentNode.removeChild(config.branchEl); - } - config.branchEl = false; - } - - if(config.controlEl){ - if(config.controlEl.parentNode){ - config.controlEl.parentNode.removeChild(config.controlEl); - } - config.controlEl = false; - } - - this.generateControlElement(row, el); - - row.getElement().classList.add("tabulator-tree-level-" + config.index); - - if(config.index){ - if(this.branchEl){ - config.branchEl = this.branchEl.cloneNode(true); - el.insertBefore(config.branchEl, el.firstChild); - - if(this.table.rtl){ - config.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + "px"; - }else { - config.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + "px"; - } - }else { - - if(this.table.rtl){ - el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + "px"; - }else { - el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + "px"; - } - } - } - } - - generateControlElement(row, el){ - var config = row.modules.dataTree, - oldControl = config.controlEl; - - el = el || row.getCells()[0].getElement(); - - if(config.children !== false){ - - if(config.open){ - config.controlEl = this.collapseEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.collapseRow(row); - }); - }else { - config.controlEl = this.expandEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.expandRow(row); - }); - } - - config.controlEl.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - if(oldControl && oldControl.parentNode === el){ - oldControl.parentNode.replaceChild(config.controlEl,oldControl); - }else { - el.insertBefore(config.controlEl, el.firstChild); - } - } - } - - getRows(rows){ - var output = []; - - rows.forEach((row, i) => { - var config, children; - - output.push(row); - - if(row instanceof Row){ - - row.create(); - - config = row.modules.dataTree; - - if(!config.index && config.children !== false){ - children = this.getChildren(row); - - children.forEach((child) => { - child.create(); - output.push(child); - }); - } - } - }); - - return output; - } - - getChildren(row, allChildren){ - var config = row.modules.dataTree, - children = [], - output = []; - - if(config.children !== false && (config.open || allChildren)){ - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else { - children = config.children; - } - - if(this.table.modExists("sort") && this.table.options.dataTreeSort){ - this.table.modules.sort.sort(children); - } - - children.forEach((child) => { - output.push(child); - - var subChildren = this.getChildren(child); - - subChildren.forEach((sub) => { - output.push(sub); - }); - }); - } - - return output; - } - - generateChildren(row){ - var children = []; - - var childArray = row.getData()[this.field]; - - if(!Array.isArray(childArray)){ - childArray = [childArray]; - } - - childArray.forEach((childData) => { - var childRow = new Row(childData || {}, this.table.rowManager); - - childRow.create(); - - childRow.modules.dataTree.index = row.modules.dataTree.index + 1; - childRow.modules.dataTree.parent = row; - - if(childRow.modules.dataTree.children){ - childRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index); - } - children.push(childRow); - }); - - return children; - } - - expandRow(row, silent){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = true; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowExpanded", row.getComponent(), row.modules.dataTree.index); - } - } - - collapseRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = false; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowCollapsed", row.getComponent(), row.modules.dataTree.index); - } - } - - toggleRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - if(config.open){ - this.collapseRow(row); - }else { - this.expandRow(row); - } - } - } - - isRowExpanded(row){ - return row.modules.dataTree.open; - } - - getTreeParent(row){ - return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false; - } - - getTreeParentRoot(row){ - return row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row; - } - - getFilteredTreeChildren(row){ - var config = row.modules.dataTree, - output = [], children; - - if(config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else { - children = config.children; - } - - children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(childRow); - } - }); - } - - return output; - } - - rowDelete(row){ - var parent = row.modules.dataTree.parent, - childIndex; - - if(parent){ - childIndex = this.findChildIndex(row, parent); - - if(childIndex !== false){ - parent.data[this.field].splice(childIndex, 1); - } - - if(!parent.data[this.field].length){ - delete parent.data[this.field]; - } - - this.initializeRow(parent); - this.layoutRow(parent); - } - - this.refreshData(true); - } - - addTreeChildRow(row, data, top, index){ - var childIndex = false; - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(!Array.isArray(row.data[this.field])){ - row.data[this.field] = []; - - row.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index); - } - - if(typeof index !== "undefined"){ - childIndex = this.findChildIndex(index, row); - - if(childIndex !== false){ - row.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data); - } - } - - if(childIndex === false){ - if(top){ - row.data[this.field].unshift(data); - }else { - row.data[this.field].push(data); - } - } - - this.initializeRow(row); - this.layoutRow(row); - - this.refreshData(true); - } - - findChildIndex(subject, parent){ - var match = false; - - if(typeof subject == "object"){ - - if(subject instanceof Row){ - //subject is row element - match = subject.data; - }else if(subject instanceof RowComponent){ - //subject is public row component - match = subject._getSelf().data; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - if(parent.modules.dataTree){ - match = parent.modules.dataTree.children.find((childRow) => { - return childRow instanceof Row ? childRow.element === subject : false; - }); - - if(match){ - match = match.data; - } - } - }else if(subject === null){ - match = false; - } - - }else if(typeof subject == "undefined"){ - match = false; - }else { - //subject should be treated as the index of the row - match = parent.data[this.field].find((row) => { - return row.data[this.table.options.index] == subject; - }); - } - - if(match){ - - if(Array.isArray(parent.data[this.field])){ - match = parent.data[this.field].indexOf(match); - } - - if(match == -1){ - match = false; - } - } - - //catch all for any other type of input - - return match; - } - - getTreeChildren(row, component, recurse){ - var config = row.modules.dataTree, - output = []; - - if(config && config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - config.children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(component ? childRow.getComponent() : childRow); - - if(recurse){ - output = output.concat(this.getTreeChildren(childRow, component, recurse)); - } - } - }); - } - - return output; - } - - getChildField(){ - return this.field; - } - - redrawNeeded(data){ - return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false); - } - } - - DataTree.moduleName = "dataTree"; - - function csv(list, options = {}, setFileContents){ - var delimiter = options.delimiter ? options.delimiter : ",", - fileContents = [], - headers = []; - - list.forEach((row) => { - var item = []; - - switch(row.type){ - case "group": - console.warn("Download Warning - CSV downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - CSV downloader cannot process column calculations"); - break; - - case "header": - row.columns.forEach((col, i) => { - if(col && col.depth === 1){ - headers[i] = typeof col.value == "undefined" || col.value === null ? "" : ('"' + String(col.value).split('"').join('""') + '"'); - } - }); - break; - - case "row": - row.columns.forEach((col) => { - - if(col){ - - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - item.push('"' + String(col.value).split('"').join('""') + '"'); - } - }); - - fileContents.push(item.join(delimiter)); - break; - } - }); - - if(headers.length){ - fileContents.unshift(headers.join(delimiter)); - } - - fileContents = fileContents.join("\n"); - - if(options.bom){ - fileContents = "\ufeff" + fileContents; - } - - setFileContents(fileContents, "text/csv"); - } - - function json(list, options, setFileContents){ - var fileContents = []; - - list.forEach((row) => { - var item = {}; - - switch(row.type){ - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if(col){ - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(item); - break; - } - }); - - fileContents = JSON.stringify(fileContents, null, '\t'); - - setFileContents(fileContents, "application/json"); - } - - function pdf(list, options = {}, setFileContents){ - var header = [], - body = [], - autoTableParams = {}, - rowGroupStyles = options.rowGroupStyles || { - fontStyle: "bold", - fontSize: 12, - cellPadding: 6, - fillColor: 220, - }, - rowCalcStyles = options.rowCalcStyles || { - fontStyle: "bold", - fontSize: 10, - cellPadding: 4, - fillColor: 232, - }, - jsPDFParams = options.jsPDF || {}, - title = options.title ? options.title : ""; - - if(!jsPDFParams.orientation){ - jsPDFParams.orientation = options.orientation || "landscape"; - } - - if(!jsPDFParams.unit){ - jsPDFParams.unit = "pt"; - } - - //parse row list - list.forEach((row) => { - switch(row.type){ - case "header": - header.push(parseRow(row)); - break; - - case "group": - body.push(parseRow(row, rowGroupStyles)); - break; - - case "calc": - body.push(parseRow(row, rowCalcStyles)); - break; - - case "row": - body.push(parseRow(row)); - break; - } - }); - - function parseRow(row, styles){ - var rowData = []; - - row.columns.forEach((col) =>{ - var cell; - - if(col){ - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - cell = { - content:col.value, - colSpan:col.width, - rowSpan:col.height, - }; - - if(styles){ - cell.styles = styles; - } - - rowData.push(cell); - } - }); - - return rowData; - } - - - //configure PDF - var doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables - - if(options.autoTable){ - if(typeof options.autoTable === "function"){ - autoTableParams = options.autoTable(doc) || {}; - }else { - autoTableParams = options.autoTable; - } - } - - if(title){ - autoTableParams.didDrawPage = function(data) { - doc.text(title, 40, 30); - }; - } - - autoTableParams.head = header; - autoTableParams.body = body; - - doc.autoTable(autoTableParams); - - if(options.documentProcessing){ - options.documentProcessing(doc); - } - - setFileContents(doc.output("arraybuffer"), "application/pdf"); - } - - function xlsx(list, options, setFileContents){ - var self = this, - sheetName = options.sheetName || "Sheet1", - workbook = XLSX.utils.book_new(), - tableFeatures = new CoreFeature(this), - compression = 'compress' in options ? options.compress : true, - writeOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression}, - output; - - writeOptions.type = 'binary'; - - workbook.SheetNames = []; - workbook.Sheets = {}; - - function generateSheet(){ - var rows = [], - merges = [], - worksheet = {}, - range = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }}; - - //parse row list - list.forEach((row, i) => { - var rowData = []; - - row.columns.forEach(function(col, j){ - - if(col){ - rowData.push(!(col.value instanceof Date) && typeof col.value === "object" ? JSON.stringify(col.value) : col.value); - - if(col.width > 1 || col.height > -1){ - if(col.height > 1 || col.width > 1){ - merges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}}); - } - } - }else { - rowData.push(""); - } - }); - - rows.push(rowData); - }); - - //convert rows to worksheet - XLSX.utils.sheet_add_aoa(worksheet, rows); - - worksheet['!ref'] = XLSX.utils.encode_range(range); - - if(merges.length){ - worksheet["!merges"] = merges; - } - - return worksheet; - } - - if(options.sheetOnly){ - setFileContents(generateSheet()); - return; - } - - if(options.sheets){ - for(var sheet in options.sheets){ - - if(options.sheets[sheet] === true){ - workbook.SheetNames.push(sheet); - workbook.Sheets[sheet] = generateSheet(); - }else { - - workbook.SheetNames.push(sheet); - - tableFeatures.commsSend(options.sheets[sheet], "download", "intercept",{ - type:"xlsx", - options:{sheetOnly:true}, - active:self.active, - intercept:function(data){ - workbook.Sheets[sheet] = data; - } - }); - } - } - }else { - workbook.SheetNames.push(sheetName); - workbook.Sheets[sheetName] = generateSheet(); - } - - if(options.documentProcessing){ - workbook = options.documentProcessing(workbook); - } - - //convert workbook to binary array - function s2ab(s) { - var buf = new ArrayBuffer(s.length); - var view = new Uint8Array(buf); - for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; - return buf; - } - - output = XLSX.write(workbook, writeOptions); - - setFileContents(s2ab(output), "application/octet-stream"); - } - - function html(list, options, setFileContents){ - if(this.modExists("export", true)){ - setFileContents(this.modules.export.generateHTMLTable(list), "text/html"); - } - } - - function jsonLines (list, options, setFileContents) { - const fileContents = []; - - list.forEach((row) => { - const item = {}; - - switch (row.type) { - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if (col) { - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(JSON.stringify(item)); - break; - } - }); - - setFileContents(fileContents.join("\n"), "application/x-ndjson"); - } - - var defaultDownloaders = { - csv:csv, - json:json, - jsonLines:jsonLines, - pdf:pdf, - xlsx:xlsx, - html:html, - }; - - class Download extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("downloadEncoder", function(data, mimeType){ - return new Blob([data],{type:mimeType}); - }); //function to manipulate download data - this.registerTableOption("downloadReady", undefined); //warn of function deprecation - this.registerTableOption("downloadConfig", {}); //download config - this.registerTableOption("downloadRowRange", "active"); //restrict download to active rows only - - this.registerColumnOption("download"); - this.registerColumnOption("titleDownload"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.registerTableFunction("download", this.download.bind(this)); - this.registerTableFunction("downloadToTab", this.downloadToTab.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheck("downloadReady", "downloadEncoder"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - downloadToTab(type, filename, options, active){ - this.download(type, filename, options, active, true); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //trigger file download - download(type, filename, options, range, interceptCallback){ - var downloadFunc = false; - - function buildLink(data, mime){ - if(interceptCallback){ - if(interceptCallback === true){ - this.triggerDownload(data, mime, type, filename, true); - }else { - interceptCallback(data); - } - - }else { - this.triggerDownload(data, mime, type, filename); - } - } - - if(typeof type == "function"){ - downloadFunc = type; - }else { - if(Download.downloaders[type]){ - downloadFunc = Download.downloaders[type]; - }else { - console.warn("Download Error - No such download type found: ", type); - } - } - - if(downloadFunc){ - var list = this.generateExportList(range); - - downloadFunc.call(this.table, list , options || {}, buildLink.bind(this)); - } - } - - generateExportList(range){ - var list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, "download"); - - //assign group header formatter - var groupHeader = this.table.options.groupHeaderDownload; - - if(groupHeader && !Array.isArray(groupHeader)){ - groupHeader = [groupHeader]; - } - - list.forEach((row) => { - var group; - - if(row.type === "group"){ - group = row.columns[0]; - - if(groupHeader && groupHeader[row.indent]){ - group.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - }); - - return list; - } - - triggerDownload(data, mime, type, filename, newTab){ - var element = document.createElement('a'), - blob = this.table.options.downloadEncoder(data, mime); - - if(blob){ - if(newTab){ - window.open(window.URL.createObjectURL(blob)); - }else { - filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type); - - if(navigator.msSaveOrOpenBlob){ - navigator.msSaveOrOpenBlob(blob, filename); - }else { - element.setAttribute('href', window.URL.createObjectURL(blob)); - - //set file title - element.setAttribute('download', filename); - - //trigger download - element.style.display = 'none'; - document.body.appendChild(element); - element.click(); - - //remove temporary link element - document.body.removeChild(element); - } - } - - this.dispatchExternal("downloadComplete"); - } - } - - commsReceived(table, action, data){ - switch(action){ - case "intercept": - this.download(data.type, "", data.options, data.active, data.intercept); - break; - } - } - } - - Download.moduleName = "download"; - - //load defaults - Download.downloaders = defaultDownloaders; - - function maskInput(el, options){ - var mask = options.mask, - maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A", - maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9", - maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*"; - - function fillSymbols(index){ - var symbol = mask[index]; - if(typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){ - el.value = el.value + "" + symbol; - fillSymbols(index+1); - } - } - - el.addEventListener("keydown", (e) => { - var index = el.value.length, - char = e.key; - - if(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){ - if(index >= mask.length){ - e.preventDefault(); - e.stopPropagation(); - return false; - }else { - switch(mask[index]){ - case maskLetter: - if(char.toUpperCase() == char.toLowerCase()){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskNumber: - if(isNaN(char)){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskWildcard: - break; - - default: - if(char !== mask[index]){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - } - } - } - - return; - }); - - el.addEventListener("keyup", (e) => { - if(e.keyCode > 46){ - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } - } - }); - - - if(!el.placeholder){ - el.placeholder = mask; - } - - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } - } - - //input element - function input(cell, onRendered, success, cancel, editorParams){ - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", editorParams.search ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = typeof cellValue !== "undefined" ? cellValue : ""; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; - } - - //resizable text area element - function textarea(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "hybrid", - value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""), - input = document.createElement("textarea"), - scrollHeight = 0; - - //create and style input - input.style.display = "block"; - input.style.padding = "2px"; - input.style.height = "100%"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - input.style.whiteSpace = "pre-wrap"; - input.style.resize = "none"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - input.scrollHeight; - input.style.height = input.scrollHeight + "px"; - cell.getRow().normalizeHeight(); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - - setTimeout(function(){ - cell.getRow().normalizeHeight(); - },300); - }else { - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - input.addEventListener("keyup", function(){ - - input.style.height = ""; - - var heightNow = input.scrollHeight; - - input.style.height = heightNow + "px"; - - if(heightNow != scrollHeight){ - scrollHeight = heightNow; - cell.getRow().normalizeHeight(); - } - }); - - input.addEventListener("keydown", function(e){ - - switch(e.keyCode){ - - case 13: - if(e.shiftKey && editorParams.shiftEnterSubmit){ - onChange(); - } - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - - break; - - case 40: //down arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart !== input.value.length)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; - } - - //input element with type of number - function number(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - input = document.createElement("input"); - - input.setAttribute("type", "number"); - - if(typeof editorParams.max != "undefined"){ - input.setAttribute("max", editorParams.max); - } - - if(typeof editorParams.min != "undefined"){ - input.setAttribute("min", editorParams.min); - } - - if(typeof editorParams.step != "undefined"){ - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - var blurFunc = function(e){ - onChange(); - }; - - onRendered(function () { - if(cell.getType() === "cell"){ - //submit new value on blur - input.removeEventListener("blur", blurFunc); - - input.focus({preventScroll: true}); - input.style.height = "100%"; - - //submit new value on blur - input.addEventListener("blur", blurFunc); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value !== cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; - } - - //input element with type of number - function range(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", "range"); - - if (typeof editorParams.max != "undefined") { - input.setAttribute("max", editorParams.max); - } - - if (typeof editorParams.min != "undefined") { - input.setAttribute("min", editorParams.min); - } - - if (typeof editorParams.step != "undefined") { - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - onRendered(function () { - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value != cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e){ - onChange(); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - } - }); - - return input; - } - - //input element - function date(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - function convertDate(value){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - return newDatetime.toFormat("yyyy-MM-dd"); - } - - input.type = "date"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.max){ - input.setAttribute("max", inputFormat ? convertDate(editorParams.max) : editorParams.max); - } - - if(editorParams.min){ - input.setAttribute("min", inputFormat ? convertDate(editorParams.min) : editorParams.min); - } - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - cellValue = convertDate(cellValue); - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDate; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDate = DT.fromFormat(String(value), "yyyy-MM-dd"); - - switch(inputFormat){ - case true: - value = luxDate; - break; - - case "iso": - value = luxDate.toISO(); - break; - - default: - value = luxDate.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; - } - - //input element - function time(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "time"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else { - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("HH:mm"); - - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - console.log("val", cellValue); - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() == "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxTime = DT.fromFormat(String(value), "hh:mm"); - - switch(inputFormat){ - case true: - value = luxTime; - break; - - case "iso": - value = luxTime.toISO(); - break; - - default: - value = luxTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; - } - - //input element - function datetime(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "datetime-local"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else { - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("yyyy-MM-dd") + "T" + newDatetime.toFormat("HH:mm"); - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDateTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDateTime = DT.fromISO(String(value)); - - switch(inputFormat){ - case true: - value = luxDateTime; - break; - - case "iso": - value = luxDateTime.toISO(); - break; - - default: - value = luxDateTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; - } - - class Edit{ - constructor(editor, cell, onRendered, success, cancel, editorParams){ - this.edit = editor; - this.table = editor.table; - this.cell = cell; - this.params = this._initializeParams(editorParams); - - this.data = []; - this.displayItems = []; - this.currentItems = []; - this.focusedItem = null; - - this.input = this._createInputElement(); - this.listEl = this._createListElement(); - - this.initialValues = null; - - this.isFilter = cell.getType() === "header"; - - this.filterTimeout = null; - this.filtered = false; - this.typing = false; - - this.values = []; - this.popup = null; - - this.listIteration = 0; - - this.lastAction=""; - this.filterTerm=""; - - this.blurable = true; - - this.actions = { - success:success, - cancel:cancel - }; - - this._deprecatedOptionsCheck(); - this._initializeValue(); - - onRendered(this._onRendered.bind(this)); - } - - _deprecatedOptionsCheck(){ - if(this.params.listItemFormatter){ - this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.sortValuesList){ - this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchFunc){ - this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchingPlaceholder){ - this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options"); - } - } - - _initializeValue(){ - var initialValue = this.cell.getValue(); - - if(typeof initialValue === "undefined" && typeof this.params.defaultValue !== "undefined"){ - initialValue = this.params.defaultValue; - } - - this.initialValues = this.params.multiselect ? initialValue : [initialValue]; - - if(this.isFilter){ - this.input.value = this.initialValues ? this.initialValues.join(",") : ""; - this.headerFilterInitialListGen(); - } - } - - _onRendered(){ - var cellEl = this.cell.getElement(); - - function clickStop(e){ - e.stopPropagation(); - } - - if(!this.isFilter){ - this.input.style.height = "100%"; - this.input.focus({preventScroll: true}); - } - - - cellEl.addEventListener("click", clickStop); - - setTimeout(() => { - cellEl.removeEventListener("click", clickStop); - }, 1000); - - this.input.addEventListener("mousedown", this._preventPopupBlur.bind(this)); - } - - _createListElement(){ - var listEl = document.createElement("div"); - listEl.classList.add("tabulator-edit-list"); - - listEl.addEventListener("mousedown", this._preventBlur.bind(this)); - listEl.addEventListener("keydown", this._inputKeyDown.bind(this)); - - return listEl; - } - - _setListWidth(){ - var element = this.isFilter ? this.input : this.cell.getElement(); - - this.listEl.style.minWidth = element.offsetWidth + "px"; - - if(this.params.maxWidth){ - if(this.params.maxWidth === true){ - this.listEl.style.maxWidth = element.offsetWidth + "px"; - }else if(typeof this.params.maxWidth === "number"){ - this.listEl.style.maxWidth = this.params.maxWidth + "px"; - }else { - this.listEl.style.maxWidth = this.params.maxWidth; - } - } - - } - - _createInputElement(){ - var attribs = this.params.elementAttributes; - var input = document.createElement("input"); - - input.setAttribute("type", this.params.clearable ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(!this.params.autocomplete){ - input.style.cursor = "default"; - input.style.caretColor = "transparent"; - // input.readOnly = (this.edit.currentCell != false); - } - - if(attribs && typeof attribs == "object"){ - for (let key in attribs){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + attribs["+" + key]); - }else { - input.setAttribute(key, attribs[key]); - } - } - } - - if(this.params.mask){ - maskInput(input, this.params); - } - - this._bindInputEvents(input); - - return input; - } - - _initializeParams(params){ - var valueKeys = ["values", "valuesURL", "valuesLookup"], - valueCheck; - - params = Object.assign({}, params); - - params.verticalNavigation = params.verticalNavigation || "editor"; - params.placeholderLoading = typeof params.placeholderLoading === "undefined" ? "Searching ..." : params.placeholderLoading; - params.placeholderEmpty = typeof params.placeholderEmpty === "undefined" ? "No Results Found" : params.placeholderEmpty; - params.filterDelay = typeof params.filterDelay === "undefined" ? 300 : params.filterDelay; - - params.emptyValue = Object.keys(params).includes("emptyValue") ? params.emptyValue : ""; - - valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length; - - if(!valueCheck){ - console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"); - }else if(valueCheck > 1){ - console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"); - } - - if(params.autocomplete){ - if(params.multiselect){ - params.multiselect = false; - console.warn("list editor config error - multiselect option is not available when autocomplete is enabled"); - } - }else { - if(params.freetext){ - params.freetext = false; - console.warn("list editor config error - freetext option is only available when autocomplete is enabled"); - } - - if(params.filterFunc){ - params.filterFunc = false; - console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled"); - } - - if(params.filterRemote){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled"); - } - - if(params.mask){ - params.mask = false; - console.warn("list editor config error - mask option is only available when autocomplete is enabled"); - } - - if(params.allowEmpty){ - params.allowEmpty = false; - console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled"); - } - - if(params.listOnEmpty){ - params.listOnEmpty = false; - console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"); - } - } - - if(params.filterRemote && !(typeof params.valuesLookup === "function" || params.valuesURL)){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source"); - } - return params; - } - ////////////////////////////////////// - ////////// Event Handling //////////// - ////////////////////////////////////// - - _bindInputEvents(input){ - input.addEventListener("focus", this._inputFocus.bind(this)); - input.addEventListener("click", this._inputClick.bind(this)); - input.addEventListener("blur", this._inputBlur.bind(this)); - input.addEventListener("keydown", this._inputKeyDown.bind(this)); - input.addEventListener("search", this._inputSearch.bind(this)); - - if(this.params.autocomplete){ - input.addEventListener("keyup", this._inputKeyUp.bind(this)); - } - } - - - _inputFocus(e){ - this.rebuildOptionsList(); - } - - _filter(){ - if(this.params.filterRemote){ - clearTimeout(this.filterTimeout); - - this.filterTimeout = setTimeout(() => { - this.rebuildOptionsList(); - }, this.params.filterDelay); - }else { - this._filterList(); - } - } - - _inputClick(e){ - e.stopPropagation(); - } - - _inputBlur(e){ - if(this.blurable){ - if(this.popup){ - this.popup.hide(); - }else { - this._resolveValue(true); - } - } - } - - _inputSearch(){ - this._clearChoices(); - } - - _inputKeyDown(e){ - switch(e.keyCode){ - - case 38: //up arrow - this._keyUp(e); - break; - - case 40: //down arrow - this._keyDown(e); - break; - - case 37: //left arrow - case 39: //right arrow - this._keySide(e); - break; - - case 13: //enter - this._keyEnter(); - break; - - case 27: //escape - this._keyEsc(); - break; - - case 36: //home - case 35: //end - this._keyHomeEnd(e); - break; - - case 9: //tab - this._keyTab(e); - break; - - default: - this._keySelectLetter(e); - } - } - - _inputKeyUp(e){ - switch(e.keyCode){ - case 38: //up arrow - case 37: //left arrow - case 39: //up arrow - case 40: //right arrow - case 13: //enter - case 27: //escape - break; - - default: - this._keyAutoCompLetter(e); - } - } - - _preventPopupBlur(){ - if(this.popup){ - this.popup.blockHide(); - } - - setTimeout(() =>{ - if(this.popup){ - this.popup.restoreHide(); - } - }, 10); - } - - _preventBlur(){ - this.blurable = false; - - setTimeout(() =>{ - this.blurable = true; - }, 10); - } - - ////////////////////////////////////// - //////// Keyboard Navigation ///////// - ////////////////////////////////////// - - _keyTab(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else { - if(this.focusedItem){ - this._chooseItem(this.focusedItem, true); - } - } - } - - _keyUp(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - this._focusItem(this.displayItems[index - 1]); - } - } - } - - _keyDown(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index < this.displayItems.length - 1)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < this.displayItems.length - 1){ - if(index == -1){ - this._focusItem(this.displayItems[0]); - }else { - this._focusItem(this.displayItems[index + 1]); - } - } - } - } - - _keySide(e){ - if(!this.params.autocomplete){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - } - } - - _keyEnter(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else { - if(this.focusedItem){ - this._chooseItem(this.focusedItem); - } - } - } - - _keyEsc(e){ - this._cancel(); - } - - _keyHomeEnd(e){ - if(this.params.autocomplete){ - //prevent table navigation while using input element - e.stopImmediatePropagation(); - } - } - - _keySelectLetter(e){ - if(!this.params.autocomplete){ - // if(this.edit.currentCell === false){ - e.preventDefault(); - // } - - if(e.keyCode >= 38 && e.keyCode <= 90){ - this._scrollToValue(e.keyCode); - } - } - } - - _keyAutoCompLetter(e){ - this._filter(); - this.lastAction = "typing"; - this.typing = true; - } - - - _scrollToValue(char){ - clearTimeout(this.filterTimeout); - - var character = String.fromCharCode(char).toLowerCase(); - this.filterTerm += character.toLowerCase(); - - var match = this.displayItems.find((item) => { - return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(this.filterTerm); - }); - - if(match){ - this._focusItem(match); - } - - this.filterTimeout = setTimeout(() => { - this.filterTerm = ""; - }, 800); - } - - _focusItem(item){ - this.lastAction = "focus"; - - if(this.focusedItem && this.focusedItem.element){ - this.focusedItem.element.classList.remove("focused"); - } - - this.focusedItem = item; - - if(item && item.element){ - item.element.classList.add("focused"); - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - - ////////////////////////////////////// - /////// Data List Generation ///////// - ////////////////////////////////////// - headerFilterInitialListGen(){ - this._generateOptions(true); - } - - rebuildOptionsList(){ - this._generateOptions() - .then(this._sortOptions.bind(this)) - .then(this._buildList.bind(this)) - .then(this._showList.bind(this)) - .catch((e) => { - if(!Number.isInteger(e)){ - console.error("List generation error", e); - } - }); - } - - _filterList(){ - this._buildList(this._filterOptions()); - this._showList(); - } - - _generateOptions(silent){ - var values = []; - var iteration = ++ this.listIteration; - - this.filtered = false; - - if(this.params.values){ - values = this.params.values; - }else if (this.params.valuesURL){ - values = this._ajaxRequest(this.params.valuesURL, this.input.value); - }else { - if(typeof this.params.valuesLookup === "function"){ - values = this.params.valuesLookup(this.cell, this.input.value); - }else if(this.params.valuesLookup){ - values = this._uniqueColumnValues(this.params.valuesLookupField); - } - } - - if(values instanceof Promise){ - if(!silent){ - this._addPlaceholder(this.params.placeholderLoading); - } - - return values.then() - .then((responseValues) => { - if(this.listIteration === iteration){ - return this._parseList(responseValues); - }else { - return Promise.reject(iteration); - } - }); - }else { - return Promise.resolve(this._parseList(values)); - } - } - - _addPlaceholder(contents){ - var placeholder = document.createElement("div"); - - if(typeof contents === "function"){ - contents = contents(this.cell.getComponent(), this.listEl); - } - - if(contents){ - this._clearList(); - - if(contents instanceof HTMLElement){ - placeholder = contents; - }else { - placeholder.classList.add("tabulator-edit-list-placeholder"); - placeholder.innerHTML = contents; - } - - this.listEl.appendChild(placeholder); - - this._showList(); - } - } - - _ajaxRequest(url, term){ - var params = this.params.filterRemote ? {term:term} : {}; - url = urlBuilder(url, {}, params); - - return fetch(url) - .then((response)=>{ - if(response.ok) { - return response.json() - .catch((error)=>{ - console.warn("List Ajax Load Error - Invalid JSON returned", error); - return Promise.reject(error); - }); - }else { - console.error("List Ajax Load Error - Connection Error: " + response.status, response.statusText); - return Promise.reject(response); - } - }) - .catch((error)=>{ - console.error("List Ajax Load Error - Connection Error: ", error); - return Promise.reject(error); - }); - } - - _uniqueColumnValues(field){ - var output = {}, - data = this.table.getData(this.params.valuesLookup), - column; - - if(field){ - column = this.table.columnManager.getColumnByField(field); - }else { - column = this.cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach((row) => { - var val = column.getFieldValue(row); - - if(val !== null && typeof val !== "undefined" && val !== ""){ - output[val] = true; - } - }); - }else { - console.warn("unable to find matching column to create select lookup list:", field); - output = []; - } - - return Object.keys(output); - } - - - _parseList(inputValues){ - var data = []; - - if(!Array.isArray(inputValues)){ - inputValues = Object.entries(inputValues).map(([key, value]) => { - return { - label:value, - value:key, - }; - }); - } - - inputValues.forEach((value) => { - if(typeof value !== "object"){ - value = { - label:value, - value:value, - }; - } - - this._parseListItem(value, data, 0); - }); - - if(!this.currentItems.length && this.params.freetext){ - this.input.value = this.initialValues; - this.typing = true; - this.lastAction = "typing"; - } - - this.data = data; - - return data; - } - - _parseListItem(option, data, level){ - var item = {}; - - if(option.options){ - item = this._parseListGroup(option, level + 1); - }else { - item = { - label:option.label, - value:option.value, - itemParams:option.itemParams, - elementAttributes: option.elementAttributes, - element:false, - selected:false, - visible:true, - level:level, - original:option, - }; - - if(this.initialValues && this.initialValues.indexOf(option.value) > -1){ - this._chooseItem(item, true); - } - } - - data.push(item); - } - - _parseListGroup(option, level){ - var item = { - label:option.label, - group:true, - itemParams:option.itemParams, - elementAttributes:option.elementAttributes, - element:false, - visible:true, - level:level, - options:[], - original:option, - }; - - option.options.forEach((child) => { - this._parseListItem(child, item.options, level); - }); - - return item; - } - - _sortOptions(options){ - var sorter; - - if(this.params.sort){ - sorter = typeof this.params.sort === "function" ? this.params.sort : this._defaultSortFunction.bind(this); - - this._sortGroup(sorter, options); - } - - return options; - } - - _sortGroup(sorter, options){ - options.sort((a,b) => { - return sorter(a.label, b.label, a.value, b.value, a.original, b.original); - }); - - options.forEach((option) => { - if(option.group){ - this._sortGroup(sorter, option.options); - } - }); - } - - _defaultSortFunction(as, bs){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var emptyAlign = 0; - - if(this.params.sort === "desc"){ - [as, bs] = [bs, as]; - } - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else { - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - return emptyAlign; - } - - _filterOptions(){ - var filterFunc = this.params.filterFunc || this._defaultFilterFunc, - term = this.input.value; - - if(term){ - this.filtered = true; - - this.data.forEach((item) => { - this._filterItem(filterFunc, term, item); - }); - }else { - this.filtered = false; - } - - return this.data; - } - - _filterItem(func, term, item){ - var matches = false; - - if(!item.group){ - item.visible = func(term, item.label, item.value, item.original); - }else { - item.options.forEach((option) => { - if(this._filterItem(func, term, option)){ - matches = true; - } - }); - - item.visible = matches; - } - - return item.visible; - } - - _defaultFilterFunc(term, label, value, item){ - term = String(term).toLowerCase(); - - if(label !== null && typeof label !== "undefined"){ - if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){ - return true; - } - } - - return false; - } - - ////////////////////////////////////// - /////////// Display List ///////////// - ////////////////////////////////////// - - _clearList(){ - while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild); - - this.displayItems = []; - } - - _buildList(data){ - this._clearList(); - - data.forEach((option) => { - this._buildItem(option); - }); - - if(!this.displayItems.length){ - this._addPlaceholder(this.params.placeholderEmpty); - } - } - - _buildItem(item){ - var el = item.element, - contents; - - if(!this.filtered || item.visible){ - - if(!el){ - el = document.createElement("div"); - el.tabIndex = 0; - - contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label; - - if(contents instanceof HTMLElement){ - el.appendChild(contents); - }else { - el.innerHTML = contents; - } - - if(item.group){ - el.classList.add("tabulator-edit-list-group"); - }else { - el.classList.add("tabulator-edit-list-item"); - } - - el.classList.add("tabulator-edit-list-group-level-" + item.level); - - if(item.elementAttributes && typeof item.elementAttributes == "object"){ - for (let key in item.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes["+" + key]); - }else { - el.setAttribute(key, item.elementAttributes[key]); - } - } - } - - if(item.group){ - el.addEventListener("click", this._groupClick.bind(this, item)); - }else { - el.addEventListener("click", this._itemClick.bind(this, item)); - } - - el.addEventListener("mousedown", this._preventBlur.bind(this)); - - item.element = el; - } - - this._styleItem(item); - - this.listEl.appendChild(el); - - if(item.group){ - item.options.forEach((option) => { - this._buildItem(option); - }); - }else { - this.displayItems.push(item); - } - } - } - - _showList(){ - var startVis = this.popup && this.popup.isVisible(); - - if(this.input.parentNode){ - if(this.params.autocomplete && this.input.value === "" && !this.params.listOnEmpty){ - if(this.popup){ - this.popup.hide(true); - } - return; - } - - this._setListWidth(); - - if(!this.popup){ - this.popup = this.edit.popup(this.listEl); - } - - this.popup.show(this.cell.getElement(), "bottom"); - - if(!startVis){ - setTimeout(() => { - this.popup.hideOnBlur(this._resolveValue.bind(this, true)); - }, 10); - } - } - } - - _styleItem(item){ - if(item && item.element){ - if(item.selected){ - item.element.classList.add("active"); - }else { - item.element.classList.remove("active"); - } - } - } - - ////////////////////////////////////// - ///////// User Interaction /////////// - ////////////////////////////////////// - - _itemClick(item, e){ - e.stopPropagation(); - - this._chooseItem(item); - } - - _groupClick(item, e){ - e.stopPropagation(); - } - - - ////////////////////////////////////// - ////// Current Item Management /////// - ////////////////////////////////////// - - _cancel(){ - this.popup.hide(true); - this.actions.cancel(); - } - - _clearChoices(){ - this.typing = true; - - this.currentItems.forEach((item) => { - item.selected = false; - this._styleItem(item); - }); - - this.currentItems = []; - - this.focusedItem = null; - } - - _chooseItem(item, silent){ - var index; - - this.typing = false; - - if(this.params.multiselect){ - index = this.currentItems.indexOf(item); - - if(index > -1){ - this.currentItems.splice(index, 1); - item.selected = false; - }else { - this.currentItems.push(item); - item.selected = true; - } - - this.input.value = this.currentItems.map(item => item.label).join(","); - - this._styleItem(item); - - }else { - this.currentItems = [item]; - item.selected = true; - - this.input.value = item.label; - - this._styleItem(item); - - if(!silent){ - this._resolveValue(); - } - } - - this._focusItem(item); - } - - _resolveValue(blur){ - var output, initialValue; - - if(this.popup){ - this.popup.hide(true); - } - - if(this.params.multiselect){ - output = this.currentItems.map(item => item.value); - }else { - if(blur && this.params.autocomplete && this.typing){ - if(this.params.freetext || (this.params.allowEmpty && this.input.value === "")){ - output = this.input.value; - }else { - this.actions.cancel(); - return; - } - }else { - if(this.currentItems[0]){ - output = this.currentItems[0].value; - }else { - initialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues; - - if(initialValue === null || typeof initialValue === "undefined" || initialValue === ""){ - output = initialValue; - }else { - output = this.params.emptyValue; - } - } - - } - } - - if(output === ""){ - output = this.params.emptyValue; - } - - this.actions.success(output); - - if(this.isFilter){ - this.initialValues = output && !Array.isArray(output) ? [output] : output; - this.currentItems = []; - } - } - - } - - function select(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The select editor has been deprecated, please use the new list editor"); - - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; - } - - function list(cell, onRendered, success, cancel, editorParams){ - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; - } - - function autocomplete(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"); - - editorParams.autocomplete = true; - - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; - } - - //star rating - function star(cell, onRendered, success, cancel, editorParams){ - var self = this, - element = cell.getElement(), - value = cell.getValue(), - maxStars = element.getElementsByTagName("svg").length || 5, - size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14, - stars = [], - starsHolder = document.createElement("div"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"); - - - //change star type - function starChange(val){ - stars.forEach(function(star, i){ - if(i < val){ - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-active"); - }else { - star.classList.replace("tabulator-star-inactive", "tabulator-star-active"); - } - - star.innerHTML = ''; - }else { - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-inactive"); - }else { - star.classList.replace("tabulator-star-active", "tabulator-star-inactive"); - } - - star.innerHTML = ''; - } - }); - } - - //build stars - function buildStar(i){ - - var starHolder = document.createElement("span"); - var nextStar = star.cloneNode(true); - - stars.push(nextStar); - - starHolder.addEventListener("mouseenter", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - starChange(i); - }); - - starHolder.addEventListener("mousemove", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - }); - - starHolder.addEventListener("click", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - success(i); - element.blur(); - }); - - starHolder.appendChild(nextStar); - starsHolder.appendChild(starHolder); - - } - - //handle keyboard navigation value change - function changeValue(val){ - value = val; - starChange(val); - } - - //style cell - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - //style holding element - starsHolder.style.verticalAlign = "middle"; - starsHolder.style.display = "inline-block"; - starsHolder.style.padding = "4px"; - - //style star - star.setAttribute("width", size); - star.setAttribute("height", size); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - starsHolder.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //create correct number of stars - for(var i=1;i<= maxStars;i++){ - buildStar(i); - } - - //ensure value does not exceed number of stars - value = Math.min(parseInt(value), maxStars); - - // set initial styling of stars - starChange(value); - - starsHolder.addEventListener("mousemove", function(e){ - starChange(0); - }); - - starsHolder.addEventListener("click", function(e){ - success(0); - }); - - element.addEventListener("blur", function(e){ - cancel(); - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - changeValue(value + 1); - break; - - case 37: //left arrow - changeValue(value - 1); - break; - - case 13: //enter - success(value); - break; - - case 27: //escape - cancel(); - break; - } - }); - - return starsHolder; - } - - //draggable progress bar - function progress(cell, onRendered, success, cancel, editorParams){ - var element = cell.getElement(), - max = typeof editorParams.max === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("max")) || 100) : editorParams.max, - min = typeof editorParams.min === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("min")) || 0) : editorParams.min, - percent = (max - min) / 100, - value = cell.getValue() || 0, - handle = document.createElement("div"), - bar = document.createElement("div"), - mouseDrag, mouseDragWidth; - - //set new value - function updateValue(){ - var style = window.getComputedStyle(element, null); - - var calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue("padding-left")) - parseInt(style.getPropertyValue("padding-right")))/100))) + min; - success(calcVal); - element.setAttribute("aria-valuenow", calcVal); - element.setAttribute("aria-label", value); - } - - //style handle - handle.style.position = "absolute"; - handle.style.right = "0"; - handle.style.top = "0"; - handle.style.bottom = "0"; - handle.style.width = "5px"; - handle.classList.add("tabulator-progress-handle"); - - //style bar - bar.style.display = "inline-block"; - bar.style.position = "relative"; - // bar.style.top = "8px"; - // bar.style.bottom = "8px"; - // bar.style.left = "4px"; - // bar.style.marginRight = "4px"; - bar.style.height = "100%"; - bar.style.backgroundColor = "#488CE9"; - bar.style.maxWidth = "100%"; - bar.style.minWidth = "0%"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - bar.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //style cell - element.style.padding = "4px 4px"; - - //make sure value is in range - value = Math.min(parseFloat(value), max); - value = Math.max(parseFloat(value), min); - - //workout percentage - value = Math.round((value - min) / percent); - // bar.style.right = value + "%"; - bar.style.width = value + "%"; - - element.setAttribute("aria-valuemin", min); - element.setAttribute("aria-valuemax", max); - - bar.appendChild(handle); - - handle.addEventListener("mousedown", function(e){ - mouseDrag = e.screenX; - mouseDragWidth = bar.offsetWidth; - }); - - handle.addEventListener("mouseover", function(){ - handle.style.cursor = "ew-resize"; - }); - - element.addEventListener("mousemove", function(e){ - if(mouseDrag){ - bar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + "px"; - } - }); - - element.addEventListener("mouseup", function(e){ - if(mouseDrag){ - e.stopPropagation(); - e.stopImmediatePropagation(); - - mouseDrag = false; - mouseDragWidth = false; - - updateValue(); - } - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth + element.clientWidth/100) + "px"; - break; - - case 37: //left arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth - element.clientWidth/100) + "px"; - break; - - case 9: //tab - case 13: //enter - updateValue(); - break; - - case 27: //escape - cancel(); - break; - - } - }); - - element.addEventListener("blur", function(){ - cancel(); - }); - - return bar; - } - - //checkbox - function tickCross(cell, onRendered, success, cancel, editorParams){ - var value = cell.getValue(), - input = document.createElement("input"), - tristate = editorParams.tristate, - indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue, - indetermState = false, - trueValueSet = Object.keys(editorParams).includes("trueValue"), - falseValueSet = Object.keys(editorParams).includes("falseValue"); - - input.setAttribute("type", "checkbox"); - input.style.marginTop = "5px"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - if(tristate && (typeof value === "undefined" || value === indetermValue || value === "")){ - indetermState = true; - input.indeterminate = true; - } - - if(this.table.browser != "firefox" && this.table.browser != "safari"){ //prevent blur issue on mac firefox - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - } - }); - } - - input.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === "true" || value === "True" || value === 1); - - function setValue(blur){ - var checkedValue = input.checked; - - if(trueValueSet && checkedValue){ - checkedValue = editorParams.trueValue; - }else if(falseValueSet && !checkedValue){ - checkedValue = editorParams.falseValue; - } - - if(tristate){ - if(!blur){ - if(input.checked && !indetermState){ - input.checked = false; - input.indeterminate = true; - indetermState = true; - return indetermValue; - }else { - indetermState = false; - return checkedValue; - } - }else { - if(indetermState){ - return indetermValue; - }else { - return checkedValue; - } - } - }else { - return checkedValue; - } - } - - //submit new value on blur - input.addEventListener("change", function(e){ - success(setValue()); - }); - - input.addEventListener("blur", function(e){ - success(setValue(true)); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - if(e.keyCode == 13){ - success(setValue()); - } - if(e.keyCode == 27){ - cancel(); - } - }); - - return input; - } - - var defaultEditors = { - input:input, - textarea:textarea, - number:number, - range:range, - date:date, - time:time, - datetime:datetime, - select:select, - list:list, - autocomplete:autocomplete, - star:star, - progress:progress, - tickCross:tickCross, - }; - - class Edit$1 extends Module{ - - constructor(table){ - super(table); - - this.currentCell = false; //hold currently editing cell - this.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening - this.recursionBlock = false; //prevent focus recursion - this.invalidEdit = false; - this.editedCells = []; - - this.editors = Edit$1.editors; - - this.registerColumnOption("editable"); - this.registerColumnOption("editor"); - this.registerColumnOption("editorParams"); - - this.registerColumnOption("cellEditing"); - this.registerColumnOption("cellEdited"); - this.registerColumnOption("cellEditCancelled"); - - this.registerTableOption("editTriggerEvent", "focus"); - - this.registerTableFunction("getEditedCells", this.getEditedCells.bind(this)); - this.registerTableFunction("clearCellEdited", this.clearCellEdited.bind(this)); - this.registerTableFunction("navigatePrev", this.navigatePrev.bind(this)); - this.registerTableFunction("navigateNext", this.navigateNext.bind(this)); - this.registerTableFunction("navigateLeft", this.navigateLeft.bind(this)); - this.registerTableFunction("navigateRight", this.navigateRight.bind(this)); - this.registerTableFunction("navigateUp", this.navigateUp.bind(this)); - this.registerTableFunction("navigateDown", this.navigateDown.bind(this)); - - this.registerComponentFunction("cell", "isEdited", this.cellIsEdited.bind(this)); - this.registerComponentFunction("cell", "clearEdited", this.clearEdited.bind(this)); - this.registerComponentFunction("cell", "edit", this.editCell.bind(this)); - this.registerComponentFunction("cell", "cancelEdit", this.cellCancelEdit.bind(this)); - - this.registerComponentFunction("cell", "navigatePrev", this.navigatePrev.bind(this)); - this.registerComponentFunction("cell", "navigateNext", this.navigateNext.bind(this)); - this.registerComponentFunction("cell", "navigateLeft", this.navigateLeft.bind(this)); - this.registerComponentFunction("cell", "navigateRight", this.navigateRight.bind(this)); - this.registerComponentFunction("cell", "navigateUp", this.navigateUp.bind(this)); - this.registerComponentFunction("cell", "navigateDown", this.navigateDown.bind(this)); - } - - initialize(){ - this.subscribe("cell-init", this.bindEditor.bind(this)); - this.subscribe("cell-delete", this.clearEdited.bind(this)); - this.subscribe("cell-value-changed", this.updateCellClass.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - this.subscribe("column-delete", this.columnDeleteCheck.bind(this)); - this.subscribe("row-deleting", this.rowDeleteCheck.bind(this)); - this.subscribe("row-layout", this.rowEditableCheck.bind(this)); - this.subscribe("data-refreshing", this.cancelEdit.bind(this)); - this.subscribe("clipboard-paste", this.pasteBlocker.bind(this)); - - this.subscribe("keybinding-nav-prev", this.navigatePrev.bind(this, undefined)); - this.subscribe("keybinding-nav-next", this.keybindingNavigateNext.bind(this)); - - - // this.subscribe("keybinding-nav-left", this.navigateLeft.bind(this, undefined)); - // this.subscribe("keybinding-nav-right", this.navigateRight.bind(this, undefined)); - this.subscribe("keybinding-nav-up", this.navigateUp.bind(this, undefined)); - this.subscribe("keybinding-nav-down", this.navigateDown.bind(this, undefined)); - } - - - /////////////////////////////////// - ///////// Paste Negation ////////// - /////////////////////////////////// - - pasteBlocker(e){ - if(this.currentCell){ - return true; - } - } - - - /////////////////////////////////// - ////// Keybinding Functions /////// - /////////////////////////////////// - - keybindingNavigateNext(e){ - var cell = this.currentCell, - newRow = this.options("tabEndNewRow"); - - if(cell){ - if(!this.navigateNext(cell, e)){ - if(newRow){ - cell.getElement().firstChild.blur(); - - if(!this.invalidEdit){ - - if(newRow === true){ - newRow = this.table.addRow({}); - }else { - if(typeof newRow == "function"){ - newRow = this.table.addRow(newRow(cell.row.getComponent())); - }else { - newRow = this.table.addRow(Object.assign({}, newRow)); - } - } - - newRow.then(() => { - setTimeout(() => { - cell.getComponent().navigateNext(); - }); - }); - } - } - } - } - } - - /////////////////////////////////// - ///////// Cell Functions ////////// - /////////////////////////////////// - - cellIsEdited(cell){ - return !! cell.modules.edit && cell.modules.edit.edited; - } - - cellCancelEdit(cell){ - if(cell === this.currentCell){ - this.table.modules.edit.cancelEdit(); - }else { - console.warn("Cancel Editor Error - This cell is not currently being edited "); - } - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - updateCellClass(cell){ - if(this.allowEdit(cell)) { - cell.getElement().classList.add("tabulator-editable"); - } - else { - cell.getElement().classList.remove("tabulator-editable"); - } - } - - clearCellEdited(cells){ - if(!cells){ - cells = this.table.modules.edit.getEditedCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.table.modules.edit.clearEdited(cell._getSelf()); - }); - } - - navigatePrev(cell = this.currentCell, e){ - var nextCell, prevRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateLeft(); - - if(nextCell){ - return true; - }else { - prevRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(prevRow){ - nextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateNext(cell = this.currentCell, e){ - var nextCell, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateRight(); - - if(nextCell){ - return true; - }else { - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextCell = this.findNextEditableCell(nextRow, -1); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateLeft(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findPrevEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateRight(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findNextEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateUp(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - navigateDown(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - findNextEditableCell(row, index){ - var nextCell = false; - - if(index < row.cells.length-1){ - for(var i = index+1; i < row.cells.length; i++){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - nextCell = cell; - break; - } - } - } - } - - return nextCell; - } - - findPrevEditableCell(row, index){ - var prevCell = false; - - if(index > 0){ - for(var i = index-1; i >= 0; i--){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - prevCell = cell; - break; - } - } - } - } - - return prevCell; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.editor !== "undefined"){ - this.initializeColumn(column); - } - } - - columnDeleteCheck(column){ - if(this.currentCell && this.currentCell.column === column){ - this.cancelEdit(); - } - } - - rowDeleteCheck(row){ - if(this.currentCell && this.currentCell.row === row){ - this.cancelEdit(); - } - } - - rowEditableCheck(row){ - row.getCells().forEach((cell) => { - if(cell.column.modules.edit && typeof cell.column.modules.edit.check === "function"){ - this.updateCellClass(cell); - } - }); - } - - //initialize column editor - initializeColumn(column){ - var config = { - editor:false, - blocked:false, - check:column.definition.editable, - params:column.definition.editorParams || {} - }; - - //set column editor - switch(typeof column.definition.editor){ - case "string": - if(this.editors[column.definition.editor]){ - config.editor = this.editors[column.definition.editor]; - }else { - console.warn("Editor Error - No such editor found: ", column.definition.editor); - } - break; - - case "function": - config.editor = column.definition.editor; - break; - - case "boolean": - if(column.definition.editor === true){ - if(typeof column.definition.formatter !== "function"){ - if(this.editors[column.definition.formatter]){ - config.editor = this.editors[column.definition.formatter]; - }else { - config.editor = this.editors["input"]; - } - }else { - console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter); - } - } - break; - } - - if(config.editor){ - column.modules.edit = config; - } - } - - getCurrentCell(){ - return this.currentCell ? this.currentCell.getComponent() : false; - } - - clearEditor(cancel){ - var cell = this.currentCell, - cellEl; - - this.invalidEdit = false; - - if(cell){ - this.currentCell = false; - - cellEl = cell.getElement(); - - this.dispatch("edit-editor-clear", cell, cancel); - - cellEl.classList.remove("tabulator-editing"); - - while(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild); - - cell.row.getElement().classList.remove("tabulator-editing"); - - cell.table.element.classList.remove("tabulator-editing"); - } - } - - cancelEdit(){ - if(this.currentCell){ - var cell = this.currentCell; - var component = this.currentCell.getComponent(); - - this.clearEditor(true); - cell.setValueActual(cell.getValue()); - cell.cellRendered(); - - if(cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight){ - cell.row.normalizeHeight(true); - } - - if(cell.column.definition.cellEditCancelled){ - cell.column.definition.cellEditCancelled.call(this.table, component); - } - - this.dispatch("edit-cancelled", cell); - this.dispatchExternal("cellEditCancelled", component); - } - } - - //return a formatted value for a cell - bindEditor(cell){ - if(cell.column.modules.edit){ - var self = this, - element = cell.getElement(true); - - this.updateCellClass(cell); - element.setAttribute("tabindex", 0); - - element.addEventListener("mousedown", function(e){ - if (e.button === 2) { - e.preventDefault(); - }else { - self.mouseClick = true; - } - }); - - if(this.options("editTriggerEvent") === "dblclick"){ - element.addEventListener("dblclick", function(e){ - if(!element.classList.contains("tabulator-editing")){ - element.focus({preventScroll: true}); - self.edit(cell, e, false); - } - }); - } - - - if(this.options("editTriggerEvent") === "focus" || this.options("editTriggerEvent") === "click"){ - element.addEventListener("click", function(e){ - if(!element.classList.contains("tabulator-editing")){ - element.focus({preventScroll: true}); - self.edit(cell, e, false); - } - }); - } - - if(this.options("editTriggerEvent") === "focus"){ - element.addEventListener("focus", function(e){ - if(!self.recursionBlock){ - self.edit(cell, e, false); - } - }); - } - } - } - - focusCellNoEvent(cell, block){ - this.recursionBlock = true; - - if(!(block && this.table.browser === "ie")){ - cell.getElement().focus({preventScroll: true}); - } - - this.recursionBlock = false; - } - - editCell(cell, forceEdit){ - this.focusCellNoEvent(cell); - this.edit(cell, false, forceEdit); - } - - focusScrollAdjust(cell){ - if(this.table.rowManager.getRenderMode() == "virtual"){ - var topEdge = this.table.rowManager.element.scrollTop, - bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop, - rowEl = cell.row.getElement(); - - if(rowEl.offsetTop < topEdge){ - this.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop); - }else { - if(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){ - this.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge); - } - } - - var leftEdge = this.table.rowManager.element.scrollLeft, - rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft, - cellEl = cell.getElement(); - - if(this.table.modExists("frozenColumns")){ - leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0); - rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0); - } - - if(this.table.options.renderHorizontal === "virtual"){ - leftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - rightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - } - - if(cellEl.offsetLeft < leftEdge){ - this.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft); - }else { - if(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){ - this.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge); - } - } - } - } - - allowEdit(cell) { - var check = cell.column.modules.edit ? true : false; - - if(cell.column.modules.edit){ - switch(typeof cell.column.modules.edit.check){ - case "function": - if(cell.row.initialized){ - check = cell.column.modules.edit.check(cell.getComponent()); - } - break; - - case "string": - check = !!cell.row.data[cell.column.modules.edit.check]; - break; - - case "boolean": - check = cell.column.modules.edit.check; - break; - } - } - - return check; - } - - edit(cell, e, forceEdit){ - var self = this, - allowEdit = true, - rendered = function(){}, - element = cell.getElement(), - editFinished = false, - cellEditor, component, params; - - //prevent editing if another cell is refusing to leave focus (eg. validation fail) - - if(this.currentCell){ - if(!this.invalidEdit && this.currentCell !== cell){ - this.cancelEdit(); - } - return; - } - - //handle successful value change - function success(value){ - if(self.currentCell === cell && !editFinished){ - var valid = self.chain("edit-success", [cell, value], true, true); - - if(valid === true || self.table.options.validationMode === "highlight"){ - - editFinished = true; - - self.clearEditor(); - - if(!cell.modules.edit){ - cell.modules.edit = {}; - } - - cell.modules.edit.edited = true; - - if(self.editedCells.indexOf(cell) == -1){ - self.editedCells.push(cell); - } - - cell.setValue(value, true); - - return valid === true; - }else { - editFinished = true; - self.invalidEdit = true; - self.focusCellNoEvent(cell, true); - rendered(); - - setTimeout(() => { - editFinished = false; - }, 10); - return false; - } - } - } - - //handle aborted edit - function cancel(){ - // editFinished = true; - - if(self.currentCell === cell && !editFinished){ - self.cancelEdit(); - } - } - - function onRendered(callback){ - rendered = callback; - } - - if(!cell.column.modules.edit.blocked){ - if(e){ - e.stopPropagation(); - } - - allowEdit = this.allowEdit(cell); - - if(allowEdit || forceEdit){ - self.cancelEdit(); - - self.currentCell = cell; - - this.focusScrollAdjust(cell); - - component = cell.getComponent(); - - if(this.mouseClick){ - this.mouseClick = false; - - if(cell.column.definition.cellClick){ - cell.column.definition.cellClick.call(this.table, e, component); - } - } - - if(cell.column.definition.cellEditing){ - cell.column.definition.cellEditing.call(this.table, component); - } - - this.dispatch("cell-editing", cell); - this.dispatchExternal("cellEditing", component); - - params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params; - - cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params); - - //if editor returned, add to DOM, if false, abort edit - if(this.currentCell && cellEditor !== false){ - if(cellEditor instanceof Node){ - element.classList.add("tabulator-editing"); - cell.row.getElement().classList.add("tabulator-editing"); - cell.table.element.classList.add("tabulator-editing"); - while(element.firstChild) element.removeChild(element.firstChild); - element.appendChild(cellEditor); - - //trigger onRendered Callback - rendered(); - - //prevent editing from triggering rowClick event - var children = element.children; - - for (var i = 0; i < children.length; i++) { - children[i].addEventListener("click", function(e){ - e.stopPropagation(); - }); - } - }else { - console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor); - this.blur(element); - return false; - } - }else { - this.blur(element); - return false; - } - - return true; - }else { - this.mouseClick = false; - this.blur(element); - return false; - } - }else { - this.mouseClick = false; - this.blur(element); - return false; - } - } - - blur(element){ - if(!this.confirm("edit-blur", [element]) ){ - element.blur(); - } - } - - getEditedCells(){ - var output = []; - - this.editedCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearEdited(cell){ - var editIndex; - - if(cell.modules.edit && cell.modules.edit.edited){ - cell.modules.edit.edited = false; - - this.dispatch("edit-edited-clear", cell); - } - - editIndex = this.editedCells.indexOf(cell); - - if(editIndex > -1){ - this.editedCells.splice(editIndex, 1); - } - } - } - - Edit$1.moduleName = "edit"; - - //load defaults - Edit$1.editors = defaultEditors; - - class ExportRow{ - constructor(type, columns, component, indent){ - this.type = type; - this.columns = columns; - this.component = component || false; - this.indent = indent || 0; - } - } - - class ExportColumn{ - constructor(value, component, width, height, depth){ - this.value = value; - this.component = component || false; - this.width = width; - this.height = height; - this.depth = depth; - } - } - - class Export extends Module{ - - constructor(table){ - super(table); - - this.config = {}; - this.cloneTableStyle = true; - this.colVisProp = ""; - - this.registerTableOption("htmlOutputConfig", false); //html output config - - this.registerColumnOption("htmlOutput"); - this.registerColumnOption("titleHtmlOutput"); - } - - initialize(){ - this.registerTableFunction("getHtml", this.getHtml.bind(this)); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - generateExportList(config, style, range, colVisProp){ - this.cloneTableStyle = style; - this.config = config || {}; - this.colVisProp = colVisProp; - - var headers, body; - - if (range === 'range') { - var columns = this.table.modules.selectRange.selectedColumns(); - headers = this.config.columnHeaders !== false - ? this.headersToExportRows(this.generateColumnGroupHeaders(columns)) - : []; - body = this.bodyToExportRows(this.rowLookup(range), this.table.modules.selectRange.selectedColumns(true)); - } else { - headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : []; - body = this.bodyToExportRows(this.rowLookup(range)); - } - - return headers.concat(body); - } - - generateTable(config, style, range, colVisProp){ - var list = this.generateExportList(config, style, range, colVisProp); - - return this.generateTableElement(list); - } - - rowLookup(range){ - var rows = []; - - if(typeof range == "function"){ - range.call(this.table).forEach((row) =>{ - row = this.table.rowManager.findRow(row); - - if(row){ - rows.push(row); - } - }); - }else { - switch(range){ - case true: - case "visible": - rows = this.table.rowManager.getVisibleRows(false, true); - break; - - case "all": - rows = this.table.rowManager.rows; - break; - - case "selected": - rows = this.table.modules.selectRow.selectedRows; - break; - - case "range": - rows = this.table.modules.selectRange.selectedRows(); - break; - - case "active": - default: - if(this.table.options.pagination){ - rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2); - }else { - rows = this.table.rowManager.getDisplayRows(); - } - } - } - - return Object.assign([], rows); - } - - generateColumnGroupHeaders(columns){ - var output = []; - - if (!columns) { - columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex; - } - - columns.forEach((column) => { - var colData = this.processColumnGroup(column); - - if(colData){ - output.push(colData); - } - }); - - return output; - } - - processColumnGroup(column){ - var subGroups = column.columns, - maxDepth = 0, - title = column.definition["title" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title; - - var groupData = { - title:title, - column:column, - depth:1, - }; - - if(subGroups.length){ - groupData.subGroups = []; - groupData.width = 0; - - subGroups.forEach((subGroup) => { - var subGroupData = this.processColumnGroup(subGroup); - - if(subGroupData){ - groupData.width += subGroupData.width; - groupData.subGroups.push(subGroupData); - - if(subGroupData.depth > maxDepth){ - maxDepth = subGroupData.depth; - } - } - }); - - groupData.depth += maxDepth; - - if(!groupData.width){ - return false; - } - }else { - if(this.columnVisCheck(column)){ - groupData.width = 1; - }else { - return false; - } - } - - return groupData; - } - - columnVisCheck(column){ - var visProp = column.definition[this.colVisProp]; - - if(typeof visProp === "function"){ - visProp = visProp.call(this.table, column.getComponent()); - } - - return visProp !== false && (column.visible || (!column.visible && visProp)); - } - - headersToExportRows(columns){ - var headers = [], - headerDepth = 0, - exportRows = []; - - function parseColumnGroup(column, level){ - - var depth = headerDepth - level; - - if(typeof headers[level] === "undefined"){ - headers[level] = []; - } - - column.height = column.subGroups ? 1 : (depth - column.depth) + 1; - - headers[level].push(column); - - if(column.height > 1){ - for(let i = 1; i < column.height; i ++){ - - if(typeof headers[level + i] === "undefined"){ - headers[level + i] = []; - } - - headers[level + i].push(false); - } - } - - if(column.width > 1){ - for(let i = 1; i < column.width; i ++){ - headers[level].push(false); - } - } - - if(column.subGroups){ - column.subGroups.forEach(function(subGroup){ - parseColumnGroup(subGroup, level+1); - }); - } - } - - //calculate maximum header depth - columns.forEach(function(column){ - if(column.depth > headerDepth){ - headerDepth = column.depth; - } - }); - - columns.forEach(function(column){ - parseColumnGroup(column,0); - }); - - headers.forEach((header) => { - var columns = []; - - header.forEach((col) => { - if(col){ - let title = typeof col.title === "undefined" ? "" : col.title; - columns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth)); - }else { - columns.push(null); - } - }); - - exportRows.push(new ExportRow("header", columns)); - }); - - return exportRows; - } - - bodyToExportRows(rows, columns = []){ - var exportRows = []; - - if (columns.length === 0) { - this.table.columnManager.columnsByIndex.forEach((column) => { - if (this.columnVisCheck(column)) { - columns.push(column.getComponent()); - } - }); - } - - if(this.config.columnCalcs !== false && this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized){ - rows.unshift(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized){ - rows.push(this.table.modules.columnCalcs.botRow); - } - } - - rows = rows.filter((row) => { - switch(row.type){ - case "group": - return this.config.rowGroups !== false; - - case "calc": - return this.config.columnCalcs !== false; - - case "row": - return !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent); - } - - return true; - }); - - rows.forEach((row, i) => { - var rowData = row.getData(this.colVisProp); - var exportCols = []; - var indent = 0; - - switch(row.type){ - case "group": - indent = row.level; - exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1)); - break; - - case "calc" : - case "row" : - columns.forEach((col) => { - exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1)); - }); - - if(this.table.options.dataTree && this.config.dataTree !== false){ - indent = row.modules.dataTree.index; - } - break; - } - - exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent)); - }); - - return exportRows; - } - - generateTableElement(list){ - var table = document.createElement("table"), - headerEl = document.createElement("thead"), - bodyEl = document.createElement("tbody"), - styles = this.lookupTableStyles(), - rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))], - setup = {}; - - setup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter; - - if(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists("columnCalcs")){ - setup.treeElementField = this.table.modules.dataTree.elementField; - } - - //assign group header formatter - setup.groupHeader = this.table.options["groupHeader" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))]; - - if(setup.groupHeader && !Array.isArray(setup.groupHeader)){ - setup.groupHeader = [setup.groupHeader]; - } - - table.classList.add("tabulator-print-table"); - - this.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - - - if(list.length > 1000){ - console.warn("It may take a long time to render an HTML table with more than 1000 rows"); - } - - list.forEach((row, i) => { - let rowEl; - - switch(row.type){ - case "header": - headerEl.appendChild(this.generateHeaderElement(row, setup, styles)); - break; - - case "group": - bodyEl.appendChild(this.generateGroupElement(row, setup, styles)); - break; - - case "calc": - bodyEl.appendChild(this.generateCalcElement(row, setup, styles)); - break; - - case "row": - rowEl = this.generateRowElement(row, setup, styles); - - this.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"]); - bodyEl.appendChild(rowEl); - break; - } - }); - - if(headerEl.innerHTML){ - table.appendChild(headerEl); - } - - table.appendChild(bodyEl); - - - this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]); - return table; - } - - lookupTableStyles(){ - var styles = {}; - - //lookup row styles - if(this.cloneTableStyle && window.getComputedStyle){ - styles.oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"); - styles.evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"); - styles.calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs"); - styles.firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"); - styles.firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0]; - - if(styles.firstRow){ - styles.styleCells = styles.firstRow.getElementsByClassName("tabulator-cell"); - styles.firstCell = styles.styleCells[0]; - styles.lastCell = styles.styleCells[styles.styleCells.length - 1]; - } - } - - return styles; - } - - generateHeaderElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - row.columns.forEach((column) => { - if(column){ - var cellEl = document.createElement("th"); - var classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(" ") : []; - - cellEl.colSpan = column.width; - cellEl.rowSpan = column.height; - - cellEl.innerHTML = column.value; - - if(this.cloneTableStyle){ - cellEl.style.boxSizing = "border-box"; - } - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - this.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - this.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - if(column.component._column.visible){ - this.mapElementStyles(column.component.getElement(), cellEl, ["width"]); - }else { - if(column.component._column.definition.width){ - cellEl.style.width = column.component._column.definition.width + "px"; - } - } - - if(column.component._column.parent){ - this.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]); - } - - rowEl.appendChild(cellEl); - } - }); - - return rowEl; - } - - generateGroupElement(row, setup, styles){ - - var rowEl = document.createElement("tr"), - cellEl = document.createElement("td"), - group = row.columns[0]; - - rowEl.classList.add("tabulator-print-table-row"); - - if(setup.groupHeader && setup.groupHeader[row.indent]){ - group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - }else { - if(setup.groupHeader !== false){ - group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - - cellEl.colSpan = group.width; - cellEl.innerHTML = group.value; - - rowEl.classList.add("tabulator-print-table-group"); - rowEl.classList.add("tabulator-group-level-" + row.indent); - - if(group.component.isVisible()){ - rowEl.classList.add("tabulator-group-visible"); - } - - this.mapElementStyles(styles.firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - this.mapElementStyles(styles.firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - rowEl.appendChild(cellEl); - - return rowEl; - } - - generateCalcElement(row, setup, styles){ - var rowEl = this.generateRowElement(row, setup, styles); - - rowEl.classList.add("tabulator-print-table-calcs"); - this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - - return rowEl; - } - - generateRowElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - rowEl.classList.add("tabulator-print-table-row"); - - row.columns.forEach((col, i) => { - if(col){ - var cellEl = document.createElement("td"), - column = col.component._column, - table = this.table, - index = table.columnManager.findColumnIndex(column), - value = col.value, - cellStyle; - - var cellWrapper = { - modules:{}, - getValue:function(){ - return value; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return cellEl; - }, - getType:function(){ - return "cell"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getData:function(){ - return row.component.getData(); - }, - getRow:function(){ - return row.component; - }, - getTable:function(){ - return table; - }, - getComponent:function(){ - return cellWrapper; - }, - column:column, - }; - - var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : []; - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - if(this.table.modExists("format") && this.config.formatCells !== false){ - value = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp); - }else { - switch(typeof value){ - case "object": - value = value !== null ? JSON.stringify(value) : ""; - break; - - case "undefined": - value = ""; - break; - } - } - - if(value instanceof Node){ - cellEl.appendChild(value); - }else { - cellEl.innerHTML = value; - } - - cellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell; - - if(cellStyle){ - this.mapElementStyles(cellStyle, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "text-align"]); - - if(column.definition.align){ - cellEl.style.textAlign = column.definition.align; - } - } - - if(this.table.options.dataTree && this.config.dataTree !== false){ - if((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){ - if(row.component._row.modules.dataTree.controlEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild); - } - if(row.component._row.modules.dataTree.branchEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild); - } - } - } - - rowEl.appendChild(cellEl); - - if(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){ - cellWrapper.modules.format.renderedCallback(); - } - } - }); - - if(setup.rowFormatter && row.type === "row" && this.config.formatCells !== false){ - let formatComponent = Object.assign(row.component); - - formatComponent.getElement = function(){return rowEl;}; - - setup.rowFormatter(row.component); - } - - return rowEl; - } - - generateHTMLTable(list){ - var holder = document.createElement("div"); - - holder.appendChild(this.generateTableElement(list)); - - return holder.innerHTML; - } - - getHtml(visible, style, config, colVisProp){ - var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput"); - - return this.generateHTMLTable(list); - } - - mapElementStyles(from, to, props){ - if(this.cloneTableStyle && from && to){ - - var lookup = { - "background-color" : "backgroundColor", - "color" : "fontColor", - "width" : "width", - "font-weight" : "fontWeight", - "font-family" : "fontFamily", - "font-size" : "fontSize", - "text-align" : "textAlign", - "border-top" : "borderTop", - "border-left" : "borderLeft", - "border-right" : "borderRight", - "border-bottom" : "borderBottom", - "padding-top" : "paddingTop", - "padding-left" : "paddingLeft", - "padding-right" : "paddingRight", - "padding-bottom" : "paddingBottom", - }; - - if(window.getComputedStyle){ - var fromStyle = window.getComputedStyle(from); - - props.forEach(function(prop){ - if(!to.style[lookup[prop]]){ - to.style[lookup[prop]] = fromStyle.getPropertyValue(prop); - } - }); - } - } - } - } - - Export.moduleName = "export"; - - var defaultFilters = { - - //equal to - "=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal == filterVal ? true : false; - }, - - //less than - "<":function(filterVal, rowVal, rowData, filterParams){ - return rowVal < filterVal ? true : false; - }, - - //less than or equal to - "<=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal <= filterVal ? true : false; - }, - - //greater than - ">":function(filterVal, rowVal, rowData, filterParams){ - return rowVal > filterVal ? true : false; - }, - - //greater than or equal to - ">=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal >= filterVal ? true : false; - }, - - //not equal to - "!=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal != filterVal ? true : false; - }, - - "regex":function(filterVal, rowVal, rowData, filterParams){ - - if(typeof filterVal == "string"){ - filterVal = new RegExp(filterVal); - } - - return filterVal.test(rowVal); - }, - - //contains the string - "like":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1; - } - else { - return false; - } - } - }, - - //contains the keywords - "keywords":function(filterVal, rowVal, rowData, filterParams){ - var keywords = filterVal.toLowerCase().split(typeof filterParams.separator === "undefined" ? " " : filterParams.separator), - value = String(rowVal === null || typeof rowVal === "undefined" ? "" : rowVal).toLowerCase(), - matches = []; - - keywords.forEach((keyword) =>{ - if(value.includes(keyword)){ - matches.push(true); - } - }); - - return filterParams.matchAll ? matches.length === keywords.length : !!matches.length; - }, - - //starts with the string - "starts":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase()); - } - else { - return false; - } - } - }, - - //ends with the string - "ends":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase()); - } - else { - return false; - } - } - }, - - //in array - "in":function(filterVal, rowVal, rowData, filterParams){ - if(Array.isArray(filterVal)){ - return filterVal.length ? filterVal.indexOf(rowVal) > -1 : true; - }else { - console.warn("Filter Error - filter value is not an array:", filterVal); - return false; - } - }, - }; - - class Filter extends Module{ - - constructor(table){ - super(table); - - this.filterList = []; //hold filter list - this.headerFilters = {}; //hold column filters - this.headerFilterColumns = []; //hold columns that use header filters - - this.prevHeaderFilterChangeCheck = ""; - this.prevHeaderFilterChangeCheck = "{}"; - - this.changed = false; //has filtering changed since last render - this.tableInitialized = false; - - this.registerTableOption("filterMode", "local"); //local or remote filtering - - this.registerTableOption("initialFilter", false); //initial filtering criteria - this.registerTableOption("initialHeaderFilter", false); //initial header filtering criteria - this.registerTableOption("headerFilterLiveFilterDelay", 300); //delay before updating column after user types in header filter - this.registerTableOption("placeholderHeaderFilter", false); //placeholder when header filter is empty - - this.registerColumnOption("headerFilter"); - this.registerColumnOption("headerFilterPlaceholder"); - this.registerColumnOption("headerFilterParams"); - this.registerColumnOption("headerFilterEmptyCheck"); - this.registerColumnOption("headerFilterFunc"); - this.registerColumnOption("headerFilterFuncParams"); - this.registerColumnOption("headerFilterLiveFilter"); - - this.registerTableFunction("searchRows", this.searchRows.bind(this)); - this.registerTableFunction("searchData", this.searchData.bind(this)); - - this.registerTableFunction("setFilter", this.userSetFilter.bind(this)); - this.registerTableFunction("refreshFilter", this.userRefreshFilter.bind(this)); - this.registerTableFunction("addFilter", this.userAddFilter.bind(this)); - this.registerTableFunction("getFilters", this.getFilters.bind(this)); - this.registerTableFunction("setHeaderFilterFocus", this.userSetHeaderFilterFocus.bind(this)); - this.registerTableFunction("getHeaderFilterValue", this.userGetHeaderFilterValue.bind(this)); - this.registerTableFunction("setHeaderFilterValue", this.userSetHeaderFilterValue.bind(this)); - this.registerTableFunction("getHeaderFilters", this.getHeaderFilters.bind(this)); - this.registerTableFunction("removeFilter", this.userRemoveFilter.bind(this)); - this.registerTableFunction("clearFilter", this.userClearFilter.bind(this)); - this.registerTableFunction("clearHeaderFilter", this.userClearHeaderFilter.bind(this)); - - this.registerComponentFunction("column", "headerFilterFocus", this.setHeaderFilterFocus.bind(this)); - this.registerComponentFunction("column", "reloadHeaderFilter", this.reloadHeaderFilter.bind(this)); - this.registerComponentFunction("column", "getHeaderFilterValue", this.getHeaderFilterValue.bind(this)); - this.registerComponentFunction("column", "setHeaderFilterValue", this.setHeaderFilterValue.bind(this)); - } - - initialize(){ - this.subscribe("column-init", this.initializeColumnHeaderFilter.bind(this)); - this.subscribe("column-width-fit-before", this.hideHeaderFilterElements.bind(this)); - this.subscribe("column-width-fit-after", this.showHeaderFilterElements.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.subscribe("placeholder", this.generatePlaceholder.bind(this)); - - if(this.table.options.filterMode === "remote"){ - this.subscribe("data-params", this.remoteFilterParams.bind(this)); - } - - this.registerDataHandler(this.filter.bind(this), 10); - } - - tableBuilt(){ - if(this.table.options.initialFilter){ - this.setFilter(this.table.options.initialFilter); - } - - if(this.table.options.initialHeaderFilter){ - this.table.options.initialHeaderFilter.forEach((item) => { - - var column = this.table.columnManager.findColumn(item.field); - - if(column){ - this.setHeaderFilterValue(column, item.value); - }else { - console.warn("Column Filter Error - No matching column found:", item.field); - return false; - } - }); - } - - this.tableInitialized = true; - } - - remoteFilterParams(data, config, silent, params){ - params.filter = this.getFilters(true, true); - return params; - } - - generatePlaceholder(text){ - if(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){ - return this.table.options.placeholderHeaderFilter; - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - //set standard filters - userSetFilter(field, type, value, params){ - this.setFilter(field, type, value, params); - this.refreshFilter(); - } - - //set standard filters - userRefreshFilter(){ - this.refreshFilter(); - } - - //add filter to array - userAddFilter(field, type, value, params){ - this.addFilter(field, type, value, params); - this.refreshFilter(); - } - - userSetHeaderFilterFocus(field){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterFocus(column); - }else { - console.warn("Column Filter Focus Error - No matching column found:", field); - return false; - } - } - - userGetHeaderFilterValue(field) { - var column = this.table.columnManager.findColumn(field); - - if(column){ - return this.getHeaderFilterValue(column); - }else { - console.warn("Column Filter Error - No matching column found:", field); - } - } - - userSetHeaderFilterValue(field, value){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterValue(column, value); - }else { - console.warn("Column Filter Error - No matching column found:", field); - return false; - } - } - - //remove filter from array - userRemoveFilter(field, type, value){ - this.removeFilter(field, type, value); - this.refreshFilter(); - } - - //clear filters - userClearFilter(all){ - this.clearFilter(all); - this.refreshFilter(); - } - - //clear header filters - userClearHeaderFilter(){ - this.clearHeaderFilter(); - this.refreshFilter(); - } - - - //search for specific row components - searchRows(field, type, value){ - return this.search("rows", field, type, value); - } - - //search for specific data - searchData(field, type, value){ - return this.search("data", field, type, value); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnHeaderFilter(column){ - var def = column.definition; - - if(def.headerFilter){ - this.initializeColumn(column); - } - } - - //initialize column header filter - initializeColumn(column, value){ - var self = this, - field = column.getField(); - - //handle successfully value change - function success(value){ - var filterType = (column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text") || column.modules.filter.tagType == "textarea" ? "partial" : "match", - type = "", - filterChangeCheck = "", - filterFunc; - - if(typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value){ - - column.modules.filter.prevSuccess = value; - - if(!column.modules.filter.emptyFunc(value)){ - column.modules.filter.value = value; - - switch(typeof column.definition.headerFilterFunc){ - case "string": - if(Filter.filters[column.definition.headerFilterFunc]){ - type = column.definition.headerFilterFunc; - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params); - }; - }else { - console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc); - } - break; - - case "function": - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return column.definition.headerFilterFunc(value, fieldVal, data, params); - }; - - type = filterFunc; - break; - } - - if(!filterFunc){ - switch(filterType){ - case "partial": - filterFunc = function(data){ - var colVal = column.getFieldValue(data); - - if(typeof colVal !== 'undefined' && colVal !== null){ - return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1; - }else { - return false; - } - }; - type = "like"; - break; - - default: - filterFunc = function(data){ - return column.getFieldValue(data) == value; - }; - type = "="; - } - } - - self.headerFilters[field] = {value:value, func:filterFunc, type:type}; - }else { - delete self.headerFilters[field]; - } - - column.modules.filter.value = value; - - filterChangeCheck = JSON.stringify(self.headerFilters); - - if(self.prevHeaderFilterChangeCheck !== filterChangeCheck){ - self.prevHeaderFilterChangeCheck = filterChangeCheck; - - self.trackChanges(); - self.refreshFilter(); - } - } - - return true; - } - - column.modules.filter = { - success:success, - attrType:false, - tagType:false, - emptyFunc:false, - }; - - this.generateHeaderFilterElement(column); - } - - generateHeaderFilterElement(column, initialValue, reinitialize){ - var self = this, - success = column.modules.filter.success, - field = column.getField(), - filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback; - - column.modules.filter.value = initialValue; - - //handle aborted edit - function cancel(){} - - function onRendered(callback){ - onRenderedCallback = callback; - } - - if(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){ - column.contentElement.removeChild(column.modules.filter.headerElement.parentNode); - } - - if(field){ - - //set empty value function - column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){ - return !value && value !== 0; - }; - - filterElement = document.createElement("div"); - filterElement.classList.add("tabulator-header-filter"); - - //set column editor - switch(typeof column.definition.headerFilter){ - case "string": - if(self.table.modules.edit.editors[column.definition.headerFilter]){ - editor = self.table.modules.edit.editors[column.definition.headerFilter]; - - if((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else { - console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor); - } - break; - - case "function": - editor = column.definition.headerFilter; - break; - - case "boolean": - if(column.modules.edit && column.modules.edit.editor){ - editor = column.modules.edit.editor; - }else { - if(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){ - editor = self.table.modules.edit.editors[column.definition.formatter]; - - if((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else { - editor = self.table.modules.edit.editors["input"]; - } - } - break; - } - - if(editor){ - - cellWrapper = { - getValue:function(){ - return typeof initialValue !== "undefined" ? initialValue : ""; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return filterElement; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - getType:() => { - return "header"; - }, - getRow:function(){ - return { - normalizeHeight:function(){ - - } - }; - } - }; - - params = column.definition.headerFilterParams || {}; - - params = typeof params === "function" ? params.call(self.table, cellWrapper) : params; - - editorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params); - - if(!editorElement){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false"); - return; - } - - if(!(editorElement instanceof Node)){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement); - return; - } - - //set Placeholder Text - self.langBind("headerFilters|columns|" + column.definition.field, function(value){ - editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : (column.definition.headerFilterPlaceholder || self.langText("headerFilters|default"))); - }); - - //focus on element on click - editorElement.addEventListener("click", function(e){ - e.stopPropagation(); - editorElement.focus(); - }); - - editorElement.addEventListener("focus", (e) => { - var left = this.table.columnManager.contentsElement.scrollLeft; - - var headerPos = this.table.rowManager.element.scrollLeft; - - if(left !== headerPos){ - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - - //live update filters as user types - typingTimer = false; - - searchTrigger = function(e){ - if(typingTimer){ - clearTimeout(typingTimer); - } - - typingTimer = setTimeout(function(){ - success(editorElement.value); - },self.table.options.headerFilterLiveFilterDelay); - }; - - column.modules.filter.headerElement = editorElement; - column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "" ; - column.modules.filter.tagType = editorElement.tagName.toLowerCase(); - - if(column.definition.headerFilterLiveFilter !== false){ - - if ( - !( - column.definition.headerFilter === 'autocomplete' || - column.definition.headerFilter === 'tickCross' || - ((column.definition.editor === 'autocomplete' || - column.definition.editor === 'tickCross') && - column.definition.headerFilter === true) - ) - ) { - editorElement.addEventListener("keyup", searchTrigger); - editorElement.addEventListener("search", searchTrigger); - - - //update number filtered columns on change - if(column.modules.filter.attrType == "number"){ - editorElement.addEventListener("change", function(e){ - success(editorElement.value); - }); - } - - //change text inputs to search inputs to allow for clearing of field - if(column.modules.filter.attrType == "text" && this.table.browser !== "ie"){ - editorElement.setAttribute("type", "search"); - // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click - } - - } - - //prevent input and select elements from propagating click to column sorters etc - if(column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea"){ - editorElement.addEventListener("mousedown",function(e){ - e.stopPropagation(); - }); - } - } - - filterElement.appendChild(editorElement); - - column.contentElement.appendChild(filterElement); - - if(!reinitialize){ - self.headerFilterColumns.push(column); - } - - if(onRenderedCallback){ - onRenderedCallback(); - } - } - }else { - console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title); - } - } - - //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode) - hideHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = 'none'; - } - }); - } - - //show all header filter elements (used to ensure correct column widths in "fitData" layout mode) - showHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = ''; - } - }); - } - - //programmatically set focus of header filter - setHeaderFilterFocus(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.focus(); - }else { - console.warn("Column Filter Focus Error - No header filter set on column:", column.getField()); - } - } - - //programmatically get value of header filter - getHeaderFilterValue(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - return column.modules.filter.value; - } else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - - //programmatically set value of header filter - setHeaderFilterValue(column, value){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, value, true); - column.modules.filter.success(value); - }else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - reloadHeaderFilter(column){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, column.modules.filter.value, true); - }else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - refreshFilter(){ - if(this.tableInitialized){ - if(this.table.options.filterMode === "remote"){ - this.reloadData(null, false, false); - }else { - this.refreshData(true); - } - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the filters has changed since last use - trackChanges(){ - this.changed = true; - this.dispatch("filter-changed"); - } - - //check if the filters has changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //set standard filters - setFilter(field, type, value, params){ - this.filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - this.addFilter(field); - } - - //add filter to array - addFilter(field, type, value, params){ - var changed = false; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - this.filterList.push(filter); - changed = true; - } - }); - - if(changed){ - this.trackChanges(); - } - } - - findFilter(filter){ - var column; - - if(Array.isArray(filter)){ - return this.findSubFilters(filter); - } - - var filterFunc = false; - - if(typeof filter.field == "function"){ - filterFunc = function(data){ - return filter.field(data, filter.type || {});// pass params to custom filter function - }; - }else { - - if(Filter.filters[filter.type]){ - - column = this.table.columnManager.getColumnByField(filter.field); - - if(column){ - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {}); - }; - }else { - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {}); - }; - } - - - }else { - console.warn("Filter Error - No such filter type found, ignoring: ", filter.type); - } - } - - filter.func = filterFunc; - - return filter.func ? filter : false; - } - - findSubFilters(filters){ - var output = []; - - filters.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - output.push(filter); - } - }); - - return output.length ? output : false; - } - - //get all filters - getFilters(all, ajax){ - var output = []; - - if(all){ - output = this.getHeaderFilters(); - } - - if(ajax){ - output.forEach(function(item){ - if(typeof item.type == "function"){ - item.type = "function"; - } - }); - } - - output = output.concat(this.filtersToArray(this.filterList, ajax)); - - return output; - } - - //filter to Object - filtersToArray(filterList, ajax){ - var output = []; - - filterList.forEach((filter) => { - var item; - - if(Array.isArray(filter)){ - output.push(this.filtersToArray(filter, ajax)); - }else { - item = {field:filter.field, type:filter.type, value:filter.value}; - - if(ajax){ - if(typeof item.type == "function"){ - item.type = "function"; - } - } - - output.push(item); - } - }); - - return output; - } - - //get all filters - getHeaderFilters(){ - var output = []; - - for(var key in this.headerFilters){ - output.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value}); - } - - return output; - } - - //remove filter from array - removeFilter(field, type, value){ - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - var index = -1; - - if(typeof filter.field == "object"){ - index = this.filterList.findIndex((element) => { - return filter === element; - }); - }else { - index = this.filterList.findIndex((element) => { - return filter.field === element.field && filter.type === element.type && filter.value === element.value; - }); - } - - if(index > -1){ - this.filterList.splice(index, 1); - }else { - console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type); - } - }); - - this.trackChanges(); - } - - //clear filters - clearFilter(all){ - this.filterList = []; - - if(all){ - this.clearHeaderFilter(); - } - - this.trackChanges(); - } - - //clear header filters - clearHeaderFilter(){ - this.headerFilters = {}; - this.prevHeaderFilterChangeCheck = "{}"; - - this.headerFilterColumns.forEach((column) => { - if(typeof column.modules.filter.value !== "undefined"){ - delete column.modules.filter.value; - } - column.modules.filter.prevSuccess = undefined; - this.reloadHeaderFilter(column); - }); - - this.trackChanges(); - } - - //search data and return matching rows - search (searchType, field, type, value){ - var activeRows = [], - filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - filterList.push(filter); - } - }); - - this.table.rowManager.rows.forEach((row) => { - var match = true; - - filterList.forEach((filter) => { - if(!this.filterRecurse(filter, row.getData())){ - match = false; - } - }); - - if(match){ - activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent()); - } - - }); - - return activeRows; - } - - //filter row array - filter(rowList, filters){ - var activeRows = [], - activeRowComponents = []; - - if(this.subscribedExternal("dataFiltering")){ - this.dispatchExternal("dataFiltering", this.getFilters(true)); - } - - if(this.table.options.filterMode !== "remote" && (this.filterList.length || Object.keys(this.headerFilters).length)){ - - rowList.forEach((row) => { - if(this.filterRow(row)){ - activeRows.push(row); - } - }); - - }else { - activeRows = rowList.slice(0); - } - - if(this.subscribedExternal("dataFiltered")){ - - activeRows.forEach((row) => { - activeRowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataFiltered", this.getFilters(true), activeRowComponents); - } - - return activeRows; - } - - //filter individual row - filterRow(row, filters){ - var match = true, - data = row.getData(); - - this.filterList.forEach((filter) => { - if(!this.filterRecurse(filter, data)){ - match = false; - } - }); - - - for(var field in this.headerFilters){ - if(!this.headerFilters[field].func(data)){ - match = false; - } - } - - return match; - } - - filterRecurse(filter, data){ - var match = false; - - if(Array.isArray(filter)){ - filter.forEach((subFilter) => { - if(this.filterRecurse(subFilter, data)){ - match = true; - } - }); - }else { - match = filter.func(data); - } - - return match; - } - } - - Filter.moduleName = "filter"; - - //load defaults - Filter.filters = defaultFilters; - - function plaintext(cell, formatterParams, onRendered){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - function html$1(cell, formatterParams, onRendered){ - return cell.getValue(); - } - - function textarea$1(cell, formatterParams, onRendered){ - cell.getElement().style.whiteSpace = "pre-wrap"; - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - function money(cell, formatterParams, onRendered){ - var floatVal = parseFloat(cell.getValue()), - sign = "", - number, integer, decimal, rgx, value; - - var decimalSym = formatterParams.decimal || "."; - var thousandSym = formatterParams.thousand || ","; - var negativeSign = formatterParams.negativeSign || "-"; - var symbol = formatterParams.symbol || ""; - var after = !!formatterParams.symbolAfter; - var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2; - - if(isNaN(floatVal)){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - if(floatVal < 0){ - floatVal = Math.abs(floatVal); - sign = negativeSign; - } - - number = precision !== false ? floatVal.toFixed(precision) : floatVal; - number = String(number).split("."); - - integer = number[0]; - decimal = number.length > 1 ? decimalSym + number[1] : ""; - - if (formatterParams.thousand !== false) { - rgx = /(\d+)(\d{3})/; - - while (rgx.test(integer)){ - integer = integer.replace(rgx, "$1" + thousandSym + "$2"); - } - } - - value = integer + decimal; - - if(sign === true){ - value = "(" + value + ")"; - return after ? value + symbol : symbol + value; - }else { - return after ? sign + value + symbol : sign + symbol + value; - } - } - - function link(cell, formatterParams, onRendered){ - var value = cell.getValue(), - urlPrefix = formatterParams.urlPrefix || "", - download = formatterParams.download, - label = value, - el = document.createElement("a"), - data; - - function labelTraverse(path, data){ - var item = path.shift(), - value = data[item]; - - if(path.length && typeof value === "object"){ - return labelTraverse(path, value); - } - - return value; - } - - if(formatterParams.labelField){ - data = cell.getData(); - label = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data); - } - - if(formatterParams.label){ - switch(typeof formatterParams.label){ - case "string": - label = formatterParams.label; - break; - - case "function": - label = formatterParams.label(cell); - break; - } - } - - if(label){ - if(formatterParams.urlField){ - data = cell.getData(); - - value = Helpers.retrieveNestedData(this.table.options.nestedFieldSeparator, formatterParams.urlField, data); - } - - if(formatterParams.url){ - switch(typeof formatterParams.url){ - case "string": - value = formatterParams.url; - break; - - case "function": - value = formatterParams.url(cell); - break; - } - } - - el.setAttribute("href", urlPrefix + value); - - if(formatterParams.target){ - el.setAttribute("target", formatterParams.target); - } - - if(formatterParams.download){ - - if(typeof download == "function"){ - download = download(cell); - }else { - download = download === true ? "" : download; - } - - el.setAttribute("download", download); - } - - el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label)); - - return el; - }else { - return " "; - } - } - - function image(cell, formatterParams, onRendered){ - var el = document.createElement("img"), - src = cell.getValue(); - - if(formatterParams.urlPrefix){ - src = formatterParams.urlPrefix + cell.getValue(); - } - - if(formatterParams.urlSuffix){ - src = src + formatterParams.urlSuffix; - } - - el.setAttribute("src", src); - - switch(typeof formatterParams.height){ - case "number": - el.style.height = formatterParams.height + "px"; - break; - - case "string": - el.style.height = formatterParams.height; - break; - } - - switch(typeof formatterParams.width){ - case "number": - el.style.width = formatterParams.width + "px"; - break; - - case "string": - el.style.width = formatterParams.width; - break; - } - - el.addEventListener("load", function(){ - cell.getRow().normalizeHeight(); - }); - - return el; - } - - function tickCross$1(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - empty = formatterParams.allowEmpty, - truthy = formatterParams.allowTruthy, - trueValueSet = Object.keys(formatterParams).includes("trueValue"), - tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '', - cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : ''; - - if((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")))){ - element.setAttribute("aria-checked", true); - return tick || ""; - }else { - if(empty && (value === "null" || value === "" || value === null || typeof value === "undefined")){ - element.setAttribute("aria-checked", "mixed"); - return ""; - }else { - element.setAttribute("aria-checked", false); - return cross || ""; - } - } - } - - function datetime$1(cell, formatterParams, onRendered){ - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var outputFormat = formatterParams.outputFormat || "dd/MM/yyyy HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if(newDatetime.isValid){ - if(formatterParams.timezone){ - newDatetime = newDatetime.setZone(formatterParams.timezone); - } - - return newDatetime.toFormat(outputFormat); - }else { - if(invalid === true || !value){ - return value; - }else if(typeof invalid === "function"){ - return invalid(value); - }else { - return invalid; - } - } - }else { - console.error("Format Error - 'datetime' formatter is dependant on luxon.js"); - } - } - - function datetimediff (cell, formatterParams, onRendered) { - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false; - var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : "days"; - var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false; - var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : DT.now(); - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if (newDatetime.isValid){ - if(humanize){ - return newDatetime.diff(date, unit).toHuman() + (suffix ? " " + suffix : ""); - }else { - return parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? " " + suffix : ""); - } - } else { - - if (invalid === true) { - return value; - } else if (typeof invalid === "function") { - return invalid(value); - } else { - return invalid; - } - } - }else { - console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js"); - } - } - - function lookup (cell, formatterParams, onRendered) { - var value = cell.getValue(); - - if (typeof formatterParams[value] === "undefined") { - console.warn('Missing display value for ' + value); - return value; - } - - return formatterParams[value]; - } - - function star$1(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5, - stars = document.createElement("span"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"), - starActive = '', - starInactive = ''; - - //style stars holder - stars.style.verticalAlign = "middle"; - - //style star - star.setAttribute("width", "14"); - star.setAttribute("height", "14"); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - value = value && !isNaN(value) ? parseInt(value) : 0; - - value = Math.max(0, Math.min(value, maxStars)); - - for(var i=1;i<= maxStars;i++){ - var nextStar = star.cloneNode(true); - nextStar.innerHTML = i <= value ? starActive : starInactive; - - stars.appendChild(nextStar); - } - - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - element.setAttribute("aria-label", value); - - return stars; - } - - function traffic(cell, formatterParams, onRendered){ - var value = this.sanitizeHTML(cell.getValue()) || 0, - el = document.createElement("span"), - max = formatterParams && formatterParams.max ? formatterParams.max : 100, - min = formatterParams && formatterParams.min ? formatterParams.min : 0, - colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"], - color = "#666666", - percent, percentValue; - - if(isNaN(value) || typeof cell.getValue() === "undefined"){ - return; - } - - el.classList.add("tabulator-traffic-light"); - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set color - switch(typeof colors){ - case "string": - color = colors; - break; - case "function": - color = colors(value); - break; - case "object": - if(Array.isArray(colors)){ - var unit = 100 / colors.length; - var index = Math.floor(percentValue / unit); - - index = Math.min(index, colors.length - 1); - index = Math.max(index, 0); - color = colors[index]; - break; - } - } - - el.style.backgroundColor = color; - - return el; - } - - function progress$1(cell, formatterParams = {}, onRendered){ //progress bar - var value = this.sanitizeHTML(cell.getValue()) || 0, - element = cell.getElement(), - max = formatterParams.max ? formatterParams.max : 100, - min = formatterParams.min ? formatterParams.min : 0, - legendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : "center", - percent, percentValue, color, legend, legendColor; - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set bar color - switch(typeof formatterParams.color){ - case "string": - color = formatterParams.color; - break; - case "function": - color = formatterParams.color(value); - break; - case "object": - if(Array.isArray(formatterParams.color)){ - let unit = 100 / formatterParams.color.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.color.length - 1); - index = Math.max(index, 0); - color = formatterParams.color[index]; - break; - } - default: - color = "#2DC214"; - } - - //generate legend - switch(typeof formatterParams.legend){ - case "string": - legend = formatterParams.legend; - break; - case "function": - legend = formatterParams.legend(value); - break; - case "boolean": - legend = value; - break; - default: - legend = false; - } - - //set legend color - switch(typeof formatterParams.legendColor){ - case "string": - legendColor = formatterParams.legendColor; - break; - case "function": - legendColor = formatterParams.legendColor(value); - break; - case "object": - if(Array.isArray(formatterParams.legendColor)){ - let unit = 100 / formatterParams.legendColor.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.legendColor.length - 1); - index = Math.max(index, 0); - legendColor = formatterParams.legendColor[index]; - } - break; - default: - legendColor = "#000"; - } - - element.style.minWidth = "30px"; - element.style.position = "relative"; - - element.setAttribute("aria-label", percentValue); - - var barEl = document.createElement("div"); - barEl.style.display = "inline-block"; - barEl.style.width = percentValue + "%"; - barEl.style.backgroundColor = color; - barEl.style.height = "100%"; - - barEl.setAttribute('data-max', max); - barEl.setAttribute('data-min', min); - - var barContainer = document.createElement("div"); - barContainer.style.position = "relative"; - barContainer.style.width = "100%"; - barContainer.style.height = "100%"; - - if(legend){ - var legendEl = document.createElement("div"); - legendEl.style.position = "absolute"; - legendEl.style.top = 0; - legendEl.style.left = 0; - legendEl.style.textAlign = legendAlign; - legendEl.style.width = "100%"; - legendEl.style.color = legendColor; - legendEl.innerHTML = legend; - } - - onRendered(function(){ - - //handle custom element needed if formatter is to be included in printed/downloaded output - if(!(cell instanceof CellComponent)){ - var holderEl = document.createElement("div"); - holderEl.style.position = "absolute"; - holderEl.style.top = "4px"; - holderEl.style.bottom = "4px"; - holderEl.style.left = "4px"; - holderEl.style.right = "4px"; - - element.appendChild(holderEl); - - element = holderEl; - } - - element.appendChild(barContainer); - barContainer.appendChild(barEl); - - if(legend){ - barContainer.appendChild(legendEl); - } - }); - - return ""; - } - - function color(cell, formatterParams, onRendered){ - cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue()); - return ""; - } - - function buttonTick(cell, formatterParams, onRendered){ - return ''; - } - - function buttonCross(cell, formatterParams, onRendered){ - return ''; - } - - function rownum(cell, formatterParams, onRendered){ - var content = document.createElement("span"); - var row = cell.getRow(); - var table = cell.getTable(); - - row.watchPosition((position) => { - if (formatterParams.relativeToPage) { - position += table.modules.page.getPageSize() * (table.modules.page.getPage() - 1); - } - content.innerText = position; - }); - - return content; - } - - function handle(cell, formatterParams, onRendered){ - cell.getElement().classList.add("tabulator-row-handle"); - return "
        "; - } - - function responsiveCollapse(cell, formatterParams, onRendered){ - var el = document.createElement("div"), - config = cell.getRow()._row.modules.responsiveLayout; - - el.classList.add("tabulator-responsive-collapse-toggle"); - - el.innerHTML = ` - - - - - - -`; - - cell.getElement().classList.add("tabulator-row-handle"); - - function toggleList(isOpen){ - var collapseEl = config.element; - - config.open = isOpen; - - if(collapseEl){ - - if(config.open){ - el.classList.add("open"); - collapseEl.style.display = ''; - }else { - el.classList.remove("open"); - collapseEl.style.display = 'none'; - } - } - } - - el.addEventListener("click", function(e){ - e.stopImmediatePropagation(); - toggleList(!config.open); - cell.getTable().rowManager.adjustTableSize(); - }); - - toggleList(config.open); - - return el; - } - - function rowSelection(cell, formatterParams, onRendered){ - var checkbox = document.createElement("input"); - var blocked = false; - - checkbox.type = 'checkbox'; - - checkbox.setAttribute("aria-label", "Select Row"); - - if(this.table.modExists("selectRow", true)){ - - checkbox.addEventListener("click", (e) => { - e.stopPropagation(); - }); - - if(typeof cell.getRow == 'function'){ - var row = cell.getRow(); - - if(row instanceof RowComponent){ - - checkbox.addEventListener("change", (e) => { - if(this.table.options.selectableRowsRangeMode === "click"){ - if(!blocked){ - row.toggleSelect(); - }else { - blocked = false; - } - }else { - row.toggleSelect(); - } - }); - - if(this.table.options.selectableRowsRangeMode === "click"){ - checkbox.addEventListener("click", (e) => { - blocked = true; - this.table.modules.selectRow.handleComplexRowClick(row._row, e); - }); - } - - checkbox.checked = row.isSelected && row.isSelected(); - this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox); - }else { - checkbox = ""; - } - }else { - checkbox.addEventListener("change", (e) => { - if(this.table.modules.selectRow.selectedRows.length){ - this.table.deselectRow(); - }else { - this.table.selectRow(formatterParams.rowRange); - } - }); - - this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox); - } - } - - return checkbox; - } - - var defaultFormatters = { - plaintext:plaintext, - html:html$1, - textarea:textarea$1, - money:money, - link:link, - image:image, - tickCross:tickCross$1, - datetime:datetime$1, - datetimediff:datetimediff, - lookup:lookup, - star:star$1, - traffic:traffic, - progress:progress$1, - color:color, - buttonTick:buttonTick, - buttonCross:buttonCross, - rownum:rownum, - handle:handle, - responsiveCollapse:responsiveCollapse, - rowSelection:rowSelection, - }; - - class Format extends Module{ - - constructor(table){ - super(table); - - this.registerColumnOption("formatter"); - this.registerColumnOption("formatterParams"); - - this.registerColumnOption("formatterPrint"); - this.registerColumnOption("formatterPrintParams"); - this.registerColumnOption("formatterClipboard"); - this.registerColumnOption("formatterClipboardParams"); - this.registerColumnOption("formatterHtmlOutput"); - this.registerColumnOption("formatterHtmlOutputParams"); - this.registerColumnOption("titleFormatter"); - this.registerColumnOption("titleFormatterParams"); - } - - initialize(){ - this.subscribe("cell-format", this.formatValue.bind(this)); - this.subscribe("cell-rendered", this.cellRendered.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-format", this.formatHeader.bind(this)); - } - - //initialize column formatter - initializeColumn(column){ - column.modules.format = this.lookupFormatter(column, ""); - - if(typeof column.definition.formatterPrint !== "undefined"){ - column.modules.format.print = this.lookupFormatter(column, "Print"); - } - - if(typeof column.definition.formatterClipboard !== "undefined"){ - column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard"); - } - - if(typeof column.definition.formatterHtmlOutput !== "undefined"){ - column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput"); - } - } - - lookupFormatter(column, type){ - var config = {params:column.definition["formatter" + type + "Params"] || {}}, - formatter = column.definition["formatter" + type]; - - //set column formatter - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - config.formatter = Format.formatters[formatter]; - }else { - console.warn("Formatter Error - No such formatter found: ", formatter); - config.formatter = Format.formatters.plaintext; - } - break; - - case "function": - config.formatter = formatter; - break; - - default: - config.formatter = Format.formatters.plaintext; - break; - } - - return config; - } - - cellRendered(cell){ - if(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){ - cell.modules.format.renderedCallback(); - cell.modules.format.rendered = true; - } - } - - //return a formatted value for a column header - formatHeader(column, title, el){ - var formatter, params, onRendered, mockCell; - - if(column.definition.titleFormatter){ - formatter = this.getFormatter(column.definition.titleFormatter); - - onRendered = (callback) => { - column.titleFormatterRendered = callback; - }; - - mockCell = { - getValue:function(){ - return title; - }, - getElement:function(){ - return el; - }, - getType:function(){ - return "header"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - } - }; - - params = column.definition.titleFormatterParams || {}; - - params = typeof params === "function" ? params() : params; - - return formatter.call(this, mockCell, params, onRendered); - }else { - return title; - } - } - - - //return a formatted value for a cell - formatValue(cell){ - var component = cell.getComponent(), - params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return cell.column.modules.format.formatter.call(this, component, params, onRendered); - } - - formatExportValue(cell, type){ - var formatter = cell.column.modules.format[type], - params; - - if(formatter){ - params = typeof formatter.params === "function" ? formatter.params(cell.getComponent()) : formatter.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return formatter.formatter.call(this, cell.getComponent(), params, onRendered); - - }else { - return this.formatValue(cell); - } - } - - sanitizeHTML(value){ - if(value){ - var entityMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/', - '`': '`', - '=': '=' - }; - - return String(value).replace(/[&<>"'`=/]/g, function (s) { - return entityMap[s]; - }); - }else { - return value; - } - } - - emptyToSpace(value){ - return value === null || typeof value === "undefined" || value === "" ? " " : value; - } - - //get formatter for cell - getFormatter(formatter){ - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - formatter = Format.formatters[formatter]; - }else { - console.warn("Formatter Error - No such formatter found: ", formatter); - formatter = Format.formatters.plaintext; - } - break; - - case "function": - //Custom formatter Function, do nothing - break; - - default: - formatter = Format.formatters.plaintext; - break; - } - - return formatter; - } - } - - Format.moduleName = "format"; - - //load defaults - Format.formatters = defaultFormatters; - - class FrozenColumns extends Module{ - - constructor(table){ - super(table); - - this.leftColumns = []; - this.rightColumns = []; - this.initializationMode = "left"; - this.active = false; - this.blocked = true; - - this.registerColumnOption("frozen"); - } - - //reset initial state - reset(){ - this.initializationMode = "left"; - this.leftColumns = []; - this.rightColumns = []; - this.active = false; - } - - initialize(){ - this.subscribe("cell-layout", this.layoutCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-width", this.layout.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("table-layout", this.layout.bind(this)); - this.subscribe("columns-loading", this.reset.bind(this)); - - this.subscribe("column-add", this.reinitializeColumns.bind(this)); - this.subscribe("column-deleted", this.reinitializeColumns.bind(this)); - this.subscribe("column-hide", this.reinitializeColumns.bind(this)); - this.subscribe("column-show", this.reinitializeColumns.bind(this)); - this.subscribe("columns-loaded", this.reinitializeColumns.bind(this)); - - this.subscribe("table-redraw", this.layout.bind(this)); - this.subscribe("layout-refreshing", this.blockLayout.bind(this)); - this.subscribe("layout-refreshed", this.unblockLayout.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - } - - blockLayout(){ - this.blocked = true; - } - - unblockLayout(){ - this.blocked = false; - } - - layoutCell(cell){ - this.layoutElement(cell.element, cell.column); - } - - reinitializeColumns(){ - this.reset(); - - this.table.columnManager.columnsByIndex.forEach((column) => { - this.initializeColumn(column); - }); - - this.layout(); - } - - //initialize specific column - initializeColumn(column){ - var config = {margin:0, edge:false}; - - if(!column.isGroup){ - if(this.frozenCheck(column)){ - config.position = this.initializationMode; - - if(this.initializationMode == "left"){ - this.leftColumns.push(column); - }else { - this.rightColumns.unshift(column); - } - - this.active = true; - - column.modules.frozen = config; - }else { - this.initializationMode = "right"; - } - } - } - - frozenCheck(column){ - if(column.parent.isGroup && column.definition.frozen){ - console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"); - } - - if(column.parent.isGroup){ - return this.frozenCheck(column.parent); - }else { - return column.definition.frozen; - } - } - - //layout calculation rows - layoutCalcRows(){ - if(this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){ - this.layoutRow(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){ - this.layoutRow(this.table.modules.columnCalcs.botRow); - } - - if(this.table.modExists("groupRows")){ - this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()); - } - } - } - - layoutGroupCalcs(groups){ - groups.forEach((group) => { - if(group.calcs.top){ - this.layoutRow(group.calcs.top); - } - - if(group.calcs.bottom){ - this.layoutRow(group.calcs.bottom); - } - - if(group.groupList && group.groupList.length){ - this.layoutGroupCalcs(group.groupList); - } - }); - } - - //calculate column positions and layout headers - layoutColumnPosition(allCells){ - var leftParents = []; - - var leftMargin = 0; - var rightMargin = 0; - - this.leftColumns.forEach((column, i) => { - column.modules.frozen.marginValue = leftMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - leftMargin += column.getWidth(); - } - - if(i == this.leftColumns.length - 1){ - column.modules.frozen.edge = true; - }else { - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - var parentEl = this.getColGroupParentElement(column); - if(!leftParents.includes(parentEl)){ - this.layoutElement(parentEl, column); - leftParents.push(parentEl); - } - - parentEl.classList.toggle("tabulator-frozen-left", column.modules.frozen.edge && column.modules.frozen.position === "left"); - parentEl.classList.toggle("tabulator-frozen-right", column.modules.frozen.edge && column.modules.frozen.position === "right"); - }else { - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - - this.rightColumns.forEach((column, i) => { - - column.modules.frozen.marginValue = rightMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - rightMargin += column.getWidth(); - } - - if(i == this.rightColumns.length - 1){ - column.modules.frozen.edge = true; - }else { - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - this.layoutElement(this.getColGroupParentElement(column), column); - }else { - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - } - - getColGroupParentElement(column){ - return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement(); - } - - //layout columns appropriately - layout(){ - if(this.active && !this.blocked){ - //calculate left columns - this.layoutColumnPosition(); - - this.reinitializeRows(); - - this.layoutCalcRows(); - } - } - - reinitializeRows(){ - var visibleRows = this.table.rowManager.getVisibleRows(true); - var otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - - visibleRows.forEach((row) =>{ - if(row.type === "row"){ - this.layoutRow(row); - } - }); - } - - layoutRow(row){ - if(this.table.options.layout === "fitDataFill" && this.rightColumns.length){ - this.table.rowManager.getTableElement().style.minWidth = "calc(100% - " + this.rightMargin + ")"; - } - - this.leftColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - - this.rightColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - } - - layoutElement(element, column){ - var position; - - if(column.modules.frozen && element){ - element.style.position = "sticky"; - - if(this.table.rtl){ - position = column.modules.frozen.position === "left" ? "right" : "left"; - }else { - position = column.modules.frozen.position; - } - - element.style[position] = column.modules.frozen.margin; - - element.classList.add("tabulator-frozen"); - - element.classList.toggle("tabulator-frozen-left", column.modules.frozen.edge && column.modules.frozen.position === "left"); - element.classList.toggle("tabulator-frozen-right", column.modules.frozen.edge && column.modules.frozen.position === "right"); - } - } - - adjustForScrollbar(width){ - if(this.rightColumns.length){ - this.table.columnManager.getContentsElement().style.width = "calc(100% - " + width + "px)"; - } - } - - _calcSpace(columns, index){ - var width = 0; - - for (let i = 0; i < index; i++){ - if(columns[i].visible){ - width += columns[i].getWidth(); - } - } - - return width; - } - } - - FrozenColumns.moduleName = "frozenColumns"; - - class FrozenRows extends Module{ - - constructor(table){ - super(table); - - this.topElement = document.createElement("div"); - this.rows = []; - - //register component functions - this.registerComponentFunction("row", "freeze", this.freezeRow.bind(this)); - this.registerComponentFunction("row", "unfreeze", this.unfreezeRow.bind(this)); - this.registerComponentFunction("row", "isFrozen", this.isRowFrozen.bind(this)); - - //register table options - this.registerTableOption("frozenRowsField", "id"); //field to choose frozen rows by - this.registerTableOption("frozenRows", false); //holder for frozen row identifiers - } - - initialize(){ - var fragment = document.createDocumentFragment(); - - this.rows = []; - - this.topElement.classList.add("tabulator-frozen-rows-holder"); - - fragment.appendChild(document.createElement("br")); - fragment.appendChild(this.topElement); - - // this.table.columnManager.element.append(this.topElement); - this.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling); - - this.subscribe("row-deleting", this.detachRow.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 10); - - if(this.table.options.frozenRows){ - this.subscribe("data-processed", this.initializeRows.bind(this)); - this.subscribe("row-added", this.initializeRow.bind(this)); - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - } - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - initializeRows(){ - this.table.rowManager.getRows().forEach((row) => { - this.initializeRow(row); - }); - } - - initializeRow(row){ - var frozenRows = this.table.options.frozenRows, - rowType = typeof frozenRows; - - if(rowType === "number"){ - if(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){ - this.freezeRow(row); - } - }else if(rowType === "function"){ - if(frozenRows.call(this.table, row.getComponent())){ - this.freezeRow(row); - } - }else if(Array.isArray(frozenRows)){ - if(frozenRows.includes(row.data[this.options("frozenRowsField")])){ - this.freezeRow(row); - } - } - } - - isRowFrozen(row){ - var index = this.rows.indexOf(row); - return index > -1; - } - - isFrozen(){ - return !!this.rows.length; - } - - visibleRows(viewable, rows){ - this.rows.forEach((row) => { - rows.push(row); - }); - - return rows; - } - - //filter frozen rows out of display data - getRows(rows){ - var output = rows.slice(0); - - this.rows.forEach(function(row){ - var index = output.indexOf(row); - - if(index > -1){ - output.splice(index, 1); - } - }); - - return output; - } - - freezeRow(row){ - if(!row.modules.frozen){ - row.modules.frozen = true; - this.topElement.appendChild(row.getElement()); - row.initialize(); - row.normalizeHeight(); - - this.rows.push(row); - - this.refreshData(false, "display"); - - this.table.rowManager.adjustTableSize(); - - this.styleRows(); - - }else { - console.warn("Freeze Error - Row is already frozen"); - } - } - - unfreezeRow(row){ - if(row.modules.frozen){ - - row.modules.frozen = false; - - this.detachRow(row); - - this.table.rowManager.adjustTableSize(); - - this.refreshData(false, "display"); - - if(this.rows.length){ - this.styleRows(); - } - - }else { - console.warn("Freeze Error - Row is already unfrozen"); - } - } - - detachRow(row){ - var index = this.rows.indexOf(row); - - if(index > -1){ - var rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - - this.rows.splice(index, 1); - } - } - - styleRows(row){ - this.rows.forEach((row, i) => { - this.table.rowManager.styleRow(row, i); - }); - } - } - - FrozenRows.moduleName = "frozenRows"; - - //public group object - class GroupComponent { - constructor (group){ - this._group = group; - this.type = "GroupComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._group.groupManager.table.componentFunctionBinder.handle("group", target._group, name); - } - } - }); - } - - getKey(){ - return this._group.key; - } - - getField(){ - return this._group.field; - } - - getElement(){ - return this._group.element; - } - - getRows(){ - return this._group.getRows(true); - } - - getSubGroups(){ - return this._group.getSubGroups(true); - } - - getParentGroup(){ - return this._group.parent ? this._group.parent.getComponent() : false; - } - - isVisible(){ - return this._group.visible; - } - - show(){ - this._group.show(); - } - - hide(){ - this._group.hide(); - } - - toggle(){ - this._group.toggleVisibility(); - } - - scrollTo(position, ifVisible){ - return this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible); - } - - _getSelf(){ - return this._group; - } - - getTable(){ - return this._group.groupManager.table; - } - } - - //Group functions - class Group{ - - constructor(groupManager, parent, level, key, field, generator, oldGroup){ - this.groupManager = groupManager; - this.parent = parent; - this.key = key; - this.level = level; - this.field = field; - this.hasSubGroups = level < (groupManager.groupIDLookups.length - 1); - this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow; - this.type = "group"; //type of element - this.old = oldGroup; - this.rows = []; - this.groups = []; - this.groupList = []; - this.generator = generator; - this.element = false; - this.elementContents = false; - this.height = 0; - this.outerHeight = 0; - this.initialized = false; - this.calcs = {}; - this.initialized = false; - this.modules = {}; - this.arrowElement = false; - - this.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0]); - - this.component = null; - - this.createElements(); - this.addBindings(); - - this.createValueGroups(); - } - - wipe(elementsOnly){ - if(!elementsOnly){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - }else { - this.rows.forEach((row) => { - if(row.modules){ - delete row.modules.group; - } - }); - } - } - - this.element = false; - this.arrowElement = false; - this.elementContents = false; - } - - createElements(){ - var arrow = document.createElement("div"); - arrow.classList.add("tabulator-arrow"); - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-row"); - this.element.classList.add("tabulator-group"); - this.element.classList.add("tabulator-group-level-" + this.level); - this.element.setAttribute("role", "rowgroup"); - - this.arrowElement = document.createElement("div"); - this.arrowElement.classList.add("tabulator-group-toggle"); - this.arrowElement.appendChild(arrow); - - //setup movable rows - if(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")){ - this.groupManager.table.modules.moveRow.initializeGroupHeader(this); - } - } - - createValueGroups(){ - var level = this.level + 1; - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - this.groupManager.allowedValues[level].forEach((value) => { - this._createGroup(value, level); - }); - } - } - - addBindings(){ - var toggleElement; - - if(this.groupManager.table.options.groupToggleElement){ - toggleElement = this.groupManager.table.options.groupToggleElement == "arrow" ? this.arrowElement : this.element; - - toggleElement.addEventListener("click", (e) => { - if(this.groupManager.table.options.groupToggleElement === "arrow"){ - e.stopPropagation(); - e.stopImmediatePropagation(); - } - - //allow click event to propagate before toggling visibility - setTimeout(() => { - this.toggleVisibility(); - }); - }); - } - } - - _createGroup(groupID, level){ - var groupKey = level + "_" + groupID; - var 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); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - _addRowToGroup(row){ - - var level = this.level + 1; - - if(this.hasSubGroups){ - var groupID = this.groupManager.groupIDLookups[level].func(row.getData()), - groupKey = level + "_" + groupID; - - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - }else { - if(!this.groups[groupKey]){ - this._createGroup(groupID, level); - } - - this.groups[groupKey].addRow(row); - } - } - } - - _addRow(row){ - this.rows.push(row); - row.modules.group = this; - } - - insertRow(row, to, after){ - var data = this.conformRowData({}); - - row.updateData(data); - - var toIndex = this.rows.indexOf(to); - - if(toIndex > -1){ - if(after){ - this.rows.splice(toIndex+1, 0, row); - }else { - this.rows.splice(toIndex, 0, row); - } - }else { - if(after){ - this.rows.push(row); - }else { - this.rows.unshift(row); - } - } - - row.modules.group = this; - - // this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - - this.groupManager.updateGroupRows(true); - } - - scrollHeader(left){ - if(this.arrowElement){ - this.arrowElement.style.marginLeft = left; - - this.groupList.forEach(function(child){ - child.scrollHeader(left); - }); - } - } - - getRowIndex(row){} - - //update row data to match grouping constraints - conformRowData(data){ - if(this.field){ - data[this.field] = this.key; - }else { - console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"); - } - - if(this.parent){ - data = this.parent.conformRowData(data); - } - - return data; - } - - removeRow(row){ - var index = this.rows.indexOf(row); - var el = row.getElement(); - - if(index > -1){ - this.rows.splice(index, 1); - } - - if(!this.groupManager.table.options.groupValues && !this.rows.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else { - this.groupManager.removeGroup(this); - } - - this.groupManager.updateGroupRows(true); - - }else { - - if(el.parentNode){ - el.parentNode.removeChild(el); - } - - if(!this.groupManager.blockRedraw){ - this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - } - - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - - if(!this.groupList.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else { - this.groupManager.removeGroup(this); - } - } - } - } - - getHeadersAndRows(){ - var output = []; - - output.push(this); - - this._visSet(); - - - if(this.calcs.top){ - this.calcs.top.detachElement(); - this.calcs.top.deleteCells(); - } - - if(this.calcs.bottom){ - this.calcs.bottom.detachElement(); - this.calcs.bottom.deleteCells(); - } - - - - if(this.visible){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - output = output.concat(group.getHeadersAndRows()); - }); - - }else { - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - - output = output.concat(this.rows); - - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - }else { - if(!this.groupList.length && this.groupManager.table.options.columnCalcs != "table"){ - - if(this.groupManager.table.modExists("columnCalcs")){ - if(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - } - - if(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - } - } - - } - - return output; - } - - getData(visible, transform){ - var output = []; - - this._visSet(); - - if(!visible || (visible && this.visible)){ - this.rows.forEach((row) => { - output.push(row.getData(transform || "data")); - }); - } - - return output; - } - - getRowCount(){ - var count = 0; - - if(this.groupList.length){ - this.groupList.forEach((group) => { - count += group.getRowCount(); - }); - }else { - count = this.rows.length; - } - return count; - } - - - toggleVisibility(){ - if(this.visible){ - this.hide(); - }else { - this.show(); - } - } - - hide(){ - this.visible = false; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.remove("tabulator-group-visible"); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - row.detachElement(); - }); - }); - - }else { - this.rows.forEach((row) => { - var rowEl = row.getElement(); - rowEl.parentNode.removeChild(rowEl); - }); - } - - this.groupManager.updateGroupRows(true); - - }else { - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), false); - } - - show(){ - this.visible = true; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.add("tabulator-group-visible"); - - var prev = this.generateElement(); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - }); - - }else { - this.rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - } - - this.groupManager.updateGroupRows(true); - }else { - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), true); - } - - _visSet(){ - var data = []; - - if(typeof this.visible == "function"){ - - this.rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent()); - } - } - - getRowGroup(row){ - var match = false; - if(this.groupList.length){ - this.groupList.forEach(function(group){ - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - }else { - if(this.rows.find(function(item){ - return item === row; - })){ - match = this; - } - } - - return match; - } - - getSubGroups(component){ - var output = []; - - this.groupList.forEach(function(child){ - output.push(component ? child.getComponent() : child); - }); - - return output; - } - - getRows(component, includeChildren){ - var output = []; - - if(includeChildren && this.groupList.length){ - this.groupList.forEach((group) => { - output = output.concat(group.getRows(component, includeChildren)); - }); - }else { - this.rows.forEach(function(row){ - output.push(component ? row.getComponent() : row); - }); - } - - return output; - } - - generateGroupHeaderContents(){ - var data = []; - - var rows = this.getRows(false, true); - - rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent()); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(typeof this.elementContents === "string"){ - this.element.innerHTML = this.elementContents; - }else { - this.element.appendChild(this.elementContents); - } - - this.element.insertBefore(this.arrowElement, this.element.firstChild); - } - - getPath(path = []) { - path.unshift(this.key); - if(this.parent) { - this.parent.getPath(path); - } - return path; - } - - ////////////// Standard Row Functions ////////////// - - getElement(){ - return this.elementContents ? this.element : this.generateElement(); - } - - generateElement(){ - this.addBindings = false; - - this._visSet(); - - if(this.visible){ - this.element.classList.add("tabulator-group-visible"); - }else { - this.element.classList.remove("tabulator-group-visible"); - } - - for(var i = 0; i < this.element.childNodes.length; ++i){ - this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]); - } - - this.generateGroupHeaderContents(); - - // this.addBindings(); - - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - //normalize the height of elements in the row - normalizeHeight(){ - this.setHeight(this.element.clientHeight); - } - - initialize(force){ - if(!this.initialized || force){ - this.normalizeHeight(); - this.initialized = true; - } - } - - reinitialize(){ - this.initialized = false; - this.height = 0; - - if(Helpers.elVisible(this.element)){ - this.initialize(true); - } - } - - setHeight(height){ - if(this.height != height){ - this.height = height; - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - getGroup(){ - return this; - } - - reinitializeHeight(){} - - calcHeight(){} - - setCellHeight(){} - - clearCellHeight(){} - - deinitializeHeight(){} - - rendered(){} - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new GroupComponent(this); - } - - return this.component; - } - } - - class GroupRows extends Module{ - - constructor(table){ - super(table); - - this.groupIDLookups = false; //enable table grouping and set field to group by - this.startOpen = [function(){return false;}]; //starting state of group - this.headerGenerator = [function(){return "";}]; - this.groupList = []; //ordered list of groups - this.allowedValues = false; - this.groups = {}; //hold row groups - - this.displayHandler = this.getRows.bind(this); - - this.blockRedraw = false; - - //register table options - this.registerTableOption("groupBy", false); //enable table grouping and set field to group by - this.registerTableOption("groupStartOpen", true); //starting state of group - this.registerTableOption("groupValues", false); - this.registerTableOption("groupUpdateOnCellEdit", false); - this.registerTableOption("groupHeader", false); //header generation function - this.registerTableOption("groupHeaderPrint", null); - this.registerTableOption("groupHeaderClipboard", null); - this.registerTableOption("groupHeaderHtmlOutput", null); - this.registerTableOption("groupHeaderDownload", null); - this.registerTableOption("groupToggleElement", "arrow"); - this.registerTableOption("groupClosedShowCalcs", false); - - //register table functions - this.registerTableFunction("setGroupBy", this.setGroupBy.bind(this)); - this.registerTableFunction("setGroupValues", this.setGroupValues.bind(this)); - this.registerTableFunction("setGroupStartOpen", this.setGroupStartOpen.bind(this)); - this.registerTableFunction("setGroupHeader", this.setGroupHeader.bind(this)); - this.registerTableFunction("getGroups", this.userGetGroups.bind(this)); - this.registerTableFunction("getGroupedData", this.userGetGroupedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "getGroup", this.rowGetGroup.bind(this)); - } - - //initialize group configuration - initialize(){ - this.subscribe("table-destroy", this._blockRedrawing.bind(this)); - this.subscribe("rows-wipe", this._blockRedrawing.bind(this)); - this.subscribe("rows-wiped", this._restore_redrawing.bind(this)); - - if(this.table.options.groupBy){ - if(this.table.options.groupUpdateOnCellEdit){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0); - } - - this.subscribe("table-built", this.configureGroupSetup.bind(this)); - - this.subscribe("row-deleting", this.rowDeleting.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this)); - this.subscribe("rows-wipe", this.wipe.bind(this)); - this.subscribe("rows-added", this.rowsUpdated.bind(this)); - this.subscribe("row-moving", this.rowMoving.bind(this)); - this.subscribe("row-adding-index", this.rowAddingIndex.bind(this)); - - this.subscribe("rows-sample", this.rowSample.bind(this)); - - this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this)); - - this.registerDisplayHandler(this.displayHandler, 20); - - this.initialized = true; - } - } - - _blockRedrawing(){ - this.blockRedraw = true; - } - - _restore_redrawing(){ - this.blockRedraw = false; - } - - configureGroupSetup(){ - if(this.table.options.groupBy){ - var groupBy = this.table.options.groupBy, - startOpen = this.table.options.groupStartOpen, - groupHeader = this.table.options.groupHeader; - - this.allowedValues = this.table.options.groupValues; - - if(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){ - console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"); - } - - this.headerGenerator = [function(){return "";}]; - this.startOpen = [function(){return false;}]; //starting state of group - - this.langBind("groups|item", (langValue, lang) => { - this.headerGenerator[0] = (value, count, data) => { //header layout function - return (typeof value === "undefined" ? "" : value) + "(" + count + " " + ((count === 1) ? langValue : lang.groups.items) + ")"; - }; - }); - - this.groupIDLookups = []; - - if(groupBy){ - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both"){ - this.table.modules.columnCalcs.removeCalcs(); - } - }else { - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group"){ - - var cols = this.table.columnManager.getRealColumns(); - - cols.forEach((col) => { - if(col.definition.topCalc){ - this.table.modules.columnCalcs.initializeTopRow(); - } - - if(col.definition.bottomCalc){ - this.table.modules.columnCalcs.initializeBottomRow(); - } - }); - } - } - - if(!Array.isArray(groupBy)){ - groupBy = [groupBy]; - } - - groupBy.forEach((group, i) => { - var lookupFunc, column; - - if(typeof group == "function"){ - lookupFunc = group; - }else { - column = this.table.columnManager.getColumnByField(group); - - if(column){ - lookupFunc = function(data){ - return column.getFieldValue(data); - }; - }else { - lookupFunc = function(data){ - return data[group]; - }; - } - } - - this.groupIDLookups.push({ - field: typeof group === "function" ? false : group, - func:lookupFunc, - values:this.allowedValues ? this.allowedValues[i] : false, - }); - }); - - if(startOpen){ - if(!Array.isArray(startOpen)){ - startOpen = [startOpen]; - } - - startOpen.forEach((level) => { - }); - - this.startOpen = startOpen; - } - - if(groupHeader){ - this.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader]; - } - }else { - this.groupList = []; - this.groups = {}; - } - } - - rowSample(rows, prevValue){ - if(this.table.options.groupBy){ - var group = this.getGroups(false)[0]; - - prevValue.push(group.getRows(false)[0]); - } - - return prevValue; - } - - virtualRenderFill(){ - var el = this.table.rowManager.tableElement; - var rows = this.table.rowManager.getVisibleRows(); - - if(this.table.options.groupBy){ - rows = rows.filter((row) => { - return row.type !== "group"; - }); - - el.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + "px" : ""; - }else { - return rows; - } - } - - rowAddingIndex(row, index, top){ - if(this.table.options.groupBy){ - this.assignRowToGroup(row); - - var groupRows = row.modules.group.rows; - - if(groupRows.length > 1){ - if(!index || (index && groupRows.indexOf(index) == -1)){ - if(top){ - if(groupRows[0] !== row){ - index = groupRows[0]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - }else { - if(groupRows[groupRows.length -1] !== row){ - index = groupRows[groupRows.length -1]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - }else { - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - - return index; - } - } - - trackChanges(){ - this.dispatch("group-changed"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - setGroupBy(groups){ - this.table.options.groupBy = groups; - - if(!this.initialized){ - this.initialize(); - } - - this.configureGroupSetup(); - - if(!groups && this.table.modExists("columnCalcs") && this.table.options.columnCalcs === true){ - this.table.modules.columnCalcs.reinitializeCalcs(); - } - - this.refreshData(); - - this.trackChanges(); - } - - setGroupValues(groupValues){ - this.table.options.groupValues = groupValues; - this.configureGroupSetup(); - this.refreshData(); - - this.trackChanges(); - } - - setGroupStartOpen(values){ - this.table.options.groupStartOpen = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else { - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - setGroupHeader(values){ - this.table.options.groupHeader = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else { - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - userGetGroups(values){ - return this.getGroups(true); - } - - // get grouped table data in the same format as getData() - userGetGroupedData(){ - return this.table.options.groupBy ? this.getGroupedData() : this.getData(); - } - - - /////////////////////////////////////// - ///////// Component Functions ///////// - /////////////////////////////////////// - - rowGetGroup(row){ - return row.modules.group ? row.modules.group.getComponent() : false; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - rowMoving(from, to, after){ - if(this.table.options.groupBy){ - if(!after && to instanceof Group){ - to = this.table.rowManager.prevDisplayRow(from) || to; - } - - var toGroup = to instanceof Group ? to : to.modules.group; - var fromGroup = from instanceof Group ? from : from.modules.group; - - if(toGroup === fromGroup){ - this.table.rowManager.moveRowInArray(toGroup.rows, from, to, after); - }else { - if(fromGroup){ - fromGroup.removeRow(from); - } - - toGroup.insertRow(from, to, after); - } - } - } - - - rowDeleting(row){ - //remove from group - if(this.table.options.groupBy && row.modules.group){ - row.modules.group.removeRow(row); - } - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.updateGroupRows(true); - } - } - - cellUpdated(cell){ - if(this.table.options.groupBy){ - this.reassignRowToGroup(cell.row); - } - } - - //return appropriate rows with group headers - getRows(rows){ - if(this.table.options.groupBy && this.groupIDLookups.length){ - - this.dispatchExternal("dataGrouping"); - - this.generateGroups(rows); - - if(this.subscribedExternal("dataGrouped")){ - this.dispatchExternal("dataGrouped", this.getGroups(true)); - } - - return this.updateGroupRows(); - - }else { - return rows.slice(0); - } - } - - getGroups(component){ - var groupComponents = []; - - this.groupList.forEach(function(group){ - groupComponents.push(component ? group.getComponent() : group); - }); - - return groupComponents; - } - - getChildGroups(group){ - var groupComponents = []; - - if(!group){ - group = this; - } - - group.groupList.forEach((child) => { - if(child.groupList.length){ - groupComponents = groupComponents.concat(this.getChildGroups(child)); - }else { - groupComponents.push(child); - } - }); - - return groupComponents; - } - - wipe(){ - if(this.table.options.groupBy){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - - this.groupList = []; - this.groups = {}; - } - } - - pullGroupListData(groupList) { - var groupListData = []; - - groupList.forEach((group) => { - var groupHeader = {}; - groupHeader.level = 0; - groupHeader.rowCount = 0; - groupHeader.headerContent = ""; - var childData = []; - - if (group.hasSubGroups) { - childData = this.pullGroupListData(group.groupList); - - groupHeader.level = group.level; - groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers - groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group); - - groupListData.push(groupHeader); - groupListData = groupListData.concat(childData); - } - - else { - groupHeader.level = group.level; - groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group); - groupHeader.rowCount = group.getRows().length; - - groupListData.push(groupHeader); - - group.getRows().forEach((row) => { - groupListData.push(row.getData("data")); - }); - } - }); - - return groupListData; - } - - getGroupedData(){ - - return this.pullGroupListData(this.groupList); - } - - getRowGroup(row){ - var match = false; - - if(this.options("dataTree")){ - row = this.table.modules.dataTree.getTreeParentRoot(row); - } - - this.groupList.forEach((group) => { - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - - return match; - } - - countGroups(){ - return this.groupList.length; - } - - generateGroups(rows){ - var oldGroups = this.groups; - - this.groups = {}; - this.groupList = []; - - if(this.allowedValues && this.allowedValues[0]){ - this.allowedValues[0].forEach((value) => { - this.createGroup(value, 0, oldGroups); - }); - - rows.forEach((row) => { - this.assignRowToExistingGroup(row, oldGroups); - }); - }else { - rows.forEach((row) => { - this.assignRowToGroup(row, oldGroups); - }); - } - - Object.values(oldGroups).forEach((group) => { - group.wipe(true); - }); - } - - - createGroup(groupID, level, oldGroups){ - var groupKey = level + "_" + groupID, - group; - - oldGroups = oldGroups || []; - - group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - assignRowToExistingGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - groupKey = "0_" + groupID; - - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - } - - assignRowToGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - newGroupNeeded = !this.groups["0_" + groupID]; - - if(newGroupNeeded){ - this.createGroup(groupID, 0, oldGroups); - } - - this.groups["0_" + groupID].addRow(row); - - return !newGroupNeeded; - } - - reassignRowToGroup(row){ - if(row.type === "row"){ - var oldRowGroup = row.modules.group, - oldGroupPath = oldRowGroup.getPath(), - newGroupPath = this.getExpectedPath(row), - samePath; - - // figure out if new group path is the same as old group path - samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => { - return element === newGroupPath[index]; - }); - - // refresh if they new path and old path aren't the same (aka the row's groupings have changed) - if(!samePath) { - oldRowGroup.removeRow(row); - this.assignRowToGroup(row, this.groups); - this.refreshData(true); - } - } - } - - getExpectedPath(row) { - var groupPath = [], rowData = row.getData(); - - this.groupIDLookups.forEach((groupId) => { - groupPath.push(groupId.func(rowData)); - }); - - return groupPath; - } - - updateGroupRows(force){ - var output = []; - - if(!this.blockRedraw){ - this.groupList.forEach((group) => { - output = output.concat(group.getHeadersAndRows()); - }); - - if(force){ - this.refreshData(true); - } - } - - return output; - } - - scrollHeaders(left){ - if(this.table.options.groupBy){ - if(this.table.options.renderHorizontal === "virtual"){ - left -= this.table.columnManager.renderer.vDomPadLeft; - } - - left = left + "px"; - - this.groupList.forEach((group) => { - group.scrollHeader(left); - }); - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - } - } - - checkBasicModeGroupHeaderWidth(){ - var element = this.table.rowManager.tableElement, - onlyGroupHeaders = true; - - this.table.rowManager.getDisplayRows().forEach((row, index) =>{ - this.table.rowManager.styleRow(row, index); - element.appendChild(row.getElement()); - row.initialize(true); - - if(row.type !== "group"){ - onlyGroupHeaders = false; - } - }); - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else { - element.style.minWidth = ""; - } - } - - } - - GroupRows.moduleName = "groupRows"; - - var defaultUndoers = { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.oldValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - action.component.deleteActual(); - - this.table.rowManager.checkPlaceholder(); - }, - - rowDelete: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - - this.table.rowManager.checkPlaceholder(); - }, - - rowMove: function(action){ - var after = (action.data.posFrom - action.data.posTo) > 0; - - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, - }; - - var defaultRedoers = { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.newValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - - this.table.rowManager.checkPlaceholder(); - }, - - rowDelete:function(action){ - action.component.deleteActual(); - - this.table.rowManager.checkPlaceholder(); - }, - - rowMove: function(action){ - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, - }; - - class History extends Module{ - - constructor(table){ - super(table); - - this.history = []; - this.index = -1; - - this.registerTableOption("history", false); //enable edit history - } - - initialize(){ - if(this.table.options.history){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("cell-delete", this.clearComponentHistory.bind(this)); - this.subscribe("row-delete", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clear.bind(this)); - this.subscribe("row-added", this.rowAdded.bind(this)); - this.subscribe("row-move", this.rowMoved.bind(this)); - } - - this.registerTableFunction("undo", this.undo.bind(this)); - this.registerTableFunction("redo", this.redo.bind(this)); - this.registerTableFunction("getHistoryUndoSize", this.getHistoryUndoSize.bind(this)); - this.registerTableFunction("getHistoryRedoSize", this.getHistoryRedoSize.bind(this)); - this.registerTableFunction("clearHistory", this.clear.bind(this)); - } - - rowMoved(from, to, after){ - this.action("rowMove", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after}); - } - - rowAdded(row, data, pos, index){ - this.action("rowAdd", row, {data:data, pos:pos, index:index}); - } - - rowDeleted(row){ - var index, rows; - - if(this.table.options.groupBy){ - - rows = row.getComponent().getGroup()._getSelf().rows; - index = rows.indexOf(row); - - if(index){ - index = rows[index-1]; - } - }else { - index = row.table.rowManager.getRowIndex(row); - - if(index){ - index = row.table.rowManager.rows[index-1]; - } - } - - this.action("rowDelete", row, {data:row.getData(), pos:!index, index:index}); - } - - cellUpdated(cell){ - this.action("cellEdit", cell, {oldValue:cell.oldValue, newValue:cell.value}); - } - - clear(){ - this.history = []; - this.index = -1; - } - - action(type, component, data){ - this.history = this.history.slice(0, this.index + 1); - - this.history.push({ - type:type, - component:component, - data:data, - }); - - this.index ++; - } - - getHistoryUndoSize(){ - return this.index + 1; - } - - getHistoryRedoSize(){ - return this.history.length - (this.index + 1); - } - - clearComponentHistory(component){ - var index = this.history.findIndex(function(item){ - return item.component === component; - }); - - if(index > -1){ - this.history.splice(index, 1); - if(index <= this.index){ - this.index--; - } - - this.clearComponentHistory(component); - } - } - - undo(){ - if(this.index > -1){ - let action = this.history[this.index]; - - History.undoers[action.type].call(this, action); - - this.index--; - - this.dispatchExternal("historyUndo", action.type, action.component.getComponent(), action.data); - - return true; - }else { - console.warn(this.options("history") ? "History Undo Error - No more history to undo" : "History module not enabled"); - return false; - } - } - - redo(){ - if(this.history.length-1 > this.index){ - - this.index++; - - let action = this.history[this.index]; - - History.redoers[action.type].call(this, action); - - this.dispatchExternal("historyRedo", action.type, action.component.getComponent(), action.data); - - return true; - }else { - console.warn(this.options("history") ? "History Redo Error - No more history to redo" : "History module not enabled"); - return false; - } - } - - //rebind rows to new element after deletion - _rebindRow(oldRow, newRow){ - this.history.forEach(function(action){ - if(action.component instanceof Row){ - if(action.component === oldRow){ - action.component = newRow; - } - }else if(action.component instanceof Cell){ - if(action.component.row === oldRow){ - var field = action.component.column.getField(); - - if(field){ - action.component = newRow.getCell(field); - } - - } - } - }); - } - } - - History.moduleName = "history"; - - //load defaults - History.undoers = defaultUndoers; - History.redoers = defaultRedoers; - - class HtmlTableImport extends Module{ - - constructor(table){ - super(table); - - this.fieldIndex = []; - this.hasIndex = false; - } - - initialize(){ - this.tableElementCheck(); - } - - tableElementCheck(){ - if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){ - if(this.table.originalElement.childNodes.length){ - this.parseTable(); - }else { - console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."); - } - } - } - - parseTable(){ - var element = this.table.originalElement, - options = this.table.options, - headers = element.getElementsByTagName("th"), - rows = element.getElementsByTagName("tbody")[0], - data = []; - - this.hasIndex = false; - - this.dispatchExternal("htmlImporting"); - - rows = rows ? rows.getElementsByTagName("tr") : []; - - //check for Tabulator inline options - this._extractOptions(element, options); - - if(headers.length){ - this._extractHeaders(headers, rows); - }else { - this._generateBlankHeaders(headers, rows); - } - - //iterate through table rows and build data set - for(var index = 0; index < rows.length; index++){ - var row = rows[index], - cells = row.getElementsByTagName("td"), - item = {}; - - //create index if the don't exist in table - if(!this.hasIndex){ - item[options.index] = index; - } - - for(var i = 0; i < cells.length; i++){ - var cell = cells[i]; - if(typeof this.fieldIndex[i] !== "undefined"){ - item[this.fieldIndex[i]] = cell.innerHTML; - } - } - - //add row data to item - data.push(item); - } - - options.data = data; - - this.dispatchExternal("htmlImported"); - } - - //extract tabulator attribute options - _extractOptions(element, options, defaultOptions){ - var attributes = element.attributes; - var optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options); - var optionsList = {}; - - optionsArr.forEach((item) => { - optionsList[item.toLowerCase()] = item; - }); - - for(var index in attributes){ - var attrib = attributes[index]; - var name; - - if(attrib && typeof attrib == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0){ - name = attrib.name.replace("tabulator-", ""); - - if(typeof optionsList[name] !== "undefined"){ - options[optionsList[name]] = this._attribValue(attrib.value); - } - } - } - } - - //get value of attribute - _attribValue(value){ - if(value === "true"){ - return true; - } - - if(value === "false"){ - return false; - } - - return value; - } - - //find column if it has already been defined - _findCol(title){ - var match = this.table.options.columns.find((column) => { - return column.title === title; - }); - - return match || false; - } - - //extract column from headers - _extractHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - exists = false, - col = this._findCol(header.textContent), - width; - - if(col){ - exists = true; - }else { - col = {title:header.textContent.trim()}; - } - - if(!col.field) { - col.field = header.textContent.trim().toLowerCase().replaceAll(" ", "_"); - } - - width = header.getAttribute("width"); - - if(width && !col.width) { - col.width = width; - } - - //check for Tabulator inline options - this._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults); - - this.fieldIndex[index] = col.field; - - if(col.field == this.table.options.index){ - this.hasIndex = true; - } - - if(!exists){ - this.table.options.columns.push(col); - } - - } - } - - //generate blank headers - _generateBlankHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - col = {title:"", field:"col" + index}; - - this.fieldIndex[index] = col.field; - - var width = header.getAttribute("width"); - - if(width){ - col.width = width; - } - - this.table.options.columns.push(col); - } - } - } - - HtmlTableImport.moduleName = "htmlTableImport"; - - function csvImporter(input){ - var data = [], - row = 0, - col = 0, - inQuote = false; - - //Iterate over each character - for (let index = 0; index < input.length; index++) { - let char = input[index], - nextChar = input[index+1]; - - //Initialize empty row - if(!data[row]){ - data[row] = []; - } - - //Initialize empty column - if(!data[row][col]){ - data[row][col] = ""; - } - - //Handle quotation mark inside string - if (char == '"' && inQuote && nextChar == '"') { - data[row][col] += char; - index++; - continue; - } - - //Begin / End Quote - if (char == '"') { - inQuote = !inQuote; - continue; - } - - //Next column (if not in quote) - if (char == ',' && !inQuote) { - col++; - continue; - } - - //New row if new line and not in quote (CRLF) - if (char == '\r' && nextChar == '\n' && !inQuote) { - col = 0; - row++; - index++; - continue; - } - - //New row if new line and not in quote (CR or LF) - if ((char == '\r' || char == '\n') && !inQuote) { - col = 0; - row++; - continue; - } - - //Normal Character, append to column - data[row][col] += char; - } - - return data; - } - - function json$1(input){ - try { - return JSON.parse(input); - } catch(e) { - console.warn("JSON Import Error - File contents is invalid JSON", e); - return Promise.reject(); - } - } - - function arrayImporter(input){ - return input; - } - - var defaultImporters = { - csv:csvImporter, - json:json$1, - array:arrayImporter, - }; - - class Import extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("importFormat"); - this.registerTableOption("importReader", "text"); - } - - initialize(){ - this.registerTableFunction("import", this.importFromFile.bind(this)); - - if(this.table.options.importFormat){ - this.subscribe("data-loading", this.loadDataCheck.bind(this), 10); - this.subscribe("data-load", this.loadData.bind(this), 10); - } - } - - loadDataCheck(data){ - return this.table.options.importFormat && (typeof data === "string" || (Array.isArray(data) && data.length && Array.isArray(data))); - } - - loadData(data, params, config, silent, previousData){ - return this.importData(this.lookupImporter(), data) - .then(this.structureData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import data"); - return Promise.reject(err); - }); - } - - lookupImporter(importFormat){ - var importer; - - if(!importFormat){ - importFormat = this.table.options.importFormat; - } - - if(typeof importFormat === "string"){ - importer = Import.importers[importFormat]; - }else { - importer = importFormat; - } - - if(!importer){ - console.error("Import Error - Importer not found:", importFormat); - } - - return importer; - } - - importFromFile(importFormat, extension){ - var importer = this.lookupImporter(importFormat); - - if(importer){ - return this.pickFile(extension) - .then(this.importData.bind(this, importer)) - .then(this.structureData.bind(this)) - .then(this.setData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import file"); - return Promise.reject(err); - }); - } - } - - pickFile(extensions){ - return new Promise((resolve, reject) => { - var input = document.createElement("input"); - input.type = "file"; - input.accept = extensions; - - input.addEventListener("change", (e) => { - var file = input.files[0], - reader = new FileReader(); - - switch(this.table.options.importReader){ - case "buffer": - reader.readAsArrayBuffer(file); - break; - - case "binary": - reader.readAsBinaryString(file); - break; - - case "url": - reader.readAsDataURL(file); - break; - - case "text": - default: - reader.readAsText(file); - } - - reader.onload = (e) => { - resolve(reader.result); - }; - - reader.onerror = (e) => { - console.warn("File Load Error - Unable to read file"); - reject(); - }; - }); - - input.click(); - }); - } - - importData(importer, fileContents){ - var data = importer.call(this.table, fileContents); - - if(data instanceof Promise){ - return data; - }else { - return data ? Promise.resolve(data) : Promise.reject(); - } - } - - structureData(parsedData){ - var data = []; - - if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){ - if(this.table.options.autoColumns){ - data = this.structureArrayToObject(parsedData); - }else { - data = this.structureArrayToColumns(parsedData); - } - - return data; - }else { - return parsedData; - } - } - - structureArrayToObject(parsedData){ - var columns = parsedData.shift(); - - var data = parsedData.map((values) => { - var row = {}; - - columns.forEach((key, i) => { - row[key] = values[i]; - }); - - return row; - }); - - return data; - } - - structureArrayToColumns(parsedData){ - var data = [], - columns = this.table.getColumns(); - - //remove first row if it is the column names - if(columns[0] && parsedData[0][0]){ - if(columns[0].getDefinition().title === parsedData[0][0]){ - parsedData.shift(); - } - } - - //convert row arrays to objects - parsedData.forEach((rowData) => { - var row = {}; - - rowData.forEach((value, index) => { - var column = columns[index]; - - if(column){ - row[column.getField()] = value; - } - }); - - data.push(row); - }); - - return data; - } - - setData(data){ - return this.table.setData(data); - } - } - - Import.moduleName = "import"; - - //load defaults - Import.importers = defaultImporters; - - class Interaction extends Module{ - - constructor(table){ - super(table); - - this.eventMap = { - //row events - rowClick:"row-click", - rowDblClick:"row-dblclick", - rowContext:"row-contextmenu", - rowMouseEnter:"row-mouseenter", - rowMouseLeave:"row-mouseleave", - rowMouseOver:"row-mouseover", - rowMouseOut:"row-mouseout", - rowMouseMove:"row-mousemove", - rowMouseDown:"row-mousedown", - rowMouseUp:"row-mouseup", - rowTap:"row", - rowDblTap:"row", - rowTapHold:"row", - - //cell events - cellClick:"cell-click", - cellDblClick:"cell-dblclick", - cellContext:"cell-contextmenu", - cellMouseEnter:"cell-mouseenter", - cellMouseLeave:"cell-mouseleave", - cellMouseOver:"cell-mouseover", - cellMouseOut:"cell-mouseout", - cellMouseMove:"cell-mousemove", - cellMouseDown:"cell-mousedown", - cellMouseUp:"cell-mouseup", - cellTap:"cell", - cellDblTap:"cell", - cellTapHold:"cell", - - //column header events - headerClick:"column-click", - headerDblClick:"column-dblclick", - headerContext:"column-contextmenu", - headerMouseEnter:"column-mouseenter", - headerMouseLeave:"column-mouseleave", - headerMouseOver:"column-mouseover", - headerMouseOut:"column-mouseout", - headerMouseMove:"column-mousemove", - headerMouseDown:"column-mousedown", - headerMouseUp:"column-mouseup", - headerTap:"column", - headerDblTap:"column", - headerTapHold:"column", - - //group header - groupClick:"group-click", - groupDblClick:"group-dblclick", - groupContext:"group-contextmenu", - groupMouseEnter:"group-mouseenter", - groupMouseLeave:"group-mouseleave", - groupMouseOver:"group-mouseover", - groupMouseOut:"group-mouseout", - groupMouseMove:"group-mousemove", - groupMouseDown:"group-mousedown", - groupMouseUp:"group-mouseup", - groupTap:"group", - groupDblTap:"group", - groupTapHold:"group", - }; - - this.subscribers = {}; - - this.touchSubscribers = {}; - - this.columnSubscribers = {}; - - this.touchWatchers = { - row:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - cell:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - column:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - group:{ - tap:null, - tapDbl:null, - tapHold:null, - } - }; - - this.registerColumnOption("headerClick"); - this.registerColumnOption("headerDblClick"); - this.registerColumnOption("headerContext"); - this.registerColumnOption("headerMouseEnter"); - this.registerColumnOption("headerMouseLeave"); - this.registerColumnOption("headerMouseOver"); - this.registerColumnOption("headerMouseOut"); - this.registerColumnOption("headerMouseMove"); - this.registerColumnOption("headerMouseDown"); - this.registerColumnOption("headerMouseUp"); - this.registerColumnOption("headerTap"); - this.registerColumnOption("headerDblTap"); - this.registerColumnOption("headerTapHold"); - - this.registerColumnOption("cellClick"); - this.registerColumnOption("cellDblClick"); - this.registerColumnOption("cellContext"); - this.registerColumnOption("cellMouseEnter"); - this.registerColumnOption("cellMouseLeave"); - this.registerColumnOption("cellMouseOver"); - this.registerColumnOption("cellMouseOut"); - this.registerColumnOption("cellMouseMove"); - this.registerColumnOption("cellMouseDown"); - this.registerColumnOption("cellMouseUp"); - this.registerColumnOption("cellTap"); - this.registerColumnOption("cellDblTap"); - this.registerColumnOption("cellTapHold"); - - } - - initialize(){ - this.initializeExternalEvents(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("cell-dblclick", this.cellContentsSelectionFixer.bind(this)); - this.subscribe("scroll-horizontal", this.clearTouchWatchers.bind(this)); - this.subscribe("scroll-vertical", this.clearTouchWatchers.bind(this)); - } - - clearTouchWatchers(){ - var types = Object.values(this.touchWatchers); - - types.forEach((type) => { - for(let key in type){ - type[key] = null; - } - }); - } - - cellContentsSelectionFixer(e, cell){ - var range; - - if(this.table.modExists("edit")){ - if (this.table.modules.edit.currentCell === cell){ - return; //prevent instant selection of editor content - } - } - - e.preventDefault(); - - try{ - if (document.selection) { // IE - range = document.body.createTextRange(); - range.moveToElementText(cell.getElement()); - range.select(); - } else if (window.getSelection) { - range = document.createRange(); - range.selectNode(cell.getElement()); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(range); - } - }catch(e){} - } - - initializeExternalEvents(){ - for(let key in this.eventMap){ - this.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key)); - } - } - - subscriptionChanged(key, added){ - if(added){ - if(!this.subscribers[key]){ - if(this.eventMap[key].includes("-")){ - this.subscribers[key] = this.handle.bind(this, key); - this.subscribe(this.eventMap[key], this.subscribers[key]); - }else { - this.subscribeTouchEvents(key); - } - } - }else { - if(this.eventMap[key].includes("-")){ - if(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){ - this.unsubscribe(this.eventMap[key], this.subscribers[key]); - delete this.subscribers[key]; - } - }else { - this.unsubscribeTouchEvents(key); - } - } - } - - - subscribeTouchEvents(key){ - var type = this.eventMap[key]; - - if(!this.touchSubscribers[type + "-touchstart"]){ - this.touchSubscribers[type + "-touchstart"] = this.handleTouch.bind(this, type, "start"); - this.touchSubscribers[type + "-touchend"] = this.handleTouch.bind(this, type, "end"); - - this.subscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.subscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - } - - this.subscribers[key] = true; - } - - unsubscribeTouchEvents(key){ - var noTouch = true, - type = this.eventMap[key]; - - if(this.subscribers[key] && !this.subscribedExternal(key)){ - delete this.subscribers[key]; - - for(let i in this.eventMap){ - if(this.eventMap[i] === type){ - if(this.subscribers[i]){ - noTouch = false; - } - } - } - - if(noTouch){ - this.unsubscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.unsubscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - - delete this.touchSubscribers[type + "-touchstart"]; - delete this.touchSubscribers[type + "-touchend"]; - } - } - } - - initializeColumn(column){ - var def = column.definition; - - for(let key in this.eventMap){ - if(def[key]){ - this.subscriptionChanged(key, true); - - if(!this.columnSubscribers[key]){ - this.columnSubscribers[key] = []; - } - - this.columnSubscribers[key].push(column); - } - } - } - - handle(action, e, component){ - this.dispatchEvent(action, e, component); - } - - handleTouch(type, action, e, component){ - var watchers = this.touchWatchers[type]; - - if(type === "column"){ - type = "header"; - } - - switch(action){ - case "start": - watchers.tap = true; - - clearTimeout(watchers.tapHold); - - watchers.tapHold = setTimeout(() => { - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - - watchers.tap = null; - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "TapHold", e, component); - }, 1000); - break; - - case "end": - if(watchers.tap){ - - watchers.tap = null; - this.dispatchEvent(type + "Tap", e, component); - } - - if(watchers.tapDbl){ - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "DblTap", e, component); - }else { - watchers.tapDbl = setTimeout(() => { - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - }, 300); - } - - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - break; - } - } - - dispatchEvent(action, e, component){ - var componentObj = component.getComponent(), - callback; - - if(this.columnSubscribers[action]){ - - if(component instanceof Cell){ - callback = component.column.definition[action]; - }else if(component instanceof Column){ - callback = component.definition[action]; - } - - if(callback){ - callback(e, componentObj); - } - } - - this.dispatchExternal(action, e, componentObj); - } - } - - Interaction.moduleName = "interaction"; - - var defaultBindings = { - navPrev:"shift + 9", - navNext:9, - navUp:38, - navDown:40, - navLeft:37, - navRight:39, - scrollPageUp:33, - scrollPageDown:34, - scrollToStart:36, - scrollToEnd:35, - undo:["ctrl + 90", "meta + 90"], - redo:["ctrl + 89", "meta + 89"], - copyToClipboard:["ctrl + 67", "meta + 67"], - - rangeJumpUp:["ctrl + 38", "meta + 38"], - rangeJumpDown:["ctrl + 40", "meta + 40"], - rangeJumpLeft:["ctrl + 37", "meta + 37"], - rangeJumpRight:["ctrl + 39", "meta + 39"], - rangeExpandUp:"shift + 38", - rangeExpandDown:"shift + 40", - rangeExpandLeft:"shift + 37", - rangeExpandRight:"shift + 39", - rangeExpandJumpUp:["ctrl + shift + 38", "meta + shift + 38"], - rangeExpandJumpDown:["ctrl + shift + 40", "meta + shift + 40"], - rangeExpandJumpLeft:["ctrl + shift + 37", "meta + shift + 37"], - rangeExpandJumpRight:["ctrl + shift + 39", "meta + shift + 39"], - }; - - var defaultActions = { - keyBlock:function(e){ - e.stopPropagation(); - e.preventDefault(); - }, - scrollPageUp:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop - rowManager.element.clientHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos >= 0){ - rowManager.element.scrollTop = newPos; - }else { - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - } - - this.table.element.focus(); - }, - scrollPageDown:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop + rowManager.element.clientHeight, - scrollMax = rowManager.element.scrollHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos <= scrollMax){ - rowManager.element.scrollTop = newPos; - }else { - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - } - - this.table.element.focus(); - - }, - scrollToStart:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - - this.table.element.focus(); - }, - scrollToEnd:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - - this.table.element.focus(); - }, - navPrev:function(e){ - this.dispatch("keybinding-nav-prev", e); - }, - - navNext:function(e){ - this.dispatch("keybinding-nav-next", e); - }, - - navLeft:function(e){ - this.dispatch("keybinding-nav-left", e); - }, - - navRight:function(e){ - this.dispatch("keybinding-nav-right", e); - }, - - navUp:function(e){ - this.dispatch("keybinding-nav-up", e); - }, - - navDown:function(e){ - this.dispatch("keybinding-nav-down", e); - }, - - rangeJumpLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", true, false); - }, - rangeJumpRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", true, false); - }, - rangeJumpUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", true, false); - }, - rangeJumpDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", true, false); - }, - rangeExpandLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", false, true); - }, - rangeExpandRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", false, true); - }, - rangeExpandUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", false, true); - }, - rangeExpandDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", false, true); - }, - rangeExpandJumpLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", true, true); - }, - rangeExpandJumpRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", true, true); - }, - rangeExpandJumpUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", true, true); - }, - rangeExpandJumpDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", true, true); - }, - - undo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.undo(); - } - } - }, - - redo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.redo(); - } - } - }, - - copyToClipboard:function(e){ - if(!this.table.modules.edit.currentCell){ - if(this.table.modExists("clipboard", true)){ - this.table.modules.clipboard.copy(false, true); - } - } - }, - }; - - class Keybindings extends Module{ - - constructor(table){ - super(table); - - this.watchKeys = null; - this.pressedKeys = null; - this.keyupBinding = false; - this.keydownBinding = false; - - this.registerTableOption("keybindings", {}); //array for keybindings - this.registerTableOption("tabEndNewRow", false); //create new row when tab to end of table - } - - initialize(){ - var bindings = this.table.options.keybindings, - mergedBindings = {}; - - this.watchKeys = {}; - this.pressedKeys = []; - - if(bindings !== false){ - Object.assign(mergedBindings, Keybindings.bindings); - Object.assign(mergedBindings, bindings); - - this.mapBindings(mergedBindings); - this.bindEvents(); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - - mapBindings(bindings){ - for(let key in bindings){ - if(Keybindings.actions[key]){ - if(bindings[key]){ - if(typeof bindings[key] !== "object"){ - bindings[key] = [bindings[key]]; - } - - bindings[key].forEach((binding) => { - var bindingList = Array.isArray(binding) ? binding : [binding]; - - bindingList.forEach((item) => { - this.mapBinding(key, item); - }); - }); - } - }else { - console.warn("Key Binding Error - no such action:", key); - } - } - } - - mapBinding(action, symbolsList){ - var binding = { - action: Keybindings.actions[action], - keys: [], - ctrl: false, - shift: false, - meta: false, - }; - - var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+"); - - symbols.forEach((symbol) => { - switch(symbol){ - case "ctrl": - binding.ctrl = true; - break; - - case "shift": - binding.shift = true; - break; - - case "meta": - binding.meta = true; - break; - - default: - symbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol); - binding.keys.push(symbol); - - if(!this.watchKeys[symbol]){ - this.watchKeys[symbol] = []; - } - - this.watchKeys[symbol].push(binding); - } - }); - } - - bindEvents(){ - var self = this; - - this.keyupBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - self.pressedKeys.push(code); - - bindings.forEach(function(binding){ - self.checkBinding(e, binding); - }); - } - }; - - this.keydownBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - var index = self.pressedKeys.indexOf(code); - - if(index > -1){ - self.pressedKeys.splice(index, 1); - } - } - }; - - this.table.element.addEventListener("keydown", this.keyupBinding); - - this.table.element.addEventListener("keyup", this.keydownBinding); - } - - clearBindings(){ - if(this.keyupBinding){ - this.table.element.removeEventListener("keydown", this.keyupBinding); - } - - if(this.keydownBinding){ - this.table.element.removeEventListener("keyup", this.keydownBinding); - } - } - - checkBinding(e, binding){ - var match = true; - - if(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){ - binding.keys.forEach((key) => { - var index = this.pressedKeys.indexOf(key); - - if(index == -1){ - match = false; - } - }); - - if(match){ - binding.action.call(this, e); - } - - return true; - } - - return false; - } - } - - Keybindings.moduleName = "keybindings"; - - //load defaults - Keybindings.bindings = defaultBindings; - Keybindings.actions = defaultActions; - - class Menu extends Module{ - - constructor(table){ - super(table); - - this.menuContainer = null; - this.nestedMenuBlock = false; - - this.currentComponent = null; - this.rootPopup = null; - - this.columnSubscribers = {}; - - this.registerTableOption("menuContainer", undefined); //deprecated - - this.registerTableOption("rowContextMenu", false); - this.registerTableOption("rowClickMenu", false); - this.registerTableOption("rowDblClickMenu", false); - this.registerTableOption("groupContextMenu", false); - this.registerTableOption("groupClickMenu", false); - this.registerTableOption("groupDblClickMenu", false); - - this.registerColumnOption("headerContextMenu"); - this.registerColumnOption("headerClickMenu"); - this.registerColumnOption("headerDblClickMenu"); - this.registerColumnOption("headerMenu"); - this.registerColumnOption("headerMenuIcon"); - this.registerColumnOption("contextMenu"); - this.registerColumnOption("clickMenu"); - this.registerColumnOption("dblClickMenu"); - - } - - initialize(){ - this.deprecatedOptionsCheck(); - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - if(!this.deprecationCheck("menuContainer", "popupContainer")){ - this.table.options.popupContainer = this.table.options.menuContainer; - } - } - - initializeRowWatchers(){ - if(this.table.options.rowContextMenu){ - this.subscribe("row-contextmenu", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - this.table.on("rowTapHold", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - } - - if(this.table.options.rowClickMenu){ - this.subscribe("row-click", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu)); - } - - if(this.table.options.rowDblClickMenu){ - this.subscribe("row-dblclick", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextMenu){ - this.subscribe("group-contextmenu", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - this.table.on("groupTapHold", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - } - - if(this.table.options.groupClickMenu){ - this.subscribe("group-click", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu)); - } - - if(this.table.options.groupDblClickMenu){ - this.subscribe("group-dblclick", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){ - this.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, "headerContextMenu"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextMenu); - this.table.on("headerTapHold", this.loadMenuTableColumnEvent.bind(this, "headerContextMenu")); - } - - if(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){ - this.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerClickMenu"); - this.subscribe("column-click", this.columnSubscribers.headerClickMenu); - } - - if(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){ - this.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerDblClickMenu"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickMenu); - } - - if(def.headerMenu){ - this.initializeColumnHeaderMenu(column); - } - - //handle cell events - if(def.contextMenu && !this.columnSubscribers.contextMenu){ - this.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, "contextMenu"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextMenu); - this.table.on("cellTapHold", this.loadMenuTableCellEvent.bind(this, "contextMenu")); - } - - if(def.clickMenu && !this.columnSubscribers.clickMenu){ - this.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, "clickMenu"); - this.subscribe("cell-click", this.columnSubscribers.clickMenu); - } - - if(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){ - this.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, "dblClickMenu"); - this.subscribe("cell-dblclick", this.columnSubscribers.dblClickMenu); - } - } - - initializeColumnHeaderMenu(column){ - var icon = column.definition.headerMenuIcon, - headerMenuEl; - - headerMenuEl = document.createElement("span"); - headerMenuEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerMenuEl.appendChild(icon); - }else { - headerMenuEl.innerHTML = icon; - } - }else { - headerMenuEl.innerHTML = "⋮"; - } - - headerMenuEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadMenuEvent(column.definition.headerMenu, e, column); - }); - - column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild); - } - - loadMenuTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadMenuEvent(cell.column.definition[option], e, cell); - } - } - - loadMenuTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadMenuEvent(column.definition[option], e, column); - } - } - - loadMenuEvent(menu, e, component){ - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - menu = typeof menu == "function" ? menu.call(this.table, e, component.getComponent()) : menu; - - this.loadMenu(e, component, menu); - } - - loadMenu(e, component, menu, parentEl, parentPopup){ - var touch = !(e instanceof MouseEvent), - menuEl = document.createElement("div"), - popup; - - menuEl.classList.add("tabulator-menu"); - - if(!touch){ - e.preventDefault(); - } - - //abort if no menu set - if(!menu || !menu.length){ - return; - } - - if(!parentEl){ - if(this.nestedMenuBlock){ - //abort if child menu already open - if(this.rootPopup){ - return; - } - }else { - this.nestedMenuBlock = setTimeout(() => { - this.nestedMenuBlock = false; - }, 100); - } - - if(this.rootPopup){ - this.rootPopup.hide(); - } - - this.rootPopup = popup = this.popup(menuEl); - - }else { - popup = parentPopup.child(menuEl); - } - - menu.forEach((item) => { - var itemEl = document.createElement("div"), - label = item.label, - disabled = item.disabled; - - if(item.separator){ - itemEl.classList.add("tabulator-menu-separator"); - }else { - itemEl.classList.add("tabulator-menu-item"); - - if(typeof label == "function"){ - label = label.call(this.table, component.getComponent()); - } - - if(label instanceof Node){ - itemEl.appendChild(label); - }else { - itemEl.innerHTML = label; - } - - if(typeof disabled == "function"){ - disabled = disabled.call(this.table, component.getComponent()); - } - - if(disabled){ - itemEl.classList.add("tabulator-menu-item-disabled"); - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - }); - }else { - if(item.menu && item.menu.length){ - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.loadMenu(e, component, item.menu, itemEl, popup); - }); - }else { - if(item.action){ - itemEl.addEventListener("click", (e) => { - item.action(e, component.getComponent()); - }); - } - } - } - - if(item.menu && item.menu.length){ - itemEl.classList.add("tabulator-menu-item-submenu"); - } - } - - menuEl.appendChild(itemEl); - }); - - menuEl.addEventListener("click", (e) => { - if(this.rootPopup){ - this.rootPopup.hide(); - } - }); - - popup.show(parentEl || e); - - if(popup === this.rootPopup){ - this.rootPopup.hideOnBlur(() => { - this.rootPopup = null; - - if(this.currentComponent){ - this.dispatch("menu-closed", menu, popup); - this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); - this.currentComponent = null; - } - }); - - this.currentComponent = component; - - this.dispatch("menu-opened", menu, popup); - this.dispatchExternal("menuOpened", component.getComponent()); - } - } - } - - Menu.moduleName = "menu"; - - class MoveColumns extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating column header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving column - this.toCol = false; //destination column - this.toColAfter = false; //position of moving column relative to the destination column - this.startX = 0; //starting position within header element - this.autoScrollMargin = 40; //auto scroll on edge when within margin - this.autoScrollStep = 5; //auto scroll distance in pixels - this.autoScrollTimeout = false; //auto scroll timeout - this.touchMove = false; - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - - this.registerTableOption("movableColumns", false); //enable movable columns - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.classList.add("tabulator-col-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableColumns){ - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("alert-show", this.abortMove.bind(this)); - } - } - - abortMove(){ - clearTimeout(this.checkTimeout); - } - - initializeColumn(column){ - var self = this, - config = {}, - colEl; - - if(!column.modules.frozen && !column.isGroup){ - colEl = column.getElement(); - - config.mousemove = function(e){ - if(column.parent === self.moving.parent){ - if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){ - if(self.toCol !== column || !self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling); - self.moveColumn(column, true); - } - }else { - if(self.toCol !== column || self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl); - self.moveColumn(column, false); - } - } - } - }.bind(self); - - colEl.addEventListener("mousedown", function(e){ - self.touchMove = false; - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, column); - }, self.checkPeriod); - } - }); - - colEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - self.bindTouchEvents(column); - } - - column.modules.moveColumn = config; - } - - bindTouchEvents(column){ - var colEl = column.getElement(), - startXMove = false, //shifting center position of the cell - nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast; - - colEl.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextCol = column.nextColumn(); - nextColWidth = nextCol ? nextCol.getWidth()/2 : 0; - prevCol = column.prevColumn(); - prevColWidth = prevCol ? prevCol.getWidth()/2 : 0; - nextColWidthLast = 0; - prevColWidthLast = 0; - startXMove = false; - - this.startMove(e, column); - }, this.checkPeriod); - }, {passive: true}); - - colEl.addEventListener("touchmove", (e) => { - var diff, moveToCol; - - if(this.moving){ - this.moveHover(e); - - if(!startXMove){ - startXMove = e.touches[0].pageX; - } - - diff = e.touches[0].pageX - startXMove; - - if(diff > 0){ - if(nextCol && diff - nextColWidthLast > nextColWidth){ - moveToCol = nextCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling); - this.moveColumn(moveToCol, true); - } - } - }else { - if(prevCol && -diff - prevColWidthLast > prevColWidth){ - moveToCol = prevCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement()); - this.moveColumn(moveToCol, false); - } - } - } - - if(moveToCol){ - nextCol = moveToCol.nextColumn(); - nextColWidthLast = nextColWidth; - nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0; - prevCol = moveToCol.prevColumn(); - prevColWidthLast = prevColWidth; - prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0; - } - } - }, {passive: true}); - - colEl.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - } - }); - } - - startMove(e, column){ - var element = column.getElement(), - headerElement = this.table.columnManager.getContentsElement(), - headersElement = this.table.columnManager.getHeadersElement(); - - this.moving = column; - this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = column.getWidth() + "px"; - this.placeholderElement.style.height = column.getHeight() + "px"; - - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - headerElement.appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + "px"; - - if(!this.touchMove){ - this._bindMouseMove(); - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - } - - this.moveHover(e); - } - - _bindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - moveColumn(column, after){ - var movingCells = this.moving.getCells(); - - this.toCol = column; - this.toColAfter = after; - - if(after){ - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling); - } - }); - }else { - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl); - } - }); - } - } - - endMove(e){ - if(e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toCol){ - this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter); - } - - this.moving = false; - this.toCol = false; - this.toColAfter = false; - - if(!this.touchMove){ - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - } - } - } - - moveHover(e){ - var columnHolder = this.table.columnManager.getContentsElement(), - scrollLeft = columnHolder.scrollLeft, - xPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft, - scrollPos; - - this.hoverElement.style.left = (xPos - this.startX) + "px"; - - if(xPos - scrollLeft < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.max(0,scrollLeft-5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - - if(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - } - } - - MoveColumns.moduleName = "moveColumn"; - - class MoveRows extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating row header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving row - this.toRow = false; //destination row - this.toRowAfter = false; //position of moving row relative to the destination row - this.hasHandle = false; //row has handle instead of fully movable row - this.startY = 0; //starting Y position within header element - this.startX = 0; //starting X position within header element - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - this.tableRowDropEvent = false; - - this.touchMove = false; - - this.connection = false; - this.connectionSelectorsTables = false; - this.connectionSelectorsElements = false; - this.connectionElements = []; - this.connections = []; - - this.connectedTable = false; - this.connectedRow = false; - - this.registerTableOption("movableRows", false); //enable movable rows - this.registerTableOption("movableRowsConnectedTables", false); //tables for movable rows to be connected to - this.registerTableOption("movableRowsConnectedElements", false); //other elements for movable rows to be connected to - this.registerTableOption("movableRowsSender", false); - this.registerTableOption("movableRowsReceiver", "insert"); - - this.registerColumnOption("rowHandle"); - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.classList.add("tabulator-row-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableRows){ - this.connectionSelectorsTables = this.table.options.movableRowsConnectedTables; - this.connectionSelectorsElements = this.table.options.movableRowsConnectedElements; - - this.connection = this.connectionSelectorsTables || this.connectionSelectorsElements; - - this.subscribe("cell-init", this.initializeCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - } - } - - initializeGroupHeader(group){ - var self = this, - config = {}; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, group); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl; - - if(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){ - if(self.toRow !== group || !self.toRowAfter){ - rowEl = group.getElement(); - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(group, true); - } - }else { - if(self.toRow !== group || self.toRowAfter){ - rowEl = group.getElement(); - if(rowEl.previousSibling){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(group, false); - } - } - } - }.bind(self); - - group.modules.moveRow = config; - } - - initializeRow(row){ - var self = this, - config = {}, - rowEl; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, row); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl = row.getElement(); - - if(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){ - if(self.toRow !== row || !self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(row, true); - } - }else { - if(self.toRow !== row || self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(row, false); - } - } - }.bind(self); - - - if(!this.hasHandle){ - - rowEl = row.getElement(); - - rowEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, row); - }, self.checkPeriod); - } - }); - - rowEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(row, row.getElement()); - } - - row.modules.moveRow = config; - } - - initializeColumn(column){ - if(column.definition.rowHandle && this.table.options.movableRows !== false){ - this.hasHandle = true; - } - } - - initializeCell(cell){ - if(cell.column.definition.rowHandle && this.table.options.movableRows !== false){ - var self = this, - cellEl = cell.getElement(true); - - cellEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, cell.row); - }, self.checkPeriod); - } - }); - - cellEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(cell.row, cellEl); - } - } - - bindTouchEvents(row, element){ - var startYMove = false, //shifting center position of the cell - nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast; - - element.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextRow = row.nextRow(); - nextRowHeight = nextRow ? nextRow.getHeight()/2 : 0; - prevRow = row.prevRow(); - prevRowHeight = prevRow ? prevRow.getHeight()/2 : 0; - nextRowHeightLast = 0; - prevRowHeightLast = 0; - startYMove = false; - - this.startMove(e, row); - }, this.checkPeriod); - }, {passive: true}); - this.moving, this.toRow, this.toRowAfter; - element.addEventListener("touchmove", (e) => { - - var diff, moveToRow; - - if(this.moving){ - e.preventDefault(); - - this.moveHover(e); - - if(!startYMove){ - startYMove = e.touches[0].pageY; - } - - diff = e.touches[0].pageY - startYMove; - - if(diff > 0){ - if(nextRow && diff - nextRowHeightLast > nextRowHeight){ - moveToRow = nextRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling); - this.moveRow(moveToRow, true); - } - } - }else { - if(prevRow && -diff - prevRowHeightLast > prevRowHeight){ - moveToRow = prevRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement()); - this.moveRow(moveToRow, false); - } - } - } - - if(moveToRow){ - nextRow = moveToRow.nextRow(); - nextRowHeightLast = nextRowHeight; - nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0; - prevRow = moveToRow.prevRow(); - prevRowHeightLast = prevRowHeight; - prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0; - } - } - }); - - element.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - this.touchMove = false; - } - }); - } - - _bindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - startMove(e, row){ - var element = row.getElement(); - - this.setStartPosition(e, row); - - this.moving = row; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = row.getWidth() + "px"; - this.placeholderElement.style.height = row.getHeight() + "px"; - - if(!this.connection){ - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - }else { - this.table.element.classList.add("tabulator-movingrow-sending"); - this.connectToTables(row); - } - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - if(this.connection){ - document.body.appendChild(this.hoverElement); - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - this.hoverElement.style.width = this.table.element.clientWidth + "px"; - this.hoverElement.style.whiteSpace = "nowrap"; - this.hoverElement.style.overflow = "hidden"; - this.hoverElement.style.pointerEvents = "none"; - }else { - this.table.rowManager.getTableElement().appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - - this._bindMouseMove(); - } - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - - this.dispatchExternal("rowMoving", row.getComponent()); - - this.moveHover(e); - } - - setStartPosition(e, row){ - var pageX = this.touchMove ? e.touches[0].pageX : e.pageX, - pageY = this.touchMove ? e.touches[0].pageY : e.pageY, - element, position; - - element = row.getElement(); - if(this.connection){ - position = element.getBoundingClientRect(); - - this.startX = position.left - pageX + window.pageXOffset; - this.startY = position.top - pageY + window.pageYOffset; - }else { - this.startY = (pageY - element.getBoundingClientRect().top); - } - } - - endMove(e){ - if(!e || e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - if(!this.connection){ - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - } - - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toRow){ - this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter); - }else { - this.dispatchExternal("rowMoveCancelled", this.moving.getComponent()); - } - - this.moving = false; - this.toRow = false; - this.toRowAfter = false; - - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - - if(this.connection){ - this.table.element.classList.remove("tabulator-movingrow-sending"); - this.disconnectFromTables(); - } - } - } - - moveRow(row, after){ - this.toRow = row; - this.toRowAfter = after; - } - - moveHover(e){ - if(this.connection){ - this.moveHoverConnections.call(this, e); - }else { - this.moveHoverTable.call(this, e); - } - } - - moveHoverTable(e){ - var rowHolder = this.table.rowManager.getElement(), - scrollTop = rowHolder.scrollTop, - yPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop; - - this.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + "px"; - } - - moveHoverConnections(e){ - this.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + "px"; - this.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + "px"; - } - - elementRowDrop(e, element, row){ - this.dispatchExternal("movableRowsElementDrop", e, element, row ? row.getComponent() : false); - } - - //establish connection with other tables - connectToTables(row){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStart", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "connect", { - row:row, - }); - } - - if(this.connectionSelectorsElements){ - - this.connectionElements = []; - - if(!Array.isArray(this.connectionSelectorsElements)){ - this.connectionSelectorsElements = [this.connectionSelectorsElements]; - } - - this.connectionSelectorsElements.forEach((query) => { - if(typeof query === "string"){ - this.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query))); - }else { - this.connectionElements.push(query); - } - }); - - this.connectionElements.forEach((element) => { - var dropEvent = (e) => { - this.elementRowDrop(e, element, this.moving); - }; - - element.addEventListener("mouseup", dropEvent); - element.tabulatorElementDropEvent = dropEvent; - - element.classList.add("tabulator-movingrow-receiving"); - }); - } - } - - //disconnect from other tables - disconnectFromTables(){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStop", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "disconnect"); - } - - this.connectionElements.forEach((element) => { - element.classList.remove("tabulator-movingrow-receiving"); - element.removeEventListener("mouseup", element.tabulatorElementDropEvent); - delete element.tabulatorElementDropEvent; - }); - } - - //accept incomming connection - connect(table, row){ - if(!this.connectedTable){ - this.connectedTable = table; - this.connectedRow = row; - - this.table.element.classList.add("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) => { - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.tableRowDropEvent = this.tableRowDrop.bind(this); - - this.table.element.addEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStart", row, table); - - return true; - }else { - console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable); - return false; - } - } - - //close incoming connection - disconnect(table){ - if(table === this.connectedTable){ - this.connectedTable = false; - this.connectedRow = false; - - this.table.element.classList.remove("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) =>{ - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.table.element.removeEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStop", table); - }else { - console.warn("Move Row Error - trying to disconnect from non connected table"); - } - } - - dropComplete(table, row, success){ - var sender = false; - - if(success){ - - switch(typeof this.table.options.movableRowsSender){ - case "string": - sender = this.senders[this.table.options.movableRowsSender]; - break; - - case "function": - sender = this.table.options.movableRowsSender; - break; - } - - if(sender){ - sender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table); - }else { - if(this.table.options.movableRowsSender){ - console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender); - } - } - - this.dispatchExternal("movableRowsSent", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - }else { - this.dispatchExternal("movableRowsSentFailed", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - } - - this.endMove(); - } - - tableRowDrop(e, row){ - var receiver = false, - success = false; - - e.stopImmediatePropagation(); - - switch(typeof this.table.options.movableRowsReceiver){ - case "string": - receiver = this.receivers[this.table.options.movableRowsReceiver]; - break; - - case "function": - receiver = this.table.options.movableRowsReceiver; - break; - } - - if(receiver){ - success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else { - console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver); - } - - if(success){ - this.dispatchExternal("movableRowsReceived", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else { - this.dispatchExternal("movableRowsReceivedFailed", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - } - - this.commsSend(this.connectedTable, "moveRow", "dropcomplete", { - row:row, - success:success, - }); - } - - commsReceived(table, action, data){ - switch(action){ - case "connect": - return this.connect(table, data.row); - - case "disconnect": - return this.disconnect(table); - - case "dropcomplete": - return this.dropComplete(table, data.row, data.success); - } - } - } - - MoveRows.prototype.receivers = { - insert:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData(), undefined, toRow); - return true; - }, - - add:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData()); - return true; - }, - - update:function(fromRow, toRow, fromTable){ - if(toRow){ - toRow.update(fromRow.getData()); - return true; - } - - return false; - }, - - replace:function(fromRow, toRow, fromTable){ - if(toRow){ - this.table.addRow(fromRow.getData(), undefined, toRow); - toRow.delete(); - return true; - } - - return false; - }, - }; - - MoveRows.prototype.senders = { - delete:function(fromRow, toRow, toTable){ - fromRow.delete(); - } - }; - - MoveRows.moduleName = "moveRow"; - - var defaultMutators = {}; - - class Mutator extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of mutation types - this.enabled = true; - - this.registerColumnOption("mutator"); - this.registerColumnOption("mutatorParams"); - this.registerColumnOption("mutatorData"); - this.registerColumnOption("mutatorDataParams"); - this.registerColumnOption("mutatorEdit"); - this.registerColumnOption("mutatorEditParams"); - this.registerColumnOption("mutatorClipboard"); - this.registerColumnOption("mutatorClipboardParams"); - this.registerColumnOption("mutateLink"); - } - - initialize(){ - this.subscribe("cell-value-changing", this.transformCell.bind(this)); - this.subscribe("cell-value-changed", this.mutateLink.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-init-before", this.rowDataChanged.bind(this)); - this.subscribe("row-data-changing", this.rowDataChanged.bind(this)); - } - - rowDataChanged(row, tempData, updatedData){ - return this.transformRow(tempData, "data", updatedData); - } - - //initialize column mutator - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - mutator; - - if(column.definition[key]){ - mutator = this.lookupMutator(column.definition[key]); - - if(mutator){ - match = true; - - config[key] = { - mutator:mutator, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.mutate = config; - } - } - - lookupMutator(value){ - var mutator = false; - - //set column mutator - switch(typeof value){ - case "string": - if(Mutator.mutators[value]){ - mutator = Mutator.mutators[value]; - }else { - console.warn("Mutator Error - No such mutator found, ignoring: ", value); - } - break; - - case "function": - mutator = value; - break; - } - - return mutator; - } - - //apply mutator to row - transformRow(data, type, updatedData){ - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - value; - - if(this.enabled){ - - this.table.columnManager.traverse((column) => { - var mutator, params, component; - - if(column.modules.mutate){ - mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false; - - if(mutator){ - value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data); - - if((type == "data" && !updatedData)|| typeof value !== "undefined"){ - component = column.getComponent(); - params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params; - column.setFieldValue(data, mutator.mutator(value, data, type, params, component)); - } - } - } - }); - } - - return data; - } - - //apply mutator to new cell value - transformCell(cell, value){ - if(cell.column.modules.mutate){ - var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false, - tempData = {}; - - if(mutator){ - tempData = Object.assign(tempData, cell.row.getData()); - cell.column.setFieldValue(tempData, value); - return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent()); - } - } - - return value; - } - - mutateLink(cell){ - var links = cell.column.definition.mutateLink; - - if(links){ - if(!Array.isArray(links)){ - links = [links]; - } - - links.forEach((link) => { - var linkCell = cell.row.getCell(link); - - if(linkCell){ - linkCell.setValue(linkCell.getValue(), true, true); - } - }); - } - } - - enable(){ - this.enabled = true; - } - - disable(){ - this.enabled = false; - } - } - - Mutator.moduleName = "mutator"; - - //load defaults - Mutator.mutators = defaultMutators; - - function rows(pageSize, currentRow, currentPage, totalRows, totalPages){ - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|rows", (value) => { - rowsEl.innerHTML = value; - }); - - if(totalRows){ - valueEl.innerHTML = " " + currentRow + "-" + Math.min((currentRow + pageSize - 1), totalRows) + " "; - - totalEl.innerHTML = " " + totalRows + " "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - }else { - valueEl.innerHTML = " 0 "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(rowsEl); - } - - return el; - } - - function pages(pageSize, currentRow, currentPage, totalRows, totalPages){ - - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - valueEl.innerHTML = " " + currentPage + " "; - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - totalEl.innerHTML = " " + totalPages + " "; - - this.table.modules.localize.langBind("pagination|counter|pages", (value) => { - rowsEl.innerHTML = value; - }); - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - - return el; - } - - var defaultPageCounters = { - rows:rows, - pages:pages, - }; - - class Page extends Module{ - - constructor(table){ - super(table); - - this.mode = "local"; - this.progressiveLoad = false; - - this.element = null; - this.pageCounterElement = null; - this.pageCounter = null; - - this.size = 0; - this.page = 1; - this.count = 5; - this.max = 1; - - this.remoteRowCountEstimate = null; - - this.initialLoad = true; - this.dataChanging = false; //flag to check if data is being changed by this module - - this.pageSizes = []; - - this.registerTableOption("pagination", false); //set pagination type - this.registerTableOption("paginationMode", "local"); //local or remote pagination - this.registerTableOption("paginationSize", false); //set number of rows to a page - this.registerTableOption("paginationInitialPage", 1); //initial page to show on load - this.registerTableOption("paginationCounter", false); // set pagination counter - this.registerTableOption("paginationCounterElement", false); // set pagination counter - this.registerTableOption("paginationButtonCount", 5); // set count of page button - this.registerTableOption("paginationSizeSelector", false); //add pagination size selector element - this.registerTableOption("paginationElement", false); //element to hold pagination numbers - // this.registerTableOption("paginationDataSent", {}); //pagination data sent to the server - // this.registerTableOption("paginationDataReceived", {}); //pagination data received from the server - this.registerTableOption("paginationAddRow", "page"); //add rows on table or page - - this.registerTableOption("progressiveLoad", false); //progressive loading - this.registerTableOption("progressiveLoadDelay", 0); //delay between requests - this.registerTableOption("progressiveLoadScrollMargin", 0); //margin before scroll begins - - this.registerTableFunction("setMaxPage", this.setMaxPage.bind(this)); - this.registerTableFunction("setPage", this.setPage.bind(this)); - this.registerTableFunction("setPageToRow", this.userSetPageToRow.bind(this)); - this.registerTableFunction("setPageSize", this.userSetPageSize.bind(this)); - this.registerTableFunction("getPageSize", this.getPageSize.bind(this)); - this.registerTableFunction("previousPage", this.previousPage.bind(this)); - this.registerTableFunction("nextPage", this.nextPage.bind(this)); - this.registerTableFunction("getPage", this.getPage.bind(this)); - this.registerTableFunction("getPageMax", this.getPageMax.bind(this)); - - //register component functions - this.registerComponentFunction("row", "pageTo", this.setPageToRow.bind(this)); - } - - initialize(){ - if(this.table.options.pagination){ - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("footer-redraw", this.footerRedraw.bind(this)); - - if(this.table.options.paginationAddRow == "page"){ - this.subscribe("row-adding-position", this.rowAddingPosition.bind(this)); - } - - if(this.table.options.paginationMode === "remote"){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - } - - if(this.table.options.progressiveLoad){ - console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"); - } - - this.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40); - this.registerDisplayHandler(this.getRows.bind(this), 50); - - this.createElements(); - this.initializePageCounter(); - this.initializePaginator(); - }else if(this.table.options.progressiveLoad){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - - this.initializeProgressive(this.table.options.progressiveLoad); - - if(this.table.options.progressiveLoad === "scroll"){ - this.subscribe("scroll-vertical", this.scrollVertical.bind(this)); - } - } - } - - rowAddingPosition(row, top){ - var rowManager = this.table.rowManager, - displayRows = rowManager.getDisplayRows(), - index; - - if(top){ - if(displayRows.length){ - index = displayRows[0]; - }else { - if(rowManager.activeRows.length){ - index = rowManager.activeRows[rowManager.activeRows.length-1]; - top = false; - } - } - }else { - if(displayRows.length){ - index = displayRows[displayRows.length - 1]; - top = displayRows.length < this.size ? false : true; - } - } - - return {index, top}; - } - - calculatePageSizes(){ - var testElRow, testElCell; - - if(this.table.options.paginationSize){ - this.size = this.table.options.paginationSize; - }else { - testElRow = document.createElement("div"); - testElRow.classList.add("tabulator-row"); - testElRow.style.visibility = "hidden"; - - testElCell = document.createElement("div"); - testElCell.classList.add("tabulator-cell"); - testElCell.innerHTML = "Page Row Test"; - - testElRow.appendChild(testElCell); - - this.table.rowManager.getTableElement().appendChild(testElRow); - - this.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight); - - this.table.rowManager.getTableElement().removeChild(testElRow); - } - - this.dispatchExternal("pageSizeChanged", this.size); - - this.generatePageSizeSelectList(); - } - - initialLoadComplete(){ - this.initialLoad = false; - } - - remotePageParams(data, config, silent, params){ - if(!this.initialLoad){ - if((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){ - this.reset(true); - } - } - - //configure request params - params.page = this.page; - - //set page size if defined - if(this.size){ - params.size = this.size; - } - - return params; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetPageToRow(row){ - if(this.table.options.pagination){ - row = this.table.rowManager.findRow(row); - - if(row){ - return this.setPageToRow(row); - } - } - - return Promise.reject(); - } - - userSetPageSize(size){ - if(this.table.options.pagination){ - this.setPageSize(size); - return this.setPage(1); - }else { - return false; - } - } - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - scrollVertical(top, dir){ - var element, diff, margin; - if(!dir && !this.table.dataLoader.loading){ - element = this.table.rowManager.getElement(); - diff = element.scrollHeight - element.clientHeight - top; - margin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2); - - if(diff < margin){ - this.nextPage() - .catch(() => {}); //consume the exception thrown when on the last page - } - } - } - - restOnRenderBefore(rows, renderInPosition){ - if(!renderInPosition){ - if(this.mode === "local"){ - this.reset(); - } - } - - return rows; - } - - rowsUpdated(){ - this.refreshData(true, "all"); - } - - createElements(){ - var button; - - this.element = document.createElement("span"); - this.element.classList.add("tabulator-paginator"); - - this.pagesElement = document.createElement("span"); - this.pagesElement.classList.add("tabulator-pages"); - - button = document.createElement("button"); - button.classList.add("tabulator-page"); - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - button.setAttribute("aria-label", ""); - button.setAttribute("title", ""); - - this.firstBut = button.cloneNode(true); - this.firstBut.setAttribute("data-page", "first"); - - this.prevBut = button.cloneNode(true); - this.prevBut.setAttribute("data-page", "prev"); - - this.nextBut = button.cloneNode(true); - this.nextBut.setAttribute("data-page", "next"); - - this.lastBut = button.cloneNode(true); - this.lastBut.setAttribute("data-page", "last"); - - if(this.table.options.paginationSizeSelector){ - this.pageSizeSelect = document.createElement("select"); - this.pageSizeSelect.classList.add("tabulator-page-size"); - } - } - - generatePageSizeSelectList(){ - var pageSizes = []; - - if(this.pageSizeSelect){ - - if(Array.isArray(this.table.options.paginationSizeSelector)){ - pageSizes = this.table.options.paginationSizeSelector; - this.pageSizes = pageSizes; - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes.unshift(this.size); - } - }else { - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes = []; - - for (let i = 1; i < 5; i++){ - pageSizes.push(this.size * i); - } - - this.pageSizes = pageSizes; - }else { - pageSizes = this.pageSizes; - } - } - - while(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild); - - pageSizes.forEach((item) => { - var itemEl = document.createElement("option"); - itemEl.value = item; - - if(item === true){ - this.langBind("pagination|all", function(value){ - itemEl.innerHTML = value; - }); - }else { - itemEl.innerHTML = item; - } - - - - this.pageSizeSelect.appendChild(itemEl); - }); - - this.pageSizeSelect.value = this.size; - } - } - - initializePageCounter(){ - var counter = this.table.options.paginationCounter, - pageCounter = null; - - if(counter){ - if(typeof counter === "function"){ - pageCounter = counter; - }else { - pageCounter = Page.pageCounters[counter]; - } - - if(pageCounter){ - this.pageCounter = pageCounter; - - this.pageCounterElement = document.createElement("span"); - this.pageCounterElement.classList.add("tabulator-page-counter"); - }else { - console.warn("Pagination Error - No such page counter found: ", counter); - } - } - } - - //setup pagination - initializePaginator(hidden){ - var pageSelectLabel, paginationCounterHolder; - - if(!hidden){ - //build pagination element - - //bind localizations - this.langBind("pagination|first", (value) => { - this.firstBut.innerHTML = value; - }); - - this.langBind("pagination|first_title", (value) => { - this.firstBut.setAttribute("aria-label", value); - this.firstBut.setAttribute("title", value); - }); - - this.langBind("pagination|prev", (value) => { - this.prevBut.innerHTML = value; - }); - - this.langBind("pagination|prev_title", (value) => { - this.prevBut.setAttribute("aria-label", value); - this.prevBut.setAttribute("title", value); - }); - - this.langBind("pagination|next", (value) => { - this.nextBut.innerHTML = value; - }); - - this.langBind("pagination|next_title", (value) => { - this.nextBut.setAttribute("aria-label", value); - this.nextBut.setAttribute("title", value); - }); - - this.langBind("pagination|last", (value) => { - this.lastBut.innerHTML = value; - }); - - this.langBind("pagination|last_title", (value) => { - this.lastBut.setAttribute("aria-label", value); - this.lastBut.setAttribute("title", value); - }); - - //click bindings - this.firstBut.addEventListener("click", () => { - this.setPage(1); - }); - - this.prevBut.addEventListener("click", () => { - this.previousPage(); - }); - - this.nextBut.addEventListener("click", () => { - this.nextPage(); - }); - - this.lastBut.addEventListener("click", () => { - this.setPage(this.max); - }); - - if(this.table.options.paginationElement){ - this.element = this.table.options.paginationElement; - } - - if(this.pageSizeSelect){ - pageSelectLabel = document.createElement("label"); - - this.langBind("pagination|page_size", (value) => { - this.pageSizeSelect.setAttribute("aria-label", value); - this.pageSizeSelect.setAttribute("title", value); - pageSelectLabel.innerHTML = value; - }); - - this.element.appendChild(pageSelectLabel); - this.element.appendChild(this.pageSizeSelect); - - this.pageSizeSelect.addEventListener("change", (e) => { - this.setPageSize(this.pageSizeSelect.value == "true" ? true : this.pageSizeSelect.value); - this.setPage(1); - }); - } - - //append to DOM - this.element.appendChild(this.firstBut); - this.element.appendChild(this.prevBut); - this.element.appendChild(this.pagesElement); - this.element.appendChild(this.nextBut); - this.element.appendChild(this.lastBut); - - if(!this.table.options.paginationElement){ - if(this.table.options.paginationCounter){ - - if(this.table.options.paginationCounterElement){ - if(this.table.options.paginationCounterElement instanceof HTMLElement){ - this.table.options.paginationCounterElement.appendChild(this.pageCounterElement); - }else if(typeof this.table.options.paginationCounterElement === "string"){ - paginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement); - - if(paginationCounterHolder){ - paginationCounterHolder.appendChild(this.pageCounterElement); - }else { - console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:", this.table.options.paginationCounterElement); - } - } - }else { - this.footerAppend(this.pageCounterElement); - } - - } - - this.footerAppend(this.element); - } - - this.page = this.table.options.paginationInitialPage; - this.count = this.table.options.paginationButtonCount; - } - - //set default values - this.mode = this.table.options.paginationMode; - } - - initializeProgressive(mode){ - this.initializePaginator(true); - this.mode = "progressive_" + mode; - this.progressiveLoad = true; - } - - trackChanges(){ - this.dispatch("page-changed"); - } - - //calculate maximum page from number of rows - setMaxRows(rowCount){ - if(!rowCount){ - this.max = 1; - }else { - this.max = this.size === true ? 1 : Math.ceil(rowCount/this.size); - } - - if(this.page > this.max){ - this.page = this.max; - } - } - - //reset to first page without triggering action - reset(force){ - if(!this.initialLoad){ - if(this.mode == "local" || force){ - this.page = 1; - this.trackChanges(); - } - } - } - - //set the maximum page - setMaxPage(max){ - - max = parseInt(max); - - this.max = max || 1; - - if(this.page > this.max){ - this.page = this.max; - this.trigger(); - } - } - - //set current page number - setPage(page){ - switch(page){ - case "first": - return this.setPage(1); - - case "prev": - return this.previousPage(); - - case "next": - return this.nextPage(); - - case "last": - return this.setPage(this.max); - } - - page = parseInt(page); - - if((page > 0 && page <= this.max) || this.mode !== "local"){ - this.page = page; - - this.trackChanges(); - - return this.trigger(); - }else { - console.warn("Pagination Error - Requested page is out of range of 1 - " + this.max + ":", page); - return Promise.reject(); - } - } - - setPageToRow(row){ - var rows = this.displayRows(-1); - var index = rows.indexOf(row); - - if(index > -1){ - var page = this.size === true ? 1 : Math.ceil((index + 1) / this.size); - - return this.setPage(page); - }else { - console.warn("Pagination Error - Requested row is not visible"); - return Promise.reject(); - } - } - - setPageSize(size){ - if(size !== true){ - size = parseInt(size); - } - - if(size > 0){ - this.size = size; - this.dispatchExternal("pageSizeChanged", size); - } - - if(this.pageSizeSelect){ - // this.pageSizeSelect.value = size; - this.generatePageSizeSelectList(); - } - - this.trackChanges(); - } - - _setPageCounter(totalRows, size, currentRow){ - var content; - - if(this.pageCounter){ - - if(this.mode === "remote"){ - size = this.size; - currentRow = ((this.page - 1) * this.size) + 1; - totalRows = this.remoteRowCountEstimate; - } - - content = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max); - - switch(typeof content){ - case "object": - if(content instanceof Node){ - - //clear previous cell contents - while(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild); - - this.pageCounterElement.appendChild(content); - }else { - this.pageCounterElement.innerHTML = ""; - - if(content != null){ - console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:", content); - } - } - break; - case "undefined": - this.pageCounterElement.innerHTML = ""; - break; - default: - this.pageCounterElement.innerHTML = content; - } - } - } - - //setup the pagination buttons - _setPageButtons(){ - let leftSize = Math.floor((this.count-1) / 2); - let rightSize = Math.ceil((this.count-1) / 2); - let min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1); - let max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max); - - while(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild); - - if(this.page == 1){ - this.firstBut.disabled = true; - this.prevBut.disabled = true; - }else { - this.firstBut.disabled = false; - this.prevBut.disabled = false; - } - - if(this.page == this.max){ - this.lastBut.disabled = true; - this.nextBut.disabled = true; - }else { - this.lastBut.disabled = false; - this.nextBut.disabled = false; - } - - for(let i = min; i <= max; i++){ - if(i>0 && i <= this.max){ - this.pagesElement.appendChild(this._generatePageButton(i)); - } - } - - this.footerRedraw(); - } - - _generatePageButton(page){ - var button = document.createElement("button"); - - button.classList.add("tabulator-page"); - if(page == this.page){ - button.classList.add("active"); - } - - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - - this.langBind("pagination|page_title", (value) => { - button.setAttribute("aria-label", value + " " + page); - button.setAttribute("title", value + " " + page); - }); - - button.setAttribute("data-page", page); - button.textContent = page; - - button.addEventListener("click", (e) => { - this.setPage(page); - }); - - return button; - } - - //previous page - previousPage(){ - if(this.page > 1){ - this.page--; - - this.trackChanges(); - - return this.trigger(); - - }else { - console.warn("Pagination Error - Previous page would be less than page 1:", 0); - return Promise.reject(); - } - } - - //next page - nextPage(){ - if(this.page < this.max){ - this.page++; - - this.trackChanges(); - - return this.trigger(); - - }else { - if(!this.progressiveLoad){ - console.warn("Pagination Error - Next page would be greater than maximum page of " + this.max + ":", this.max + 1); - } - return Promise.reject(); - } - } - - //return current page number - getPage(){ - return this.page; - } - - //return max page number - getPageMax(){ - return this.max; - } - - getPageSize(size){ - return this.size; - } - - getMode(){ - return this.mode; - } - - //return appropriate rows for current page - getRows(data){ - var actualRowPageSize = 0, - output, start, end, actualStartRow; - - var actualRows = data.filter((row) => { - return row.type === "row"; - }); - - if(this.mode == "local"){ - output = []; - - this.setMaxRows(data.length); - - if(this.size === true){ - start = 0; - end = data.length; - }else { - start = this.size * (this.page - 1); - end = start + parseInt(this.size); - } - - this._setPageButtons(); - - for(let i = start; i < end; i++){ - let row = data[i]; - - if(row){ - output.push(row); - - if(row.type === "row"){ - if(!actualStartRow){ - actualStartRow = row; - } - - actualRowPageSize++; - } - } - } - - this._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0); - - return output; - }else { - this._setPageButtons(); - this._setPageCounter(actualRows.length); - - return data.slice(0); - } - } - - trigger(){ - var left; - - switch(this.mode){ - case "local": - left = this.table.rowManager.scrollLeft; - - this.refreshData(); - this.table.rowManager.scrollHorizontal(left); - - this.dispatchExternal("pageLoaded", this.getPage()); - - return Promise.resolve(); - - case "remote": - this.dataChanging = true; - return this.reloadData(null) - .finally(() => { - this.dataChanging = false; - }); - - case "progressive_load": - case "progressive_scroll": - return this.reloadData(null, true); - - default: - console.warn("Pagination Error - no such pagination mode:", this.mode); - return Promise.reject(); - } - } - - _parseRemoteData(data){ - var margin; - - if(typeof data.last_page === "undefined"){ - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").last_page || "last_page") + "' property"); - } - - if(data.data){ - this.max = parseInt(data.last_page) || 1; - - this.remoteRowCountEstimate = typeof data.last_row !== "undefined" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0)); - - if(this.progressiveLoad){ - switch(this.mode){ - case "progressive_load": - - if(this.page == 1){ - this.table.rowManager.setData(data.data, false, this.page == 1); - }else { - this.table.rowManager.addRows(data.data); - } - - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }, this.table.options.progressiveLoadDelay); - } - break; - - case "progressive_scroll": - data = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data); - - this.table.rowManager.setData(data, this.page !== 1, this.page == 1); - - margin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2); - - if(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){ - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }); - } - } - break; - } - - return false; - }else { - // left = this.table.rowManager.scrollLeft; - this.dispatchExternal("pageLoaded", this.getPage()); - // this.table.rowManager.scrollHorizontal(left); - // this.table.columnManager.scrollHorizontal(left); - } - - }else { - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").data || "data") + "' property"); - } - - return data.data; - } - - //handle the footer element being redrawn - footerRedraw(){ - var footer = this.table.footerManager.containerElement; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - }else { - this.pagesElement.style.display = ''; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - } - } - } - } - - Page.moduleName = "page"; - - //load defaults - Page.pageCounters = defaultPageCounters; - - // read persistance information from storage - var defaultReaders = { - local:function(id, type){ - var data = localStorage.getItem(id + "-" + type); - - return data ? JSON.parse(data) : false; - }, - cookie:function(id, type){ - var cookie = document.cookie, - key = id + "-" + type, - cookiePos = cookie.indexOf(key + "="), - end, data; - - //if cookie exists, decode and load column data into tabulator - if(cookiePos > -1){ - cookie = cookie.slice(cookiePos); - - end = cookie.indexOf(";"); - - if(end > -1){ - cookie = cookie.slice(0, end); - } - - data = cookie.replace(key + "=", ""); - } - - return data ? JSON.parse(data) : false; - } - }; - - //write persistence information to storage - var defaultWriters = { - local:function(id, type, data){ - localStorage.setItem(id + "-" + type, JSON.stringify(data)); - }, - cookie:function(id, type, data){ - var expireDate = new Date(); - - expireDate.setDate(expireDate.getDate() + 10000); - - document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString(); - } - }; - - class Persistence extends Module{ - - constructor(table){ - super(table); - - this.mode = ""; - this.id = ""; - // this.persistProps = ["field", "width", "visible"]; - this.defWatcherBlock = false; - this.config = {}; - this.readFunc = false; - this.writeFunc = false; - - this.registerTableOption("persistence", false); - this.registerTableOption("persistenceID", ""); //key for persistent storage - this.registerTableOption("persistenceMode", true); //mode for storing persistence information - this.registerTableOption("persistenceReaderFunc", false); //function for handling persistence data reading - this.registerTableOption("persistenceWriterFunc", false); //function for handling persistence data writing - } - - // Test for whether localStorage is available for use. - localStorageTest() { - var testKey = "_tabulator_test"; - - try { - window.localStorage.setItem( testKey, testKey); - window.localStorage.removeItem( testKey ); - return true; - } catch(e) { - return false; - } - } - - //setup parameters - initialize(){ - if(this.table.options.persistence){ - //determine persistent layout storage type - var mode = this.table.options.persistenceMode, - id = this.table.options.persistenceID, - retrievedData; - - this.mode = mode !== true ? mode : (this.localStorageTest() ? "local" : "cookie"); - - if(this.table.options.persistenceReaderFunc){ - if(typeof this.table.options.persistenceReaderFunc === "function"){ - this.readFunc = this.table.options.persistenceReaderFunc; - }else { - if(Persistence.readers[this.table.options.persistenceReaderFunc]){ - this.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc]; - }else { - console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc); - } - } - }else { - if(Persistence.readers[this.mode]){ - this.readFunc = Persistence.readers[this.mode]; - }else { - console.warn("Persistence Read Error - invalid reader set", this.mode); - } - } - - if(this.table.options.persistenceWriterFunc){ - if(typeof this.table.options.persistenceWriterFunc === "function"){ - this.writeFunc = this.table.options.persistenceWriterFunc; - }else { - if(Persistence.writers[this.table.options.persistenceWriterFunc]){ - this.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc]; - }else { - console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc); - } - } - }else { - if(Persistence.writers[this.mode]){ - this.writeFunc = Persistence.writers[this.mode]; - }else { - console.warn("Persistence Write Error - invalid writer set", this.mode); - } - } - - //set storage tag - this.id = "tabulator-" + (id || (this.table.element.getAttribute("id") || "")); - - this.config = { - sort:this.table.options.persistence === true || this.table.options.persistence.sort, - filter:this.table.options.persistence === true || this.table.options.persistence.filter, - headerFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter, - group:this.table.options.persistence === true || this.table.options.persistence.group, - page:this.table.options.persistence === true || this.table.options.persistence.page, - columns:this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns, - }; - - //load pagination data if needed - if(this.config.page){ - retrievedData = this.retrieveData("page"); - - if(retrievedData){ - if(typeof retrievedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)){ - this.table.options.paginationSize = retrievedData.paginationSize; - } - - if(typeof retrievedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)){ - this.table.options.paginationInitialPage = retrievedData.paginationInitialPage; - } - } - } - - //load group data if needed - if(this.config.group){ - retrievedData = this.retrieveData("group"); - - if(retrievedData){ - if(typeof retrievedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)){ - this.table.options.groupBy = retrievedData.groupBy; - } - if(typeof retrievedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)){ - this.table.options.groupStartOpen = retrievedData.groupStartOpen; - } - if(typeof retrievedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)){ - this.table.options.groupHeader = retrievedData.groupHeader; - } - } - } - - if(this.config.columns){ - this.table.options.columns = this.load("columns", this.table.options.columns); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.save.bind(this, "columns")); - this.subscribe("column-hide", this.save.bind(this, "columns")); - this.subscribe("column-moved", this.save.bind(this, "columns")); - } - - this.subscribe("table-built", this.tableBuilt.bind(this), 0); - - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - - this.subscribe("filter-changed", this.eventSave.bind(this, "filter")); - this.subscribe("filter-changed", this.eventSave.bind(this, "headerFilter")); - this.subscribe("sort-changed", this.eventSave.bind(this, "sort")); - this.subscribe("group-changed", this.eventSave.bind(this, "group")); - this.subscribe("page-changed", this.eventSave.bind(this, "page")); - this.subscribe("column-resized", this.eventSave.bind(this, "columns")); - this.subscribe("column-width", this.eventSave.bind(this, "columns")); - this.subscribe("layout-refreshed", this.eventSave.bind(this, "columns")); - } - - this.registerTableFunction("getColumnLayout", this.getColumnLayout.bind(this)); - this.registerTableFunction("setColumnLayout", this.setColumnLayout.bind(this)); - } - - eventSave(type){ - if(this.config[type]){ - this.save(type); - } - } - - tableBuilt(){ - var sorters, filters, headerFilters; - - if(this.config.sort){ - sorters = this.load("sort"); - - if(!sorters === false){ - this.table.options.initialSort = sorters; - } - } - - if(this.config.filter){ - filters = this.load("filter"); - - if(!filters === false){ - this.table.options.initialFilter = filters; - } - } - if(this.config.headerFilter){ - headerFilters = this.load("headerFilter"); - - if(!headerFilters === false){ - this.table.options.initialHeaderFilter = headerFilters; - } - } - - } - - tableRedraw(force){ - if(force && this.config.columns){ - this.save("columns"); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - getColumnLayout(){ - return this.parseColumns(this.table.columnManager.getColumns()); - } - - setColumnLayout(layout){ - this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout, true)); - return true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumn(column){ - var def, keys; - - if(this.config.columns){ - this.defWatcherBlock = true; - - def = column.getDefinition(); - - keys = this.config.columns === true ? Object.keys(def) : this.config.columns; - - keys.forEach((key)=>{ - var props = Object.getOwnPropertyDescriptor(def, key); - var value = def[key]; - - if(props){ - Object.defineProperty(def, key, { - set: (newValue) => { - value = newValue; - - if(!this.defWatcherBlock){ - this.save("columns"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - if(props.get){ - props.get(); - } - return value; - } - }); - } - }); - - this.defWatcherBlock = false; - } - } - - //load saved definitions - load(type, current){ - var data = this.retrieveData(type); - - if(current){ - data = data ? this.mergeDefinition(current, data) : current; - } - - return data; - } - - //retrieve data from memory - retrieveData(type){ - return this.readFunc ? this.readFunc(this.id, type) : false; - } - - //merge old and new column definitions - mergeDefinition(oldCols, newCols, mergeAllNew){ - var output = []; - - newCols = newCols || []; - - newCols.forEach((column, to) => { - var from = this._findColumn(oldCols, column), - keys; - - if(from){ - if(mergeAllNew){ - keys = Object.keys(column); - }else if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(from); - keys.push("width"); - }else { - keys = this.config.columns; - } - - keys.forEach((key)=>{ - if(key !== "columns" && typeof column[key] !== "undefined"){ - from[key] = column[key]; - } - }); - - if(from.columns){ - from.columns = this.mergeDefinition(from.columns, column.columns); - } - - output.push(from); - } - }); - - oldCols.forEach((column, i) => { - var from = this._findColumn(newCols, column); - - if (!from) { - if(output.length>i){ - output.splice(i, 0, column); - }else { - output.push(column); - } - } - }); - - return output; - } - - //find matching columns - _findColumn(columns, subject){ - var type = subject.columns ? "group" : (subject.field ? "field" : "object"); - - return columns.find(function(col){ - switch(type){ - case "group": - return col.title === subject.title && col.columns.length === subject.columns.length; - - case "field": - return col.field === subject.field; - - case "object": - return col === subject; - } - }); - } - - //save data - save(type){ - var data = {}; - - switch(type){ - case "columns": - data = this.parseColumns(this.table.columnManager.getColumns()); - break; - - case "filter": - data = this.table.modules.filter.getFilters(); - break; - - case "headerFilter": - data = this.table.modules.filter.getHeaderFilters(); - break; - - case "sort": - data = this.validateSorters(this.table.modules.sort.getSort()); - break; - - case "group": - data = this.getGroupConfig(); - break; - - case "page": - data = this.getPageConfig(); - break; - } - - if(this.writeFunc){ - this.writeFunc(this.id, type, data); - } - - } - - //ensure sorters contain no function data - validateSorters(data){ - data.forEach(function(item){ - item.column = item.field; - delete item.field; - }); - - return data; - } - - getGroupConfig(){ - var data = {}; - - if(this.config.group){ - if(this.config.group === true || this.config.group.groupBy){ - data.groupBy = this.table.options.groupBy; - } - - if(this.config.group === true || this.config.group.groupStartOpen){ - data.groupStartOpen = this.table.options.groupStartOpen; - } - - if(this.config.group === true || this.config.group.groupHeader){ - data.groupHeader = this.table.options.groupHeader; - } - } - - return data; - } - - getPageConfig(){ - var data = {}; - - if(this.config.page){ - if(this.config.page === true || this.config.page.size){ - data.paginationSize = this.table.modules.page.getPageSize(); - } - - if(this.config.page === true || this.config.page.page){ - data.paginationInitialPage = this.table.modules.page.getPage(); - } - } - - return data; - } - - - //parse columns for data to store - parseColumns(columns){ - var definitions = [], - excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"]; - - columns.forEach((column) => { - var defStore = {}, - colDef = column.getDefinition(), - keys; - - if(column.isGroup){ - defStore.title = colDef.title; - defStore.columns = this.parseColumns(column.getColumns()); - }else { - defStore.field = column.getField(); - - if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(colDef); - keys.push("width"); - keys.push("visible"); - }else { - keys = this.config.columns; - } - - keys.forEach((key)=>{ - switch(key){ - case "width": - defStore.width = column.getWidth(); - break; - case "visible": - defStore.visible = column.visible; - break; - - default: - if(typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1){ - defStore[key] = colDef[key]; - } - } - }); - } - - definitions.push(defStore); - }); - - return definitions; - } - } - - Persistence.moduleName = "persistence"; - - Persistence.moduleInitOrder = -10; - - //load defaults - Persistence.readers = defaultReaders; - Persistence.writers = defaultWriters; - - class Popup$1 extends Module{ - - constructor(table){ - super(table); - - this.columnSubscribers = {}; - - this.registerTableOption("rowContextPopup", false); - this.registerTableOption("rowClickPopup", false); - this.registerTableOption("rowDblClickPopup", false); - this.registerTableOption("groupContextPopup", false); - this.registerTableOption("groupClickPopup", false); - this.registerTableOption("groupDblClickPopup", false); - - this.registerColumnOption("headerContextPopup"); - this.registerColumnOption("headerClickPopup"); - this.registerColumnOption("headerDblClickPopup"); - this.registerColumnOption("headerPopup"); - this.registerColumnOption("headerPopupIcon"); - this.registerColumnOption("contextPopup"); - this.registerColumnOption("clickPopup"); - this.registerColumnOption("dblClickPopup"); - - this.registerComponentFunction("cell", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("column", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("row", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("group", "popup", this._componentPopupCall.bind(this)); - - } - - initialize(){ - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - _componentPopupCall(component, contents, position){ - this.loadPopupEvent(contents, null, component, position); - } - - initializeRowWatchers(){ - if(this.table.options.rowContextPopup){ - this.subscribe("row-contextmenu", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - this.table.on("rowTapHold", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - } - - if(this.table.options.rowClickPopup){ - this.subscribe("row-click", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup)); - } - - if(this.table.options.rowDblClickPopup){ - this.subscribe("row-dblclick", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextPopup){ - this.subscribe("group-contextmenu", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - this.table.on("groupTapHold", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - } - - if(this.table.options.groupClickPopup){ - this.subscribe("group-click", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup)); - } - - if(this.table.options.groupDblClickPopup){ - this.subscribe("group-dblclick", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){ - this.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, "headerContextPopup"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextPopup); - this.table.on("headerTapHold", this.loadPopupTableColumnEvent.bind(this, "headerContextPopup")); - } - - if(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){ - this.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerClickPopup"); - this.subscribe("column-click", this.columnSubscribers.headerClickPopup); - - - }if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){ - this.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerDblClickPopup"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickPopup); - } - - if(def.headerPopup){ - this.initializeColumnHeaderPopup(column); - } - - //handle cell events - if(def.contextPopup && !this.columnSubscribers.contextPopup){ - this.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, "contextPopup"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextPopup); - this.table.on("cellTapHold", this.loadPopupTableCellEvent.bind(this, "contextPopup")); - } - - if(def.clickPopup && !this.columnSubscribers.clickPopup){ - this.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, "clickPopup"); - this.subscribe("cell-click", this.columnSubscribers.clickPopup); - } - - if(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){ - this.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, "dblClickPopup"); - this.subscribe("cell-click", this.columnSubscribers.dblClickPopup); - } - } - - initializeColumnHeaderPopup(column){ - var icon = column.definition.headerPopupIcon, - headerPopupEl; - - headerPopupEl = document.createElement("span"); - headerPopupEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerPopupEl.appendChild(icon); - }else { - headerPopupEl.innerHTML = icon; - } - }else { - headerPopupEl.innerHTML = "⋮"; - } - - headerPopupEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadPopupEvent(column.definition.headerPopup, e, column); - }); - - column.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild); - } - - loadPopupTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadPopupEvent(cell.column.definition[option], e, cell); - } - } - - loadPopupTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadPopupEvent(column.definition[option], e, column); - } - } - - loadPopupEvent(contents, e, component, position){ - var renderedCallback; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - contents = typeof contents == "function" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents; - - this.loadPopup(e, component, contents, renderedCallback, position); - } - - loadPopup(e, component, contents, renderedCallback, position){ - var touch = !(e instanceof MouseEvent), - contentsEl, popup; - - if(contents instanceof HTMLElement){ - contentsEl = contents; - }else { - contentsEl = document.createElement("div"); - contentsEl.innerHTML = contents; - } - - contentsEl.classList.add("tabulator-popup"); - - contentsEl.addEventListener("click", (e) =>{ - e.stopPropagation(); - }); - - if(!touch){ - e.preventDefault(); - } - - popup = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - popup.renderCallback(renderedCallback); - } - - if(e){ - popup.show(e); - }else { - popup.show(component.getElement(), position || "center"); - } - - - popup.hideOnBlur(() => { - this.dispatchExternal("popupClosed", component.getComponent()); - }); - - - - this.dispatchExternal("popupOpened", component.getComponent()); - } - } - - Popup$1.moduleName = "popup"; - - class Print extends Module{ - - constructor(table){ - super(table); - - this.element = false; - this.manualBlock = false; - this.beforeprintEventHandler = null; - this.afterprintEventHandler = null; - - this.registerTableOption("printAsHtml", false); //enable print as html - this.registerTableOption("printFormatter", false); //printing page formatter - this.registerTableOption("printHeader", false); //page header contents - this.registerTableOption("printFooter", false); //page footer contents - this.registerTableOption("printStyled", true); //enable print as html styling - this.registerTableOption("printRowRange", "visible"); //restrict print to visible rows only - this.registerTableOption("printConfig", {}); //print config options - - this.registerColumnOption("print"); - this.registerColumnOption("titlePrint"); - } - - initialize(){ - if(this.table.options.printAsHtml){ - this.beforeprintEventHandler = this.replaceTable.bind(this); - this.afterprintEventHandler = this.cleanup.bind(this); - - window.addEventListener("beforeprint", this.beforeprintEventHandler ); - window.addEventListener("afterprint", this.afterprintEventHandler); - this.subscribe("table-destroy", this.destroy.bind(this)); - } - - this.registerTableFunction("print", this.printFullscreen.bind(this)); - } - - destroy(){ - if(this.table.options.printAsHtml){ - window.removeEventListener( "beforeprint", this.beforeprintEventHandler ); - window.removeEventListener( "afterprint", this.afterprintEventHandler ); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - replaceTable(){ - if(!this.manualBlock){ - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-table"); - - this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print")); - - this.table.element.style.display = "none"; - - this.table.element.parentNode.insertBefore(this.element, this.table.element); - } - } - - cleanup(){ - document.body.classList.remove("tabulator-print-fullscreen-hide"); - - if(this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - this.table.element.style.display = ""; - } - } - - printFullscreen(visible, style, config){ - var scrollX = window.scrollX, - scrollY = window.scrollY, - headerEl = document.createElement("div"), - footerEl = document.createElement("div"), - tableEl = this.table.modules.export.generateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, "print"), - headerContent, footerContent; - - this.manualBlock = true; - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-fullscreen"); - - if(this.table.options.printHeader){ - headerEl.classList.add("tabulator-print-header"); - - headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader; - - if(typeof headerContent == "string"){ - headerEl.innerHTML = headerContent; - }else { - headerEl.appendChild(headerContent); - } - - this.element.appendChild(headerEl); - } - - this.element.appendChild(tableEl); - - if(this.table.options.printFooter){ - footerEl.classList.add("tabulator-print-footer"); - - footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter; - - - if(typeof footerContent == "string"){ - footerEl.innerHTML = footerContent; - }else { - footerEl.appendChild(footerContent); - } - - this.element.appendChild(footerEl); - } - - document.body.classList.add("tabulator-print-fullscreen-hide"); - document.body.appendChild(this.element); - - if(this.table.options.printFormatter){ - this.table.options.printFormatter(this.element, tableEl); - } - - window.print(); - - this.cleanup(); - - window.scrollTo(scrollX, scrollY); - - this.manualBlock = false; - } - } - - Print.moduleName = "print"; - - class ReactiveData extends Module{ - - constructor(table){ - super(table); - - this.data = false; - this.blocked = false; //block reactivity while performing update - this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with - this.currentVersion = 0; - - this.registerTableOption("reactiveData", false); //enable data reactivity - } - - initialize(){ - if(this.table.options.reactiveData){ - this.subscribe("cell-value-save-before", this.block.bind(this, "cellsave")); - this.subscribe("cell-value-save-after", this.unblock.bind(this, "cellsave")); - this.subscribe("row-data-save-before", this.block.bind(this, "rowsave")); - this.subscribe("row-data-save-after", this.unblock.bind(this, "rowsave")); - this.subscribe("row-data-init-after", this.watchRow.bind(this)); - this.subscribe("data-processing", this.watchData.bind(this)); - this.subscribe("table-destroy", this.unwatchData.bind(this)); - } - } - - watchData(data){ - var self = this, - version; - - this.currentVersion ++; - - version = this.currentVersion; - - this.unwatchData(); - - this.data = data; - - //override array push function - this.origFuncs.push = data.push; - - Object.defineProperty(this.data, "push", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-push"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, false); - }); - - result = self.origFuncs.push.apply(data, arguments); - - self.unblock("data-push"); - } - - return result; - } - }); - - //override array unshift function - this.origFuncs.unshift = data.unshift; - - Object.defineProperty(this.data, "unshift", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-unshift"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, true); - }); - - result = self.origFuncs.unshift.apply(data, arguments); - - self.unblock("data-unshift"); - } - - return result; - } - }); - - - //override array shift function - this.origFuncs.shift = data.shift; - - Object.defineProperty(this.data, "shift", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-shift"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[0]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.shift.call(data); - - self.unblock("data-shift"); - } - - return result; - } - }); - - //override array pop function - this.origFuncs.pop = data.pop; - - Object.defineProperty(this.data, "pop", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-pop"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.pop.call(data); - - self.unblock("data-pop"); - } - - return result; - } - }); - - - //override array splice function - this.origFuncs.splice = data.splice; - - Object.defineProperty(this.data, "splice", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - start = args[0] < 0 ? data.length + args[0] : args[0], - end = args[1], - newRows = args[2] ? args.slice(2) : false, - startRow, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-splice"); - //add new rows - if(newRows){ - startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false; - - if(startRow){ - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, startRow, true); - }); - }else { - newRows = newRows.slice().reverse(); - - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, false, true); - }); - } - } - - //delete removed rows - if(end !== 0){ - var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end); - - oldRows.forEach((rowData, i) => { - var row = self.table.rowManager.getRowFromDataObject(rowData); - - if(row){ - row.deleteActual(i !== oldRows.length - 1); - } - }); - } - - if(newRows || end !== 0){ - self.table.rowManager.reRenderInPosition(); - } - - result = self.origFuncs.splice.apply(data, arguments); - - self.unblock("data-splice"); - } - - return result ; - } - }); - } - - unwatchData(){ - if(this.data !== false){ - for(var key in this.origFuncs){ - Object.defineProperty(this.data, key, { - enumerable: true, - configurable:true, - writable:true, - value: this.origFuncs.key, - }); - } - } - } - - watchRow(row){ - var data = row.getData(); - - for(var key in data){ - this.watchKey(row, data, key); - } - - if(this.table.options.dataTree){ - this.watchTreeChildren(row); - } - } - - watchTreeChildren (row){ - var self = this, - childField = row.getData()[this.table.options.dataTreeChildField], - origFuncs = {}; - - if(childField){ - - origFuncs.push = childField.push; - - Object.defineProperty(childField, "push", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-push"); - - var result = origFuncs.push.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-push"); - } - - return result; - } - }); - - origFuncs.unshift = childField.unshift; - - Object.defineProperty(childField, "unshift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-unshift"); - - var result = origFuncs.unshift.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-unshift"); - } - - return result; - } - }); - - origFuncs.shift = childField.shift; - - Object.defineProperty(childField, "shift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-shift"); - - var result = origFuncs.shift.call(childField); - this.rebuildTree(row); - - self.unblock("tree-shift"); - } - - return result; - } - }); - - origFuncs.pop = childField.pop; - - Object.defineProperty(childField, "pop", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-pop"); - - var result = origFuncs.pop.call(childField); - this.rebuildTree(row); - - self.unblock("tree-pop"); - } - - return result; - } - }); - - origFuncs.splice = childField.splice; - - Object.defineProperty(childField, "splice", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-splice"); - - var result = origFuncs.splice.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-splice"); - } - - return result; - } - }); - } - } - - rebuildTree(row){ - this.table.modules.dataTree.initializeRow(row); - this.table.modules.dataTree.layoutRow(row); - this.table.rowManager.refreshActiveData("tree", false, true); - } - - watchKey(row, data, key){ - var self = this, - props = Object.getOwnPropertyDescriptor(data, key), - value = data[key], - version = this.currentVersion; - - Object.defineProperty(data, key, { - set: (newValue) => { - value = newValue; - if(!self.blocked && version === self.currentVersion){ - self.block("key"); - - var update = {}; - update[key] = newValue; - row.updateData(update); - - self.unblock("key"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - - if(props.get){ - props.get(); - } - - return value; - } - }); - } - - unwatchRow(row){ - var data = row.getData(); - - for(var key in data){ - Object.defineProperty(data, key, { - value:data[key], - }); - } - } - - block(key){ - if(!this.blocked){ - this.blocked = key; - } - } - - unblock(key){ - if(this.blocked === key){ - this.blocked = false; - } - } - } - - ReactiveData.moduleName = "reactiveData"; - - class ResizeColumns extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startX = false; - this.startWidth = false; - this.latestX = false; - this.handle = null; - this.initialNextColumn = null; - this.nextColumn = null; - - this.initialized = false; - this.registerColumnOption("resizable", true); - this.registerTableOption("resizableColumnFit", false); - } - - initialize(){ - this.subscribe("column-rendered", this.layoutColumnHeader.bind(this)); - } - - initializeEventWatchers(){ - if(!this.initialized){ - - this.subscribe("cell-rendered", this.layoutCellHandles.bind(this)); - this.subscribe("cell-delete", this.deInitializeComponent.bind(this)); - - this.subscribe("cell-height", this.resizeHandle.bind(this)); - this.subscribe("column-moved", this.columnLayoutUpdated.bind(this)); - - this.subscribe("column-hide", this.deInitializeColumn.bind(this)); - this.subscribe("column-show", this.columnLayoutUpdated.bind(this)); - this.subscribe("column-width", this.columnWidthUpdated.bind(this)); - - this.subscribe("column-delete", this.deInitializeComponent.bind(this)); - this.subscribe("column-height", this.resizeHandle.bind(this)); - - this.initialized = true; - } - } - - - layoutCellHandles(cell){ - if(cell.row.type === "row"){ - this.deInitializeComponent(cell); - this.initializeColumn("cell", cell, cell.column, cell.element); - } - } - - layoutColumnHeader(column){ - if(column.definition.resizable){ - this.initializeEventWatchers(); - this.deInitializeComponent(column); - this.initializeColumn("header", column, column, column.element); - } - } - - columnLayoutUpdated(column){ - var prev = column.prevColumn(); - - this.reinitializeColumn(column); - - if(prev){ - this.reinitializeColumn(prev); - } - } - - columnWidthUpdated(column){ - if(column.modules.frozen){ - if(this.table.modules.frozenColumns.leftColumns.includes(column)){ - this.table.modules.frozenColumns.leftColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - }else if(this.table.modules.frozenColumns.rightColumns.includes(column)){ - this.table.modules.frozenColumns.rightColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - } - } - } - - frozenColumnOffset(column){ - var offset = false; - - if(column.modules.frozen){ - offset = column.modules.frozen.marginValue; - - if(column.modules.frozen.position === "left"){ - offset += column.getWidth() - 3; - }else { - if(offset){ - offset -= 3; - } - } - } - - return offset !== false ? offset + "px" : false; - } - - reinitializeColumn(column){ - var frozenOffset = this.frozenColumnOffset(column); - - column.cells.forEach((cell) => { - if(cell.modules.resize && cell.modules.resize.handleEl){ - if(frozenOffset){ - cell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - cell.modules.resize.handleEl.style["z-index"] = 11; - } - - cell.element.after(cell.modules.resize.handleEl); - } - }); - - if(column.modules.resize && column.modules.resize.handleEl){ - if(frozenOffset){ - column.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - } - - column.element.after(column.modules.resize.handleEl); - } - } - - initializeColumn(type, component, column, element){ - var self = this, - variableHeight = false, - mode = column.definition.resizable, - config = {}, - nearestColumn = column.getLastColumn(); - - //set column resize mode - if(type === "header"){ - variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight; - config = {variableHeight:variableHeight}; - } - - if((mode === true || mode == type) && this._checkResizability(nearestColumn)){ - - var handle = document.createElement('span'); - handle.className = "tabulator-col-resize-handle"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startColumn = column; - self.initialNextColumn = self.nextColumn = nearestColumn.nextColumn(); - self._mouseDown(e, nearestColumn, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - //resize column on double click - handle.addEventListener("dblclick", (e) => { - var oldWidth = nearestColumn.getWidth(); - - e.stopPropagation(); - nearestColumn.reinitializeWidth(true); - - if(oldWidth !== nearestColumn.getWidth()){ - self.dispatch("column-resized", nearestColumn); - self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent()); - } - }); - - if(column.modules.frozen){ - handle.style.position = "sticky"; - handle.style[column.modules.frozen.position] = this.frozenColumnOffset(column); - } - - config.handleEl = handle; - - if(element.parentNode && column.visible){ - element.after(handle); - } - } - - component.modules.resize = config; - } - - deInitializeColumn(column){ - this.deInitializeComponent(column); - - column.cells.forEach((cell) => { - this.deInitializeComponent(cell); - }); - } - - deInitializeComponent(component){ - var handleEl; - - if(component.modules.resize){ - handleEl = component.modules.resize.handleEl; - - if(handleEl && handleEl.parentElement){ - handleEl.parentElement.removeChild(handleEl); - } - } - } - - resizeHandle(component, height){ - if(component.modules.resize && component.modules.resize.handleEl){ - component.modules.resize.handleEl.style.height = height; - } - } - - _checkResizability(column){ - return column.definition.resizable; - } - - _mouseDown(e, column, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - var x = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX, - startDiff = x - self.startX, - moveDiff = x - self.latestX, - blockedBefore, blockedAfter; - - self.latestX = x; - - if(self.table.rtl){ - startDiff = -startDiff; - moveDiff = -moveDiff; - } - - blockedBefore = column.width == column.minWidth || column.width == column.maxWidth; - - column.setWidth(self.startWidth + startDiff); - - blockedAfter = column.width == column.minWidth || column.width == column.maxWidth; - - if(moveDiff < 0){ - self.nextColumn = self.initialNextColumn; - } - - if(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){ - let colWidth = self.nextColumn.getWidth(); - - if(moveDiff > 0){ - if(colWidth <= self.nextColumn.minWidth){ - self.nextColumn = self.nextColumn.nextColumn(); - } - } - - if(self.nextColumn){ - self.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff); - } - } - - self.table.columnManager.rerenderColumns(true); - - if(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - } - - function mouseUp(e){ - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = false; - } - - if(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - - document.body.removeEventListener("mouseup", mouseUp); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - if(self.startWidth !== column.getWidth()){ - self.table.columnManager.verticalAlignHeaders(); - - self.dispatch("column-resized", column); - self.table.externalEvents.dispatch("columnResized", column.getComponent()); - } - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = true; - } - - self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX; - self.latestX = self.startX; - self.startWidth = column.getWidth(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } - } - - ResizeColumns.moduleName = "resizeColumns"; - - class ResizeRows extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startY = false; - this.startHeight = false; - this.handle = null; - this.prevHandle = null; - - this.registerTableOption("resizableRows", false); //resizable rows - } - - initialize(){ - if(this.table.options.resizableRows){ - this.subscribe("row-layout-after", this.initializeRow.bind(this)); - } - } - - initializeRow(row){ - var self = this, - rowEl = row.getElement(); - - var handle = document.createElement('div'); - handle.className = "tabulator-row-resize-handle"; - - var prevHandle = document.createElement('div'); - prevHandle.className = "tabulator-row-resize-handle prev"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startRow = row; - self._mouseDown(e, row, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - prevHandle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var prevHandleDown = function(e){ - var prevRow = self.table.rowManager.prevDisplayRow(row); - - if(prevRow){ - self.startRow = prevRow; - self._mouseDown(e, prevRow, prevHandle); - } - }; - - prevHandle.addEventListener("mousedown",prevHandleDown); - prevHandle.addEventListener("touchstart",prevHandleDown, {passive: true}); - - rowEl.appendChild(handle); - rowEl.appendChild(prevHandle); - } - - _mouseDown(e, row, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY)); - } - - function mouseUp(e){ - - // //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = false; - // } - - document.body.removeEventListener("mouseup", mouseMove); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - self.dispatchExternal("rowResized", row.getComponent()); - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = true; - // } - - self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY; - self.startHeight = row.getHeight(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } - } - - ResizeRows.moduleName = "resizeRows"; - - class ResizeTable extends Module{ - - constructor(table){ - super(table); - - this.binding = false; - this.visibilityObserver = false; - this.resizeObserver = false; - this.containerObserver = false; - - this.tableHeight = 0; - this.tableWidth = 0; - this.containerHeight = 0; - this.containerWidth = 0; - - this.autoResize = false; - - this.visible = false; - - this.initialized = false; - this.initialRedraw = false; - - this.registerTableOption("autoResize", true); //auto resize table - } - - initialize(){ - if(this.table.options.autoResize){ - var table = this.table, - tableStyle; - - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - if(typeof IntersectionObserver !== "undefined" && typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual"){ - - this.initializeVisibilityObserver(); - - this.autoResize = true; - - this.resizeObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){ - this.tableHeight = nodeHeight; - this.tableWidth = nodeWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - this.redrawTable(); - } - } - }); - - this.resizeObserver.observe(table.element); - - tableStyle = window.getComputedStyle(table.element); - - if(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))){ - - this.containerObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){ - this.containerHeight = nodeHeight; - this.containerWidth = nodeWidth; - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - } - - this.redrawTable(); - } - }); - - this.containerObserver.observe(this.table.element.parentNode); - } - - this.subscribe("table-resize", this.tableResized.bind(this)); - - }else { - this.binding = function(){ - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - table.columnManager.rerenderColumns(true); - table.redraw(); - } - }; - - window.addEventListener("resize", this.binding); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - } - - initializeVisibilityObserver(){ - this.visibilityObserver = new IntersectionObserver((entries) => { - this.visible = entries[0].isIntersecting; - - if(!this.initialized){ - this.initialized = true; - this.initialRedraw = !this.visible; - }else { - if(this.visible){ - this.redrawTable(this.initialRedraw); - this.initialRedraw = false; - } - } - }); - - this.visibilityObserver.observe(this.table.element); - } - - redrawTable(force){ - if(this.initialized && this.visible){ - this.table.columnManager.rerenderColumns(true); - this.table.redraw(force); - } - } - - tableResized(){ - this.table.rowManager.redraw(); - } - - clearBindings(){ - if(this.binding){ - window.removeEventListener("resize", this.binding); - } - - if(this.resizeObserver){ - this.resizeObserver.unobserve(this.table.element); - } - - if(this.visibilityObserver){ - this.visibilityObserver.unobserve(this.table.element); - } - - if(this.containerObserver){ - this.containerObserver.unobserve(this.table.element.parentNode); - } - } - } - - ResizeTable.moduleName = "resizeTable"; - - class ResponsiveLayout extends Module{ - - constructor(table){ - super(table); - - this.columns = []; - this.hiddenColumns = []; - this.mode = ""; - this.index = 0; - this.collapseFormatter = []; - this.collapseStartOpen = true; - this.collapseHandleColumn = false; - - this.registerTableOption("responsiveLayout", false); //responsive layout flags - this.registerTableOption("responsiveLayoutCollapseStartOpen", true); //start showing collapsed data - this.registerTableOption("responsiveLayoutCollapseUseFormatters", true); //responsive layout collapse formatter - this.registerTableOption("responsiveLayoutCollapseFormatter", false); //responsive layout collapse formatter - - this.registerColumnOption("responsive"); - } - - //generate responsive columns list - initialize(){ - if(this.table.options.responsiveLayout){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.updateColumnVisibility.bind(this)); - this.subscribe("column-hide", this.updateColumnVisibility.bind(this)); - this.subscribe("columns-loaded", this.initializeResponsivity.bind(this)); - this.subscribe("column-moved", this.initializeResponsivity.bind(this)); - this.subscribe("column-add", this.initializeResponsivity.bind(this)); - this.subscribe("column-delete", this.initializeResponsivity.bind(this)); - - this.subscribe("table-redrawing", this.tableRedraw.bind(this)); - - if(this.table.options.responsiveLayout === "collapse"){ - this.subscribe("row-data-changed", this.generateCollapsedRowContent.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout", this.layoutRow.bind(this)); - } - } - } - - tableRedraw(force){ - if(["fitColumns", "fitDataStretch"].indexOf(this.layoutMode()) === -1){ - if(!force){ - this.update(); - } - } - } - - initializeResponsivity(){ - var columns = []; - - this.mode = this.table.options.responsiveLayout; - this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData; - this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen; - this.hiddenColumns = []; - - //determine level of responsivity for each column - this.table.columnManager.columnsByIndex.forEach((column, i) => { - if(column.modules.responsive){ - if(column.modules.responsive.order && column.modules.responsive.visible){ - column.modules.responsive.index = i; - columns.push(column); - - if(!column.visible && this.mode === "collapse"){ - this.hiddenColumns.push(column); - } - } - } - }); - - //sort list by responsivity - columns = columns.reverse(); - columns = columns.sort((a, b) => { - var diff = b.modules.responsive.order - a.modules.responsive.order; - return diff || (b.modules.responsive.index - a.modules.responsive.index); - }); - - this.columns = columns; - - if(this.mode === "collapse"){ - this.generateCollapsedContent(); - } - - //assign collapse column - for (let col of this.table.columnManager.columnsByIndex){ - if(col.definition.formatter == "responsiveCollapse"){ - this.collapseHandleColumn = col; - break; - } - } - - if(this.collapseHandleColumn){ - if(this.hiddenColumns.length){ - this.collapseHandleColumn.show(); - }else { - this.collapseHandleColumn.hide(); - } - } - } - - //define layout information - initializeColumn(column){ - var def = column.getDefinition(); - - column.modules.responsive = {order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible:def.visible === false ? false : true}; - } - - initializeRow(row){ - var el; - - if(row.type !== "calc"){ - el = document.createElement("div"); - el.classList.add("tabulator-responsive-collapse"); - - row.modules.responsiveLayout = { - element:el, - open:this.collapseStartOpen, - }; - - if(!this.collapseStartOpen){ - el.style.display = 'none'; - } - } - } - - layoutRow(row){ - var rowEl = row.getElement(); - - if(row.modules.responsiveLayout){ - rowEl.appendChild(row.modules.responsiveLayout.element); - this.generateCollapsedRowContent(row); - } - } - - //update column visibility - updateColumnVisibility(column, responsiveToggle){ - if(!responsiveToggle && column.modules.responsive){ - column.modules.responsive.visible = column.visible; - this.initializeResponsivity(); - } - } - - hideColumn(column){ - var colCount = this.hiddenColumns.length; - - column.hide(false, true); - - if(this.mode === "collapse"){ - this.hiddenColumns.unshift(column); - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !colCount){ - this.collapseHandleColumn.show(); - } - } - } - - showColumn(column){ - var index; - - column.show(false, true); - //set column width to prevent calculation loops on uninitialized columns - column.setWidth(column.getWidth()); - - if(this.mode === "collapse"){ - index = this.hiddenColumns.indexOf(column); - - if(index > -1){ - this.hiddenColumns.splice(index, 1); - } - - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !this.hiddenColumns.length){ - this.collapseHandleColumn.hide(); - } - } - } - - //redraw columns to fit space - update(){ - var working = true; - - while(working){ - - let width = this.table.modules.layout.getMode() == "fitColumns" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth(); - - let diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width; - - if(diff < 0){ - //table is too wide - let column = this.columns[this.index]; - - if(column){ - this.hideColumn(column); - this.index ++; - }else { - working = false; - } - - }else { - - //table has spare space - let column = this.columns[this.index -1]; - - if(column){ - if(diff > 0){ - if(diff >= column.getWidth()){ - this.showColumn(column); - this.index --; - }else { - working = false; - } - }else { - working = false; - } - }else { - working = false; - } - } - - if(!this.table.rowManager.activeRowsCount){ - this.table.rowManager.renderEmptyScroll(); - } - } - } - - generateCollapsedContent(){ - var rows = this.table.rowManager.getDisplayRows(); - - rows.forEach((row) => { - this.generateCollapsedRowContent(row); - }); - } - - generateCollapsedRowContent(row){ - var el, contents; - - if(row.modules.responsiveLayout){ - el = row.modules.responsiveLayout.element; - - while(el.firstChild) el.removeChild(el.firstChild); - - contents = this.collapseFormatter(this.generateCollapsedRowData(row)); - if(contents){ - el.appendChild(contents); - } - } - } - - generateCollapsedRowData(row){ - var data = row.getData(), - output = [], - mockCellComponent; - - this.hiddenColumns.forEach((column) => { - var value = column.getFieldValue(data); - - if(column.definition.title && column.field){ - if(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){ - - mockCellComponent = { - value:false, - data:{}, - getValue:function(){ - return value; - }, - getData:function(){ - return data; - }, - getType:function(){ - return "cell"; - }, - getElement:function(){ - return document.createElement("div"); - }, - getRow:function(){ - return row.getComponent(); - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - }; - - function onRendered(callback){ - callback(); - } - - output.push({ - field: column.field, - title: column.definition.title, - value: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered) - }); - }else { - output.push({ - field: column.field, - title: column.definition.title, - value: value - }); - } - } - }); - - return output; - } - - formatCollapsedData(data){ - var list = document.createElement("table"); - - data.forEach(function(item){ - var row = document.createElement("tr"); - var titleData = document.createElement("td"); - var valueData = document.createElement("td"); - var node_content; - - var titleHighlight = document.createElement("strong"); - titleData.appendChild(titleHighlight); - this.langBind("columns|" + item.field, function(text){ - titleHighlight.innerHTML = text || item.title; - }); - - if(item.value instanceof Node){ - node_content = document.createElement("div"); - node_content.appendChild(item.value); - valueData.appendChild(node_content); - }else { - valueData.innerHTML = item.value; - } - - row.appendChild(titleData); - row.appendChild(valueData); - list.appendChild(row); - }, this); - - return Object.keys(data).length ? list : ""; - } - } - - ResponsiveLayout.moduleName = "responsiveLayout"; - - class SelectRow extends Module{ - - constructor(table){ - super(table); - - this.selecting = false; //flag selecting in progress - this.lastClickedRow = false; //last clicked row - this.selectPrev = []; //hold previously selected element for drag drop selection - this.selectedRows = []; //hold selected rows - this.headerCheckboxElement = null; // hold header select element - - this.registerTableOption("selectableRows", "highlight"); //highlight rows on hover - this.registerTableOption("selectableRowsRangeMode", "drag"); //highlight rows on hover - this.registerTableOption("selectableRowsRollingSelection", true); //roll selection once maximum number of selectable rows is reached - this.registerTableOption("selectableRowsPersistence", true); // maintain selection when table view is updated - this.registerTableOption("selectableRowsCheck", function(data, row){return true;}); //check whether row is selectable - - this.registerTableFunction("selectRow", this.selectRows.bind(this)); - this.registerTableFunction("deselectRow", this.deselectRows.bind(this)); - this.registerTableFunction("toggleSelectRow", this.toggleRow.bind(this)); - this.registerTableFunction("getSelectedRows", this.getSelectedRows.bind(this)); - this.registerTableFunction("getSelectedData", this.getSelectedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "select", this.selectRows.bind(this)); - this.registerComponentFunction("row", "deselect", this.deselectRows.bind(this)); - this.registerComponentFunction("row", "toggleSelect", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "isSelected", this.isRowSelected.bind(this)); - } - - initialize(){ - - this.deprecatedOptionsCheck(); - - if(this.table.options.selectableRows === "highlight" && this.table.options.selectableRange){ - this.table.options.selectableRows = false; - } - - if(this.table.options.selectableRows !== false){ - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-deleting", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clearSelectionData.bind(this)); - this.subscribe("rows-retrieve", this.rowRetrieve.bind(this)); - - if(this.table.options.selectableRows && !this.table.options.selectableRowsPersistence){ - this.subscribe("data-refreshing", this.deselectRows.bind(this)); - } - } - } - - deprecatedOptionsCheck(){ - this.deprecationCheck("selectable", "selectableRows", true); - this.deprecationCheck("selectableRollingSelection", "selectableRowsRollingSelection", true); - this.deprecationCheck("selectableRangeMode", "selectableRowsRangeMode", true); - this.deprecationCheck("selectablePersistence", "selectableRowsPersistence", true); - this.deprecationCheck("selectableCheck", "selectableRowsCheck", true); - } - - rowRetrieve(type, prevValue){ - return type === "selected" ? this.selectedRows : prevValue; - } - - rowDeleted(row){ - this._deselectRow(row, true); - } - - clearSelectionData(silent){ - var prevSelected = this.selectedRows.length; - - this.selecting = false; - this.lastClickedRow = false; - this.selectPrev = []; - this.selectedRows = []; - - if(prevSelected && silent !== true){ - this._rowSelectionChanged(); - } - } - - initializeRow(row){ - var self = this, - selectable = self.checkRowSelectability(row), - element = row.getElement(); - - // trigger end of row selection - var endSelect = function(){ - - setTimeout(function(){ - self.selecting = false; - }, 50); - - document.body.removeEventListener("mouseup", endSelect); - }; - - row.modules.select = {selected:false}; - - element.classList.toggle("tabulator-selectable", selectable); - element.classList.toggle("tabulator-unselectable", !selectable); - - //set row selection class - if(self.checkRowSelectability(row)){ - if(self.table.options.selectableRows && self.table.options.selectableRows != "highlight"){ - if(self.table.options.selectableRowsRangeMode === "click"){ - element.addEventListener("click", this.handleComplexRowClick.bind(this, row)); - }else { - element.addEventListener("click", function(e){ - if(!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()){ - self.table._clearSelection(); - } - - if(!self.selecting){ - self.toggleRow(row); - } - }); - - element.addEventListener("mousedown", function(e){ - if(e.shiftKey){ - self.table._clearSelection(); - - self.selecting = true; - - self.selectPrev = []; - - document.body.addEventListener("mouseup", endSelect); - document.body.addEventListener("keyup", endSelect); - - self.toggleRow(row); - - return false; - } - }); - - element.addEventListener("mouseenter", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.toggleRow(row); - - if(self.selectPrev[1] == row){ - self.toggleRow(self.selectPrev[0]); - } - } - }); - - element.addEventListener("mouseout", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.selectPrev.unshift(row); - } - }); - } - } - } - } - - handleComplexRowClick(row, e){ - if(e.shiftKey){ - this.table._clearSelection(); - this.lastClickedRow = this.lastClickedRow || row; - - var lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow); - var rowIdx = this.table.rowManager.getDisplayRowIndex(row); - - var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx; - var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx; - - var rows = this.table.rowManager.getDisplayRows().slice(0); - var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1); - - if(e.ctrlKey || e.metaKey){ - toggledRows.forEach((toggledRow)=>{ - if(toggledRow !== this.lastClickedRow){ - - if(this.table.options.selectableRows !== true && !this.isRowSelected(row)){ - if(this.selectedRows.length < this.table.options.selectableRows){ - this.toggleRow(toggledRow); - } - }else { - this.toggleRow(toggledRow); - } - } - }); - this.lastClickedRow = row; - }else { - this.deselectRows(undefined, true); - - if(this.table.options.selectableRows !== true){ - if(toggledRows.length > this.table.options.selectableRows){ - toggledRows = toggledRows.slice(0, this.table.options.selectableRows); - } - } - - this.selectRows(toggledRows); - } - this.table._clearSelection(); - } - else if(e.ctrlKey || e.metaKey){ - this.toggleRow(row); - this.lastClickedRow = row; - }else { - this.deselectRows(undefined, true); - this.selectRows(row); - this.lastClickedRow = row; - } - } - - checkRowSelectability(row){ - if(row && row.type === "row"){ - return this.table.options.selectableRowsCheck.call(this.table, row.getComponent()); - } - - return false; - } - - //toggle row selection - toggleRow(row){ - if(this.checkRowSelectability(row)){ - if(row.modules.select && row.modules.select.selected){ - this._deselectRow(row); - }else { - this._selectRow(row); - } - } - } - - //select a number of rows - selectRows(rows){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = this.table.rowManager.rows; - break; - - case "number": - rowMatch = this.table.rowManager.findRow(rows); - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._selectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(false, changes); - } - }else { - if(rowMatch){ - this._selectRow(rowMatch, false, true); - } - } - } - - //select an individual row - _selectRow(rowInfo, silent, force){ - //handle max row count - if(!isNaN(this.table.options.selectableRows) && this.table.options.selectableRows !== true && !force){ - if(this.selectedRows.length >= this.table.options.selectableRows){ - if(this.table.options.selectableRowsRollingSelection){ - this._deselectRow(this.selectedRows[0]); - }else { - return false; - } - } - } - - var row = this.table.rowManager.findRow(rowInfo); - - if(row){ - if(this.selectedRows.indexOf(row) == -1){ - row.getElement().classList.add("tabulator-selected"); - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = true; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = true; - } - - this.selectedRows.push(row); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, true); - } - - this.dispatchExternal("rowSelected", row.getComponent()); - - this._rowSelectionChanged(silent, row); - - return row; - } - }else { - if(!silent){ - console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - isRowSelected(row){ - return this.selectedRows.indexOf(row) !== -1; - } - - //deselect a number of rows - deselectRows(rows, silent){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = Object.assign([], this.selectedRows); - break; - - case "number": - rowMatch = this.table.rowManager.findRow(rows); - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._deselectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(silent, [], changes); - } - }else { - if(rowMatch){ - this._deselectRow(rowMatch, silent, true); - } - } - } - - //deselect an individual row - _deselectRow(rowInfo, silent){ - var self = this, - row = self.table.rowManager.findRow(rowInfo), - index, element; - - if(row){ - index = self.selectedRows.findIndex(function(selectedRow){ - return selectedRow == row; - }); - - if(index > -1){ - - element = row.getElement(); - - if(element){ - element.classList.remove("tabulator-selected"); - } - - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = false; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = false; - } - self.selectedRows.splice(index, 1); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, false); - } - - this.dispatchExternal("rowDeselected", row.getComponent()); - - self._rowSelectionChanged(silent, undefined, row); - - return row; - } - }else { - if(!silent){ - console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - getSelectedData(){ - var data = []; - - this.selectedRows.forEach(function(row){ - data.push(row.getData()); - }); - - return data; - } - - getSelectedRows(){ - var rows = []; - - this.selectedRows.forEach(function(row){ - rows.push(row.getComponent()); - }); - - return rows; - } - - _rowSelectionChanged(silent, selected = [], deselected = []){ - if(this.headerCheckboxElement){ - if(this.selectedRows.length === 0){ - this.headerCheckboxElement.checked = false; - this.headerCheckboxElement.indeterminate = false; - } else if(this.table.rowManager.rows.length === this.selectedRows.length){ - this.headerCheckboxElement.checked = true; - this.headerCheckboxElement.indeterminate = false; - } else { - this.headerCheckboxElement.indeterminate = true; - this.headerCheckboxElement.checked = false; - } - } - - if(!silent){ - if(!Array.isArray(selected)){ - selected = [selected]; - } - - selected = selected.map(row => row.getComponent()); - - if(!Array.isArray(deselected)){ - deselected = [deselected]; - } - - deselected = deselected.map(row => row.getComponent()); - - this.dispatchExternal("rowSelectionChanged", this.getSelectedData(), this.getSelectedRows(), selected, deselected); - } - } - - registerRowSelectCheckbox (row, element) { - if(!row._row.modules.select){ - row._row.modules.select = {}; - } - - row._row.modules.select.checkboxEl = element; - } - - registerHeaderSelectCheckbox (element) { - this.headerCheckboxElement = element; - } - - childRowSelection(row, select){ - var children = this.table.modules.dataTree.getChildren(row, true); - - if(select){ - for(let child of children){ - this._selectRow(child, true); - } - }else { - for(let child of children){ - this._deselectRow(child, true); - } - } - } - } - - SelectRow.moduleName = "selectRow"; - - //sort numbers - function number$1(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var decimal = params.decimalSeparator; - var thousand = params.thousandSeparator; - var emptyAlign = 0; - - a = String(a); - b = String(b); - - if(thousand){ - a = a.split(thousand).join(""); - b = b.split(thousand).join(""); - } - - if(decimal){ - a = a.split(decimal).join("."); - b = b.split(decimal).join("."); - } - - a = parseFloat(a); - b = parseFloat(b); - - //handle non numeric values - if(isNaN(a)){ - emptyAlign = isNaN(b) ? 0 : -1; - }else if(isNaN(b)){ - emptyAlign = 1; - }else { - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - } - - //sort strings - function string(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - var locale; - - //handle empty values - if(!a){ - emptyAlign = !b ? 0 : -1; - }else if(!b){ - emptyAlign = 1; - }else { - //compare valid values - switch(typeof params.locale){ - case "boolean": - if(params.locale){ - locale = this.langLocale(); - } - break; - case "string": - locale = params.locale; - break; - } - - return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - } - - //sort datetime - function datetime$2(a, b, aRow, bRow, column, dir, params){ - var DT = window.DateTime || luxon.DateTime; - var format = params.format || "dd/MM/yyyy HH:mm:ss", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - if(typeof DT != "undefined"){ - if(!DT.isDateTime(a)){ - if(format === "iso"){ - a = DT.fromISO(String(a)); - }else { - a = DT.fromFormat(String(a), format); - } - } - - if(!DT.isDateTime(b)){ - if(format === "iso"){ - b = DT.fromISO(String(b)); - }else { - b = DT.fromFormat(String(b), format); - } - } - - if(!a.isValid){ - emptyAlign = !b.isValid ? 0 : -1; - }else if(!b.isValid){ - emptyAlign = 1; - }else { - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - - }else { - console.error("Sort Error - 'datetime' sorter is dependant on luxon.js"); - } - } - - //sort date - function date$1(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "dd/MM/yyyy"; - } - - return datetime$2.call(this, a, b, aRow, bRow, column, dir, params); - } - - //sort times - function time$1(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "HH:mm"; - } - - return datetime$2.call(this, a, b, aRow, bRow, column, dir, params); - } - - //sort booleans - function boolean(a, b, aRow, bRow, column, dir, params){ - var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0; - var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0; - - return el1 - el2; - } - - //sort if element contains any data - function array(a, b, aRow, bRow, column, dir, params){ - var type = params.type || "length", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - function calc(value){ - var result; - - switch(type){ - case "length": - result = value.length; - break; - - case "sum": - result = value.reduce(function(c, d){ - return c + d; - }); - break; - - case "max": - result = Math.max.apply(null, value) ; - break; - - case "min": - result = Math.min.apply(null, value) ; - break; - - case "avg": - result = value.reduce(function(c, d){ - return c + d; - }) / value.length; - break; - } - - return result; - } - - //handle non array values - if(!Array.isArray(a)){ - emptyAlign = !Array.isArray(b) ? 0 : -1; - }else if(!Array.isArray(b)){ - emptyAlign = 1; - }else { - return calc(b) - calc(a); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - } - - //sort if element contains any data - function exists(a, b, aRow, bRow, column, dir, params){ - var el1 = typeof a == "undefined" ? 0 : 1; - var el2 = typeof b == "undefined" ? 0 : 1; - - return el1 - el2; - } - - //sort alpha numeric strings - function alphanum(as, bs, aRow, bRow, column, dir, params){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else { - - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - } - - var defaultSorters = { - number:number$1, - string:string, - date:date$1, - time:time$1, - datetime:datetime$2, - boolean:boolean, - array:array, - exists:exists, - alphanum:alphanum - }; - - class Sort extends Module{ - - constructor(table){ - super(table); - - this.sortList = []; //holder current sort - this.changed = false; //has the sort changed since last render - - this.registerTableOption("sortMode", "local"); //local or remote sorting - - this.registerTableOption("initialSort", false); //initial sorting criteria - this.registerTableOption("columnHeaderSortMulti", true); //multiple or single column sorting - this.registerTableOption("sortOrderReverse", false); //reverse internal sort ordering - this.registerTableOption("headerSortElement", "
        "); //header sort element - this.registerTableOption("headerSortClickElement", "header"); //element which triggers sort when clicked - - this.registerColumnOption("sorter"); - this.registerColumnOption("sorterParams"); - - this.registerColumnOption("headerSort", true); - this.registerColumnOption("headerSortStartingDir"); - this.registerColumnOption("headerSortTristate"); - - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.registerDataHandler(this.sort.bind(this), 20); - - this.registerTableFunction("setSort", this.userSetSort.bind(this)); - this.registerTableFunction("getSorters", this.getSort.bind(this)); - this.registerTableFunction("clearSort", this.clearSort.bind(this)); - - if(this.table.options.sortMode === "remote"){ - this.subscribe("data-params", this.remoteSortParams.bind(this)); - } - } - - tableBuilt(){ - if(this.table.options.initialSort){ - this.setSort(this.table.options.initialSort); - } - } - - remoteSortParams(data, config, silent, params){ - var sorters = this.getSort(); - - sorters.forEach((item) => { - delete item.column; - }); - - params.sort = sorters; - - return params; - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetSort(sortList, dir){ - this.setSort(sortList, dir); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - clearSort(){ - this.clear(); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //initialize column header for sorting - initializeColumn(column){ - var sorter = false, - colEl, - arrowEl; - - switch(typeof column.definition.sorter){ - case "string": - if(Sort.sorters[column.definition.sorter]){ - sorter = Sort.sorters[column.definition.sorter]; - }else { - console.warn("Sort Error - No such sorter found: ", column.definition.sorter); - } - break; - - case "function": - sorter = column.definition.sorter; - break; - } - - column.modules.sort = { - sorter:sorter, dir:"none", - params:column.definition.sorterParams || {}, - startingDir:column.definition.headerSortStartingDir || "asc", - tristate: column.definition.headerSortTristate, - }; - - if(column.definition.headerSort !== false){ - - colEl = column.getElement(); - - colEl.classList.add("tabulator-sortable"); - - arrowEl = document.createElement("div"); - arrowEl.classList.add("tabulator-col-sorter"); - - switch(this.table.options.headerSortClickElement){ - case "icon": - arrowEl.classList.add("tabulator-col-sorter-element"); - break; - case "header": - colEl.classList.add("tabulator-col-sorter-element"); - break; - default: - colEl.classList.add("tabulator-col-sorter-element"); - break; - } - - switch(this.table.options.headerSortElement){ - case "function": - //do nothing - break; - - case "object": - arrowEl.appendChild(this.table.options.headerSortElement); - break; - - default: - arrowEl.innerHTML = this.table.options.headerSortElement; - } - - //create sorter arrow - column.titleHolderElement.appendChild(arrowEl); - - column.modules.sort.element = arrowEl; - - this.setColumnHeaderSortIcon(column, "none"); - - if(this.table.options.headerSortClickElement === "icon"){ - arrowEl.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - } - - //sort on click - (this.table.options.headerSortClickElement === "icon" ? arrowEl : colEl).addEventListener("click", (e) => { - var dir = "", - sorters=[], - match = false; - - if(column.modules.sort){ - if(column.modules.sort.tristate){ - if(column.modules.sort.dir == "none"){ - dir = column.modules.sort.startingDir; - }else { - if(column.modules.sort.dir == column.modules.sort.startingDir){ - dir = column.modules.sort.dir == "asc" ? "desc" : "asc"; - }else { - dir = "none"; - } - } - }else { - switch(column.modules.sort.dir){ - case "asc": - dir = "desc"; - break; - - case "desc": - dir = "asc"; - break; - - default: - dir = column.modules.sort.startingDir; - } - } - - if (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) { - sorters = this.getSort(); - - match = sorters.findIndex((sorter) => { - return sorter.field === column.getField(); - }); - - if(match > -1){ - sorters[match].dir = dir; - - match = sorters.splice(match, 1)[0]; - if(dir != "none"){ - sorters.push(match); - } - }else { - if(dir != "none"){ - sorters.push({column:column, dir:dir}); - } - } - - //add to existing sort - this.setSort(sorters); - }else { - if(dir == "none"){ - this.clear(); - }else { - //sort by column only - this.setSort(column, dir); - } - - } - - // this.table.rowManager.sorterRefresh(!this.sortList.length); - this.refreshSort(); - } - }); - } - } - - refreshSort(){ - if(this.table.options.sortMode === "remote"){ - this.reloadData(null, false, false); - }else { - this.refreshData(true); - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the sorters have changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //return current sorters - getSort(){ - var self = this, - sorters = []; - - self.sortList.forEach(function(item){ - if(item.column){ - sorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir}); - } - }); - - return sorters; - } - - //change sort list and trigger sort - setSort(sortList, dir){ - var self = this, - newSortList = []; - - if(!Array.isArray(sortList)){ - sortList = [{column: sortList, dir:dir}]; - } - - sortList.forEach(function(item){ - var column; - - column = self.table.columnManager.findColumn(item.column); - - if(column){ - item.column = column; - newSortList.push(item); - self.changed = true; - }else { - console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column); - } - - }); - - self.sortList = newSortList; - - this.dispatch("sort-changed"); - } - - //clear sorters - clear(){ - this.setSort([]); - } - - //find appropriate sorter for column - findSorter(column){ - var row = this.table.rowManager.activeRows[0], - sorter = "string", - field, value; - - if(row){ - row = row.getData(); - field = column.getField(); - - if(field){ - - value = column.getFieldValue(row); - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else { - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - } - } - break; - } - } - } - - return Sort.sorters[sorter]; - } - - //work through sort list sorting data - sort(data){ - var self = this, - sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList, - sortListActual = [], - rowComponents = []; - - if(this.subscribedExternal("dataSorting")){ - this.dispatchExternal("dataSorting", self.getSort()); - } - - self.clearColumnHeaders(); - - if(this.table.options.sortMode !== "remote"){ - - //build list of valid sorters and trigger column specific callbacks before sort begins - sortList.forEach(function(item, i){ - var sortObj; - - if(item.column){ - sortObj = item.column.modules.sort; - - if(sortObj){ - - //if no sorter has been defined, take a guess - if(!sortObj.sorter){ - sortObj.sorter = self.findSorter(item.column); - } - - item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params; - - sortListActual.push(item); - } - - self.setColumnHeader(item.column, item.dir); - } - }); - - //sort data - if (sortListActual.length) { - self._sortItems(data, sortListActual); - } - - }else { - sortList.forEach(function(item, i){ - self.setColumnHeader(item.column, item.dir); - }); - } - - if(this.subscribedExternal("dataSorted")){ - data.forEach((row) => { - rowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataSorted", self.getSort(), rowComponents); - } - - return data; - } - - //clear sort arrows on columns - clearColumnHeaders(){ - this.table.columnManager.getRealColumns().forEach((column) => { - if(column.modules.sort){ - column.modules.sort.dir = "none"; - column.getElement().setAttribute("aria-sort", "none"); - this.setColumnHeaderSortIcon(column, "none"); - } - }); - } - - //set the column header sort direction - setColumnHeader(column, dir){ - column.modules.sort.dir = dir; - column.getElement().setAttribute("aria-sort", dir === "asc" ? "ascending" : "descending"); - this.setColumnHeaderSortIcon(column, dir); - } - - setColumnHeaderSortIcon(column, dir){ - var sortEl = column.modules.sort.element, - arrowEl; - - if(column.definition.headerSort && typeof this.table.options.headerSortElement === "function"){ - while(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild); - - arrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir); - - if(typeof arrowEl === "object"){ - sortEl.appendChild(arrowEl); - }else { - sortEl.innerHTML = arrowEl; - } - } - } - - //sort each item in sort list - _sortItems(data, sortList){ - var sorterCount = sortList.length - 1; - - data.sort((a, b) => { - var result; - - for(var i = sorterCount; i>= 0; i--){ - let sortItem = sortList[i]; - - result = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params); - - if(result !== 0){ - break; - } - } - - return result; - }); - } - - //process individual rows for a sort function on active data - _sortRow(a, b, column, dir, params){ - var el1Comp, el2Comp; - - //switch elements depending on search direction - var el1 = dir == "asc" ? a : b; - var el2 = dir == "asc" ? b : a; - - a = column.getFieldValue(el1.getData()); - b = column.getFieldValue(el2.getData()); - - a = typeof a !== "undefined" ? a : ""; - b = typeof b !== "undefined" ? b : ""; - - el1Comp = el1.getComponent(); - el2Comp = el2.getComponent(); - - return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params); - } - } - - Sort.moduleName = "sort"; - - //load defaults - Sort.sorters = defaultSorters; - - class RangeComponent { - constructor(range) { - this._range = range; - - return new Proxy(this, { - get: function (target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - } else { - return target._range.table.componentFunctionBinder.handle("range", target._range, name); - } - }, - }); - } - - getElement() { - return this._range.element; - } - - getData() { - return this._range.getData(); - } - - getCells() { - return this._range.getCells(true); - } - - getStructuredCells() { - return this._range.getStructuredCells(); - } - - getRows() { - return this._range.getRows().map((row) => row.getComponent()); - } - - getColumns() { - return this._range.getColumns().map((column) => column.getComponent()); - } - - getBounds() { - return this._range.getBounds(); - } - - getTopEdge() { - return this._range.top; - } - - getBottomEdge() { - return this._range.bottom; - } - - getLeftEdge() { - return this._range.left; - } - - getRightEdge() { - return this._range.right; - } - - setBounds(start, end){ - if(this._range.destroyedGuard("setBounds")){ - this._range.setBounds(start ? start._cell : start, end ? end._cell : end); - } - } - - setStartBound(start){ - if(this._range.destroyedGuard("setStartBound")){ - this._range.setEndBound(start ? start._cell : start); - this._range.rangeManager.layoutElement(); - } - } - - setEndBound(end){ - if(this._range.destroyedGuard("setEndBound")){ - this._range.setEndBound(end ? end._cell : end); - this._range.rangeManager.layoutElement(); - } - } - - clearValues(){ - if(this._range.destroyedGuard("clearValues")){ - this._range.clearValues(); - } - } - - remove(){ - if(this._range.destroyedGuard("remove")){ - this._range.destroy(true); - } - } - } - - class Range extends CoreFeature{ - constructor(table, rangeManager, start, end) { - super(table); - - this.rangeManager = rangeManager; - this.element = null; - this.initialized = false; - this.initializing = { - start:false, - end:false, - }; - this.destroyed = false; - - this.top = 0; - this.bottom = 0; - this.left = 0; - this.right = 0; - - this.table = table; - this.start = {row:0, col:0}; - this.end = {row:0, col:0}; - - if(this.rangeManager.rowHeader){ - this.left = 1; - this.right = 1; - this.start.col = 1; - this.end.col = 1; - } - - this.initElement(); - - setTimeout(() => { - this.initBounds(start, end); - }); - } - - initElement(){ - this.element = document.createElement("div"); - this.element.classList.add("tabulator-range"); - } - - initBounds(start, end){ - this._updateMinMax(); - - if(start){ - this.setBounds(start, end || start); - } - } - - /////////////////////////////////// - /////// Boundary Setup /////// - /////////////////////////////////// - - setStart(row, col) { - if(this.start.row !== row || this.start.col !== col){ - this.start.row = row; - this.start.col = col; - - this.initializing.start = true; - this._updateMinMax(); - } - } - - setEnd(row, col) { - if(this.end.row !== row || this.end.col !== col){ - this.end.row = row; - this.end.col = col; - - this.initializing.end = true; - this._updateMinMax(); - } - } - - setBounds(start, end, visibleRows){ - if(start){ - this.setStartBound(start); - } - - this.setEndBound(end || start); - this.rangeManager.layoutElement(visibleRows); - } - - setStartBound(element){ - var row, col; - - if (element.type === "column") { - if(this.rangeManager.columnSelection){ - this.setStart(0, element.getPosition() - 1); - } - }else { - row = element.row.position - 1; - col = element.column.getPosition() - 1; - - if (element.column === this.rangeManager.rowHeader) { - this.setStart(row, 1); - } else { - this.setStart(row, col); - } - } - } - - setEndBound(element){ - var rowsCount = this._getTableRows().length, - row, col, isRowHeader; - - if (element.type === "column") { - if(this.rangeManager.columnSelection){ - if (this.rangeManager.selecting === "column") { - this.setEnd(rowsCount - 1, element.getPosition() - 1); - } else if (this.rangeManager.selecting === "cell") { - this.setEnd(0, element.getPosition() - 1); - } - } - }else { - row = element.row.position - 1; - col = element.column.getPosition() - 1; - isRowHeader = element.column === this.rangeManager.rowHeader; - - if (this.rangeManager.selecting === "row") { - this.setEnd(row, this._getTableColumns().length - 1); - } else if (this.rangeManager.selecting !== "row" && isRowHeader) { - this.setEnd(row, 0); - } else if (this.rangeManager.selecting === "column") { - this.setEnd(rowsCount - 1, col); - } else { - this.setEnd(row, col); - } - } - } - - _updateMinMax() { - this.top = Math.min(this.start.row, this.end.row); - this.bottom = Math.max(this.start.row, this.end.row); - this.left = Math.min(this.start.col, this.end.col); - this.right = Math.max(this.start.col, this.end.col); - - if(this.initialized){ - this.dispatchExternal("rangeChanged", this.getComponent()); - }else { - if(this.initializing.start && this.initializing.end){ - this.initialized = true; - this.dispatchExternal("rangeAdded", this.getComponent()); - } - } - } - - _getTableColumns() { - return this.table.columnManager.getVisibleColumnsByIndex(); - } - - _getTableRows() { - return this.table.rowManager.getDisplayRows(); - } - - /////////////////////////////////// - /////// Rendering /////// - /////////////////////////////////// - - layout() { - var _vDomTop = this.table.rowManager.renderer.vDomTop, - _vDomBottom = this.table.rowManager.renderer.vDomBottom, - _vDomLeft = this.table.columnManager.renderer.leftCol, - _vDomRight = this.table.columnManager.renderer.rightCol, - top, bottom, left, right, topLeftCell, bottomRightCell; - - if (_vDomTop == null) { - _vDomTop = 0; - } - - if (_vDomBottom == null) { - _vDomBottom = Infinity; - } - - if (_vDomLeft == null) { - _vDomLeft = 0; - } - - if (_vDomRight == null) { - _vDomRight = Infinity; - } - - if (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) { - top = Math.max(this.top, _vDomTop); - bottom = Math.min(this.bottom, _vDomBottom); - left = Math.max(this.left, _vDomLeft); - right = Math.min(this.right, _vDomRight); - - topLeftCell = this.rangeManager.getCell(top, left); - bottomRightCell = this.rangeManager.getCell(bottom, right); - - this.element.classList.add("tabulator-range-active"); - // this.element.classList.toggle("tabulator-range-active", this === this.rangeManager.activeRange); - - this.element.style.left = topLeftCell.row.getElement().offsetLeft + topLeftCell.getElement().offsetLeft + "px"; - this.element.style.top = topLeftCell.row.getElement().offsetTop + "px"; - this.element.style.width = bottomRightCell.getElement().offsetLeft + bottomRightCell.getElement().offsetWidth - topLeftCell.getElement().offsetLeft + "px"; - this.element.style.height = bottomRightCell.row.getElement().offsetTop + bottomRightCell.row.getElement().offsetHeight - topLeftCell.row.getElement().offsetTop + "px"; - } - } - - atTopLeft(cell) { - return cell.row.position - 1 === this.top && cell.column.getPosition() - 1 === this.left; - } - - atBottomRight(cell) { - return cell.row.position - 1 === this.bottom && cell.column.getPosition() - 1 === this.right; - } - - occupies(cell) { - return this.occupiesRow(cell.row) && this.occupiesColumn(cell.column); - } - - occupiesRow(row) { - return this.top <= row.position - 1 && row.position - 1 <= this.bottom; - } - - occupiesColumn(col) { - return this.left <= col.getPosition() - 1 && col.getPosition() - 1 <= this.right; - } - - overlaps(left, top, right, bottom) { - if ((this.left > right || left > this.right) || (this.top > bottom || top > this.bottom)){ - return false; - } - - return true; - } - - getData() { - var data = [], - rows = this.getRows(), - columns = this.getColumns(); - - rows.forEach((row) => { - var rowData = row.getData(), - result = {}; - - columns.forEach((column) => { - result[column.field] = rowData[column.field]; - }); - - data.push(result); - }); - - return data; - } - - getCells(structured, component) { - var cells = [], - rows = this.getRows(), - columns = this.getColumns(); - - if (structured) { - cells = rows.map((row) => { - var arr = []; - - row.getCells().forEach((cell) => { - if (columns.includes(cell.column)) { - arr.push(component ? cell.getComponent() : cell); - } - }); - - return arr; - }); - } else { - rows.forEach((row) => { - row.getCells().forEach((cell) => { - if (columns.includes(cell.column)) { - cells.push(component ? cell.getComponent() : cell); - } - }); - }); - } - - return cells; - } - - getStructuredCells() { - return this.getCells(true, true); - } - - getRows() { - return this._getTableRows().slice(this.top, this.bottom + 1); - } - - getColumns() { - return this._getTableColumns().slice(this.left, this.right + 1); - } - - clearValues(){ - var cells = this.getCells(); - var clearValue = this.table.options.selectableRangeClearCellsValue; - - this.table.blockRedraw(); - - cells.forEach((cell) => { - cell.setValue(clearValue); - }); - - this.table.restoreRedraw(); - - } - - getBounds(component){ - var cells = this.getCells(false, component), - output = { - start:null, - end:null, - }; - - if(cells.length){ - output.start = cells[0]; - output.end = cells[cells.length - 1]; - }else { - console.warn("No bounds defined on range"); - } - - return output; - } - - getComponent() { - if (!this.component) { - this.component = new RangeComponent(this); - } - return this.component; - } - - destroy(notify) { - this.destroyed = true; - - this.element.remove(); - - if(notify){ - this.rangeManager.rangeRemoved(this); - } - - if(this.initialized){ - this.dispatchExternal("rangeRemoved", this.getComponent()); - } - } - - destroyedGuard(func){ - if(this.destroyed){ - console.warn("You cannot call the " + func + " function on a destroyed range"); - } - - return !this.destroyed; - } - } - - class SelectRange extends Module { - constructor(table) { - super(table); - - this.selecting = "cell"; - this.mousedown = false; - this.ranges = []; - this.overlay = null; - this.rowHeader = null; - this.layoutChangeTimeout = null; - this.columnSelection = false; - this.rowSelection = false; - this.maxRanges = 0; - this.activeRange = false; - this.blockKeydown = false; - - this.keyDownEvent = this._handleKeyDown.bind(this); - this.mouseUpEvent = this._handleMouseUp.bind(this); - - this.registerTableOption("selectableRange", false); //enable selectable range - this.registerTableOption("selectableRangeColumns", false); //enable selectable range - this.registerTableOption("selectableRangeRows", false); //enable selectable range - this.registerTableOption("selectableRangeClearCells", false); //allow clearing of active range - this.registerTableOption("selectableRangeClearCellsValue", undefined); //value for cleared active range - - this.registerTableFunction("getRangesData", this.getRangesData.bind(this)); - this.registerTableFunction("getRanges", this.getRanges.bind(this)); - this.registerTableFunction("addRange", this.addRangeFromComponent.bind(this)); - - this.registerComponentFunction("cell", "getRanges", this.cellGetRanges.bind(this)); - this.registerComponentFunction("row", "getRanges", this.rowGetRanges.bind(this)); - this.registerComponentFunction("column", "getRanges", this.colGetRanges.bind(this)); - } - - /////////////////////////////////// - /////// Initialization /////// - /////////////////////////////////// - - initialize() { - if (this.options("selectableRange")) { - if(!this.options("selectableRows")){ - - this.maxRanges = this.options("selectableRange"); - - this.initializeTable(); - this.initializeWatchers(); - }else { - console.warn("SelectRange functionality cannot be used in conjunction with row selection"); - } - } - } - - - initializeTable() { - this.overlay = document.createElement("div"); - this.overlay.classList.add("tabulator-range-overlay"); - - this.rangeContainer = document.createElement("div"); - this.rangeContainer.classList.add("tabulator-range-container"); - - this.activeRangeCellElement = document.createElement("div"); - this.activeRangeCellElement.classList.add("tabulator-range-cell-active"); - - this.overlay.appendChild(this.rangeContainer); - this.overlay.appendChild(this.activeRangeCellElement); - - this.table.rowManager.element.addEventListener("keydown", this.keyDownEvent); - - this.resetRanges(); - - this.table.rowManager.element.appendChild(this.overlay); - this.table.columnManager.element.setAttribute("tabindex", 0); - this.table.element.classList.add("tabulator-ranges"); - } - - initializeWatchers() { - this.columnSelection = this.options("selectableRangeColumns"); - this.rowSelection = this.options("selectableRangeRows"); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-mousedown", this.handleColumnMouseDown.bind(this)); - this.subscribe("column-mousemove", this.handleColumnMouseMove.bind(this)); - this.subscribe("column-resized", this.handleColumnResized.bind(this)); - this.subscribe("column-width", this.layoutChange.bind(this)); - this.subscribe("column-height", this.layoutChange.bind(this)); - this.subscribe("column-resized", this.layoutChange.bind(this)); - this.subscribe("columns-loaded", this.updateHeaderColumn.bind(this)); - - this.subscribe("cell-height", this.layoutChange.bind(this)); - this.subscribe("cell-rendered", this.renderCell.bind(this)); - this.subscribe("cell-mousedown", this.handleCellMouseDown.bind(this)); - this.subscribe("cell-mousemove", this.handleCellMouseMove.bind(this)); - this.subscribe("cell-click", this.handleCellClick.bind(this)); - this.subscribe("cell-editing", this.handleEditingCell.bind(this)); - - this.subscribe("page-changed", this.redraw.bind(this)); - - this.subscribe("scroll-vertical", this.layoutChange.bind(this)); - this.subscribe("scroll-horizontal", this.layoutChange.bind(this)); - - this.subscribe("data-destroy", this.tableDestroyed.bind(this)); - this.subscribe("data-processed", this.resetRanges.bind(this)); - - this.subscribe("table-layout", this.layoutElement.bind(this)); - this.subscribe("table-redraw", this.redraw.bind(this)); - this.subscribe("table-destroy", this.tableDestroyed.bind(this)); - - this.subscribe("edit-editor-clear", this.finishEditingCell.bind(this)); - this.subscribe("edit-blur", this.restoreFocus.bind(this)); - - this.subscribe("keybinding-nav-prev", this.keyNavigate.bind(this, "left")); - this.subscribe("keybinding-nav-next", this.keyNavigate.bind(this, "right")); - this.subscribe("keybinding-nav-left", this.keyNavigate.bind(this, "left")); - this.subscribe("keybinding-nav-right", this.keyNavigate.bind(this, "right")); - this.subscribe("keybinding-nav-up", this.keyNavigate.bind(this, "up")); - this.subscribe("keybinding-nav-down", this.keyNavigate.bind(this, "down")); - this.subscribe("keybinding-nav-range", this.keyNavigateRange.bind(this)); - } - - - initializeColumn(column) { - if(this.columnSelection && column.definition.headerSort && this.options("headerSortClickElement") !== "icon"){ - console.warn("Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'."); - } - - if (column.modules.edit) ; - } - - updateHeaderColumn(){ - if(this.rowSelection){ - this.rowHeader = this.table.columnManager.getVisibleColumnsByIndex()[0]; - - if(this.rowHeader){ - this.rowHeader.definition.cssClass = this.rowHeader.definition.cssClass + " tabulator-range-row-header"; - - if(this.rowHeader.definition.headerSort){ - console.warn("Using column headerSort with selectableRangeRows option may result in unpredictable behavior"); - } - - if(this.rowHeader.definition.editor){ - console.warn("Using column editor with selectableRangeRows option may result in unpredictable behavior"); - } - } - } - } - - /////////////////////////////////// - /////// Table Functions /////// - /////////////////////////////////// - - getRanges(){ - return this.ranges.map((range) => range.getComponent()); - } - - getRangesData() { - return this.ranges.map((range) => range.getData()); - } - - addRangeFromComponent(start, end){ - start = start ? start._cell : null; - end = end ? end._cell : null; - - return this.addRange(start, end); - } - - /////////////////////////////////// - /////// Component Functions /////// - /////////////////////////////////// - - cellGetRanges(cell){ - var ranges = []; - - if (cell.column === this.rowHeader) { - ranges = this.ranges.filter((range) => range.occupiesRow(cell.row)); - } else { - ranges = this.ranges.filter((range) => range.occupies(cell)); - } - - return ranges.map((range) => range.getComponent()); - } - - rowGetRanges(row){ - var ranges = this.ranges.filter((range) => range.occupiesRow(row)); - - return ranges.map((range) => range.getComponent()); - } - - colGetRanges(col){ - var ranges = this.ranges.filter((range) => range.occupiesColumn(col)); - - return ranges.map((range) => range.getComponent()); - } - - /////////////////////////////////// - ////////// Event Handlers ///////// - /////////////////////////////////// - - _handleMouseUp(e){ - this.mousedown = false; - document.removeEventListener("mouseup", this.mouseUpEvent); - } - - _handleKeyDown(e) { - if (!this.blockKeydown && (!this.table.modules.edit || (this.table.modules.edit && !this.table.modules.edit.currentCell))) { - if (e.key === "Enter") { - // is editing a cell? - if (this.table.modules.edit && this.table.modules.edit.currentCell) { - return; - } - - this.table.modules.edit.editCell(this.getActiveCell()); - - e.preventDefault(); - } - - if ((e.key === "Backspace" || e.key === "Delete") && this.options("selectableRangeClearCells")) { - if(this.activeRange){ - this.activeRange.clearValues(); - } - } - } - } - - initializeFocus(cell){ - var range; - - try{ - if (document.selection) { // IE - range = document.body.createTextRange(); - range.moveToElementText(cell.getElement()); - range.select(); - } else if (window.getSelection) { - range = document.createRange(); - range.selectNode(cell.getElement()); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(range); - } - }catch(e){} - } - - restoreFocus(element){ - this.table.rowManager.element.focus(); - - return true; - } - - /////////////////////////////////// - ////// Column Functionality /////// - /////////////////////////////////// - - handleColumnResized(column) { - var selected; - - if (this.selecting !== "column" && this.selecting !== "all") { - return; - } - - selected = this.ranges.some((range) => range.occupiesColumn(column)); - - if (!selected) { - return; - } - - this.ranges.forEach((range) => { - var selectedColumns = range.getColumns(true); - - selectedColumns.forEach((selectedColumn) => { - if (selectedColumn !== column) { - selectedColumn.setWidth(column.width); - } - }); - }); - } - - handleColumnMouseDown(event, column) { - if (event.button === 2 && (this.selecting === "column" || this.selecting === "all") && this.activeRange.occupiesColumn(column)) { - return; - } - - this.mousedown = true; - - document.addEventListener("mouseup", this.mouseUpEvent); - - this.newSelection(event, column); - } - - handleColumnMouseMove(e, column) { - if (column === this.rowHeader || !this.mousedown || this.selecting === 'all') { - return; - } - - this.activeRange.setBounds(false, column, true); - } - - /////////////////////////////////// - //////// Cell Functionality /////// - /////////////////////////////////// - - renderCell(cell) { - var el = cell.getElement(), - rangeIdx = this.ranges.findIndex((range) => range.occupies(cell)); - - el.classList.toggle("tabulator-range-selected", rangeIdx !== -1); - el.classList.toggle("tabulator-range-only-cell-selected", this.ranges.length === 1 && this.ranges[0].atTopLeft(cell) && this.ranges[0].atBottomRight(cell)); - - el.dataset.range = rangeIdx; - } - - handleCellMouseDown(event, cell) { - if (event.button === 2 && (this.activeRange.occupies(cell) || ((this.selecting === "row" || this.selecting === "all") && this.activeRange.occupiesRow(cell.row)))) { - return; - } - - this.mousedown = true; - - document.addEventListener("mouseup", this.mouseUpEvent); - - this.newSelection(event, cell); - } - - handleCellMouseMove(e, cell) { - if (!this.mousedown || this.selecting === "all") { - return; - } - - this.activeRange.setBounds(false, cell, true); - } - - handleCellClick(e, cell){ - this.initializeFocus(cell); - } - - handleEditingCell(cell) { - if(this.activeRange){ - this.activeRange.setBounds(cell); - } - } - - finishEditingCell() { - this.blockKeydown = true; - this.table.rowManager.element.focus(); - - setTimeout(() => { - this.blockKeydown = false; - }, 10); - } - - /////////////////////////////////// - /////// Navigation /////// - /////////////////////////////////// - - keyNavigate(dir, e){ - if(this.navigate(false, false, dir)){ - e.preventDefault(); - } - } - - keyNavigateRange(e, dir, jump, expand){ - if(this.navigate(jump, expand, dir)){ - e.preventDefault(); - } - } - - navigate(jump, expand, dir) { - var moved = false, - range, rangeEdge, nextRow, nextCol, row, column; - - // Don't navigate while editing - if (this.table.modules.edit && this.table.modules.edit.currentCell) { - return false; - } - - // If there are more than 1 range, use the active range and destroy the others - if (this.ranges.length > 1) { - this.ranges = this.ranges.filter((range) => { - if (range === this.activeRange) { - range.setEnd(range.start.row, range.start.col); - return true; - } - range.destroy(); - return false; - }); - } - - range = this.activeRange; - - rangeEdge = expand ? range.end : range.start; - nextRow = rangeEdge.row; - nextCol = rangeEdge.col; - - if(jump){ - switch(dir){ - case "left": - nextCol = this.findJumpCellLeft(range.start.row, rangeEdge.col); - break; - case "right": - nextCol = this.findJumpCellRight(range.start.row, rangeEdge.col); - break; - case "up": - nextRow = this.findJumpCellUp(rangeEdge.row, range.start.col); - break; - case "down": - nextRow = this.findJumpCellDown(rangeEdge.row, range.start.col); - break; - } - }else { - if(expand){ - if ((this.selecting === 'row' && (dir === 'left' || dir === 'right')) || (this.selecting === 'column' && (dir === 'up' || dir === 'down'))) { - return; - } - } - - switch(dir){ - case "left": - nextCol = Math.max(nextCol - 1, 0); - break; - case "right": - nextCol = Math.min(nextCol + 1, this.getTableColumns().length - 1); - break; - case "up": - nextRow = Math.max(nextRow - 1, 0); - break; - case "down": - nextRow = Math.min(nextRow + 1, this.getTableRows().length - 1); - break; - } - } - - moved = nextCol !== rangeEdge.col || nextRow !== rangeEdge.row; - - if(!expand){ - range.setStart(nextRow, nextCol); - } - - range.setEnd(nextRow, nextCol); - - if(!expand){ - this.selecting = "cell"; - } - - if (moved) { - row = this.getRowByRangePos(range.end.row); - column = this.getColumnByRangePos(range.end.col); - - if ((dir === 'left' || dir === 'right') && column.getElement().parentNode === null) { - column.getComponent().scrollTo(undefined, false); - } else if ((dir === 'up' || dir === 'down') && row.getElement().parentNode === null) { - row.getComponent().scrollTo(undefined, false); - } else { - // Use faster autoScroll when the elements are on the DOM - this.autoScroll(range, row.getElement(), column.getElement()); - } - - this.layoutElement(); - - return true; - } - } - - rangeRemoved(removed){ - this.ranges = this.ranges.filter((range) => range !== removed); - - if(this.activeRange === removed){ - if(this.ranges.length){ - this.activeRange = this.ranges[this.ranges.length - 1]; - }else { - this.addRange(); - } - } - - this.layoutElement(); - } - - findJumpCell(cells, reverse, emptyStart, emptySide){ - var nextCell; - - if(reverse){ - cells = cells.reverse(); - } - - for(let currentCell of cells){ - let currentValue = currentCell.getValue(); - - if(emptyStart){ - nextCell = currentCell; - if(currentValue){ - break; - } - }else { - if(emptySide){ - nextCell = currentCell; - - if(currentValue){ - break; - } - }else { - if(currentValue){ - nextCell = currentCell; - }else { - break; - } - } - } - } - - return nextCell; - } - - findJumpCellLeft(rowPos, colPos){ - var row = this.getRowByRangePos(rowPos), - cells = row.cells.filter((cell) => cell.column.visible), - isStartingCellEmpty = !cells[colPos].getValue(), - isLeftOfStartingCellEmpty = cells[colPos] ? !cells[colPos].getValue() : false, - jumpCol = colPos, - targetCells = this.rowHeader ? cells.slice(1, colPos) : cells.slice(0, colPos), - nextCell = this.findJumpCell(targetCells, true, isStartingCellEmpty, isLeftOfStartingCellEmpty); - - if(nextCell){ - jumpCol = nextCell.column.getPosition() - 1; - } - - return jumpCol; - } - - findJumpCellRight(rowPos, colPos){ - var row = this.getRowByRangePos(rowPos), - cells = row.cells.filter((cell) => cell.column.visible), - isStartingCellEmpty = !cells[colPos].getValue(), - isRightOfStartingCellEmpty = cells[colPos + 1] ? !cells[colPos + 1].getValue() : false, - jumpCol = colPos, - nextCell = this.findJumpCell(cells.slice(colPos + 1, cells.length), false, isStartingCellEmpty, isRightOfStartingCellEmpty); - - if(nextCell){ - jumpCol = nextCell.column.getPosition() - 1; - } - - return jumpCol; - } - - findJumpCellUp(rowPos, colPos) { - var column = this.getColumnByRangePos(colPos), - cells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)), - isStartingCellEmpty = !cells[rowPos].getValue(), - isTopOfStartingCellEmpty = cells[rowPos - 1] ? !cells[rowPos - 1].getValue() : false, - jumpRow = rowPos, - nextCell = this.findJumpCell(cells.slice(0, jumpRow), true, isStartingCellEmpty, isTopOfStartingCellEmpty); - - if(nextCell){ - jumpRow = nextCell.row.position - 1; - } - - return jumpRow; - } - - findJumpCellDown(rowPos, colPos) { - var column = this.getColumnByRangePos(colPos), - cells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)), - isStartingCellEmpty = !cells[rowPos].getValue(), - isBottomOfStartingCellEmpty = cells[rowPos + 1] ? !cells[rowPos + 1].getValue() : false, - jumpRow = rowPos, - nextCell = this.findJumpCell(cells.slice(jumpRow + 1, cells.length), false, isStartingCellEmpty, isBottomOfStartingCellEmpty); - - if(nextCell){ - jumpRow = nextCell.row.position - 1; - } - - return jumpRow; - } - - /////////////////////////////////// - /////// Selection /////// - /////////////////////////////////// - newSelection(event, element) { - var range; - - if (element.type === "column") { - if(!this.columnSelection){ - return; - } - - if (element === this.rowHeader) { - range = this.resetRanges(); - this.selecting = "all"; - - var topLeftCell, bottomRightCell = this.getCell(-1, -1); - - if(this.rowHeader){ - topLeftCell = this.getCell(0, 1); - }else { - topLeftCell = this.getCell(0, 0); - } - - range.setBounds(topLeftCell, bottomRightCell); - return; - } else { - this.selecting = "column"; - } - } else if (element.column === this.rowHeader) { - this.selecting = "row"; - } else { - this.selecting = "cell"; - } - - if (event.shiftKey) { - this.activeRange.setBounds(false, element); - } else if (event.ctrlKey) { - this.addRange().setBounds(element); - } else { - this.resetRanges().setBounds(element); - } - } - - autoScroll(range, row, column) { - var tableHolder = this.table.rowManager.element, - rowHeader, rect, view, withinHorizontalView, withinVerticalView; - - if (typeof row === 'undefined') { - row = this.getRowByRangePos(range.end.row).getElement(); - } - - if (typeof column === 'undefined') { - column = this.getColumnByRangePos(range.end.col).getElement(); - } - - if (this.rowHeader) { - rowHeader = this.rowHeader.getElement(); - } - - rect = { - left: column.offsetLeft, - right: column.offsetLeft + column.offsetWidth, - top: row.offsetTop, - bottom: row.offsetTop + row.offsetHeight, - }; - - view = { - left: tableHolder.scrollLeft, - right: Math.ceil(tableHolder.scrollLeft + tableHolder.clientWidth), - top: tableHolder.scrollTop, - bottom: tableHolder.scrollTop + tableHolder.offsetHeight - this.table.rowManager.scrollbarWidth, - }; - - if (rowHeader) { - view.left += rowHeader.offsetWidth; - } - - withinHorizontalView = view.left < rect.left && rect.left < view.right && view.left < rect.right && rect.right < view.right; - - withinVerticalView = view.top < rect.top && rect.top < view.bottom && view.top < rect.bottom && rect.bottom < view.bottom; - - if (!withinHorizontalView) { - if (rect.left < view.left) { - tableHolder.scrollLeft = rect.left; - if (rowHeader) { - tableHolder.scrollLeft -= rowHeader.offsetWidth; - } - } else if (rect.right > view.right) { - tableHolder.scrollLeft = rect.right - tableHolder.clientWidth; - } - } - - if (!withinVerticalView) { - if (rect.top < view.top) { - tableHolder.scrollTop = rect.top; - } else if (rect.bottom > view.bottom) { - tableHolder.scrollTop = rect.bottom - tableHolder.clientHeight; - } - } - } - - - /////////////////////////////////// - /////// Layout /////// - /////////////////////////////////// - - layoutChange(){ - this.overlay.style.visibility = "hidden"; - clearTimeout(this.layoutChangeTimeout); - this.layoutChangeTimeout = setTimeout(this.layoutRanges.bind(this), 200); - } - - redraw(force) { - if (force) { - this.selecting = 'cell'; - this.resetRanges(); - this.layoutElement(); - } - } - - layoutElement(visibleRows) { - var rows; - - if (visibleRows) { - rows = this.table.rowManager.getVisibleRows(true); - } else { - rows = this.table.rowManager.getRows(); - } - - rows.forEach((row) => { - if (row.type === "row") { - this.layoutRow(row); - row.cells.forEach((cell) => this.renderCell(cell)); - } - }); - - this.getTableColumns().forEach((column) => { - this.layoutColumn(column); - }); - - this.layoutRanges(); - } - - layoutRow(row) { - var el = row.getElement(), - selected = false, - occupied = this.ranges.some((range) => range.occupiesRow(row)); - - if (this.selecting === "row") { - selected = occupied; - } else if (this.selecting === "all") { - selected = true; - } - - el.classList.toggle("tabulator-range-selected", selected); - el.classList.toggle("tabulator-range-highlight", occupied); - } - - layoutColumn(column) { - var el = column.getElement(), - selected = false, - occupied = this.ranges.some((range) => range.occupiesColumn(column)); - - if (this.selecting === "column") { - selected = occupied; - } else if (this.selecting === "all") { - selected = true; - } - - el.classList.toggle("tabulator-range-selected", selected); - el.classList.toggle("tabulator-range-highlight", occupied); - } - - layoutRanges() { - var activeCell; - - if (!this.table.initialized) { - return; - } - - activeCell = this.getActiveCell(); - - if (!activeCell) { - return; - } - - this.activeRangeCellElement.style.left = activeCell.row.getElement().offsetLeft + activeCell.getElement().offsetLeft + "px"; - this.activeRangeCellElement.style.top = activeCell.row.getElement().offsetTop + "px"; - this.activeRangeCellElement.style.width = activeCell.getElement().offsetLeft + activeCell.getElement().offsetWidth - activeCell.getElement().offsetLeft + "px"; - this.activeRangeCellElement.style.height = activeCell.row.getElement().offsetTop + activeCell.row.getElement().offsetHeight - activeCell.row.getElement().offsetTop + "px"; - - this.ranges.forEach((range) => range.layout()); - - this.overlay.style.visibility = "visible"; - } - - - /////////////////////////////////// - /////// Helper Functions /////// - /////////////////////////////////// - - getCell(rowIdx, colIdx) { - var row; - - if (colIdx < 0) { - colIdx = this.getTableColumns().length + colIdx; - if (colIdx < 0) { - return null; - } - } - - if (rowIdx < 0) { - rowIdx = this.getTableRows().length + rowIdx; - } - - row = this.table.rowManager.getRowFromPosition(rowIdx + 1); - - return row ? row.getCells(false, true).filter((cell) => cell.column.visible)[colIdx] : null; - } - - - getActiveCell() { - return this.getCell(this.activeRange.start.row, this.activeRange.start.col); - } - - getRowByRangePos(pos) { - return this.getTableRows()[pos]; - } - - getColumnByRangePos(pos) { - return this.getTableColumns()[pos]; - } - - getTableRows() { - return this.table.rowManager.getDisplayRows(); - } - - getTableColumns() { - return this.table.columnManager.getVisibleColumnsByIndex(); - } - - addRange(start, end) { - var range; - - if(this.maxRanges !== true && this.ranges.length >= this.maxRanges){ - this.ranges.shift().destroy(); - } - - range = new Range(this.table, this, start, end); - - this.activeRange = range; - this.ranges.push(range); - this.rangeContainer.appendChild(range.element); - - return range; - } - - resetRanges() { - var range, cell; - - this.ranges.forEach((range) => range.destroy()); - this.ranges = []; - - range = this.addRange(); - - if(this.table.rowManager.activeRows.length){ - cell = this.table.rowManager.activeRows[0].cells[this.rowHeader ? 1 : 0]; - - if(cell){ - range.setBounds(cell); - this.initializeFocus(cell); - } - } - - return range; - } - - tableDestroyed(){ - document.removeEventListener("mouseup", this.mouseUpEvent); - this.table.rowManager.element.removeEventListener("keydown", this.keyDownEvent); - } - - selectedRows(component) { - return component ? this.activeRange.getRows().map((row) => row.getComponent()) : this.activeRange.getRows(); - } - - selectedColumns(component) { - return component ? this.activeRange.getColumns().map((col) => col.getComponent()) : this.activeRange.getColumns(); - } - } - - SelectRange.moduleName = "selectRange"; - - class Tooltip extends Module{ - - constructor(table){ - super(table); - - this.tooltipSubscriber = null, - this.headerSubscriber = null, - - this.timeout = null; - this.popupInstance = null; - - this.registerTableOption("tooltipGenerationMode", undefined); //deprecated - this.registerTableOption("tooltipDelay", 300); - - this.registerColumnOption("tooltip"); - this.registerColumnOption("headerTooltip"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheckMsg("tooltipGenerationMode", "This option is no longer needed as tooltips are always generated on hover now"); - } - - initializeColumn(column){ - if(column.definition.headerTooltip && !this.headerSubscriber){ - this.headerSubscriber = true; - - this.subscribe("column-mousemove", this.mousemoveCheck.bind(this, "headerTooltip")); - this.subscribe("column-mouseout", this.mouseoutCheck.bind(this, "headerTooltip")); - } - - if(column.definition.tooltip && !this.tooltipSubscriber){ - this.tooltipSubscriber = true; - - this.subscribe("cell-mousemove", this.mousemoveCheck.bind(this, "tooltip")); - this.subscribe("cell-mouseout", this.mouseoutCheck.bind(this, "tooltip")); - } - } - - mousemoveCheck(action, e, component){ - var tooltip = action === "tooltip" ? component.column.definition.tooltip : component.definition.headerTooltip; - - if(tooltip){ - this.clearPopup(); - this.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay); - } - } - - mouseoutCheck(action, e, component){ - if(!this.popupInstance){ - this.clearPopup(); - } - } - - clearPopup(action, e, component){ - clearTimeout(this.timeout); - this.timeout = null; - - if(this.popupInstance){ - this.popupInstance.hide(); - } - } - - loadTooltip(e, component, tooltip){ - var contentsEl, renderedCallback, coords; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(typeof tooltip === "function"){ - tooltip = tooltip(e, component.getComponent(), onRendered); - } - - if(tooltip instanceof HTMLElement){ - contentsEl = tooltip; - }else { - contentsEl = document.createElement("div"); - - if(tooltip === true){ - if(component instanceof Cell){ - tooltip = component.value; - }else { - if(component.definition.field){ - this.langBind("columns|" + component.definition.field, (value) => { - contentsEl.innerHTML = tooltip = value || component.definition.title; - }); - }else { - tooltip = component.definition.title; - } - } - } - - contentsEl.innerHTML = tooltip; - } - - if(tooltip || tooltip === 0 || tooltip === false){ - contentsEl.classList.add("tabulator-tooltip"); - - contentsEl.addEventListener("mousemove", e => e.preventDefault()); - - this.popupInstance = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - this.popupInstance.renderCallback(renderedCallback); - } - - coords = this.popupInstance.containerEventCoords(e); - - this.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => { - this.dispatchExternal("TooltipClosed", component.getComponent()); - this.popupInstance = null; - }); - - this.dispatchExternal("TooltipOpened", component.getComponent()); - } - } - } - - Tooltip.moduleName = "tooltip"; - - var defaultValidators = { - //is integer - integer: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && Math.floor(value) === value; - }, - - //is float - float: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && value % 1 !== 0; - }, - - //must be a number - numeric: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return !isNaN(value); - }, - - //must be a string - string: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return isNaN(value); - }, - - //must be alphanumeric - alphanumeric: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - var reg = new RegExp(/^[a-z0-9]+$/i); - - return reg.test(value); - }, - - //maximum value - max: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) <= parameters; - }, - - //minimum value - min: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) >= parameters; - }, - - //starts with value - starts: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().startsWith(String(parameters).toLowerCase()); - }, - - //ends with value - ends: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().endsWith(String(parameters).toLowerCase()); - }, - - - //minimum string length - minLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length >= parameters; - }, - - //maximum string length - maxLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length <= parameters; - }, - - //in provided value list - in: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - if(typeof parameters == "string"){ - parameters = parameters.split("|"); - } - - return parameters.indexOf(value) > -1; - }, - - //must match provided regex - regex: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var reg = new RegExp(parameters); - - return reg.test(value); - }, - - //value must be unique in this column - unique: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var unique = true; - - var cellData = cell.getData(); - var column = cell.getColumn()._getSelf(); - - this.table.rowManager.rows.forEach(function(row){ - var data = row.getData(); - - if(data !== cellData){ - if(value == column.getFieldValue(data)){ - unique = false; - } - } - }); - - return unique; - }, - - //must have a value - required:function(cell, value, parameters){ - return value !== "" && value !== null && typeof value !== "undefined"; - }, - }; - - class Validate extends Module{ - - constructor(table){ - super(table); - - this.invalidCells = []; - - this.registerTableOption("validationMode", "blocking"); - - this.registerColumnOption("validator"); - - this.registerTableFunction("getInvalidCells", this.getInvalidCells.bind(this)); - this.registerTableFunction("clearCellValidation", this.userClearCellValidation.bind(this)); - this.registerTableFunction("validate", this.userValidate.bind(this)); - - this.registerComponentFunction("cell", "isValid", this.cellIsValid.bind(this)); - this.registerComponentFunction("cell", "clearValidation", this.clearValidation.bind(this)); - this.registerComponentFunction("cell", "validate", this.cellValidate.bind(this)); - - this.registerComponentFunction("column", "validate", this.columnValidate.bind(this)); - this.registerComponentFunction("row", "validate", this.rowValidate.bind(this)); - } - - - initialize(){ - this.subscribe("cell-delete", this.clearValidation.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - - this.subscribe("edit-success", this.editValidate.bind(this)); - this.subscribe("edit-editor-clear", this.editorClear.bind(this)); - this.subscribe("edit-edited-clear", this.editedClear.bind(this)); - } - - /////////////////////////////////// - ///////// Event Handling ////////// - /////////////////////////////////// - - editValidate(cell, value, previousValue){ - var valid = this.table.options.validationMode !== "manual" ? this.validate(cell.column.modules.validate, cell, value) : true; - - // allow time for editor to make render changes then style cell - if(valid !== true){ - setTimeout(() => { - cell.getElement().classList.add("tabulator-validation-fail"); - this.dispatchExternal("validationFailed", cell.getComponent(), value, valid); - }); - } - - return valid; - } - - editorClear(cell, cancelled){ - if(cancelled){ - if(cell.column.modules.validate){ - this.cellValidate(cell); - } - } - - cell.getElement().classList.remove("tabulator-validation-fail"); - } - - editedClear(cell){ - if(cell.modules.validate){ - cell.modules.validate.invalid = false; - } - } - - /////////////////////////////////// - ////////// Cell Functions ///////// - /////////////////////////////////// - - cellIsValid(cell){ - return cell.modules.validate ? (cell.modules.validate.invalid || true) : true; - } - - cellValidate(cell){ - return this.validate(cell.column.modules.validate, cell, cell.getValue()); - } - - /////////////////////////////////// - ///////// Column Functions //////// - /////////////////////////////////// - - columnValidate(column){ - var invalid = []; - - column.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ////////// Row Functions ////////// - /////////////////////////////////// - - rowValidate(row){ - var invalid = []; - - row.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - userClearCellValidation(cells){ - if(!cells){ - cells = this.getInvalidCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.clearValidation(cell._getSelf()); - }); - } - - userValidate(cells){ - var output = []; - - //clear row data - this.table.rowManager.rows.forEach((row) => { - row = row.getComponent(); - - var valid = row.validate(); - - if(valid !== true){ - output = output.concat(valid); - } - }); - - return output.length ? output : true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.validator !== "undefined"){ - this.initializeColumn(column); - } - } - - //validate - initializeColumn(column){ - var self = this, - config = [], - validator; - - if(column.definition.validator){ - - if(Array.isArray(column.definition.validator)){ - column.definition.validator.forEach((item) => { - validator = self._extractValidator(item); - - if(validator){ - config.push(validator); - } - }); - - }else { - validator = this._extractValidator(column.definition.validator); - - if(validator){ - config.push(validator); - } - } - - column.modules.validate = config.length ? config : false; - } - } - - _extractValidator(value){ - var type, params, pos; - - switch(typeof value){ - case "string": - pos = value.indexOf(':'); - - if(pos > -1){ - type = value.substring(0,pos); - params = value.substring(pos+1); - }else { - type = value; - } - - return this._buildValidator(type, params); - - case "function": - return this._buildValidator(value); - - case "object": - return this._buildValidator(value.type, value.parameters); - } - } - - _buildValidator(type, params){ - - var func = typeof type == "function" ? type : Validate.validators[type]; - - if(!func){ - console.warn("Validator Setup Error - No matching validator found:", type); - return false; - }else { - return { - type:typeof type == "function" ? "function" : type, - func:func, - params:params, - }; - } - } - - validate(validators, cell, value){ - var self = this, - failedValidators = [], - invalidIndex = this.invalidCells.indexOf(cell); - - if(validators){ - validators.forEach((item) => { - if(!item.func.call(self, cell.getComponent(), value, item.params)){ - failedValidators.push({ - type:item.type, - parameters:item.params - }); - } - }); - } - - if(!cell.modules.validate){ - cell.modules.validate = {}; - } - - if(!failedValidators.length){ - cell.modules.validate.invalid = false; - cell.getElement().classList.remove("tabulator-validation-fail"); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - }else { - cell.modules.validate.invalid = failedValidators; - - if(this.table.options.validationMode !== "manual"){ - cell.getElement().classList.add("tabulator-validation-fail"); - } - - if(invalidIndex == -1){ - this.invalidCells.push(cell); - } - } - - return failedValidators.length ? failedValidators : true; - } - - getInvalidCells(){ - var output = []; - - this.invalidCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearValidation(cell){ - var invalidIndex; - - if(cell.modules.validate && cell.modules.validate.invalid){ - - cell.getElement().classList.remove("tabulator-validation-fail"); - cell.modules.validate.invalid = false; - - invalidIndex = this.invalidCells.indexOf(cell); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - } - } - } - - Validate.moduleName = "validate"; - - //load defaults - Validate.validators = defaultValidators; - - var modules = /*#__PURE__*/Object.freeze({ - __proto__: null, - AccessorModule: Accessor, - AjaxModule: Ajax, - ClipboardModule: Clipboard, - ColumnCalcsModule: ColumnCalcs, - DataTreeModule: DataTree, - DownloadModule: Download, - EditModule: Edit$1, - ExportModule: Export, - FilterModule: Filter, - FormatModule: Format, - FrozenColumnsModule: FrozenColumns, - FrozenRowsModule: FrozenRows, - GroupRowsModule: GroupRows, - HistoryModule: History, - HtmlTableImportModule: HtmlTableImport, - ImportModule: Import, - InteractionModule: Interaction, - KeybindingsModule: Keybindings, - MenuModule: Menu, - MoveColumnsModule: MoveColumns, - MoveRowsModule: MoveRows, - MutatorModule: Mutator, - PageModule: Page, - PersistenceModule: Persistence, - PopupModule: Popup$1, - PrintModule: Print, - ReactiveDataModule: ReactiveData, - ResizeColumnsModule: ResizeColumns, - ResizeRowsModule: ResizeRows, - ResizeTableModule: ResizeTable, - ResponsiveLayoutModule: ResponsiveLayout, - SelectRowModule: SelectRow, - SortModule: Sort, - SelectRangeModule: SelectRange, - TooltipModule: Tooltip, - ValidateModule: Validate - }); - - //tabulator with all modules installed - - class TabulatorFull extends Tabulator {} - - //bind modules and static functionality - new ModuleBinder(TabulatorFull, modules); - - return TabulatorFull; - -}))); -//# sourceMappingURL=tabulator.js.map diff --git a/tmp/tabulator-5.6.1/dist/js/tabulator.js.map b/tmp/tabulator-5.6.1/dist/js/tabulator.js.map deleted file mode 100644 index 0bd8bf4..0000000 --- a/tmp/tabulator-5.6.1/dist/js/tabulator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tabulator.js","sources":["../../src/js/core/defaults/options.js","../../src/js/core/CoreFeature.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/Column.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFunctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/DeprecationAdvisor.js","../../src/js/core/tools/TableRegistry.js","../../src/js/core/tools/Popup.js","../../src/js/core/Module.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/tools/Alert.js","../../src/js/core/Tabulator.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/defaults/downloaders/jsonLines.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/date.js","../../src/js/modules/Edit/defaults/editors/time.js","../../src/js/modules/Edit/defaults/editors/datetime.js","../../src/js/modules/Edit/List.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/list.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Import/defaults/importers/array.js","../../src/js/modules/Import/defaults/importers.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Page/defaults/pageCounters/rows.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Popup/Popup.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/SelectRange/RangeComponent.js","../../src/js/modules/SelectRange/Range.js","../../src/js/modules/SelectRange/SelectRange.js","../../src/js/modules/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default {\n\n\tdebugEventsExternal:false, //flag to console log events\n\tdebugEventsInternal:false, //flag to console log events\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\n\tdebugInvalidComponentFuncs:true, //allow toggling of invalid component warnings\n\tdebugInitialization:true, //allow toggling of pre initialization function call warnings\n\tdebugDeprecation:true, //allow toggling of deprecation warnings\n\n\theight:false, //height of tabulator\n\tminHeight:false, //minimum height of tabulator\n\tmaxHeight:false, //maximum height of tabulator\n\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\n\n\tpopupContainer:false,\n\n\tcolumns:[],//store for colum header info\n\tcolumnDefaults:{}, //store column default props\n\n\tdata:false, //default starting data\n\n\tautoColumns:false, //build columns from data row structure\n\tautoColumnsDefinitions:false,\n\n\tnestedFieldSeparator:\".\", //separator for nested data\n\n\tfooterElement:false, //hold footer element\n\n\tindex:\"id\", //filed for row index\n\n\ttextDirection:\"auto\",\n\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\n\n\theaderVisible:true, //hide header\n\n\trenderVertical:\"virtual\",\n\trenderHorizontal:\"basic\",\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\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\trowHeight:null,\n\n\tplaceholder:false,\n\n\tdataLoader:true,\n\tdataLoaderLoading:false,\n\tdataLoaderError:false,\n\tdataLoaderErrorTimeout:3000,\n\n\tdataSendParams:{},\n\n\tdataReceiveParams:{},\n};\n","export default class CoreFeature{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\t}\n\n\t//////////////////////////////////////////\n\t/////////////// DataLoad /////////////////\n\t//////////////////////////////////////////\n\n\treloadData(data, silent, columnsChanged){\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);\n\t}\n\n\t//////////////////////////////////////////\n\t///////////// Localization ///////////////\n\t//////////////////////////////////////////\n\n\tlangText(){\n\t\treturn this.table.modules.localize.getText(...arguments);\n\t}\n\n\tlangBind(){\n\t\treturn this.table.modules.localize.bind(...arguments);\n\t}\n\n\tlangLocale(){\n\t\treturn this.table.modules.localize.getLocale(...arguments);\n\t}\n\n\n\t//////////////////////////////////////////\n\t////////// Inter Table Comms /////////////\n\t//////////////////////////////////////////\n\n\tcommsConnections(){\n\t\treturn this.table.modules.comms.getConnections(...arguments);\n\t}\n\n\tcommsSend(){\n\t\treturn this.table.modules.comms.send(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Layout /////////////////\n\t//////////////////////////////////////////\n\n\tlayoutMode(){\n\t\treturn this.table.modules.layout.getMode();\n\t}\n\n\tlayoutRefresh(force){\n\t\treturn this.table.modules.layout.layout(force);\n\t}\n\n\n\t//////////////////////////////////////////\n\t/////////////// Event Bus ////////////////\n\t//////////////////////////////////////////\n\n\tsubscribe(){\n\t\treturn this.table.eventBus.subscribe(...arguments);\n\t}\n\n\tunsubscribe(){\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.table.eventBus.subscribed(key);\n\t}\n\n\tsubscriptionChange(){\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\n\t}\n\n\tdispatch(){\n\t\treturn this.table.eventBus.dispatch(...arguments);\n\t}\n\n\tchain(){\n\t\treturn this.table.eventBus.chain(...arguments);\n\t}\n\n\tconfirm(){\n\t\treturn this.table.eventBus.confirm(...arguments);\n\t}\n\n\tdispatchExternal(){\n\t\treturn this.table.externalEvents.dispatch(...arguments);\n\t}\n\n\tsubscribedExternal(key){\n\t\treturn this.table.externalEvents.subscribed(key);\n\t}\n\n\tsubscriptionChangeExternal(){\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Options /////////////////\n\t//////////////////////////////////////////\n\n\toptions(key){\n\t\treturn this.table.options[key];\n\t}\n\n\tsetOption(key, value){\n\t\tif(typeof value !== \"undefined\"){\n\t\t\tthis.table.options[key] = value;\n\t\t}\n\n\t\treturn this.table.options[key];\n\t}\n\n\t//////////////////////////////////////////\n\t/////////// Deprecation Checks ///////////\n\t//////////////////////////////////////////\n\n\tdeprecationCheck(oldOption, newOption, convert){\n\t\treturn this.table.deprecationAdvisor.check(oldOption, newOption, convert);\n\t}\n\n\tdeprecationCheckMsg(oldOption, msg){\n\t\treturn this.table.deprecationAdvisor.checkMsg(oldOption, msg);\n\t}\n\n\tdeprecationMsg(msg){\n\t\treturn this.table.deprecationAdvisor.msg(msg);\n\t}\n\t//////////////////////////////////////////\n\t//////////////// Modules /////////////////\n\t//////////////////////////////////////////\n\n\tmodule(key){\n\t\treturn this.table.module(key);\n\t}\n}","import Column from './Column.js';\n\n//public column object\nexport default class ColumnComponent {\n\tconstructor (column){\n\t\tthis._column = column;\n\t\tthis.type = \"ColumnComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetElement(){\n\t\treturn this._column.getElement();\n\t}\n\n\tgetDefinition(){\n\t\treturn this._column.getDefinition();\n\t}\n\n\tgetField(){\n\t\treturn this._column.getField();\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this._column.getTitleDownload();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tisVisible(){\n\t\treturn this._column.visible;\n\t}\n\n\tshow(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.show();\n\t\t}\n\t}\n\n\thide(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.hide();\n\t\t}\n\t}\n\n\ttoggle(){\n\t\tif(this._column.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tdelete(){\n\t\treturn this._column.delete();\n\t}\n\n\tgetSubColumns(){\n\t\tvar output = [];\n\n\t\tif(this._column.columns.length){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetParentColumn(){\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._column;\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);\n\t}\n\n\tgetTable(){\n\t\treturn this._column.table;\n\t}\n\n\tmove(to, after){\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\t\tif(toColumn){\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t}\n\n\tgetNextColumn(){\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t}\n\n\tgetPrevColumn(){\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t}\n\n\tupdateDefinition(updates){\n\t\treturn this._column.updateDefinition(updates);\n\t}\n\n\tgetWidth(){\n\t\treturn this._column.getWidth();\n\t}\n\n\tsetWidth(width){\n\t\tvar result;\n\n\t\tif(width === true){\n\t\t\tresult = this._column.reinitializeWidth(true);\n\t\t}else{\n\t\t\tresult = this._column.setWidth(width);\n\t\t}\n\n\t\tthis._column.table.columnManager.rerenderColumns(true);\n\n\t\treturn result;\n\t}\n}","export default {\n\t\"title\": undefined,\n\t\"field\": undefined,\n\t\"columns\": undefined,\n\t\"visible\": undefined,\n\t\"hozAlign\": undefined,\n\t\"vertAlign\": undefined,\n\t\"width\": undefined,\n\t\"minWidth\": 40,\n\t\"maxWidth\": undefined,\n\t\"maxInitialWidth\": undefined,\n\t\"cssClass\": undefined,\n\t\"variableHeight\": undefined,\n\t\"headerVertical\": undefined,\n\t\"headerHozAlign\": undefined,\n\t\"headerWordWrap\": false,\n\t\"editableTitle\": undefined,\n};","//public cell object\nexport default class CellComponent {\n\n\tconstructor (cell){\n\t\tthis._cell = cell;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue(){\n\t\treturn this._cell.getValue();\n\t}\n\n\tgetOldValue(){\n\t\treturn this._cell.getOldValue();\n\t}\n\n\tgetInitialValue(){\n\t\treturn this._cell.initialValue;\n\t}\n\n\tgetElement(){\n\t\treturn this._cell.getElement();\n\t}\n\n\tgetRow(){\n\t\treturn this._cell.row.getComponent();\n\t}\n\n\tgetData(transform){\n\t\treturn this._cell.row.getData(transform);\n\t}\n\tgetType(){\n\t\treturn \"cell\";\n\t}\n\tgetField(){\n\t\treturn this._cell.column.getField();\n\t}\n\n\tgetColumn(){\n\t\treturn this._cell.column.getComponent();\n\t}\n\n\tsetValue(value, mutate){\n\t\tif(typeof mutate == \"undefined\"){\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t}\n\n\trestoreOldValue(){\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t}\n\n\trestoreInitialValue(){\n\t\tthis._cell.setValueActual(this._cell.initialValue);\n\t}\n\n\tcheckHeight(){\n\t\tthis._cell.checkHeight();\n\t}\n\n\tgetTable(){\n\t\treturn this._cell.table;\n\t}\n\n\t_getSelf(){\n\t\treturn this._cell;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport CellComponent from './CellComponent.js';\n\nexport default class Cell extends CoreFeature{\n\tconstructor(column, row){\n\t\tsuper(column.table);\n\n\t\tthis.table = column.table;\n\t\tthis.column = column;\n\t\tthis.row = row;\n\t\tthis.element = null;\n\t\tthis.value = null;\n\t\tthis.initialValue;\n\t\tthis.oldValue = null;\n\t\tthis.modules = {};\n\n\t\tthis.height = null;\n\t\tthis.width = null;\n\t\tthis.minWidth = null;\n\n\t\tthis.component = null;\n\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\t\tthis.build();\n\t}\n\n\t//////////////// Setup Functions /////////////////\n\t//generate element\n\tbuild(){\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\t\tthis.initialValue = this.value;\n\t}\n\n\tgenerateElement(){\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = \"tabulator-cell\";\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\t}\n\n\t_configureCell(){\n\t\tvar element = this.element,\n\t\tfield = this.column.getField(),\n\t\tvertAligns = {\n\t\t\ttop:\"flex-start\",\n\t\t\tbottom:\"flex-end\",\n\t\t\tmiddle:\"center\",\n\t\t},\n\t\thozAligns = {\n\t\t\tleft:\"flex-start\",\n\t\t\tright:\"flex-end\",\n\t\t\tcenter:\"center\",\n\t\t};\n\n\t\t//set text alignment\n\t\telement.style.textAlign = this.column.hozAlign;\n\n\t\tif(this.column.vertAlign){\n\t\t\telement.style.display = \"inline-flex\";\n\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\n\n\t\t\tif(this.column.hozAlign){\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif(field){\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\t\tif(this.column.definition.cssClass){\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatch(\"cell-init\", this);\n\n\t\t//hide cell if not visible\n\t\tif(!this.column.visible){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//generate cell contents\n\t_generateContents(){\n\t\tvar val;\n\n\t\tval = this.chain(\"cell-format\", this, null, () => {\n\t\t\treturn this.element.innerHTML = this.value;\n\t\t});\n\n\t\tswitch(typeof val){\n\t\t\tcase \"object\":\n\t\t\t\tif(val instanceof Node){\n\n\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\t\t\t\tthis.element.appendChild(val);\n\t\t\t\t}else{\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif(val != null){\n\t\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\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tthis.element.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element.innerHTML = val;\n\t\t}\n\t}\n\n\tcellRendered(){\n\t\tthis.dispatch(\"cell-rendered\", this);\n\t}\n\n\t//////////////////// Getters ////////////////////\n\tgetElement(containerOnly){\n\t\tif(!this.loaded){\n\t\t\tthis.loaded = true;\n\t\t\tif(!containerOnly){\n\t\t\t\tthis.layoutElement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.element;\n\t}\n\n\tgetValue(){\n\t\treturn this.value;\n\t}\n\n\tgetOldValue(){\n\t\treturn this.oldValue;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tsetValue(value, mutate, force){\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\n\n\t\t\tthis.cellRendered();\n\n\t\t\tif(this.column.definition.cellEdited){\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\n\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValueProcessData(value, mutate, force){\n\t\tvar changed = false;\n\n\t\tif(this.value !== value || force){\n\n\t\t\tchanged = true;\n\n\t\t\tif(mutate){\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\tsetValueActual(value){\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tthis.dispatch(\"cell-value-save-before\", this);\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tthis.dispatch(\"cell-value-save-after\", this);\n\n\t\tif(this.loaded){\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\tlayoutElement(){\n\t\tthis._generateContents();\n\n\t\tthis.dispatch(\"cell-layout\", this);\n\t}\n\n\tsetWidth(){\n\t\tthis.width = this.column.width;\n\t\tthis.element.style.width = this.column.widthStyled;\n\t}\n\n\tclearWidth(){\n\t\tthis.width = \"\";\n\t\tthis.element.style.width = \"\";\n\t}\n\n\tgetWidth(){\n\t\treturn this.width || this.element.offsetWidth;\n\t}\n\n\tsetMinWidth(){\n\t\tthis.minWidth = this.column.minWidth;\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t}\n\n\tsetMaxWidth(){\n\t\tthis.maxWidth = this.column.maxWidth;\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n\t}\n\n\tcheckHeight(){\n\t\t// var height = this.element.css(\"height\");\n\t\tthis.row.reinitializeHeight();\n\t}\n\n\tclearHeight(){\n\t\tthis.element.style.height = \"\";\n\t\tthis.height = null;\n\n\t\tthis.dispatch(\"cell-height\", this, \"\");\n\t}\n\n\tsetHeight(){\n\t\tthis.height = this.row.height;\n\t\tthis.element.style.height = this.row.heightStyled;\n\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\n\t}\n\n\tgetHeight(){\n\t\treturn this.height || this.element.offsetHeight;\n\t}\n\n\tshow(){\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n\t}\n\n\thide(){\n\t\tthis.element.style.display = \"none\";\n\t}\n\n\tdelete(){\n\t\tthis.dispatch(\"cell-delete\", this);\n\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.element = false;\n\t\tthis.column.deleteCell(this);\n\t\tthis.row.deleteCell(this);\n\t\tthis.calcs = {};\n\t}\n\n\tgetIndex(){\n\t\treturn this.row.getCellIndex(this);\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new CellComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\nimport ColumnComponent from './ColumnComponent.js';\nimport defaultOptions from './defaults/options.js';\n\nimport Cell from '../cell/Cell.js';\n\nclass Column extends CoreFeature{\n\n\tconstructor(def, parent){\n\t\tsuper(parent.table);\n\n\t\tthis.definition = def; //column definition\n\t\tthis.parent = parent; //hold parent object\n\t\tthis.type = \"column\"; //type of element\n\t\tthis.columns = []; //child columns\n\t\tthis.cells = []; //cells bound to this column\n\t\tthis.element = this.createElement(); //column header element\n\t\tthis.contentElement = false;\n\t\tthis.titleHolderElement = false;\n\t\tthis.titleElement = false;\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\t\tthis.isGroup = false;\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\t\tthis.vertAlign = \"\"; //vert text alignment\n\n\t\t//multi dimensional filed handling\n\t\tthis.field =\"\";\n\t\tthis.fieldStructure = \"\";\n\t\tthis.getFieldValue = \"\";\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.titleDownload = null;\n\t\tthis.titleFormatterRendered = false;\n\n\t\tthis.mapDefinitions();\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.width = null; //column width\n\t\tthis.widthStyled = \"\"; //column width pre-styled to improve render efficiency\n\t\tthis.maxWidth = null; //column maximum width\n\t\tthis.maxWidthStyled = \"\"; //column maximum pre-styled to improve render efficiency\n\t\tthis.maxInitialWidth = null;\n\t\tthis.minWidth = null; //column minimum width\n\t\tthis.minWidthStyled = \"\"; //column minimum pre-styled to improve render efficiency\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\t\tthis.visible = true; //default visible state\n\n\t\tthis.component = null;\n\n\t\t//initialize column\n\t\tif(this.definition.columns){\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tthis.definition.columns.forEach((def, i) => {\n\t\t\t\tvar newCol = new Column(def, this);\n\t\t\t\tthis.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tthis.checkColumnVisibility();\n\t\t}else{\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tthis._initialize();\n\t}\n\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\tswitch(this.table.options.columnHeaderVertAlign){\n\t\t\tcase \"middle\":\n\t\t\t\tel.style.justifyContent = \"center\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tel.style.justifyContent = \"flex-end\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tcreateGroupElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t}\n\n\tmapDefinitions(){\n\t\tvar defaults = this.table.options.columnDefaults;\n\n\t\t//map columnDefaults onto column definitions\n\t\tif(defaults){\n\t\t\tfor(let key in defaults){\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\n\t\t\t\t\tthis.definition[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);\n\t}\n\n\tcheckDefinition(){\n\t\tObject.keys(this.definition).forEach((key) => {\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetField(field){\n\t\tthis.field = field;\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n\t}\n\n\t//register column position with column manager\n\tregisterColumnPosition(column){\n\t\tthis.parent.registerColumnPosition(column);\n\t}\n\n\t//register column position with column manager\n\tregisterColumnField(column){\n\t\tthis.parent.registerColumnField(column);\n\t}\n\n\t//trigger position registration\n\treRegisterPosition(){\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t}else{\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t}\n\n\t//build header element\n\t_initialize(){\n\t\tvar def = this.definition;\n\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\tif(def.headerVertical){\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif(def.headerVertical === \"flip\"){\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tthis.contentElement = this._buildColumnHeaderContent();\n\n\t\tthis.element.appendChild(this.contentElement);\n\n\t\tif(this.isGroup){\n\t\t\tthis._buildGroupHeader();\n\t\t}else{\n\t\t\tthis._buildColumnHeader();\n\t\t}\n\n\t\tthis.dispatch(\"column-init\", this);\n\t}\n\n\t//build header element for header\n\t_buildColumnHeader(){\n\t\tvar def = this.definition;\n\n\t\tthis.dispatch(\"column-layout\", this);\n\n\t\t//set column visibility\n\t\tif(typeof def.visible != \"undefined\"){\n\t\t\tif(def.visible){\n\t\t\t\tthis.show(true);\n\t\t\t}else{\n\t\t\t\tthis.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//assign additional css classes to column header\n\t\tif(def.cssClass){\n\t\t\tvar classNames = def.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif(def.field){\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\t\tthis.setMinWidth(parseInt(def.minWidth));\n\n\t\tif (def.maxInitialWidth) {\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\n\t\t}\n\t\t\n\t\tif(def.maxWidth){\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\n\t\t}\n\n\t\tthis.reinitializeWidth();\n\n\t\t//set horizontal text alignment\n\t\tthis.hozAlign = this.definition.hozAlign;\n\t\tthis.vertAlign = this.definition.vertAlign;\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\t}\n\n\t_buildColumnHeaderContent(){\n\t\tvar contentElement = document.createElement(\"div\");\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tthis.titleHolderElement = document.createElement(\"div\");\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\t\tcontentElement.appendChild(this.titleHolderElement);\n\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\t\treturn contentElement;\n\t}\n\n\t//build title element of column\n\t_buildColumnHeaderTitle(){\n\t\tvar def = this.definition;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\t\t\n\t\tif(def.headerWordWrap){\n\t\t\ttitleHolderElement.classList.add(\"tabulator-col-title-wrap\");\n\t\t}\n\n\t\tif(def.editableTitle){\n\t\t\tvar titleElement = document.createElement(\"input\");\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", () => {\n\t\t\t\tdef.title = titleElement.value;\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\n\t\t}else{\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t}\n\n\t_formatColumnHeaderTitle(el, title){\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\n\t\t\treturn title;\n\t\t});\n\n\t\tswitch(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\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t}\n\n\t//build header element for column group\n\t_buildGroupHeader(){\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\t//asign additional css classes to column header\n\t\tif(this.definition.cssClass){\n\t\t\tvar classNames = this.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\n\t\tthis.element.appendChild(this.groupElement);\n\t}\n\n\t//flat field lookup\n\t_getFlatData(data){\n\t\treturn data[this.field];\n\t}\n\n\t//nested field lookup\n\t_getNestedData(data){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif(!dataObj){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//flat field set\n\t_setFlatData(data, value){\n\t\tif(this.field){\n\t\t\tdata[this.field] = value;\n\t\t}\n\t}\n\n\t//nested field set\n\t_setNestedData(data, value){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tif(i == length -1){\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t}else{\n\t\t\t\tif(!dataObj[structure[i]]){\n\t\t\t\t\tif(typeof value !== \"undefined\"){\n\t\t\t\t\t\tdataObj[structure[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\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t//attach column to this group\n\tattachColumn(column){\n\t\tif(this.groupElement){\n\t\t\tthis.columns.push(column);\n\t\t\tthis.groupElement.appendChild(column.getElement());\n\n\t\t\tcolumn.columnRendered();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t}\n\n\t//vertically align header in column\n\tverticalAlign(alignment, height){\n\n\t\t//calculate height of column header and group holder element\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\n\n\t\tif(this.isGroup){\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\t\t// if(!this.isGroup && alignment !== \"top\"){\n\t\t// \tif(alignment === \"bottom\"){\n\t\t// \t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t// \t}else{\n\t\t// \t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\n\t\t// \t}\n\t\t// }\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t}\n\n\t//clear vertical alignment\n\tclearVerticalAlign(){\n\t\tthis.element.style.paddingTop = \"\";\n\t\tthis.element.style.height = \"\";\n\t\tthis.element.style.minHeight = \"\";\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\n\t\tthis.dispatch(\"column-height\", this, \"\");\n\t}\n\n\t//// Retrieve Column Information ////\n\t//return column header element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return column group element\n\tgetGroupElement(){\n\t\treturn this.groupElement;\n\t}\n\n\t//return field name\n\tgetField(){\n\t\treturn this.field;\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this.titleDownload;\n\t}\n\n\t//return the first column in a group\n\tgetFirstColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return the last column in a group\n\tgetLastColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return all columns in a group\n\tgetColumns(traverse){\n\t\tvar columns = [];\n\n\t\tif(traverse){\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumns.push(column);\n\t\t\t\t\t\n\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t});\n\t\t}else{\n\t\t\tcolumns = this.columns;\n\t\t}\n\t\t\n\t\treturn columns;\n\t}\n\n\t//return all columns in a group\n\tgetCells(){\n\t\treturn this.cells;\n\t}\n\n\t//retrieve the top column in a group of columns\n\tgetTopColumn(){\n\t\tif(this.parent.isGroup){\n\t\t\treturn this.parent.getTopColumn();\n\t\t}else{\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t//return column definition object\n\tgetDefinition(updateBranches){\n\t\tvar colDefs = [];\n\n\t\tif(this.isGroup && updateBranches){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tcheckColumnVisibility(){\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tif(column.visible){\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif(visible){\n\t\t\tthis.show();\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t}else{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//show column\n\tshow(silent, responsiveToggle){\n\t\tif(!this.visible){\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif(!this.isGroup && this.width === null){\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\t//hide column\n\thide(silent, responsiveToggle){\n\t\tif(this.visible){\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\tmatchChildWidths(){\n\t\tvar childWidth = 0;\n\n\t\tif(this.contentElement && this.columns.length){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveChild(child){\n\t\tvar index = this.columns.indexOf(child);\n\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif(!this.columns.length){\n\t\t\tthis.delete();\n\t\t}\n\t}\n\n\tsetWidth(width){\n\t\tthis.widthFixed = true;\n\t\tthis.setWidthActual(width);\n\t}\n\n\tsetWidthActual(width){\n\t\tif(isNaN(width)){\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tif(this.maxWidth){\n\t\t\twidth = Math.min(this.maxWidth, width);\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif(!this.isGroup){\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif(this.parent.isGroup){\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tthis.dispatch(\"column-width\", this);\n\t}\n\n\tcheckCellHeights(){\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tif(cell.row.heightInitialized){\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\n\t\t\t\t\trows.push(cell.row);\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t}else{\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.setCellHeight();\n\t\t});\n\t}\n\n\tgetWidth(){\n\t\tvar width = 0;\n\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\twidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\twidth = this.width;\n\t\t}\n\n\t\treturn width;\n\t}\n\n\tgetLeftOffset(){\n\t\tvar offset = this.element.offsetLeft;\n\n\t\tif(this.parent.isGroup){\n\t\t\toffset += this.parent.getLeftOffset();\n\t\t}\n\n\t\treturn offset;\n\t}\n\n\tgetHeight(){\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\n\t}\n\n\tsetMinWidth(minWidth){\n\t\tif(this.maxWidth && minWidth > this.maxWidth){\n\t\t\tminWidth = this.maxWidth;\n\n\t\t\tconsole.warn(\"the minWidth (\"+ minWidth + \"px) for column '\" + this.field + \"' cannot be bigger that its maxWidth (\"+ this.maxWidthStyled + \")\");\n\t\t}\n\n\t\tthis.minWidth = minWidth;\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMinWidth();\n\t\t});\n\t}\n\n\tsetMaxWidth(maxWidth){\n\t\tif(this.minWidth && maxWidth < this.minWidth){\n\t\t\tmaxWidth = this.minWidth;\n\n\t\t\tconsole.warn(\"the maxWidth (\"+ maxWidth + \"px) for column '\" + this.field + \"' cannot be smaller that its minWidth (\"+ this.minWidthStyled + \")\");\n\t\t}\n\n\t\tthis.maxWidth = maxWidth;\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMaxWidth();\n\t\t});\n\t}\n\n\tdelete(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(this.isGroup){\n\t\t\t\tthis.columns.forEach(function(column){\n\t\t\t\t\tcolumn.delete();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dispatch(\"column-delete\", this);\n\n\t\t\tvar cellCount = this.cells.length;\n\n\t\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\t\tthis.cells[0].delete();\n\t\t\t}\n\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.element = false;\n\t\t\tthis.contentElement = false;\n\t\t\tthis.titleElement = false;\n\t\t\tthis.groupElement = false;\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.removeChild(this);\n\t\t\t}\n\n\t\t\tthis.table.columnManager.deregisterColumn(this);\n\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\n\t\t\tthis.dispatch(\"column-deleted\", this);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\tcolumnRendered(){\n\t\tif(this.titleFormatterRendered){\n\t\t\tthis.titleFormatterRendered();\n\t\t}\n\n\t\tthis.dispatch(\"column-rendered\", this);\n\t}\n\n\t//////////////// Cell Management /////////////////\n\t//generate cell for this column\n\tgenerateCell(row){\n\t\tvar cell = new Cell(this, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t}\n\n\tnextColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n\t}\n\n\t_nextVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n\t}\n\n\tprevColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n\t}\n\n\t_prevVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n\t}\n\n\treinitializeWidth(force){\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\n\t\t\t// maxInitialWidth ignored here as width specified\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\tthis.dispatch(\"column-width-fit-before\", this);\n\n\t\tthis.fitToData(force);\n\n\t\tthis.dispatch(\"column-width-fit-after\", this);\n\t}\n\n\t//set column width to maximum cell width for non group columns\n\tfitToData(force){\n\t\tif(this.isGroup){\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.widthFixed){\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif(!this.width || !this.widthFixed){\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif(width > maxWidth){\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(maxWidth){\n\t\t\t\tvar setTo = maxWidth + 1;\n\t\t\t\tif (this.maxInitialWidth && !force) {\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\n\t\t\t\t}\n\t\t\t\tthis.setWidthActual(setTo);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateDefinition(updates){\n\t\tvar definition;\n\n\t\tif(!this.isGroup){\n\t\t\tif(!this.parent.isGroup){\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\n\t\t\t\t\t.then((column) => {\n\n\t\t\t\t\t\tif(definition.field == this.field){\n\t\t\t\t\t\t\tthis.field = false; //clear field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.delete()\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treturn Promise.reject(\"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.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t}\n\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new ColumnComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n\n\tgetPosition(){\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex().indexOf(this) + 1;\n\t}\n}\n\nColumn.defaultOptionList = defaultOptions;\n\nexport default Column;\n","export default class Helpers{\n\n\tstatic elVisible(el){\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t}\n\n\tstatic 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\tstatic retrieveNestedData(separator, field, data){\n\t\tvar structure = separator ? field.split(separator) : [field],\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdata = data[structure[i]];\n\n\t\t\toutput = data;\n\n\t\t\tif(!data){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tstatic deepClone(obj, clone, list = []){\n\t\tvar objectProto = {}.__proto__,\n\t\tarrayProto = [].__proto__;\n\n\t\tif (!clone){\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\t\t}\n\n\t\tfor(var i in obj) {\n\t\t\tlet subject = obj[i],\n\t\t\tmatch, copy;\n\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\n\t\t\t\tmatch = list.findIndex((item) => {\n\t\t\t\t\treturn item.subject === subject;\n\t\t\t\t});\n\n\t\t\t\tif(match > -1){\n\t\t\t\t\tclone[i] = list[match].copy;\n\t\t\t\t}else{\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\n\n\t\t\t\t\tlist.unshift({subject, copy});\n\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn clone;\n\t}\n}\n","export default class OptionsList {\n\tconstructor(table, msgType, defaults = {}){\n\t\tthis.table = table;\n\t\tthis.msgType = msgType;\n\t\tthis.registeredDefaults = Object.assign({}, defaults);\n\t}\n\t\n\tregister(option, value){\n\t\tthis.registeredDefaults[option] = value;\n\t}\n\t\n\tgenerate(defaultOptions, userOptions = {}){\n\t\tvar output = Object.assign({}, this.registeredDefaults),\n\t\twarn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true;\n\t\t\n\t\tObject.assign(output, defaultOptions);\n\t\t\n\t\tfor (let key in userOptions){\n\t\t\tif(!output.hasOwnProperty(key)){\n\t\t\t\tif(warn){\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key);\n\t\t\t\t}\n\n\t\t\t\toutput[key] = userOptions.key;\n\t\t\t}\n\t\t}\n\t\n\t\t\n\t\tfor (let key in output){\n\t\t\tif(key in userOptions){\n\t\t\t\toutput[key] = userOptions[key];\n\t\t\t}else{\n\t\t\t\tif(Array.isArray(output[key])){\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\n\t\t\t\t\tdelete output[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Renderer extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.elementVertical = table.rowManager.element;\n\t\tthis.elementHorizontal = table.columnManager.element;\n\t\tthis.tableElement = table.rowManager.tableElement;\n\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determine how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the container without resizing it)\n\t}\n\n\n\t///////////////////////////////////\n\t/////// Internal Bindings /////////\n\t///////////////////////////////////\n\n\tinitialize(){\n\t\t//initialize core functionality\n\t}\n\n\tclearRows(){\n\t\t//clear down existing rows layout\n\t}\n\n\tclearColumns(){\n\t\t//clear down existing columns layout\n\t}\n\n\n\treinitializeColumnWidths(columns){\n\t\t//resize columns to fit data\n\t}\n\n\n\trenderRows(){\n\t\t//render rows from a clean slate\n\t}\n\n\trenderColumns(){\n\t\t//render columns from a clean slate\n\t}\n\n\trerenderRows(callback){\n\t\t// rerender rows and keep position\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t}\n\n\trerenderColumns(update, blockRedraw){\n\t\t//rerender columns\n\t}\n\n\trenderRowCells(row){\n\t\t//render the cells in a row\n\t}\n\n\trerenderRowCells(row, force){\n\t\t//rerender the cells in a row\n\t}\n\n\tscrollColumns(left, dir){\n\t\t//handle horizontal scrolling\n\t}\n\n\tscrollRows(top, dir){\n\t\t//handle vertical scrolling\n\t}\n\n\tresize(){\n\t\t//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\n\t}\n\n\tscrollToRow(row){\n\t\t//scroll to a specific row\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\t//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\t//return the visible rows\n\t\treturn [];\n\t}\n\n\t///////////////////////////////////\n\t//////// Helper Functions /////////\n\t///////////////////////////////////\n\n\trows(){\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t/////// External Triggers /////////\n\t/////// (DO NOT OVERRIDE) /////////\n\t///////////////////////////////////\n\n\tclear(){\n\t\t//clear down existing layout\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t}\n\n\trender(){\n\t\t//render from a clean slate\n\t\tthis.renderRows();\n\t\tthis.renderColumns();\n\t}\n\n\trerender(callback){\n\t\t// rerender and keep position\n\t\tthis.rerenderRows();\n\t\tthis.rerenderColumns();\n\t}\n\n\tscrollToRowPosition(row, position, ifVisible){\n\t\tvar rowIndex = this.rows().indexOf(row),\n\t\trowEl = row.getElement(),\n\t\toffset = 0;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(rowIndex > -1){\n\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif(position === \"nearest\"){\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\";\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\t\t\t\tthis.scrollToRow(row);\n\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"top\":\n\t\t\t\t\t\tthis.elementVertical.scrollTop = rowEl.offsetTop;\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class BasicHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\trenderRowCells(row, inFragment) {\n\t\tconst rowFrag = document.createDocumentFragment();\n\t\trow.cells.forEach((cell) => {\n\t\t\trowFrag.appendChild(cell.getElement());\n\t\t});\n\t\trow.element.appendChild(rowFrag);\n\t\t\n\t\tif(!inFragment){\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tcolumns.forEach(function(column){\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class VirtualDomHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftCol = 0;\n\t\tthis.rightCol = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\t\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t\t\n\t\tthis.fitDataColAvg = 0;\n\t\t\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\n\t\t\n\t\tthis.visibleRows = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.isFitData = false;\n\t\t\n\t\tthis.columns = [];\n\t}\n\t\n\tinitialize(){\n\t\tthis.compatibilityCheck();\n\t\tthis.layoutCheck();\n\t\tthis.vertScrollListen();\n\t}\n\t\n\tcompatibilityCheck(){\t\t\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\n\t\t}\n\t\t\n\t\tif(this.options(\"responsiveLayout\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\n\t\t}\n\t\t\n\t\tif(this.options(\"rtl\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\n\t\t}\n\t}\n\t\n\tlayoutCheck(){\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\n\t}\n\t\n\tvertScrollListen(){\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\n\t}\n\t\n\tclearVisRowCache(){\n\t\tthis.visibleRows = null;\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\t\n\trenderColumns(row, force){\n\t\tthis.dataChange();\n\t}\n\t\n\t\n\tscrollColumns(left, dir){\n\t\tif(this.scrollLeft != left){\n\t\t\tthis.scrollLeft = left;\n\t\t\t\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\n\t\t}\n\t}\n\t\n\tcalcWindowBuffer(){\n\t\tvar buffer = this.elementVertical.clientWidth;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\tvar width = column.getWidth();\n\t\t\t\t\n\t\t\t\tif(width > buffer){\n\t\t\t\t\tbuffer = width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.windowBuffer = buffer * 2;\n\t}\n\t\n\trerenderColumns(update, blockRedraw){\t\t\n\t\tvar old = {\n\t\t\tcols:this.columns,\n\t\t\tleftCol:this.leftCol,\n\t\t\trightCol:this.rightCol,\n\t\t},\n\t\tcolPos = 0;\n\t\t\n\t\tif(update && !this.initialized){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.clear();\n\t\t\n\t\tthis.calcWindowBuffer();\n\t\t\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\n\t\t\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tvar config = {},\n\t\t\twidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tif(!column.modules.frozen){\t\t\t\n\t\t\t\t\twidth = column.getWidth();\n\n\t\t\t\t\tconfig.leftPos = colPos;\n\t\t\t\t\tconfig.rightPos = colPos + width;\n\t\t\t\t\t\n\t\t\t\t\tconfig.width = width;\n\t\t\t\t\t\n\t\t\t\t\tif (this.isFitData) {\n\t\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\n\t\t\t\t\t\t//column is visible\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.leftCol == -1){\n\t\t\t\t\t\t\tthis.leftCol = this.columns.length;\n\t\t\t\t\t\t\tthis.vDomPadLeft = colPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.rightCol = this.columns.length;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// column is hidden\n\t\t\t\t\t\tif(this.leftCol !== -1){\n\t\t\t\t\t\t\tthis.vDomPadRight += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.columns.push(column);\n\t\t\t\t\t\n\t\t\t\t\tcolumn.modules.vdomHoz = config;\n\t\t\t\t\t\n\t\t\t\t\tcolPos += width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tif(!update || this.reinitChanged(old)){\n\t\t\t\tthis.reinitializeRows();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\n\t}\n\t\n\trenderRowCells(row){\n\t\tif(this.initialized){\n\t\t\tthis.initializeRow(row);\n\t\t}else{\n\t\t\tconst rowFrag = document.createDocumentFragment();\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\trowFrag.appendChild(cell.getElement());\n\t\t\t});\n\t\t\trow.element.appendChild(rowFrag);\n\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\trerenderRowCells(row, force){\n\t\tthis.reinitializeRow(row, force);\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\tthis.columns[i].reinitializeWidth();\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\t\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tclear(){\n\t\tthis.columns = [];\n\t\t\n\t\tthis.leftCol = -1;\n\t\tthis.rightCol = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t}\n\t\n\tdataChange(){\n\t\tvar change = false,\n\t\trow, rowEl;\n\t\t\n\t\tif(this.isFitData){\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif(!column.definition.width && column.visible){\n\t\t\t\t\tchange = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\t\t\n\t\t\t\trow = this.chain(\"rows-sample\", [1], [], () => {\n\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\n\t\t\t\t})[0];\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trowEl = row.getElement();\n\t\t\t\t\t\n\t\t\t\t\trow.generateCells();\n\t\t\t\t\t\n\t\t\t\t\tthis.tableElement.appendChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tfor(let colEnd = 0; colEnd < row.cells.length; colEnd++){\n\t\t\t\t\t\tlet cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\t\t\t\t\t\t\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\n\t\t\t\tthis.layoutRefresh();\n\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treinitChanged(old){\n\t\tvar match = true;\n\t\t\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\told.cols.forEach((col, i) => {\n\t\t\tif(col !== this.columns[i]){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn !match;\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.getVisibleRows(),\n\t\totherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\n\t\tvisibleRows.forEach((row) => {\n\t\t\tthis.reinitializeRow(row, true);\n\t\t});\n\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t}\n\t\n\tgetVisibleRows(){\n\t\tif (!this.visibleRows){\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\n\t\t}\n\t\t\n\t\treturn this.visibleRows;\t\n\t}\n\t\n\tscroll(diff){\n\t\tthis.vDomScrollPosLeft += diff;\n\t\tthis.vDomScrollPosRight += diff;\n\t\t\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\n\t\t\tthis.rerenderColumns();\n\t\t}else{\n\t\t\tif(diff > 0){\n\t\t\t\t//scroll right\n\t\t\t\tthis.addColRight();\n\t\t\t\tthis.removeColLeft();\n\t\t\t}else{\n\t\t\t\t//scroll left\n\t\t\t\tthis.addColLeft();\n\t\t\t\tthis.removeColRight();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcolPositionAdjust (start, end, diff){\n\t\tfor(let i = start; i < end; i++){\n\t\t\tlet column = this.columns[i];\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\n\t\t}\n\t}\n\t\n\taddColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\n\t\t\tlet column = this.columns[this.rightCol + 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);\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\t\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\n\t\t\t\t\t\tthis.vDomPadRight = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\taddColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol - 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());\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\t\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tif(diff){\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\n\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.rightCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message);\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\t\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\n\t\t\t\t\tthis.rightCol --;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message);\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\t\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\n\t\t\t\t\tthis.leftCol ++;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tfitDataColActualWidthCheck(column){\n\t\tvar newWidth, widthDiff;\n\t\t\n\t\tif(column.modules.vdomHoz.fitDataCheck){\n\t\t\tcolumn.reinitializeWidth();\n\t\t\t\n\t\t\tnewWidth = column.getWidth();\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\n\t\t\t\n\t\t\tif(widthDiff){\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\n\t\t}\n\t\t\n\t\treturn widthDiff;\n\t}\n\t\n\tinitializeRow(row){\n\t\tif(row.type !== \"group\"){\n\t\t\trow.modules.vdomHoz = {\n\t\t\t\tleftCol:this.leftCol,\n\t\t\t\trightCol:this.rightCol,\n\t\t\t};\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\t\tthis.appendCell(row, this.columns[i]);\n\t\t\t}\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tappendCell(row, column){\n\t\tif(column && column.visible){\n\t\t\tlet cell = row.getCell(column);\n\t\t\t\n\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\tcell.cellRendered();\n\t\t}\n\t}\n\t\n\treinitializeRow(row, force){\n\t\tif(row.type !== \"group\"){\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\n\t\t\t\t\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\n\n\t\t\t\tthis.initializeRow(row);\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Column from './column/Column.js';\nimport ColumnComponent from './column/ColumnComponent.js';\nimport Helpers from './tools/Helpers.js';\nimport OptionsList from './tools/OptionsList.js';\n\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\n\nimport defaultColumnOptions from './column/defaults/options.js';\n\nexport default class ColumnManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.blockHozScrollEvent = false;\n\t\tthis.headersElement = null;\n\t\tthis.contentsElement = null;\n\t\tthis.element = null ; //containing element\n\t\tthis.columns = []; // column definition object\n\t\tthis.columnsByIndex = []; //columns by index\n\t\tthis.columnsByField = {}; //columns by field\n\t\tthis.scrollLeft = 0;\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockUpdate = null; //store latest redraw update only status\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t////////////// Setup Functions /////////////////\n\t\n\tinitialize(){\n\t\tthis.initializeRenderer();\n\t\t\n\t\tthis.headersElement = this.createHeadersElement();\n\t\tthis.contentsElement = this.createHeaderContentsElement();\n\t\tthis.element = this.createHeaderElement();\n\t\t\n\t\tthis.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);\n\t\tthis.element.insertBefore(this.contentsElement, this.element.firstChild);\n\n\t\tthis.initializeScrollWheelWatcher();\n\t\t\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.padVerticalScrollbar.bind(this));\n\t}\n\n\tpadVerticalScrollbar(width){\n\t\tif(this.table.rtl){\n\t\t\tthis.headersElement.style.marginLeft = width + \"px\";\n\t\t}else{\n\t\t\tthis.headersElement.style.marginRight = width + \"px\";\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\n\t\t\t\"basic\": RendererBasicHorizontal,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderHorizontal;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderHorizontal);\n\t\t}\n\t}\n\t\n\t\n\tcreateHeadersElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-headers\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\treturn el;\n\t}\n\n\tcreateHeaderContentsElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header-contents\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateHeaderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tif(!this.table.options.headerVisible){\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\t\t\n\t\treturn el;\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return containing contents element\n\tgetContentsElement(){\n\t\treturn this.contentsElement;\n\t}\n\t\n\t\n\t//return header containing element\n\tgetHeadersElement(){\n\t\treturn this.headersElement;\n\t}\n\t\n\t//scroll horizontally to match table body\n\tscrollHorizontal(left){\n\t\tthis.contentsElement.scrollLeft = left;\n\n\t\tthis.scrollLeft = left;\n\t\t\n\t\tthis.renderer.scrollColumns(left);\n\t}\n\n\tinitializeScrollWheelWatcher(){\n\t\tthis.contentsElement.addEventListener(\"wheel\", (e) => {\n\t\t\tvar left;\n\n\t\t\tif(e.deltaX){\n\t\t\t\tleft = this.contentsElement.scrollLeft + e.deltaX;\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t///////////// Column Setup Functions /////////////\n\tgenerateColumnsFromRowData(data){\n\t\tvar cols = [],\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\n\t\trow, sorter;\n\t\t\n\t\tif(data && data.length){\n\t\t\t\n\t\t\trow = data[0];\n\t\t\t\n\t\t\tfor(var key in row){\n\t\t\t\tlet col = {\n\t\t\t\t\tfield:key,\n\t\t\t\t\ttitle:key,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tlet value = row[key];\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(value)){\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcol.sorter = sorter;\n\t\t\t\t\n\t\t\t\tcols.push(col);\n\t\t\t}\n\t\t\t\n\t\t\tif(definitions){\n\t\t\t\t\n\t\t\t\tswitch(typeof definitions){\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(definitions)){\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tvar match = definitions.find((def) => {\n\t\t\t\t\t\t\t\t\treturn def.field === col.field;\n\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\tif(match){\n\t\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tif(definitions[col.field]){\n\t\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.table.options.columns = cols;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.table.options.columns = cols;\n\t\t\t}\n\t\t\t\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t}\n\t\n\tsetColumns(cols, row){\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\n\t\t\n\t\tthis.columns = [];\n\t\tthis.columnsByIndex = [];\n\t\tthis.columnsByField = {};\n\t\t\n\t\tthis.dispatch(\"columns-loading\");\n\t\t\n\t\tcols.forEach((def, i) => {\n\t\t\tthis._addColumn(def);\n\t\t});\n\t\t\n\t\tthis._reIndexColumns();\n\t\t\n\t\tthis.dispatch(\"columns-loaded\");\n\t\t\n\t\tthis.rerenderColumns(false, true);\n\t\t\n\t\tthis.redraw(true);\n\t}\n\t\n\t_addColumn(definition, before, nextToColumn){\n\t\tvar column = new Column(definition, this),\n\t\tcolEl = column.getElement(),\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\t\t\n\t\tif(nextToColumn && index > -1){\n\t\t\tvar topColumn = nextToColumn.getTopColumn();\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\n\t\t\tvar nextEl = topColumn.getElement();\n\t\t\t\n\t\t\tif(before){\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t}else{\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t}else{\n\t\t\tif(before){\n\t\t\t\tthis.columns.unshift(column);\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t}else{\n\t\t\t\tthis.columns.push(column);\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\t\t\n\t\tcolumn.columnRendered();\n\t\t\n\t\treturn column;\n\t}\n\t\n\tregisterColumnField(col){\n\t\tif(col.definition.field){\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t}\n\t\n\tregisterColumnPosition(col){\n\t\tthis.columnsByIndex.push(col);\n\t}\n\t\n\t_reIndexColumns(){\n\t\tthis.columnsByIndex = [];\n\t\t\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t}\n\t\n\t//ensure column headers take up the correct amount of space in column groups\n\tverticalAlignHeaders(){\n\t\tvar minHeight = 0;\n\t\t\n\t\tif(!this.redrawBlock){\n\n\t\t\tthis.headersElement.style.height=\"\";\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.clearVerticalAlign();\n\t\t\t});\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tvar height = column.getHeight();\n\t\t\t\t\n\t\t\t\tif(height > minHeight){\n\t\t\t\t\tminHeight = height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.headersElement.style.height = minHeight + \"px\";\n\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\n\t\t\t});\n\t\t\t\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\t//////////////// Column Details /////////////////\n\tfindColumn(subject){\n\t\tvar columns;\n\n\t\tif(typeof subject == \"object\"){\n\t\t\t\n\t\t\tif(subject instanceof Column){\n\t\t\t\t//subject is column element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof ColumnComponent){\n\t\t\t\t//subject is public column component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\n\t\t\t\tcolumns = [];\n\n\t\t\t\tthis.columns.forEach((column) => {\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t\t});\n\n\t\t\t\t//subject is a HTML element of the column header\n\t\t\t\tlet match = columns.find((column) => {\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\t//subject should be treated as the field name of the column\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetColumnByField(field){\n\t\treturn this.columnsByField[field];\n\t}\n\t\n\tgetColumnsByFieldRoot(root){\n\t\tvar matches = [];\n\t\t\n\t\tObject.keys(this.columnsByField).forEach((field) => {\n\t\t\tvar fieldRoot = this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator)[0] : field;\n\t\t\tif(fieldRoot === root){\n\t\t\t\tmatches.push(this.columnsByField[field]);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn matches;\n\t}\n\t\n\tgetColumnByIndex(index){\n\t\treturn this.columnsByIndex[index];\n\t}\n\t\n\tgetFirstVisibleColumn(){\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\n\t\t\treturn col.visible;\n\t\t});\n\t\t\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t}\n\n\tgetVisibleColumnsByIndex() {\n\t\treturn this.columnsByIndex.filter((col) => col.visible);\n\t}\n\t\n\tgetColumns(){\n\t\treturn this.columns;\n\t}\n\t\n\tfindColumnIndex(column){\n\t\treturn this.columnsByIndex.findIndex((col) => {\n\t\t\treturn column === col;\n\t\t});\n\t}\n\t\n\t//return all columns that are not groups\n\tgetRealColumns(){\n\t\treturn this.columnsByIndex;\n\t}\n\t\n\t//traverse across columns and call action\n\ttraverse(callback){\n\t\tthis.columnsByIndex.forEach((column,i) =>{\n\t\t\tcallback(column, i);\n\t\t});\n\t}\n\t\n\t//get definitions of actual columns\n\tgetDefinitions(active){\n\t\tvar output = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(!active || (active && column.visible)){\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\t//get full nested definition tree\n\tgetDefinitionTree(){\n\t\tvar output = [];\n\t\t\n\t\tthis.columns.forEach((column) => {\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(structured){\n\t\tvar output = [],\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetWidth(){\n\t\tvar width = 0;\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn width;\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\n\t\t\n\t\tif(after){\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t\t}\n\t\t\n\t\tthis.moveColumnActual(from, to, after);\n\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\t\n\tmoveColumnActual(from, to, after){\n\t\tif(from.parent.isGroup){\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t\t}else{\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t\t}\n\t\t\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\t\t\n\t\tthis.rerenderColumns(true);\n\t\t\n\t\tthis.dispatch(\"column-moved\", from, to, after);\n\t\t\n\t\tif(this.subscribedExternal(\"columnMoved\")){\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\t}\n\t\n\t_moveColumnInArray(columns, from, to, after, updateRows){\n\t\tvar\tfromIndex = columns.indexOf(from),\n\t\ttoIndex, rows = [];\n\t\t\n\t\tif (fromIndex > -1) {\n\t\t\t\n\t\t\tcolumns.splice(fromIndex, 1);\n\t\t\t\n\t\t\ttoIndex = columns.indexOf(to);\n\t\t\t\n\t\t\tif (toIndex > -1) {\n\t\t\t\t\n\t\t\t\tif(after){\n\t\t\t\t\ttoIndex = toIndex+1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\t\t\t\n\t\t\tcolumns.splice(toIndex, 0, from);\n\t\t\t\n\t\t\tif(updateRows){\n\t\t\t\t\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\n\t\t\t\t\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\n\t\t\t\t\n\t\t\t\trows.forEach(function(row){\n\t\t\t\t\tif(row.cells.length){\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\t\n\tscrollToColumn(column, position, ifVisible){\n\t\tvar left = 0,\n\t\toffset = column.getLeftOffset(),\n\t\tadjust = 0,\n\t\tcolEl = column.getElement();\n\t\t\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\tadjust = -this.element.clientWidth / 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//check column visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//calculate scroll position\n\t\t\t\tleft = offset + adjust;\n\t\t\t\t\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t\t\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tgenerateCells(row){\n\t\tvar cells = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\t\t\n\t\treturn cells;\n\t}\n\t\n\t//////////////// Column Management /////////////////\n\tgetFlexBaseWidth(){\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\n\t\tfixedWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar if present\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\t\t\n\t\tthis.columnsByIndex.forEach(function(column){\n\t\t\tvar width, minWidth, colWidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\twidth = column.definition.width || 0;\n\t\t\t\t\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\t\t\t\t\n\t\t\t\tif(typeof(width) == \"string\"){\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn fixedWidth;\n\t}\n\t\n\taddColumn(definition, before, nextToColumn){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\t\t\t\n\t\t\tthis._reIndexColumns();\n\t\t\t\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\n\t\t\t\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\t\t\t\n\t\t\tthis.redraw(true);\n\t\t\t\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t\t\n\t\t\tthis.rerenderColumns();\n\t\t\t\n\t\t\tresolve(column);\n\t\t});\n\t}\n\t\n\t//remove column from system\n\tderegisterColumn(column){\n\t\tvar field = column.getField(),\n\t\tindex;\n\t\t\n\t\t//remove from field list\n\t\tif(field){\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\t\t\n\t\t//remove from index list\n\t\tindex = this.columnsByIndex.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\t\t\n\t\t//remove from column list\n\t\tindex = this.columns.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\t\t\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.redraw();\n\t}\n\t\n\trerenderColumns(update, silent){\n\t\tif(!this.redrawBlock){\n\t\t\tthis.renderer.rerenderColumns(update, silent);\n\t\t}else{\n\t\t\tif(update === false || (update === true && this.redrawBlockUpdate === null)){\n\t\t\t\tthis.redrawBlockUpdate = update;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockUpdate = null;\n\t}\n\t\n\trestoreRedraw(){\n\t\tthis.redrawBlock = false;\n\t\tthis.verticalAlignHeaders();\n\t\tthis.renderer.rerenderColumns(this.redrawBlockUpdate);\n\t\t\n\t}\n\t\n\t//redraw columns\n\tredraw(force){\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.verticalAlignHeaders();\n\t\t}\n\t\t\n\t\tif(force){\n\t\t\tthis.table.rowManager.resetScroll();\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\t\t\n\t\tif(!this.confirm(\"table-redrawing\", force)){\n\t\t\tthis.layoutRefresh(force);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-redraw\", force);\n\t\t\n\t\tthis.table.footerManager.redraw();\n\t}\n}","//public row object\nexport default class RowComponent {\n\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\tgetIndex(){\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t}\n\n\tgetPosition(){\n\t\treturn this._row.getPosition();\n\t}\n\n\twatchPosition(callback){\n\t\treturn this._row.watchPosition(callback);\n\t}\n\n\tdelete(){\n\t\treturn this._row.delete();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._row.table.rowManager.scrollToRow(this._row, position, ifVisible);\n\t}\n\n\tmove(to, after){\n\t\tthis._row.moveToRow(to, after);\n\t}\n\n\tupdate(data){\n\t\treturn this._row.updateData(data);\n\t}\n\n\tnormalizeHeight(){\n\t\tthis._row.normalizeHeight(true);\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n\n\treformat(){\n\t\treturn this._row.reinitialize();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetNextRow(){\n\t\tvar row = this._row.nextRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n\n\tgetPrevRow(){\n\t\tvar row = this._row.prevRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport RowComponent from './RowComponent.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Row extends CoreFeature{\n\tconstructor (data, parent, type = \"row\"){\n\t\tsuper(parent.table);\n\t\t\n\t\tthis.parent = parent;\n\t\tthis.data = {};\n\t\tthis.type = type; //type of element\n\t\tthis.element = false;\n\t\tthis.modules = {}; //hold module variables;\n\t\tthis.cells = [];\n\t\tthis.height = 0; //hold element height\n\t\tthis.heightStyled = \"\"; //hold element height pre-styled to improve render efficiency\n\t\tthis.manualHeight = false; //user has manually set row height\n\t\tthis.outerHeight = 0; //hold elements outer height\n\t\tthis.initialized = false; //element has been rendered\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\t\tthis.position = 0; //store position of element in row list\n\t\tthis.positionWatchers = [];\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.created = false;\n\t\t\n\t\tthis.setData(data);\n\t}\n\t\n\tcreate(){\n\t\tif(!this.created){\n\t\t\tthis.created = true;\n\t\t\tthis.generateElement();\n\t\t}\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\tthis.element = el;\n\t}\n\t\n\tgetElement(){\n\t\tthis.create();\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.createElement();\n\t\tthis.dispatch(\"row-init\", this);\n\t}\n\t\n\tgenerateCells(){\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t}\n\t\n\t//functions to setup on first render\n\tinitialize(force, inFragment){\n\t\tthis.create();\n\t\t\n\t\tif(!this.initialized || force){\n\t\t\t\n\t\t\tthis.deleteCells();\n\t\t\t\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-before\", this);\n\t\t\t\n\t\t\tthis.generateCells();\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t\t\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this, inFragment);\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.normalizeHeight();\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout\", this);\n\t\t\t\n\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-after\", this);\n\t\t}else{\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this, inFragment);\n\t\t}\n\t}\n\n\trendered(){\n\t\tthis.cells.forEach((cell) => {\n\t\t\tcell.cellRendered();\n\t\t});\n\t}\n\t\n\treinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t}\n\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tdeinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t}\n\t\n\treinitialize(children){\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(!this.manualHeight){\n\t\t\tthis.height = 0;\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.initialize(true);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"row-relayout\", this);\n\t}\n\t\n\t//get heights when doing bulk row style calcs in virtual DOM\n\tcalcHeight(force){\n\t\tvar maxHeight = 0,\n\t\tminHeight;\n\t\t\n\t\tif(this.table.options.rowHeight){\n\t\t\tthis.height = this.table.options.rowHeight;\n\t\t}else{\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\t\t\t\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tvar height = cell.getHeight();\n\t\t\t\tif(height > maxHeight){\n\t\t\t\t\tmaxHeight = height;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t\t}else{\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n\t\n\t//set of cells\n\tsetCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setHeight();\n\t\t});\n\t\t\n\t\tthis.heightInitialized = true;\n\t}\n\t\n\tclearCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.clearHeight();\n\t\t});\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(force){\n\t\tif(force && !this.table.options.rowHeight){\n\t\t\tthis.clearCellHeight();\n\t\t}\n\t\t\n\t\tthis.calcHeight(force);\n\t\t\n\t\tthis.setCellHeight();\n\t}\n\t\n\t//set height of rows\n\tsetHeight(height, force){\n\t\tif(this.height != height || force){\n\t\t\t\n\t\t\tthis.manualHeight = true;\n\t\t\t\n\t\t\tthis.height = height;\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\t\t\t\n\t\t\tthis.setCellHeight();\n\t\t\t\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\t//return rows outer Width\n\tgetWidth(){\n\t\treturn this.element.offsetWidth;\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\t\n\t//////////////// Data Management /////////////////\n\tsetData(data){\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\n\t\t\n\t\tthis.dispatch(\"row-data-init-after\", this);\n\t}\n\t\n\t//update the rows data\n\tupdateData(updatedData){\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\n\t\ttempData = {},\n\t\tnewRowData;\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof updatedData === \"string\"){\n\t\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\n\t\t\t\n\t\t\tif(this.subscribed(\"row-data-changing\")){\n\t\t\t\ttempData = Object.assign(tempData, this.data);\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\n\t\t\t\n\t\t\t//set data\n\t\t\tfor (let attrname in newRowData) {\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\n\t\t\t\n\t\t\t//update affected cells only\n\t\t\tfor (let attrname in updatedData) {\n\t\t\t\t\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\n\t\t\t\t\n\t\t\t\tcolumns.forEach((column) => {\n\t\t\t\t\tlet cell = this.getCell(column.getField());\n\t\t\t\t\t\n\t\t\t\t\tif(cell){\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\n\t\t\t\t\t\tif(cell.getValue() !== value){\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(visible){\n\t\t\t\t\t\t\t\tcell.cellRendered();\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\t\n\t\t\t//Partial reinitialization if visible\n\t\t\tif(visible){\n\t\t\t\tthis.normalizeHeight(true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.heightStyled = \"\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\n\t\t\t\n\t\t\t//this.reinitialize();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\tgetData(transform){\n\t\tif(transform){\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\tgetCell(column){\n\t\tvar match = false;\n\t\t\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\t\t\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\tmatch = this.cells.find(function(cell){\n\t\t\treturn cell.column === column;\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetCellIndex(findCell){\n\t\treturn this.cells.findIndex(function(cell){\n\t\t\treturn cell === findCell;\n\t\t});\n\t}\n\t\n\tfindCell(subject){\n\t\treturn this.cells.find((cell) => {\n\t\t\treturn cell.element === subject;\n\t\t});\n\t}\n\t\n\tgetCells(){\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\treturn this.cells;\n\t}\n\t\n\tnextRow(){\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tprevRow(){\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tmoveToRow(to, before){\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\t\t\n\t\tif(toRow){\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t}\n\t\n\t///////////////////// Actions /////////////////////\n\tdelete(){\n\t\tthis.dispatch(\"row-delete\", this);\n\t\t\n\t\tthis.deleteActual();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\tdeleteActual(blockRedraw){\n\t\tthis.detachModules();\n\t\t\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\t\t\n\t\tthis.deleteCells();\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\tthis.element = false;\n\t\t\n\t\tthis.dispatch(\"row-deleted\", this);\n\t}\n\t\n\tdetachModules(){\n\t\tthis.dispatch(\"row-deleting\", this);\n\t}\n\t\n\tdeleteCells(){\n\t\tvar cellCount = this.cells.length;\n\t\t\n\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t}\n\t\n\twipe(){\n\t\tthis.detachModules();\n\t\tthis.deleteCells();\n\t\t\n\t\tif(this.element){\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.modules = {};\n\t}\n\n\tisDisplayed(){\n\t\treturn this.table.rowManager.getDisplayRows().includes(this);\n\t}\n\n\tgetPosition(){\n\t\treturn this.isDisplayed() ? this.position : false;\n\t}\n\n\tsetPosition(position){\n\t\tif(position != this.position){\n\t\t\tthis.position = position;\n\n\t\t\tthis.positionWatchers.forEach((callback) => {\n\t\t\t\tcallback(this.position);\n\t\t\t});\n\t\t}\n\t}\n\n\twatchPosition(callback){\n\t\tthis.positionWatchers.push(callback);\n\n\t\tcallback(this.position);\n\t}\n\t\n\tgetGroup(){\n\t\treturn this.modules.group || false;\n\t}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new RowComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class BasicVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.verticalFillMode = \"fill\";\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\t\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\t\t\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\t\n\t\telement.style.minWidth = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\t}\n\t\n\trenderRows() {\n\t\tvar element = this.tableElement,\n\t\tonlyGroupHeaders = true,\n\t\ttableFrag = document.createDocumentFragment(),\n\t\trows = this.rows();\n\t\t\n\t\trows.forEach((row, index) => {\n\t\t\tthis.styleRow(row, index);\n\t\t\trow.initialize(false, true);\n\t\t\t\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t\t\n\t\t\ttableFrag.appendChild(row.getElement());\n\t\t});\n\t\t\n\t\telement.appendChild(tableFrag);\n\t\t\n\t\trows.forEach((row) => {\n\t\t\trow.rendered();\n\t\t\t\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.calcHeight(true);\n\t\t\t}\n\t\t});\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.setCellHeight();\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n\t\n\trerenderRows(callback){\t\n\t\tthis.clearRows();\n\t\t\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t\t\n\t\tthis.renderRows();\n\n\t\tif(!this.rows().length){\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\t}\n\t\n\tscrollToRowNearestTop(row){\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\n\t\t\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\n\t}\n\t\n\tscrollToRow(row){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\n\t}\n\t\n\tvisibleRows(includingBuffer){\n\t\treturn this.rows();\n\t}\n\t\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class VirtualDomVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.verticalFillMode = \"fill\";\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\t\tthis.vDomBottom = 0; //hold position for last rendered row in the virtual DOM\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t}\n\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\telement.style.paddingTop = \"\";\n\t\telement.style.paddingBottom = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\n\t\tthis.elementVertical.scrollTop = 0;\n\t\tthis.elementVertical.scrollLeft = 0;\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\t\tthis.vDomBottom = 0;\n\t\tthis.vDomTopPad = 0;\n\t\tthis.vDomBottomPad = 0;\n\t\tthis.vDomScrollPosTop = 0;\n\t\tthis.vDomScrollPosBottom = 0;\n\t}\n\n\trenderRows(){\n\t\tthis._virtualRenderFill();\n\t}\n\n\trerenderRows(callback){\n\t\tvar scrollTop = this.elementVertical.scrollTop;\n\t\tvar topRow = false;\n\t\tvar topOffset = false;\n\n\t\tvar left = this.table.rowManager.scrollLeft;\n\n\t\tvar rows = this.rows();\n\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\n\t\t\tif(rows[i]){\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\n\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\ttopRow = i;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trows.forEach((row) => {\n\t\t\trow.deinitializeHeight();\n\t\t});\n\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\n\t\tif(this.rows().length){\n\t\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\n\t\t}else{\n\t\t\tthis.clear();\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\n\t\tthis.scrollColumns(left);\n\t}\n\n\tscrollColumns(left){\n\t\tthis.table.rowManager.scrollHorizontal(left);\n\t}\n\n\tscrollRows(top, dir){\n\t\tvar topDiff = top - this.vDomScrollPosTop;\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\t\tvar rows = this.rows();\n\n\t\tthis.scrollTop = top;\n\n\t\tif(-topDiff > margin || bottomDiff > margin){\n\t\t\t//if big scroll redraw table;\n\t\t\tvar left = this.table.rowManager.scrollLeft;\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\n\t\t\tthis.scrollColumns(left);\n\t\t}else{\n\n\t\t\tif(dir){\n\t\t\t\t//scrolling up\n\t\t\t\tif(topDiff < 0){\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\n\t\t\t\t}\n\n\t\t\t\tif(bottomDiff < 0){\n\t\t\t\t\t//hide bottom row if needed\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(bottomDiff >= 0){\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\n\t\t\t\t}\n\n\t\t\t\t//scrolling down\n\t\t\t\tif(topDiff >= 0){\n\t\t\t\t\t//hide top row if needed\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresize(){\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\tvar rowIndex = this.rows().indexOf(row);\n\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\n\t}\n\n\tscrollToRow(row){\n\t\tvar index = this.rows().indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tthis._virtualRenderFill(index, true);\n\t\t}\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\tvar topEdge = this.elementVertical.scrollTop,\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\n\t\ttopFound = false,\n\t\ttopRow = 0,\n\t\tbottomRow = 0,\n\t\trows = this.rows();\n\n\t\tif(includingBuffer){\n\t\t\ttopRow = this.vDomTop;\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}else{\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\t\t\t\tif(rows[i]){\n\t\t\t\t\tif(!topFound){\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tbreak;\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(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}\n\t\t\t}\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t}\n\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\n\t//full virtual render\n\t_virtualRenderFill(position, forceMove, offset) {\n\t\tvar\telement = this.tableElement,\n\t\tholder = this.elementVertical,\n\t\ttopPad = 0,\n\t\trowsHeight = 0,\n\t\trowHeight = 0,\n\t\theightOccupied = 0,\n\t\ttopPadHeight = 0,\n\t\ti = 0,\n\t\trows = this.rows(),\n\t\trowsCount = rows.length,\n\t\tindex = 0,\n\t\trow,\n\t\trowFragment,\n\t\trenderedRows = [],\n\t\ttotalRowsRendered = 0,\n\t\trowsToRender = 0,\n\t\tfixedHeight = this.table.rowManager.fixedHeight,\n\t\tcontainerHeight = this.elementVertical.clientHeight, \n\t\tavgRowHeight = this.table.options.rowHeight, \n\t\tresized = true;\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif(!position){\n\t\t\tthis.clear();\n\t\t}else {\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\t\t//check if position is too close to bottom of table\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\n\n\t\t\tif(heightOccupied < containerHeight){\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\n\t\t\t\tif(position < 0){\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\n\t\t\tthis.vDomTop = position;\n\t\t\tthis.vDomBottom = position -1;\n\n\t\t\tif(fixedHeight || this.table.options.maxHeight) {\n\t\t\t\tif(avgRowHeight) {\n\t\t\t\t\trowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight);\n\t\t\t\t}\n\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender));\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowsToRender = rowsCount;\n\t\t\t}\n\n\t\t\twhile(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) {\n\t\t\t\trenderedRows = [];\n\t\t\t\trowFragment = document.createDocumentFragment();\n\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {\t\n\t\t\t\t\tindex = this.vDomBottom + 1,\n\t\t\t\t\trow = rows[index];\n\n\t\t\t\t\tthis.styleRow(row, index);\n\n\t\t\t\t\trow.initialize(false, true);\n\t\t\t\t\tif(!row.heightInitialized && !this.table.options.rowHeight){\n\t\t\t\t\t\trow.clearCellHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\trowFragment.appendChild(row.getElement());\n\t\t\t\t\trenderedRows.push(row);\n\t\t\t\t\tthis.vDomBottom ++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif(!renderedRows.length){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telement.appendChild(rowFragment);\n\t\t\t\t\n\t\t\t\t// NOTE: The next 3 loops are separate on purpose\n\t\t\t\t// This is to batch up the dom writes and reads which drastically improves performance \n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trow.rendered();\n\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.calcHeight(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.setCellHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trowHeight = row.getHeight();\n\t\t\t\t\t\n\t\t\t\t\tif(totalRowsRendered < topPad){\n\t\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t\t}else {\n\t\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t}\n\t\t\t\t\ttotalRowsRendered++;\n\t\t\t\t});\n\n\t\t\t\tresized = this.table.rowManager.adjustTableSize();\n\t\t\t\tcontainerHeight = this.elementVertical.clientHeight;\n\t\t\t\tif(resized && (fixedHeight || this.table.options.maxHeight))\n\t\t\t\t{\n\t\t\t\t\tavgRowHeight = rowsHeight / totalRowsRendered;\n\t\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!position){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t//adjust row height to match average of rendered elements\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered);\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\n\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\n\t\t\t}else {\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\t\t\t\n\t\t\telement.style.paddingTop = this.vDomTopPad+\"px\";\n\t\t\telement.style.paddingBottom = this.vDomBottomPad+\"px\";\n\n\t\t\tif(forceMove){\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\tthis.dispatch(\"render-virtual-fill\");\n\t\t}\n\t}\n\n\t_addTopRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomTop -1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tif(this.vDomTop){\n\t\t\t\tlet row = rows[index],\n\t\t\t\trowHeight, initialized;\n\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\n\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.initialize();\n\n\t\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\t\tthis.vDomTop--;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t\ti++;\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad -= paddingAdjust;\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 < 1){\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 -= paddingAdjust;\n\t\t}\n\t}\n\n\t_removeTopRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomTop],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomTop++;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\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\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad += paddingAdjust;\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\n\t\t}\n\t}\n\n\t_addBottomRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomBottom + 1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[index],\n\t\t\trowHeight, initialized;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\ttable.appendChild(row.getElement());\n\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.initialize();\n\n\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tthis.vDomBottom++;\n\t\t\t\t\tindex++;\n\t\t\t\t\ti++;\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\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -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 += paddingAdjust;\n\t\t}\n\t}\n\n\t_removeBottomRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomBottom],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomBottom --;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\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\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad += paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\n\t\t}\n\t}\n\n\t_quickNormalizeRowHeight(rows){\n\t\tfor(let row of rows){\n\t\t\trow.calcHeight();\n\t\t}\n\n\t\tfor(let row of rows){\n\t\t\trow.setCellHeight();\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Row from './row/Row.js';\nimport RowComponent from './row/RowComponent.js';\nimport Helpers from './tools/Helpers.js';\n\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\n\nexport default class RowManager extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = this.createHolderElement(); //containing element\n\t\tthis.tableElement = this.createTableElement(); //table element\n\t\tthis.heightFixer = this.createTableElement(); //table element\n\t\tthis.placeholder = null; //placeholder element\n\t\tthis.placeholderContents = null; //placeholder element\n\t\t\n\t\tthis.firstRender = false; //handle first render\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\n\t\tthis.fixedHeight = false; //current rendering mode\n\t\t\n\t\tthis.rows = []; //hold row data objects\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\t\tthis.activeRowsCount = 0; //count of active rows\n\t\t\n\t\tthis.displayRows = []; //rows currently on display in the table\n\t\tthis.displayRowsCount = 0; //count of display rows\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\n\t\t\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\n\t\t\n\t\tthis.scrollbarWidth = 0;\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t//////////////// Setup Functions /////////////////\n\t\n\tcreateHolderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-tableholder\");\n\t\tel.setAttribute(\"tabindex\", 0);\n\t\t// el.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateTableElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-table\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitializePlaceholder(){\n\t\tvar placeholder = this.table.options.placeholder;\n\t\t\n\t\tif(typeof placeholder === \"function\"){\n\t\t\tplaceholder = placeholder.call(this.table);\n\t\t}\n\t\t\n\t\tplaceholder = this.chain(\"placeholder\", [placeholder], placeholder, placeholder) || placeholder;\n\t\t\n\t\t//configure placeholder element\n\t\tif(placeholder){\t\n\t\t\tlet el = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\t\t\t\n\t\t\tif(typeof placeholder == \"string\"){\n\t\t\t\tlet contents = document.createElement(\"div\");\n\t\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\n\t\t\t\tcontents.innerHTML = placeholder;\n\t\t\t\t\n\t\t\t\tel.appendChild(contents);\n\t\t\t\t\n\t\t\t\tthis.placeholderContents = contents;\n\t\t\t\t\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && placeholder instanceof HTMLElement){\n\t\t\t\t\n\t\t\t\tel.appendChild(placeholder);\n\t\t\t\tthis.placeholderContents = placeholder;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Invalid placeholder provided, must be string or HTML Element\", placeholder);\n\t\t\t\t\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.placeholder = el;\n\t\t}\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\t\n\t//return table element\n\tgetTableElement(){\n\t\treturn this.tableElement;\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializePlaceholder();\n\t\tthis.initializeRenderer();\n\t\t\n\t\t//initialize manager\n\t\tthis.element.appendChild(this.tableElement);\n\t\t\n\t\tthis.firstRender = true;\n\t\t\n\t\t//scroll header along with table body\n\t\tthis.element.addEventListener(\"scroll\", () => {\n\t\t\tvar left = this.element.scrollLeft,\n\t\t\tleftDir = this.scrollLeft > left,\n\t\t\ttop = this.element.scrollTop,\n\t\t\ttopDir = this.scrollTop > top;\n\t\t\t\n\t\t\t//handle horizontal scrolling\n\t\t\tif(this.scrollLeft != left){\n\t\t\t\tthis.scrollLeft = left;\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\n\t\t\t\t\n\t\t\t\tthis._positionPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\t//handle vertical scrolling\n\t\t\tif(this.scrollTop != top){\n\t\t\t\tthis.scrollTop = top;\n\t\t\t\t\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t////////////////// Row Manipulation //////////////////\n\tfindRow(subject){\n\t\tif(typeof subject == \"object\"){\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\t//subject is a HTML element of the row\n\t\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\t\treturn row.getElement() === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}else if(subject === null){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\treturn false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t\t\n\t\t\treturn match || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetRowFromDataObject(data){\n\t\tvar match = this.rows.find((row) => {\n\t\t\treturn row.data === data;\n\t\t});\n\t\t\n\t\treturn match || false;\n\t}\n\t\n\tgetRowFromPosition(position){\n\t\treturn this.getDisplayRows().find((row) => {\n\t\t\treturn row.getPosition() === position && row.isDisplayed();\n\t\t});\n\t}\n\t\n\tscrollToRow(row, position, ifVisible){\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\tsetData(data, renderInPosition, columnsChanged){\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\n\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\tthis._setDataActual(data, true);\n\t\t\t\t}else{\n\t\t\t\t\tthis.reRenderInPosition(() => {\n\t\t\t\t\t\tthis._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\t\t\t\tthis.resetScroll();\n\t\t\t\t\n\t\t\t\tthis._setDataActual(data);\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\t_setDataActual(data, renderInPosition){\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\n\t\t\n\t\tthis._wipeElements();\n\t\t\n\t\tif(Array.isArray(data)){\n\t\t\tthis.dispatch(\"data-processing\", data);\n\t\t\t\n\t\t\tdata.forEach((def, i) => {\n\t\t\t\tif(def && typeof def === \"object\"){\n\t\t\t\t\tvar row = new Row(def, this);\n\t\t\t\t\tthis.rows.push(row);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\n\t\t\t\n\t\t\tthis.dispatch(\"data-processed\", data);\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\n\t\t}else{\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\n\t\t}\n\t}\n\t\n\t_wipeElements(){\n\t\tthis.dispatch(\"rows-wipe\");\n\t\t\n\t\tthis.destroy();\n\t\t\n\t\tthis.adjustTableSize();\n\t\t\n\t\tthis.dispatch(\"rows-wiped\");\n\t}\n\t\n\tdestroy(){\n\t\tthis.rows.forEach((row) => {\n\t\t\trow.wipe();\n\t\t});\n\t\t\n\t\tthis.rows = [];\n\t\tthis.activeRows = [];\n\t\tthis.activeRowsPipeline = [];\n\t\tthis.activeRowsCount = 0;\n\t\tthis.displayRows = [];\n\t\tthis.displayRowsCount = 0;\n\t}\n\t\n\tdeleteRow(row, blockRedraw){\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\tactiveIndex = this.activeRows.indexOf(row);\n\t\t\n\t\tif(activeIndex > -1){\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\t\t\n\t\tif(allIndex > -1){\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tvar displayIndex = rows.indexOf(row);\n\t\t\t\n\t\t\tif(displayIndex > -1){\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis.tableEmpty();\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\n\t\t}\n\t}\n\t\n\taddRow(data, pos, index, blockRedraw){\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\t\treturn row;\n\t}\n\t\n\t//add multiple rows\n\taddRows(data, pos, index, refreshDisplayOnly){\n\t\tvar rows = [];\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tpos = this.findAddRowPos(pos);\n\t\t\t\n\t\t\tif(!Array.isArray(data)){\n\t\t\t\tdata = [data];\n\t\t\t}\n\t\t\t\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\n\t\t\t\tdata.reverse();\n\t\t\t}\n\t\t\t\n\t\t\tdata.forEach((item, i) => {\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\n\t\t\t\trows.push(row);\n\t\t\t\tthis.dispatch(\"row-added\", row, item, pos, index);\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(refreshDisplayOnly ? \"displayPipeline\" : false, false, true);\n\t\t\t\n\t\t\tthis.regenerateRowPositions();\n\t\t\t\n\t\t\tif(this.displayRowsCount){\n\t\t\t\tthis._clearPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\tresolve(rows);\n\t\t});\n\t}\n\t\n\tfindAddRowPos(pos){\n\t\tif(typeof pos === \"undefined\"){\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\t\t\n\t\tif(pos === \"pos\"){\n\t\t\tpos = true;\n\t\t}\n\t\t\n\t\tif(pos === \"bottom\"){\n\t\t\tpos = false;\n\t\t}\n\t\t\n\t\treturn pos;\n\t}\n\t\n\taddRowActual(data, pos, index, blockRedraw){\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\ttop = this.findAddRowPos(pos),\n\t\tallIndex = -1,\n\t\tactiveIndex, chainResult;\n\t\t\n\t\tif(!index){\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\n\t\t\t\n\t\t\tindex = chainResult.index;\n\t\t\ttop = chainResult.top;\n\t\t}\n\t\t\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tindex = this.findRow(index);\n\t\t}\n\t\t\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\n\t\t\n\t\tif(index){\n\t\t\tallIndex = this.rows.indexOf(index);\n\t\t}\n\t\t\n\t\tif(index && allIndex > -1){\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\n\t\t\t\n\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\t\t\t\t\n\t\t\t\tif(displayIndex > -1){\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(activeIndex > -1){\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\n\t\t\t}\n\t\t\t\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(top){\n\t\t\t\t\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.unshift(row);\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}else{\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.push(row);\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t}\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\treturn row;\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tthis.dispatch(\"row-move\", from, to, after);\n\t\t\n\t\tthis.moveRowActual(from, to, after);\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatch(\"row-moved\", from, to, after);\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\n\t}\n\t\n\tmoveRowActual(from, to, after){\n\t\tthis.moveRowInArray(this.rows, from, to, after);\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tthis.moveRowInArray(rows, from, to, after);\n\t\t});\n\t\t\n\t\tthis.dispatch(\"row-moving\", from, to, after);\n\t}\n\t\n\tmoveRowInArray(rows, from, to, after){\n\t\tvar\tfromIndex, toIndex, start, end;\n\t\t\n\t\tif(from !== to){\n\t\t\t\n\t\t\tfromIndex = rows.indexOf(from);\n\t\t\t\n\t\t\tif (fromIndex > -1) {\n\t\t\t\t\n\t\t\t\trows.splice(fromIndex, 1);\n\t\t\t\t\n\t\t\t\ttoIndex = rows.indexOf(to);\n\t\t\t\t\n\t\t\t\tif (toIndex > -1) {\n\t\t\t\t\t\n\t\t\t\t\tif(after){\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//restyle rows\n\t\t\tif(rows === this.getDisplayRows()){\n\t\t\t\t\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\n\t\t\t\t\n\t\t\t\tfor(let i = start; i <= end; i++){\n\t\t\t\t\tif(rows[i]){\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearData(){\n\t\tthis.setData([]);\n\t}\n\t\n\tgetRowIndex(row){\n\t\treturn this.findRowIndex(row, this.rows);\n\t}\n\t\n\tgetDisplayRowIndex(row){\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\t\treturn index > -1 ? index : false;\n\t}\n\t\n\tnextDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tnextRow = false;\n\t\t\n\t\t\n\t\tif(index !== false && index < this.displayRowsCount -1){\n\t\t\tnextRow = this.getDisplayRows()[index+1];\n\t\t}\n\t\t\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn nextRow;\n\t}\n\t\n\tprevDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tprevRow = false;\n\t\t\n\t\tif(index){\n\t\t\tprevRow = this.getDisplayRows()[index-1];\n\t\t}\n\t\t\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn prevRow;\n\t}\n\t\n\tfindRowIndex(row, list){\n\t\tvar rowIndex;\n\t\t\n\t\trow = this.findRow(row);\n\t\t\n\t\tif(row){\n\t\t\trowIndex = list.indexOf(row);\n\t\t\t\n\t\t\tif(rowIndex > -1){\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tgetData(active, transform){\n\t\tvar output = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tif(row.type == \"row\"){\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(active){\n\t\tvar\toutput = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetDataCount(active){\n\t\tvar rows = this.getRows(active);\n\t\t\n\t\treturn rows.length;\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tthis.scrollLeft = left;\n\t\tthis.element.scrollLeft = left;\n\t\t\n\t\tthis.dispatch(\"scroll-horizontal\", left);\n\t}\n\t\n\tregisterDataPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.dataPipeline.push({handler, priority});\n\t\t\tthis.dataPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\tregisterDisplayPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.displayPipeline.push({handler, priority});\n\t\t\tthis.displayPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\t//set active data set\n\trefreshActiveData(handler, skipStage, renderInPosition){\n\t\tvar table = this.table,\n\t\tstage = \"\",\n\t\tindex = 0,\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"];\n\t\t\n\t\tif(!this.table.destroyed){\n\t\t\tif(typeof handler === \"function\"){\n\t\t\t\tindex = this.dataPipeline.findIndex((item) => {\n\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(index > -1){\n\t\t\t\t\tstage = \"dataPipeline\";\n\t\t\t\t\t\n\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\tif(index == this.dataPipeline.length - 1){\n\t\t\t\t\t\t\tstage = \"display\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\n\t\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\tstage = \"displayPipeline\";\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\n\t\t\t\t\t\t\t\tstage = \"end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tindex++;\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\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstage = handler || \"all\";\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.redrawBlock){\n\t\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\n\t\t\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tskipStage: skipStage,\n\t\t\t\t\t\trenderInPosition: renderInPosition,\n\t\t\t\t\t\tstage:stage,\n\t\t\t\t\t\tindex:index,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\tif(Helpers.elVisible(this.element)){\n\t\t\t\t\tif(renderInPosition){\n\t\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!handler){\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.renderTable();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\n\t\t\t\t\t\t\tthis.table.columnManager.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"data-refreshed\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\trefreshPipelines(handler, stage, index, renderInPosition){\n\t\tthis.dispatch(\"data-refreshing\");\n\t\t\n\t\tif(!handler || !this.activeRowsPipeline[0]){\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\n\t\t}\n\t\t\n\t\t//cascade through data refresh stages\n\t\tswitch(stage){\n\t\t\tcase \"all\":\n\t\t\t//handle case where all data needs refreshing\n\t\t\t\n\t\t\tcase \"dataPipeline\":\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\n\t\t\t\t\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\tindex = 0;\n\t\t\t\tthis.resetDisplayRows();\n\t\t\t\n\t\t\tcase \"displayPipeline\":\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\n\t\t\t\t\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"end\":\n\t\t\t//case to handle scenario when trying to skip past end stage\n\t\t\t\tthis.regenerateRowPositions();\n\t\t}\n\t\t\n\t\tif(this.getDisplayRows().length){\n\t\t\tthis._clearPlaceholder();\n\t\t}\n\t}\n\t\n\t//regenerate row positions\n\tregenerateRowPositions(){\n\t\tvar rows = this.getDisplayRows();\n\t\tvar index = 1;\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\"){\n\t\t\t\trow.setPosition(index);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tsetActiveRows(activeRows){\n\t\tthis.activeRows = this.activeRows = Object.assign([], activeRows);\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t}\n\t\n\t//reset display rows array\n\tresetDisplayRows(){\n\t\tthis.displayRows = [];\n\t\t\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\t}\n\t\n\t//set display row pipeline data\n\tsetDisplayRows(displayRows, index){\n\t\tthis.displayRows[index] = displayRows;\n\t\t\n\t\tif(index == this.displayRows.length -1){\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t\t}\n\t}\n\t\n\tgetDisplayRows(index){\n\t\tif(typeof index == \"undefined\"){\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\n\t\t}else{\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t}\n\t\n\tgetVisibleRows(chain, viewable){\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\n\t\t\n\t\tif(chain){\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t//repeat action across display rows\n\tdisplayRowIterator(callback){\n\t\tthis.activeRowsPipeline.forEach(callback);\n\t\tthis.displayRows.forEach(callback);\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t}\n\t\n\t//return only actual rows (not group headers etc)\n\tgetRows(type){\n\t\tvar rows = [];\n\t\t\n\t\tswitch(type){\n\t\t\tcase \"active\":\n\t\t\t\trows = this.activeRows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.getVisibleRows(false, true);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t///////////////// Table Rendering /////////////////\n\t//trigger rerender of table in current position\n\treRenderInPosition(callback){\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.redrawBlockRenderInPosition = true;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\t\n\t\t\tthis.renderer.rerenderRows(callback);\n\t\t\t\n\t\t\tif(!this.fixedHeight){\n\t\t\t\tthis.adjustTableSize();\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"renderComplete\");\n\t\t}\n\t}\n\t\n\tscrollBarCheck(){\n\t\tvar scrollbarWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar moving table when present\n\t\tif(this.element.scrollHeight > this.element.clientHeight){\n\t\t\tscrollbarWidth = this.element.offsetWidth - this.element.clientWidth;\n\t\t}\n\t\t\n\t\tif(scrollbarWidth !== this.scrollbarWidth){\n\t\t\tthis.scrollbarWidth = scrollbarWidth;\n\t\t\tthis.dispatch(\"scrollbar-vertical\", scrollbarWidth);\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomVertical,\n\t\t\t\"basic\": RendererBasicVertical,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderVertical;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderMode = this.table.options.renderVertical;\n\t\t\t\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t\t\n\t\t\tif((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){\n\t\t\t\tthis.fixedHeight = true;\n\t\t\t}else{\n\t\t\t\tthis.fixedHeight = false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderVertical);\n\t\t}\n\t}\n\t\n\tgetRenderMode(){\n\t\treturn this.renderMode;\n\t}\n\t\n\trenderTable(){\n\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tthis._clearTable();\n\t\t\n\t\tif(this.displayRowsCount){\n\t\t\tthis.renderer.renderRows();\n\t\t\t\n\t\t\tif(this.firstRender){\n\t\t\t\tthis.firstRender = false;\n\t\t\t\t\n\t\t\t\tif(!this.fixedHeight){\n\t\t\t\t\tthis.adjustTableSize();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.layoutRefresh(true);\n\t\t\t}\n\t\t}else{\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t\t\n\t\tif(!this.fixedHeight){\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-layout\");\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis._showPlaceholder();\n\t\t}\n\t\t\n\t\tthis.scrollBarCheck();\n\t\t\n\t\tthis.dispatchExternal(\"renderComplete\");\n\t}\n\t\n\t//show scrollbars on empty table div\n\trenderEmptyScroll(){\n\t\tif(this.placeholder){\n\t\t\tthis.tableElement.style.display = \"none\";\n\t\t}else{\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\n\t\t}\n\t}\n\t\n\t_clearTable(){\t\n\t\tthis._clearPlaceholder();\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.renderer.clearRows();\n\t}\n\t\n\ttableEmpty(){\n\t\tthis.renderEmptyScroll();\n\t\tthis._showPlaceholder();\n\t}\n\n\tcheckPlaceholder(){\n\t\tif(this.displayRowsCount){\n\t\t\tthis._clearPlaceholder();\n\t\t}else{\n\t\t\tthis.tableEmpty();\n\t\t}\n\t}\n\t\n\t_showPlaceholder(){\n\t\tif(this.placeholder){\n\t\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t\t}\n\t\t\t\n\t\t\tthis.initializePlaceholder();\n\t\t\t\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\n\t\t\tthis.getElement().appendChild(this.placeholder);\n\t\t\tthis._positionPlaceholder();\n\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t}\n\t\n\t_clearPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t}\n\t\t\n\t\t// clear empty table placeholder min\n\t\tthis.tableElement.style.minWidth = \"\";\n\t\tthis.tableElement.style.display = \"\";\n\t}\n\t\n\t_positionPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\n\t\t}\n\t}\n\t\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\t\n\t//normalize height of active rows\n\tnormalizeHeight(){\n\t\tthis.activeRows.forEach(function(row){\n\t\t\trow.normalizeHeight();\n\t\t});\n\t}\n\t\n\t//adjust the height of the table holder to fit in the Tabulator element\n\tadjustTableSize(){\n\t\tlet initialHeight = this.element.clientHeight, minHeight;\n\t\tlet resized = false;\n\t\t\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\t\t\t\n\t\t\tif(this.fixedHeight){\n\t\t\t\tminHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + \"px\";\n\t\t\t\t\n\t\t\t\tconst height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.minHeight = minHeight || \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.height = height;\n\t\t\t\tthis.element.style.maxHeight = height;\n\t\t\t} else {\n\t\t\t\tthis.element.style.height = \"\";\n\t\t\t\tthis.element.style.height =\n\t\t\t\tthis.table.element.clientHeight - otherHeight + \"px\";\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t\t}\n\t\t\t\n\t\t\tthis.renderer.resize();\n\t\t\t\n\t\t\t//check if the table has changed size when dealing with variable height tables\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\n\t\t\t\tresized = true;\n\t\t\t\tif(this.subscribed(\"table-resize\")){\n\t\t\t\t\tthis.dispatch(\"table-resize\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t}\n\t\t\n\t\tthis._positionPlaceholder();\n\t\treturn resized;\n\t}\n\t\n\t//reinitialize all rows\n\treinitialize(){\n\t\tthis.rows.forEach(function(row){\n\t\t\trow.reinitialize(true);\n\t\t});\n\t}\n\t\n\t//prevent table from being redrawn\n\tblockRedraw (){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockRestoreConfig = false;\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw (){\n\t\tthis.redrawBlock = false;\n\t\t\n\t\tif(this.redrawBlockRestoreConfig){\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\t\t\t\n\t\t\tthis.redrawBlockRestoreConfig = false;\n\t\t}else{\n\t\t\tif(this.redrawBlockRenderInPosition){\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.redrawBlockRenderInPosition = false;\n\t}\n\t\n\t//redraw table\n\tredraw (force){\n\t\tthis.adjustTableSize();\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\t\t\n\t\tif(!force){\t\n\t\t\tthis.reRenderInPosition();\n\t\t\tthis.scrollHorizontal(this.scrollLeft);\n\t\t}else{\n\t\t\tthis.renderTable();\n\t\t}\n\t}\n\t\n\tresetScroll(){\n\t\tthis.element.scrollLeft = 0;\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tif(this.table.browser === \"ie\"){\n\t\t\tvar event = document.createEvent(\"Event\");\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\t\t\tthis.element.dispatchEvent(event);\n\t\t}else{\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\n\nexport default class FooterManager extends CoreFeature{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.active = false;\n\t\tthis.element = this.createElement(); //containing element\n\t\tthis.containerElement = this.createContainerElement(); //containing element\n\t\tthis.external = false;\n\t}\n\n\tinitialize(){\n\t\tthis.initializeElement();\n\t}\n\n\tcreateElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t}\n\n\t\n\tcreateContainerElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer-contents\");\n\n\t\tthis.element.appendChild(el);\n\n\t\treturn el;\n\t}\n\n\tinitializeElement(){\n\t\tif(this.table.options.footerElement){\n\n\t\t\tswitch(typeof this.table.options.footerElement){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\n\t\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.external = true;\n\t\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tappend(element){\n\t\tthis.activate();\n\n\t\tthis.containerElement.appendChild(element);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tprepend(element){\n\t\tthis.activate();\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tremove(element){\n\t\telement.parentNode.removeChild(element);\n\t\tthis.deactivate();\n\t}\n\n\tdeactivate(force){\n\t\tif(!this.element.firstChild || force){\n\t\t\tif(!this.external){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\tthis.active = false;\n\t\t}\n\t}\n\n\tactivate(){\n\t\tif(!this.active){\n\t\t\tthis.active = true;\n\t\t\tif(!this.external){\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tredraw(){\n\t\tthis.dispatch(\"footer-redraw\");\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Row from '../row/Row.js';\n\nexport default class InteractionManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.el = null;\n\t\t\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\n\t\t\n\t\tthis.previousTargets = {};\n\t\t\n\t\tthis.listeners = [\n\t\t\t\"click\",\n\t\t\t\"dblclick\",\n\t\t\t\"contextmenu\",\n\t\t\t\"mouseenter\",\n\t\t\t\"mouseleave\",\n\t\t\t\"mouseover\",\n\t\t\t\"mouseout\",\n\t\t\t\"mousemove\",\n\t\t\t\"mouseup\",\n\t\t\t\"mousedown\",\n\t\t\t\"touchstart\",\n\t\t\t\"touchend\",\n\t\t];\n\t\t\n\t\tthis.componentMap = {\n\t\t\t\"tabulator-cell\":\"cell\",\n\t\t\t\"tabulator-row\":\"row\",\n\t\t\t\"tabulator-group\":\"group\",\n\t\t\t\"tabulator-col\":\"column\",\n\t\t};\n\t\t\n\t\tthis.pseudoTrackers = {\n\t\t\t\"row\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"cell\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"group\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"column\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t};\n\t\t\n\t\tthis.pseudoTracking = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.el = this.table.element;\n\t\t\n\t\tthis.buildListenerMap();\n\t\tthis.bindSubscriptionWatchers();\n\t}\n\t\n\tbuildListenerMap(){\n\t\tvar listenerMap = {};\n\t\t\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistenerMap[listener] = {\n\t\t\t\thandler:null,\n\t\t\t\tcomponents:[],\n\t\t\t};\n\t\t});\n\t\t\n\t\tthis.listeners = listenerMap;\n\t}\n\t\n\tbindPseudoEvents(){\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\n\t\t});\n\t\t\n\t\tthis.pseudoTracking = true;\n\t}\n\t\n\tpseudoMouseEnter(key, e, target){\n\t\tif(this.pseudoTrackers[key].target !== target){\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\n\t\t\t}\n\t\t\t\n\t\t\tthis.pseudoMouseLeave(key, e);\n\t\t\t\n\t\t\tthis.pseudoTrackers[key].target = target;\n\t\t\t\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\n\t\t}\n\t}\n\t\n\tpseudoMouseLeave(key, e){\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\n\t\tlinkedKeys = {\n\t\t\t\"row\":[\"cell\"],\n\t\t\t\"cell\":[\"row\"],\n\t\t};\n\t\t\n\t\tleaveList = leaveList.filter((item) => {\n\t\t\tvar links = linkedKeys[key];\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\n\t\t});\n\t\t\n\t\t\n\t\tleaveList.forEach((key) => {\n\t\t\tvar target = this.pseudoTrackers[key].target;\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\n\t\t\t\t\n\t\t\t\tthis.pseudoTrackers[key].target = null;\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\tbindSubscriptionWatchers(){\n\t\tvar listeners = Object.keys(this.listeners),\n\t\tcomponents = Object.values(this.componentMap);\n\t\t\n\t\tfor(let comp of components){\n\t\t\tfor(let listener of listeners){\n\t\t\t\tlet key = comp + \"-\" + listener;\n\t\t\t\t\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this));\n\t}\n\t\n\tsubscriptionChanged(component, key, added){\n\t\tvar listener = this.listeners[key].components,\n\t\tindex = listener.indexOf(component),\n\t\tchanged = false;\n\t\t\n\t\tif(added){\n\t\t\tif(index === -1){\n\t\t\t\tlistener.push(component);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\n\t\t\t\tif(index > -1){\n\t\t\t\t\tlistener.splice(index, 1);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\n\t\t\tthis.bindPseudoEvents();\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.updateEventListeners();\n\t\t}\n\t}\n\t\n\tupdateEventListeners(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.components.length){\n\t\t\t\tif(!listener.handler){\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler);\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(listener.handler){\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\t\tlistener.handler = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\ttrack(type, e){\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\n\t\t\n\t\tvar targets = this.findTargets(path);\n\t\ttargets = this.bindComponents(type, targets);\n\t\t\n\t\tthis.triggerEvents(type, e, targets);\n\t\t\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\n\t\t}\n\t}\n\t\n\tfindTargets(path){\n\t\tvar targets = {};\n\t\t\n\t\tlet componentMap = Object.keys(this.componentMap);\n\t\t\n\t\tfor (let el of path) {\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\n\t\t\t\n\t\t\tlet abort = classList.filter((item) => {\n\t\t\t\treturn this.abortClasses.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tif(abort.length){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tlet elTargets = classList.filter((item) => {\n\t\t\t\treturn componentMap.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tfor (let target of elTargets) {\n\t\t\t\tif(!targets[this.componentMap[target]]){\n\t\t\t\t\ttargets[this.componentMap[target]] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(targets.group && targets.group === targets.row){\n\t\t\tdelete targets.row;\n\t\t}\n\n\t\treturn targets;\n\t}\n\t\n\tbindComponents(type, targets){\n\t\t//ensure row component is looked up before cell\n\t\tvar keys = Object.keys(targets).reverse(),\n\t\tlistener = this.listeners[type],\n\t\tmatches = {},\n\t\ttargetMatches = {};\n\t\t\n\t\tfor(let key of keys){\n\t\t\tlet component,\n\t\t\ttarget = targets[key],\n\t\t\tpreviousTarget = this.previousTargets[key];\n\t\t\t\n\t\t\tif(previousTarget && previousTarget.target === target){\n\t\t\t\tcomponent = previousTarget.component;\n\t\t\t}else{\n\t\t\t\tswitch(key){\n\t\t\t\t\tcase \"row\":\n\t\t\t\t\tcase \"group\":\n\t\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\n\t\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tcomponent = rows.find((row) => {\n\t\t\t\t\t\t\t\treturn row.getElement() === target;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\n\t\t\t\t\t\t\t\ttargets[key] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"column\":\n\t\t\t\t\t\tif(listener.components.includes(\"column\")){\n\t\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"cell\":\n\t\t\t\t\t\tif(listener.components.includes(\"cell\")){\n\t\t\t\t\t\t\tif(matches[\"row\"] instanceof Row){\n\t\t\t\t\t\t\t\tcomponent = matches[\"row\"].findCell(target);\n\t\t\t\t\t\t\t}else{\t\n\t\t\t\t\t\t\t\tif(targets[\"row\"]){\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(component){\n\t\t\t\tmatches[key] = component;\n\t\t\t\ttargetMatches[key] = {\n\t\t\t\t\ttarget:target,\n\t\t\t\t\tcomponent:component,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.previousTargets = targetMatches;\n\t\t\n\t\treturn matches;\n\t}\n\t\n\ttriggerEvents(type, e, targets){\n\t\tvar listener = this.listeners[type];\n\n\t\tfor(let key in targets){\n\t\t\tif(targets[key] && listener.components.includes(key)){\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearWatchers(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.handler){\n\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\tlistener.handler = null;\n\t\t\t}\n\t\t}\n\t}\n}\n","export default class ComponentFunctionBinder{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\n\t\tthis.bindings = {};\n\t}\n\n\tbind(type, funcName, handler){\n\t\tif(!this.bindings[type]){\n\t\t\tthis.bindings[type] = {};\n\t\t}\n\n\t\tif(this.bindings[type][funcName]){\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler);\n\t\t}else{\n\t\t\tthis.bindings[type][funcName] = handler;\n\t\t}\n\t}\n\n\thandle(type, component, name){\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\n\t\t\treturn this.bindings[type][name].bind(null, component);\n\t\t}else{\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\n\t\t\t\tif(this.table.options.debugInvalidComponentFuncs){\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\n\nexport default class DataLoader extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\n\t\tthis.loading = false;\n\t}\n\t\n\tinitialize(){}\n\t\n\tload(data, params, config, replace, silent, columnsChanged){\n\t\tvar requestNo = ++this.requestOrder;\n\n\t\tif(this.table.destroyed){\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\t\n\t\tthis.dispatchExternal(\"dataLoading\", data);\n\t\t\n\t\t//parse json data to array\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\n\t\t\tthis.loading = true;\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis.alertLoader();\n\t\t\t}\n\t\t\t\n\t\t\t//get params for request\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\n\t\t\t\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\n\t\t\t\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\n\t\t\t\n\t\t\treturn result.then((response) => {\n\t\t\t\tif(!this.table.destroyed){\n\t\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\n\t\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\n\t\t\t\t\t\n\t\t\t\t\tif(requestNo == this.requestOrder){\n\t\t\t\t\t\tthis.clearAlert();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(rowData !== false){\n\t\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\n\t\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - Table has been destroyed\");\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\n\t\t\t\t\n\t\t\t\tif(!silent){\n\t\t\t\t\tthis.alertError();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clearAlert();\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\n\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\n\t\t\t\n\t\t\tif(!data){\n\t\t\t\tdata = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.table.rowManager.setData(data, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\t\n\tmapParams(params, map){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in params){\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tobjectInvert(obj){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in obj){\n\t\t\toutput[obj[key]] = key;\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tblockActiveLoad(){\n\t\tthis.requestOrder++;\n\t}\n\t\n\talertLoader(){\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\n\t\t\n\t\tif(shouldLoad){\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\n\t\t}\n\t}\n\t\n\talertError(){\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\n\t}\n\t\n\tclearAlert(){\n\t\tthis.table.alertManager.clear();\n\t}\n}","export default class ExternalEventBus {\n\n\tconstructor(table, optionsList, debug){\n\t\tthis.table = table;\n\t\tthis.events = {};\n\t\tthis.optionsList = optionsList || {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push(callback);\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tdelete this.events[key];\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift(),\n\t\tresult;\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((callback, i) => {\n\t\t\t\tlet callResult = callback.apply(this.table, args);\n\n\t\t\t\tif(!i){\n\t\t\t\t\tresult = callResult;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"ExternalEvent:\" + args[0];\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n}","export default class InternalEventBus {\n\n\tconstructor(debug){\n\t\tthis.events = {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback, priority = 10000){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push({callback, priority});\n\n\t\tthis.events[key].sort((a, b) => {\n\t\t\treturn a.priority - b.priority;\n\t\t});\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item.callback === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_chain(key, args, initialValue, fallback){\n\t\tvar value = initialValue;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\n\t\t\t});\n\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\n\t\t}\n\t}\n\n\t_confirm(key, args){\n\t\tvar confirmed = false;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tif(subscriber.callback.apply(this, args)){\n\t\t\t\t\tconfirmed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn confirmed;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift();\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((subscriber) => {\n\t\t\t\tsubscriber.callback.apply(this, args);\n\t\t\t});\n\t\t}\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n\n\t_debugChain(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._chain(...arguments);\n\t}\n\n\t_debugConfirm(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._confirm(...arguments);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class DeprecationAdvisor extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\t_warnUser(){\n\t\tif(this.options(\"debugDeprecation\")){\n\t\t\tconsole.warn(...arguments);\n\t\t}\n\t}\n\t\n\tcheck(oldOption, newOption, convert){\n\t\tvar msg = \"\";\n\t\t\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tmsg = \"Deprecated Setup Option - Use of the %c\" + oldOption + \"%c option is now deprecated\";\n\t\t\t\n\t\t\tif(newOption){\n\t\t\t\tmsg = msg + \", Please use the %c\" + newOption + \"%c option instead\";\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\n\t\t\t\tif(convert){\n\t\t\t\t\tthis.table.options[newOption] = this.table.options[oldOption];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tcheckMsg(oldOption, msg){\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tthis._warnUser(\"%cDeprecated Setup Option - Use of the %c\" + oldOption + \" %c option is now deprecated, \" + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tmsg(msg){\n\t\tthis._warnUser(msg);\n\t}\n}","import Tabulator from '../Tabulator.js';\n\nclass TableRegistry {\n\n\tstatic register(table){\n\t\tTableRegistry.tables.push(table);\n\t}\n\n\tstatic deregister(table){\n\t\tvar index = TableRegistry.tables.indexOf(table);\n\n\t\tif(index > -1){\n\t\t\tTableRegistry.tables.splice(index, 1);\n\t\t}\n\t}\n\n\tstatic lookupTable(query, silent){\n\t\tvar results = [],\n\t\tmatches, 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 = TableRegistry.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\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\n\t\t\tmatch = TableRegistry.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(TableRegistry.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\n\tstatic matchElement(element){\n\t\treturn TableRegistry.tables.find(function(table){\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n}\n\nTableRegistry.tables = [];\n\nexport default TableRegistry;","import CoreFeature from '../CoreFeature.js';\nimport Helpers from './Helpers.js';\n\nexport default class Popup extends CoreFeature{\n\tconstructor(table, element, parent){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = element;\n\t\tthis.container = this._lookupContainer();\n\t\t\n\t\tthis.parent = parent;\n\t\t\n\t\tthis.reversedX = false;\n\t\tthis.childPopup = null;\n\t\tthis.blurable = false;\n\t\tthis.blurCallback = null;\n\t\tthis.blurEventsBound = false;\n\t\tthis.renderedCallback = null;\n\t\t\n\t\tthis.visible = false;\n\t\tthis.hideable = true;\n\t\t\n\t\tthis.element.classList.add(\"tabulator-popup-container\");\n\t\t\n\t\tthis.blurEvent = this.hide.bind(this, false);\n\t\tthis.escEvent = this._escapeCheck.bind(this);\n\t\t\n\t\tthis.destroyBinding = this.tableDestroyed.bind(this);\n\t\tthis.destroyed = false;\n\t}\n\t\n\ttableDestroyed(){\n\t\tthis.destroyed = true;\n\t\tthis.hide(true);\n\t}\n\t\n\t_lookupContainer(){\n\t\tvar container = this.table.options.popupContainer;\n\t\t\n\t\tif(typeof container === \"string\"){\n\t\t\tcontainer = document.querySelector(container);\n\t\t\t\n\t\t\tif(!container){\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t\t}\n\t\t}else if (container === true){\n\t\t\tcontainer = this.table.element;\n\t\t}\n\t\t\n\t\tif(container && !this._checkContainerIsParent(container)){\n\t\t\tcontainer = false;\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t}\n\t\t\n\t\tif(!container){\n\t\t\tcontainer = document.body;\n\t\t}\n\t\t\n\t\treturn container;\n\t}\n\t\n\t_checkContainerIsParent(container, element = this.table.element){\n\t\tif(container === element){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\n\t\t}\n\t}\n\t\n\trenderCallback(callback){\n\t\tthis.renderedCallback = callback;\n\t}\n\t\n\tcontainerEventCoords(e){\n\t\tvar touch = !(e instanceof MouseEvent);\n\t\t\n\t\tvar x = touch ? e.touches[0].pageX : e.pageX;\n\t\tvar y = touch ? e.touches[0].pageY : e.pageY;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tlet parentOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\tx -= parentOffset.left;\n\t\t\ty -= parentOffset.top;\n\t\t}\n\t\t\n\t\treturn {x, y};\n\t}\n\t\n\telementPositionCoords(element, position = \"right\"){\n\t\tvar offset = Helpers.elOffset(element),\n\t\tcontainerOffset, x, y;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tcontainerOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\toffset.left -= containerOffset.left;\n\t\t\toffset.top -= containerOffset.top;\n\t\t}\n\t\t\n\t\tswitch(position){\n\t\t\tcase \"right\":\n\t\t\t\tx = offset.left + element.offsetWidth;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"bottom\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top + element.offsetHeight;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"left\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"top\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"center\":\n\t\t\t\tx = offset.left + (element.offsetWidth / 2);\n\t\t\t\ty = offset.top + (element.offsetHeight / 2);\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\treturn {x, y, offset};\n\t}\n\t\n\tshow(origin, position){\n\t\tvar x, y, parentEl, parentOffset, coords;\n\t\t\n\t\tif(this.destroyed || this.table.destroyed){\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif(origin instanceof HTMLElement){\n\t\t\tparentEl = origin;\n\t\t\tcoords = this.elementPositionCoords(origin, position);\n\t\t\t\n\t\t\tparentOffset = coords.offset;\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t}else if(typeof origin === \"number\"){\n\t\t\tparentOffset = {top:0, left:0};\n\t\t\tx = origin;\n\t\t\ty = position;\n\t\t}else{\n\t\t\tcoords = this.containerEventCoords(origin);\n\t\t\t\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t\tthis.reversedX = false;\n\t\t}\n\t\t\n\t\tthis.element.style.top = y + \"px\";\n\t\tthis.element.style.left = x + \"px\";\n\t\t\n\t\tthis.container.appendChild(this.element);\n\t\t\n\t\tif(typeof this.renderedCallback === \"function\"){\n\t\t\tthis.renderedCallback();\n\t\t}\n\t\t\n\t\tthis._fitToScreen(x, y, parentEl, parentOffset, position);\n\t\t\n\t\tthis.visible = true;\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.destroyBinding);\n\t\t\n\t\tthis.element.addEventListener(\"mousedown\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_fitToScreen(x, y, parentEl, parentOffset, position){\n\t\tvar scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\n\t\t\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\n\t\tif((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\n\t\t\tthis.element.style.left = \"\";\n\t\t\t\n\t\t\tif(parentEl){\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - x) + \"px\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.reversedX = true;\n\t\t}\n\t\t\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\t\tif((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\n\t\t\tif(parentEl){\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"bottom\":\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisVisible(){\n\t\treturn this.visible;\n\t}\n\t\n\thideOnBlur(callback){\n\t\tthis.blurable = true;\n\t\t\n\t\tif(this.visible){\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\n\t\t\t\t\tthis.subscribe(\"cell-editing\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\n\n\t\t\t\t\tthis.blurEventsBound = true;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\t\n\t\t\tthis.blurCallback = callback;\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_escapeCheck(e){\n\t\tif(e.keyCode == 27){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\t\n\tblockHide(){\n\t\tthis.hideable = false;\n\t}\n\t\n\trestoreHide(){\n\t\tthis.hideable = true;\n\t}\n\t\n\thide(silent = false){\n\t\tif(this.visible && this.hideable){\n\t\t\tif(this.blurable && this.blurEventsBound){\n\t\t\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\t\t\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\twindow.removeEventListener(\"resize\", this.blurEvent);\n\t\t\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n\t\t\t\tthis.unsubscribe(\"cell-editing\", this.blurEvent);\n\n\t\t\t\tthis.blurEventsBound = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.childPopup){\n\t\t\t\tthis.childPopup.hide();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.childPopup = null;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.visible = false;\n\t\t\t\n\t\t\tif(this.blurCallback && !silent){\n\t\t\t\tthis.blurCallback();\n\t\t\t}\n\t\t\t\n\t\t\tthis.unsubscribe(\"table-destroy\", this.destroyBinding);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\tchild(element){\n\t\tif(this.childPopup){\n\t\t\tthis.childPopup.hide();\n\t\t}\n\t\t\n\t\tthis.childPopup = new Popup(this.table, element, this);\n\t\t\n\t\treturn this.childPopup;\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Popup from './tools/Popup.js';\n\nclass Module extends CoreFeature{\n\t\n\tconstructor(table, name){\n\t\tsuper(table);\n\t\t\n\t\tthis._handler = null;\n\t}\n\t\n\tinitialize(){\n\t\t// setup module when table is initialized, to be overridden in module\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Options Registration ///////\n\t///////////////////////////////////\n\t\n\tregisterTableOption(key, value){\n\t\tthis.table.optionsList.register(key, value);\n\t}\n\t\n\tregisterColumnOption(key, value){\n\t\tthis.table.columnManager.optionsList.register(key, value);\n\t}\n\t\n\t///////////////////////////////////\n\t/// Public Function Registration ///\n\t///////////////////////////////////\n\t\n\tregisterTableFunction(name, func){\n\t\tif(typeof this.table[name] === \"undefined\"){\n\t\t\tthis.table[name] = (...args) => {\n\t\t\t\tthis.table.initGuard(name);\n\t\t\t\t\n\t\t\t\treturn func(...args);\n\t\t\t};\n\t\t}else{\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name);\n\t\t}\n\t}\n\t\n\tregisterComponentFunction(component, func, handler){\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Data Pipeline //////////\n\t///////////////////////////////////\n\t\n\tregisterDataHandler(handler, priority){\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tregisterDisplayHandler(handler, priority){\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tdisplayRows(adjust){\n\t\tvar index = this.table.rowManager.displayRows.length - 1, \n\t\tlookupIndex;\n\t\t\n\t\tif(this._handler){\n\t\t\tlookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => {\n\t\t\t\treturn item.handler === this._handler;\n\t\t\t});\n\n\t\t\tif(lookupIndex > -1){\n\t\t\t\tindex = lookupIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(adjust){\n\t\t\tindex = index + adjust;\n\t\t}\n\n\t\tif(this._handler){\n\t\t\tif(index > -1){\n\t\t\t\treturn this.table.rowManager.getDisplayRows(index);\n\t\t\t}else{\n\t\t\t\treturn this.activeRows();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tactiveRows(){\n\t\treturn this.table.rowManager.activeRows;\n\t}\n\t\n\trefreshData(renderInPosition, handler){\n\t\tif(!handler){\n\t\t\thandler = this._handler;\n\t\t}\n\t\t\n\t\tif(handler){\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Footer Management ////////\n\t///////////////////////////////////\n\t\n\tfooterAppend(element){\n\t\treturn this.table.footerManager.append(element);\n\t}\n\t\n\tfooterPrepend(element){\n\t\treturn this.table.footerManager.prepend(element);\n\t}\n\t\n\tfooterRemove(element){\n\t\treturn this.table.footerManager.remove(element);\n\t} \n\t\n\t///////////////////////////////////\n\t//////// Popups Management ////////\n\t///////////////////////////////////\n\t\n\tpopup(menuEl, menuContainer){\n\t\treturn new Popup(this.table, menuEl, menuContainer);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Alert Management ////////\n\t///////////////////////////////////\n\t\n\talert(content, type){\n\t\treturn this.table.alertManager.alert(content, type);\n\t}\n\t\n\tclearAlert(){\n\t\treturn this.table.alertManager.clear();\n\t}\n\t\n}\n\nexport default Module;","//resize columns to fit data they contain\nexport default function(columns, forced){\n\tif(forced){\n\t\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\n\t}\n\t\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\nexport default function(columns, forced){\n\tcolumns.forEach(function(column){\n\t\tcolumn.reinitializeWidth();\n\t});\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data the contain and stretch last column to fill table\nexport default function(columns, forced){\n\tvar colsWidth = 0,\n\ttableWidth = this.table.rowManager.element.clientWidth,\n\tgap = 0,\n\tlastCol = false;\n\n\tcolumns.forEach((column, i) => {\n\t\tif(!column.widthFixed){\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\n\t\t\tlastCol = column;\n\t\t}\n\n\t\tif(column.visible){\n\t\t\tcolsWidth += column.getWidth();\n\t\t}\n\t});\n\n\tif(lastCol){\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tlastCol.setWidth(0);\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\tif(gap > 0){\n\t\t\tlastCol.setWidth(gap);\n\t\t}else{\n\t\t\tlastCol.reinitializeWidth();\n\t\t}\n\t}else{\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t}\n}","//resize columns to fit\nexport default function(columns, forced){\n\tvar totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width\n\tvar fixedWidth = 0; //total width of columns with a defined width\n\tvar flexWidth = 0; //total width available to flexible columns\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks across all columns\n\tvar flexColWidth = 0; //desired width of flexible columns\n\tvar flexColumns = []; //array of flexible width columns\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks across all columns\n\tvar overflowWidth = 0; //horizontal overflow width\n\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\tfunction calcWidth(width){\n\t\tvar colWidth;\n\n\t\tif(typeof(width) == \"string\"){\n\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\n\t\t\t}else{\n\t\t\t\tcolWidth = parseInt(width);\n\t\t\t}\n\t\t}else{\n\t\t\tcolWidth = width;\n\t\t}\n\n\t\treturn colWidth;\n\t}\n\n\t//ensure columns resize to take up the correct amount of space\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\n\t\tvar oversizeCols = [],\n\t\toversizeSpace = 0,\n\t\tremainingSpace = 0,\n\t\tnextColWidth = 0,\n\t\tremainingFlexGrowUnits = flexGrowUnits,\n\t\tgap = 0,\n\t\tchangeUnits = 0,\n\t\tundersizeCols = [];\n\n\t\tfunction calcGrow(col){\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\n\t\t}\n\n\t\tfunction calcShrink(col){\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));\n\t\t}\n\n\t\tcolumns.forEach(function(col, i){\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\t\t\tif(col.column.minWidth >= width){\n\t\t\t\toversizeCols.push(col);\n\t\t\t}else{\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\n\t\t\t\t\tcol.width = col.column.maxWidth;\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\n\t\t\t\t\tif(remainingFlexGrowUnits){\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tundersizeCols.push(col);\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(oversizeCols.length){\n\t\t\toversizeCols.forEach(function(col){\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t});\n\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\n\n\t\t\tgap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t}else{\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\n\n\t\t\tundersizeCols.forEach(function(column){\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t});\n\t\t}\n\n\t\treturn gap;\n\t}\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n\n\t//adjust for vertical scrollbar if present\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t}\n\n\tcolumns.forEach(function(column){\n\t\tvar width, minWidth, colWidth;\n\n\t\tif(column.visible){\n\n\t\t\twidth = column.definition.width;\n\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\tif(width){\n\n\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\tif(column.definition.widthShrink){\n\t\t\t\t\tfixedShrinkColumns.push({\n\t\t\t\t\t\tcolumn:column,\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\n\t\t\t\t\t});\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tflexColumns.push({\n\t\t\t\t\tcolumn:column,\n\t\t\t\t\twidth:0,\n\t\t\t\t});\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t//calculate available space\n\tflexWidth = totalWidth - fixedWidth;\n\n\t//calculate correct column size\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t//generate column widths\n\tgapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t//increase width of last column to account for rounding errors\n\tif(flexColumns.length && gapFill > 0){\n\t\tflexColumns[flexColumns.length-1].width += gapFill;\n\t}\n\n\t//calculate space for columns to be shrunk into\n\tflexColumns.forEach(function(col){\n\t\tflexWidth -= col.width;\n\t});\n\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t//shrink oversize columns if there is no available space\n\tif(overflowWidth > 0 && flexShrinkUnits){\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t}\n\n\t//decrease width of last column to account for rounding errors\n\tif(gapFill && fixedShrinkColumns.length){\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\n\t}\n\n\tflexColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n\n\tfixedShrinkColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n}\n","import fitData from './modes/fitData.js';\nimport fitDataGeneral from './modes/fitDataGeneral.js';\nimport fitDataStretch from './modes/fitDataStretch.js';\nimport fitColumns from './modes/fitColumns.js';\n\nexport default {\n\tfitData:fitData,\n\tfitDataFill:fitDataGeneral,\n\tfitDataTable:fitDataGeneral,\n\tfitDataStretch:fitDataStretch,\n\tfitColumns:fitColumns ,\n};","import Module from '../../core/Module.js';\n\nimport defaultModes from './defaults/modes.js';\n\nclass Layout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table, \"layout\");\n\n\t\tthis.mode = null;\n\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\n\n\t\tthis.registerColumnOption(\"widthGrow\");\n\t\tthis.registerColumnOption(\"widthShrink\");\n\t}\n\n\t//initialize layout system\n\tinitialize(){\n\t\tvar layout = this.table.options.layout;\n\n\t\tif(Layout.modes[layout]){\n\t\t\tthis.mode = layout;\n\t\t}else{\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.widthGrow){\n\t\t\tcolumn.definition.widthGrow = Number(column.definition.widthGrow);\n\t\t}\n\t\tif(column.definition.widthShrink){\n\t\t\tcolumn.definition.widthShrink = Number(column.definition.widthShrink);\n\t\t}\n\t}\n\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\n\t//trigger table layout\n\tlayout(dataChanged){\n\t\tthis.dispatch(\"layout-refreshing\");\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);\n\t\tthis.dispatch(\"layout-refreshed\");\n\t}\n}\n\nLayout.moduleName = \"layout\";\n\n//load defaults\nLayout.modes = defaultModes;\n\nexport default Layout;","export default {\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},\n\t\t\"data\":{\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\t\"counter\":{\n\t\t\t\t\"showing\": \"Showing\",\n\t\t\t\t\"of\": \"of\",\n\t\t\t\t\"rows\": \"rows\",\n\t\t\t\t\"pages\": \"pages\",\n\t\t\t}\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};","import Module from '../../core/Module.js';\n\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultLangs from './defaults/langs.js';\n\nclass Localize extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.locale = \"default\"; //current locale\n\t\tthis.lang = false; //current language\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t\tthis.langList = {};\n\n\t\tthis.registerTableOption(\"locale\", false); //current system language\n\t\tthis.registerTableOption(\"langs\", {});\n\t}\n\n\tinitialize(){\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\n\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor(let locale in this.table.options.langs){\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\n\t\t}\n\n\t\tthis.setLocale(this.table.options.locale);\n\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\n\t}\n\n\t//set header placeholder\n\tsetHeaderFilterPlaceholder(placeholder){\n\t\tthis.langList.default.headerFilters.default = placeholder;\n\t}\n\n\t//setup a lang description object\n\tinstallLang(locale, lang){\n\t\tif(this.langList[locale]){\n\t\t\tthis._setLangProp(this.langList[locale], lang);\n\t\t}else{\n\t\t\tthis.langList[locale] = lang;\n\t\t}\n\t}\n\n\t_setLangProp(lang, values){\n\t\tfor(let key in values){\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t}else{\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t//set current locale\n\tsetLocale(desiredLocale){\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching language values\n\t\tfunction traverseLang(trans, path){\n\t\t\tfor(var prop in trans){\n\t\t\t\tif(typeof trans[prop] == \"object\"){\n\t\t\t\t\tif(!path[prop]){\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t}else{\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determining correct locale to load\n\t\tif(desiredLocale === true && navigator.language){\n\t\t\t//get local from system\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif(desiredLocale){\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\t\t\tif(!this.langList[desiredLocale]){\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif(this.langList[prefix]){\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.locale = desiredLocale;\n\n\t\t//load default lang template\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\n\n\t\tif(desiredLocale != \"default\"){\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\n\t\t}\n\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\n\n\t\tthis._executeBindings();\n\t}\n\n\t//get current locale\n\tgetLocale(locale){\n\t\treturn this.locale;\n\t}\n\n\t//get lang object for given local or current if none provided\n\tgetLang(locale){\n\t\treturn locale ? this.langList[locale] : this.lang;\n\t}\n\n\t//get text for current locale\n\tgetText(path, value){\n\t\tvar fillPath = value ? path + \"|\" + value : path,\n\t\tpathArray = fillPath.split(\"|\"),\n\t\ttext = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t\t// }\n\n\t\treturn text || \"\";\n\t}\n\n\t//traverse langs object and find localized copy\n\t_getLangElement(path, locale){\n\t\tvar root = this.lang;\n\n\t\tpath.forEach(function(level){\n\t\t\tvar rootPath;\n\n\t\t\tif(root){\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif(typeof rootPath != \"undefined\"){\n\t\t\t\t\troot = rootPath;\n\t\t\t\t}else{\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t}\n\n\t//set update binding\n\tbind(path, callback){\n\t\tif(!this.bindings[path]){\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t}\n\n\t//iterate through bindings and trigger updates\n\t_executeBindings(){\n\t\tfor(let path in this.bindings){\n\t\t\tthis.bindings[path].forEach((binding) => {\n\t\t\t\tbinding(this.getText(path), this.lang);\n\t\t\t});\n\t\t}\n\t}\n}\n\nLocalize.moduleName = \"localize\";\n\n//load defaults\nLocalize.langs = defaultLangs;\n\nexport default Localize;","import Module from '../../core/Module.js';\nimport TableRegistry from '../../core/tools/TableRegistry.js';\n\nclass Comms extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\n\tinitialize(){\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\n\t}\n\n\tgetConnections(selectors){\n\t\tvar connections = [],\n\t\tconnection;\n\n\t\tconnection = TableRegistry.lookupTable(selectors);\n\n\t\tconnection.forEach((con) =>{\n\t\t\tif(this.table !== con){\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsend(selectors, module, action, data){\n\t\tvar connections = this.getConnections(selectors);\n\n\t\tconnections.forEach((connection) => {\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\n\t\t});\n\n\t\tif(!connections.length && selectors){\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t}\n\n\treceive(table, module, action, data){\n\t\tif(this.table.modExists(module)){\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t}else{\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t}\n}\n\nComms.moduleName = \"comms\";\n\nexport default Comms;","import * as coreModules from '../modules/core.js';\nimport TableRegistry from './TableRegistry.js';\n\nexport default class ModuleBinder {\n\t\n\tconstructor(tabulator, modules){\n\t\tthis.bindStaticFunctionality(tabulator);\n\t\tthis.bindModules(tabulator, coreModules, true);\n\t\t\n\t\tif(modules){\n\t\t\tthis.bindModules(tabulator, modules);\n\t\t}\n\t}\n\t\n\tbindStaticFunctionality(tabulator){\n\t\ttabulator.moduleBindings = {};\n\t\t\n\t\ttabulator.extendModule = function(name, property, values){\n\t\t\tif(tabulator.moduleBindings[name]){\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\n\t\t\t\t\n\t\t\t\tif(source){\n\t\t\t\t\tif(typeof values == \"object\"){\n\t\t\t\t\t\tfor(let key in values){\n\t\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t\t}\n\t\t};\n\t\t\n\t\ttabulator.registerModule = function(modules){\n\t\t\tif(!Array.isArray(modules)){\n\t\t\t\tmodules = [modules];\n\t\t\t}\n\t\t\t\n\t\t\tmodules.forEach((mod) => {\n\t\t\t\ttabulator.registerModuleBinding(mod);\n\t\t\t});\n\t\t};\n\t\t\n\t\ttabulator.registerModuleBinding = function(mod){\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\n\t\t};\n\t\t\n\t\ttabulator.findTable = function(query){\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\n\t\t};\n\t\t\n\t\t//ensure that module are bound to instantiated function\n\t\ttabulator.prototype.bindModules = function(){\n\t\t\tvar orderedStartMods = [],\n\t\t\torderedEndMods = [],\n\t\t\tunOrderedMods = [];\n\t\t\t\n\t\t\tthis.modules = {};\n\t\t\t\n\t\t\tfor(var name in tabulator.moduleBindings){\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\n\t\t\t\tlet module = new mod(this);\n\t\t\t\t\n\t\t\t\tthis.modules[name] = module;\n\t\t\t\t\n\t\t\t\tif(mod.prototype.moduleCore){\n\t\t\t\t\tthis.modulesCore.push(module);\n\t\t\t\t}else{\n\t\t\t\t\tif(mod.moduleInitOrder){\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\n\t\t\t\t\t\t\torderedStartMods.push(module);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\torderedEndMods.push(module);\n\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\tunOrderedMods.push(module);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\t\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\n\t\t};\n\t}\n\t\n\tbindModules(tabulator, modules, core){\n\t\tvar mods = Object.values(modules);\n\t\t\n\t\tif(core){\n\t\t\tmods.forEach((mod) => {\n\t\t\t\tmod.prototype.moduleCore = true;\n\t\t\t});\n\t\t}\n\t\t\n\t\ttabulator.registerModule(mods);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class Alert extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.element = this._createAlertElement();\n\t\tthis.msgElement = this._createMsgElement();\n\t\tthis.type = null;\n \n\t\tthis.element.appendChild(this.msgElement);\n\t}\n \n\t_createAlertElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert\");\n\t\treturn el;\n\t}\n \n\t_createMsgElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\t\treturn el;\n\t}\n \n\t_typeClass(){\n\t\treturn \"tabulator-alert-state-\" + this.type;\n\t}\n \n\talert(content, type = \"msg\"){\n\t\tif(content){\n\t\t\tthis.clear();\n\n\t\t\tthis.dispatch(\"alert-show\", type);\n \n\t\t\tthis.type = type;\n \n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\n \n\t\t\tthis.msgElement.classList.add(this._typeClass());\n \n\t\t\tif(typeof content === \"function\"){\n\t\t\t\tcontent = content();\n\t\t\t}\n \n\t\t\tif(content instanceof HTMLElement){\n\t\t\t\tthis.msgElement.appendChild(content);\n\t\t\t}else{\n\t\t\t\tthis.msgElement.innerHTML = content;\n\t\t\t}\n \n\t\t\tthis.table.element.appendChild(this.element);\n\t\t}\n\t}\n \n\tclear(){\n\t\tthis.dispatch(\"alert-hide\", this.type);\n\n\t\tif(this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n \n\t\tthis.msgElement.classList.remove(this._typeClass());\n\t}\n}","'use strict';\n\nimport defaultOptions from './defaults/options.js';\n\nimport ColumnManager from './ColumnManager.js';\nimport RowManager from './RowManager.js';\nimport FooterManager from './FooterManager.js';\n\nimport InteractionMonitor from './tools/InteractionMonitor.js';\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\nimport DataLoader from './tools/DataLoader.js';\n\nimport ExternalEventBus from './tools/ExternalEventBus.js';\nimport InternalEventBus from './tools/InternalEventBus.js';\n\nimport DeprecationAdvisor from './tools/DeprecationAdvisor.js';\n\nimport TableRegistry from './tools/TableRegistry.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nimport OptionsList from './tools/OptionsList.js';\n\nimport Alert from './tools/Alert.js';\n\nclass Tabulator {\n\t\n\tconstructor(element, options){\n\t\t\n\t\tthis.options = {};\n\t\t\n\t\tthis.columnManager = null; // hold Column Manager\n\t\tthis.rowManager = null; //hold Row Manager\n\t\tthis.footerManager = null; //holder Footer Manager\n\t\tthis.alertManager = null; //hold Alert Manager\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\n\t\tthis.externalEvents = null; //handle external event messaging\n\t\tthis.eventBus = null; //handle internal event messaging\n\t\tthis.interactionMonitor = false; //track user interaction\n\t\tthis.browser = \"\"; //hold current browser type\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\n\t\tthis.rtl = false; //check if the table is in RTL mode\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\n\t\t\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\n\t\tthis.dataLoader = false; //bind component functions\n\t\t\n\t\tthis.modules = {}; //hold all modules bound to this table\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\n\t\t\n\t\tthis.deprecationAdvisor = new DeprecationAdvisor(this);\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.destroyed = false;\n\t\t\n\t\tif(this.initializeElement(element)){\n\t\t\t\n\t\t\tthis.initializeCoreSystems(options);\n\t\t\t\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._create();\n\t\t\t});\n\t\t}\n\t\t\n\t\tTableRegistry.register(this); //register table for inter-device communication\n\t}\n\t\n\tinitializeElement(element){\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\n\t\t\tthis.element = element;\n\t\t\treturn true;\n\t\t}else if(typeof element === \"string\"){\n\t\t\tthis.element = document.querySelector(element);\n\t\t\t\n\t\t\tif(this.element){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tinitializeCoreSystems(options){\n\t\tthis.columnManager = new ColumnManager(this);\n\t\tthis.rowManager = new RowManager(this);\n\t\tthis.footerManager = new FooterManager(this);\n\t\tthis.dataLoader = new DataLoader(this);\n\t\tthis.alertManager = new Alert(this);\n\t\t\n\t\tthis.bindModules();\n\t\t\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options);\n\t\t\n\t\tthis._clearObjectPointers();\n\t\t\n\t\tthis._mapDeprecatedFunctionality();\n\t\t\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\n\t\t\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\n\t\t\n\t\tthis.dataLoader.initialize();\n\t\t// this.columnManager.initialize();\n\t\t// this.rowManager.initialize();\n\t\tthis.footerManager.initialize();\n\t}\n\t\n\t//convert deprecated functionality to new functions\n\t_mapDeprecatedFunctionality(){\n\t\t//all previously deprecated functionality removed in the 5.0 release\n\t}\n\t\n\t_clearSelection(){\n\t\t\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tif (window.getSelection) {\n\t\t\tif (window.getSelection().empty) { // Chrome\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) { // IE?\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\t\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t}\n\t\n\t//create table\n\t_create(){\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\n\t\tthis.eventBus.dispatch(\"table-building\");\n\t\t\n\t\tthis._rtlCheck();\n\t\t\n\t\tthis._buildElement();\n\t\t\n\t\tthis._initializeTable();\n\t\t\n\t\tthis._loadInitialData();\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\n\t}\n\t\n\t_rtlCheck(){\n\t\tvar style = window.getComputedStyle(this.element);\n\t\t\n\t\tswitch(this.options.textDirection){\n\t\t\tcase\"auto\":\n\t\t\t\tif(style.direction !== \"rtl\"){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"rtl\":\n\t\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\t\tthis.rtl = true;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"ltr\":\n\t\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis.rtl = false;\n\t\t}\n\t}\n\t\n\t//clear pointers to objects in default config object\n\t_clearObjectPointers(){\n\t\tthis.options.columns = this.options.columns.slice(0);\n\t\t\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t}\n\t\n\t//build tabulator element\n\t_buildElement(){\n\t\tvar element = this.element,\n\t\toptions = this.options,\n\t\tnewElement;\n\t\t\n\t\tif(element.tagName === \"TABLE\"){\n\t\t\tthis.originalElement = this.element;\n\t\t\tnewElement = document.createElement(\"div\");\n\t\t\t\n\t\t\t//transfer attributes to new element\n\t\t\tvar attributes = element.attributes;\n\t\t\t\n\t\t\t// loop through attributes and apply them on div\n\t\t\tfor(var i in attributes){\n\t\t\t\tif(typeof attributes[i] == \"object\"){\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// replace table with div element\n\t\t\telement.parentNode.replaceChild(newElement, element);\n\t\t\t\n\t\t\tthis.element = element = newElement;\n\t\t}\n\t\t\n\t\telement.classList.add(\"tabulator\");\n\t\telement.setAttribute(\"role\", \"grid\");\n\t\t\n\t\t//empty element\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\t//set table height\n\t\tif(options.height){\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\t\telement.style.height = options.height;\n\t\t}\n\t\t\n\t\t//set table min height\n\t\tif(options.minHeight !== false){\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\t\telement.style.minHeight = options.minHeight;\n\t\t}\n\t\t\n\t\t//set table maxHeight\n\t\tif(options.maxHeight !== false){\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\t\telement.style.maxHeight = options.maxHeight;\n\t\t}\n\t}\n\t\n\t//initialize core systems and modules\n\t_initializeTable(){\n\t\tvar element = this.element,\n\t\toptions = this.options;\n\t\t\n\t\tthis.interactionMonitor.initialize();\n\t\t\n\t\tthis.columnManager.initialize();\n\t\tthis.rowManager.initialize();\n\t\t\n\t\tthis._detectBrowser();\n\t\t\n\t\t//initialize core modules\n\t\tthis.modulesCore.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\t//build table elements\n\t\telement.appendChild(this.columnManager.getElement());\n\t\telement.appendChild(this.rowManager.getElement());\n\t\t\n\t\tif(options.footerElement){\n\t\t\tthis.footerManager.activate();\n\t\t}\n\t\t\n\t\tif(options.autoColumns && options.data){\n\t\t\t\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\t\t\n\t\t//initialize regular modules\n\t\tthis.modulesRegular.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\tthis.columnManager.setColumns(options.columns);\n\t\t\n\t\tthis.eventBus.dispatch(\"table-built\");\n\t}\n\t\n\t_loadInitialData(){\n\t\tthis.dataLoader.load(this.options.data);\n\t\tthis.columnManager.verticalAlignHeaders();\n\t}\n\t\n\t//deconstructor\n\tdestroy(){\n\t\tvar element = this.element;\n\t\t\n\t\tthis.destroyed = true;\n\t\t\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\n\t\t\n\t\tthis.eventBus.dispatch(\"table-destroy\");\n\t\t\n\t\t//clear row data\n\t\tthis.rowManager.destroy();\n\t\t\n\t\t//clear DOM\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\telement.classList.remove(\"tabulator\");\n\n\t\tthis.externalEvents.dispatch(\"tableDestroyed\");\n\t}\n\t\n\t_detectBrowser(){\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\n\t\t\n\t\tif(ua.indexOf(\"Trident\") > -1){\n\t\t\tthis.browser = \"ie\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\n\t\t\tthis.browser = \"edge\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\n\t\t\tthis.browser = \"firefox\";\n\t\t\tthis.browserSlow = false;\n\t\t}else if(ua.indexOf(\"Mac OS\") > -1){\n\t\t\tthis.browser = \"safari\";\n\t\t\tthis.browserSlow = false;\n\t\t}else{\n\t\t\tthis.browser = \"other\";\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t\t\n\t\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.slice(0,4));\n\t}\n\t\n\tinitGuard(func, msg){\n\t\tvar stack, line;\n\t\t\n\t\tif(this.options.debugInitialization && !this.initialized){\n\t\t\tif(!func){\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\n\t\t\t\t\n\t\t\t\tif(line[0] == \" \"){\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\n\t\t\t\t}else{\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn(\"Table Not Initialized - Calling the \" + func + \" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function.\" + (msg ? \" \" + msg : \"\"));\n\t\t}\n\t\t\n\t\treturn this.initialized;\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\t//block table redrawing\n\tblockRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocking\");\n\t\t\n\t\tthis.rowManager.blockRedraw();\n\t\tthis.columnManager.blockRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocked\");\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-restoring\");\n\n\t\tthis.rowManager.restoreRedraw();\n\t\tthis.columnManager.restoreRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-restored\");\n\t}\n\t\n\t//load data\n\tsetData(data, params, config){\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, false);\n\t}\n\t\n\t//clear data\n\tclearData(){\n\t\tthis.initGuard();\n\t\t\n\t\tthis.dataLoader.blockActiveLoad();\n\t\tthis.rowManager.clearData();\n\t}\n\t\n\t//get table data array\n\tgetData(active){\n\t\treturn this.rowManager.getData(active);\n\t}\n\t\n\t//get table data array count\n\tgetDataCount(active){\n\t\treturn this.rowManager.getDataCount(active);\n\t}\n\t\n\t//replace data, keeping table in position with same sort\n\treplaceData(data, params, config){\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, true, true);\n\t}\n\t\n\t//update table data\n\tupdateData(data){\n\t\tvar responses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\tresponses++;\n\t\t\t\t\t\t\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\t\treject(\"Update Error - Unable to update row\", item, e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treject(\"Update Error - Unable to find row\", item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\taddData(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data){\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\n\t\t\t\t\t.then((rows) => {\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\n\t\t\t\t\t\trows.forEach(function(row){\n\t\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\tresolve(output);\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//update table data\n\tupdateOrAddData(data){\n\t\tvar rows = [],\n\t\tresponses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tresponses++;\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.rowManager.addRows(item)\n\t\t\t\t\t\t\t.then((newRows)=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//get row object\n\tgetRow(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//get row object\n\tgetRowFromPosition(position){\n\t\tvar row = this.rowManager.getRowFromPosition(position);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//delete row from table\n\tdeleteRow(index){\n\t\tvar foundRows = [];\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(!Array.isArray(index)){\n\t\t\tindex = [index];\n\t\t}\n\t\t\n\t\t//find matching rows\n\t\tfor(let item of index){\n\t\t\tlet row = this.rowManager.findRow(item, true);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\tfoundRows.push(row);\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort((a, b) => {\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\t\t\n\t\t//delete rows\n\t\tfoundRows.forEach((row) =>{\n\t\t\trow.delete();\n\t\t});\n\t\t\n\t\tthis.rowManager.reRenderInPosition();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\t//add row to table\n\taddRow(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\treturn this.rowManager.addRows(data, pos, index, true)\n\t\t\t.then((rows)=>{\n\t\t\t\treturn rows[0].getComponent();\n\t\t\t});\n\t}\n\t\n\t//update a row if it exists otherwise create it\n\tupdateOrAddRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn row.getComponent();\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn this.rowManager.addRows(data)\n\t\t\t\t.then((rows)=>{\n\t\t\t\t\treturn rows[0].getComponent();\n\t\t\t\t});\n\t\t}\n\t}\n\t\n\t//update row data\n\tupdateRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn Promise.resolve(row.getComponent());\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\n\t\t}\n\t}\n\t\n\t//scroll to row in DOM\n\tscrollToRow(index, position, ifVisible){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible);\n\t\t}else{\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\n\t\t}\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tvar fromRow = this.rowManager.findRow(from);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromRow){\n\t\t\tfromRow.moveToRow(to, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t}\n\t\n\tgetRows(active){\n\t\treturn this.rowManager.getComponents(active);\t\n\t}\n\t\n\t//get position of row in table\n\tgetRowPosition(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getPosition();\n\t\t}else{\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/////////////// Column Functions ///////////////\n\tsetColumns(definition){\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\n\t\t\n\t\tthis.columnManager.setColumns(definition);\n\t}\n\t\n\tgetColumns(structured){\n\t\treturn this.columnManager.getComponents(structured);\n\t}\n\t\n\tgetColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tif(column){\n\t\t\treturn column.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetColumnDefinitions(){\n\t\treturn this.columnManager.getDefinitionTree();\n\t}\n\t\n\tshowColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.show();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\thideColumn(field){\n\t\tvar column = this.columnManager.findColumn(field); \n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.hide();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\ttoggleColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tif(column.visible){\n\t\t\t\tcolumn.hide();\n\t\t\t}else{\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\taddColumn(definition, before, field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.columnManager.addColumn(definition, before, column)\n\t\t\t.then((column) => {\n\t\t\t\treturn column.getComponent();\n\t\t\t});\n\t}\n\t\n\tdeleteColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.delete();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tupdateColumnDefinition(field, definition){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.updateDefinition(definition);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tvar fromColumn = this.columnManager.findColumn(from),\n\t\ttoColumn = this.columnManager.findColumn(to);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromColumn){\n\t\t\tif(toColumn){\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t\t}\n\t}\n\t\n\t//scroll to column in DOM\n\tscrollToColumn(field, position, ifVisible){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this.columnManager.findColumn(field);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//////////// General Public Functions ////////////\n\t//redraw list without updating data\n\tredraw(force){\n\t\tthis.initGuard();\n\n\t\tthis.columnManager.redraw(force);\n\t\tthis.rowManager.redraw(force);\n\t}\n\t\n\tsetHeight(height){\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.initializeRenderer();\n\t\tthis.rowManager.redraw(true);\n\t}\n\t\n\t//////////////////// Event Bus ///////////////////\n\t\n\ton(key, callback){\n\t\tthis.externalEvents.subscribe(key, callback);\n\t}\n\t\n\toff(key, callback){\n\t\tthis.externalEvents.unsubscribe(key, callback);\n\t}\n\t\n\tdispatchEvent(){\n\t\tvar args = Array.from(arguments);\n\t\targs.shift();\n\t\t\n\t\tthis.externalEvents.dispatch(...arguments);\n\t}\n\n\t//////////////////// Alerts ///////////////////\n\n\talert(contents, type){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.alert(contents, type);\n\t}\n\n\tclearAlert(){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.clear();\n\t}\n\t\n\t////////////// Extension Management //////////////\n\tmodExists(plugin, required){\n\t\tif(this.modules[plugin]){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tif(required){\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule(key){\n\t\tvar mod = this.modules[key];\n\t\t\n\t\tif(!mod){\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\n\t\t}\n\t\t\n\t\treturn mod;\n\t}\n}\n\n//default setup options\nTabulator.defaultOptions = defaultOptions;\n\n//bind modules and static functionality\nnew ModuleBinder(Tabulator);\n\nexport default Tabulator;\n","export default {};","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultAccessors from './defaults/accessors.js';\n\nclass Accessor extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n\n\t\tthis.registerColumnOption(\"accessor\");\n\t\tthis.registerColumnOption(\"accessorParams\");\n\t\tthis.registerColumnOption(\"accessorData\");\n\t\tthis.registerColumnOption(\"accessorDataParams\");\n\t\tthis.registerColumnOption(\"accessorDownload\");\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\n\t\tthis.registerColumnOption(\"accessorClipboard\");\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\n\t\tthis.registerColumnOption(\"accessorPrint\");\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\n\t}\n\n\t//initialize column accessor\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\taccessor;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor:accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}\n\n\tlookupAccessor(value){\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Accessor.accessors[value]){\n\t\t\t\t\taccessor = Accessor.accessors[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t}\n\n\t//apply accessor to row\n\ttransformRow(row, type){\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\trowComponent = row.getComponent();\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Helpers.deepClone(row.data || {});\n\n\t\tthis.table.columnManager.traverse(function(column){\n\t\t\tvar value, accessor, params, colComponent;\n\n\t\t\tif(column.modules.accessor){\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif(value != \"undefined\"){\n\t\t\t\t\t\tcolComponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n//load defaults\nAccessor.moduleName = \"accessor\";\nAccessor.accessors = defaultAccessors;\n\nexport default Accessor;","export default {\n\tmethod: \"GET\",\n};","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(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\nfunction serializeParams(params){\n\tvar output = generateParamsList(params),\n\tencoded = [];\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\nexport default function(url, config, params){\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(\"?\") ? \"&\" : \"?\") + serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n}","export default function(url, config, params){\n\tvar contentType;\n\n\treturn new Promise((resolve, reject) => {\n\t\t//set url\n\t\turl = this.urlGenerator.call(this.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 this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.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(this, url, config, params);\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif(url){\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\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\n\t\t\t\t\tconfig.headers[\"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)\n\t\t\t\t.then((response)=>{\n\t\t\t\t\tif(response.ok) {\n\t\t\t\t\t\tresponse.json()\n\t\t\t\t\t\t\t.then((data)=>{\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t}).catch((error)=>{\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error)=>{\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\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}","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(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\nexport default {\n\t\"json\":{\n\t\theaders:{\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tbody:function(url, config, params){\n\t\t\treturn JSON.stringify(params);\n\t\t},\n\t},\n\t\"form\":{\n\t\theaders:{\n\t\t},\n\t\tbody:function(url, config, params){\n\n\t\t\tvar output = generateParamsList(params),\n\t\t\tform = 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};","import Module from '../../core/Module.js';\n\nimport defaultConfig from './defaults/config.js';\nimport defaultURLGenerator from './defaults/urlGenerator.js';\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\n\nclass Ajax extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {}; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\t\t\n\t\tthis.loaderPromise = false;\n\t\t\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\n\t\t\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\n\t\t\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\n\t}\n\t\n\t//initialize setup options\n\tinitialize(){\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\n\t\t\n\t\tif(this.table.options.ajaxURL){\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\n\t\t\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\n\t}\n\t\n\trequestParams(data, config, silent, params){\n\t\tvar ajaxParams = this.table.options.ajaxParams;\n\t\t\n\t\tif(ajaxParams){\n\t\t\tif(typeof ajaxParams === \"function\"){\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\n\t\t\t}\n\t\t\t\n\t\t\tparams = Object.assign(Object.assign({}, ajaxParams), params);\n\t\t}\t\t\n\t\t\n\t\treturn params;\n\t}\n\t\n\trequestDataCheck(data, params, config, silent){\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\n\t}\n\t\n\trequestData(url, params, config, silent, previousData){\n\t\tvar ajaxConfig;\n\t\t\n\t\tif(!previousData && this.requestDataCheck(url)){\n\t\t\tif(url){\n\t\t\t\tthis.setUrl(url);\n\t\t\t}\n\t\t\t\n\t\t\tajaxConfig = this.generateConfig(config);\n\t\t\t\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\n\t\t}else{\n\t\t\treturn previousData;\n\t\t}\n\t}\n\t\n\tsetDefaultConfig(config = {}){\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\n\n\t\tif(typeof config == \"string\"){\n\t\t\tthis.config.method = config;\n\t\t}else{\n\t\t\tObject.assign(this.config, config);\n\t\t}\n\t}\n\t\n\t//load config object\n\tgenerateConfig(config = {}){\n\t\tvar ajaxConfig = Object.assign({}, this.config);\n\t\t\n\t\tif(typeof config == \"string\"){\n\t\t\tajaxConfig.method = config;\n\t\t}else{\n\t\t\tObject.assign(ajaxConfig, config);\n\t\t}\n\t\t\n\t\treturn ajaxConfig;\n\t}\n\t\n\t//set request url\n\tsetUrl(url){\n\t\tthis.url = url;\n\t}\n\t\n\t//get request url\n\tgetUrl(){\n\t\treturn this.url;\n\t}\n\t\n\t//send ajax request\n\tsendRequest(url, params, config){\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\n\t\t\treturn this.loaderPromise(url, config, params)\n\t\t\t\t.then((data)=>{\n\t\t\t\t\tif(this.table.options.ajaxResponse){\n\t\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n}\n\nAjax.moduleName = \"ajax\";\n\n//load defaults\nAjax.defaultConfig = defaultConfig;\nAjax.defaultURLGenerator = defaultURLGenerator;\nAjax.defaultLoaderPromise = defaultLoaderPromise;\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\n\nexport default Ajax;","export default {\n\treplace:function(data){\n\t\treturn this.table.setData(data);\n\t},\n\tupdate:function(data){\n\t\treturn this.table.updateOrAddData(data);\n\t},\n\tinsert:function(data){\n\t\treturn this.table.addData(data);\n\t},\n\trange:function(data){\n\t\tvar rows = [],\n\t\trange = this.table.modules.selectRange.activeRange,\n\t\tsingleCell = false,\n\t\tbounds, startCell, startRow, rowWidth, dataLength;\n\n\t\tdataLength = data.length;\n\t\t\n\t\tif(range){\n\t\t\tbounds = range.getBounds();\n\t\t\tstartCell = bounds.start;\n\t\t\t\n\t\t\tif(bounds.start === bounds.end){\n\t\t\t\tsingleCell = true;\n\t\t\t}\n\t\t\t\n\t\t\tif(startCell){\n\t\t\t\trows = this.table.rowManager.activeRows.slice();\n\t\t\t\tstartRow = rows.indexOf(startCell.row);\n\n\t\t\t\tif(singleCell){\n\t\t\t\t\trowWidth = data.length;\n\t\t\t\t}else{\n\t\t\t\t\trowWidth = (rows.indexOf(bounds.end.row) - startRow) + 1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif(startRow >-1){\n\t\t\t\t\tthis.table.blockRedraw();\n\t\t\t\t\t\n\t\t\t\t\trows = rows.slice(startRow, startRow + rowWidth);\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row, i) => {\n\t\t\t\t\t\trow.updateData(data[i % dataLength]);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.table.restoreRedraw();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n};","export default {\n\ttable:function(clipboard){\n\t\tvar data = [],\n\t\theaderFindSuccess = true,\n\t\tcolumns = this.table.columnManager.columns,\n\t\tcolumnMap = [],\n\t\trows = [];\n\t\t\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\t\t\n\t\tclipboard.forEach(function(row){\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\t\t\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\n\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\t\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\t\t\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\n\t\t\tdata.forEach(function(item){\n\t\t\t\tvar row = {};\n\t\t\t\t\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\t\t\t\t\n\t\t\t\trows.push(row);\n\t\t\t});\n\t\t\t\n\t\t\treturn rows;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t},\n\trange:function(clipboard){\n\t\tvar data = [],\n\t\trows = [],\n\t\trange = this.table.modules.selectRange.activeRange,\n\t\tsingleCell = false,\n\t\tbounds, startCell, colWidth, columnMap, startCol;\n\t\t\n\t\tif(range){\n\t\t\tbounds = range.getBounds();\n\t\t\tstartCell = bounds.start;\n\n\t\t\tif(bounds.start === bounds.end){\n\t\t\t\tsingleCell = true;\n\t\t\t}\n\t\t\t\n\t\t\tif(startCell){\n\t\t\t\t//get data from clipboard into array of columns and rows.\n\t\t\t\tclipboard = clipboard.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tclipboard.forEach(function(row){\n\t\t\t\t\tdata.push(row.split(\"\\t\"));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(data.length){\n\t\t\t\t\tcolumnMap = this.table.columnManager.getVisibleColumnsByIndex();\n\t\t\t\t\tstartCol = columnMap.indexOf(startCell.column);\n\n\t\t\t\t\tif(startCol > -1){\n\t\t\t\t\t\tif(singleCell){\n\t\t\t\t\t\t\tcolWidth = data[0].length;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcolWidth = (columnMap.indexOf(bounds.end.column) - startCol) + 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcolumnMap = columnMap.slice(startCol, startCol + colWidth);\n\n\t\t\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\t\t\tvar row = {};\n\t\t\t\t\t\t\tvar itemLength = item.length;\n\n\t\t\t\t\t\t\tcolumnMap.forEach(function(col, i){\n\t\t\t\t\t\t\t\trow[col.field] = item[i % itemLength];\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\trows.push(row);\t\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn rows;\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n};","import Module from '../../core/Module.js';\n\nimport defaultPasteActions from './defaults/pasteActions.js';\nimport defaultPasteParsers from './defaults/pasteParsers.js';\n\nclass Clipboard extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = true;\n\t\tthis.pasteParser = function(){};\n\t\tthis.pasteAction = function(){};\n\t\tthis.customSelection = false;\n\t\tthis.rowRange = false;\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRECATED - REMOVE in 5.0\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\n\n\t\tthis.registerColumnOption(\"clipboard\");\n\t\tthis.registerColumnOption(\"titleClipboard\");\n\t}\n\n\tinitialize(){\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\t\tif(this.mode === true || this.mode === \"copy\"){\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\n\t\t\t\tvar plain, html, list;\n\n\t\t\t\tif(!this.blocked){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif(this.customSelection){\n\t\t\t\t\t\tplain = this.customSelection;\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tlist = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\n\n\t\t\t\t\t\thtml = this.table.modules.export.generateHTMLTable(list);\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\n\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif(this.mode === true || this.mode === \"paste\"){\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\n\t\t\t\tthis.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\n\t}\n\n\treset(){\n\t\tthis.blocked = true;\n\t\tthis.customSelection = false;\n\t}\n\n\tgeneratePlainContent (list) {\n\t\tvar output = [];\n\n\t\tlist.forEach((row) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach((col) => {\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif(col){\n\n\t\t\t\t\tif(row.type === \"group\"){\n\t\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(col.value === null){\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowData.push(value);\n\t\t\t});\n\n\t\t\toutput.push(rowData.join(\"\\t\"));\n\t\t});\n\n\t\treturn output.join(\"\\n\");\n\t}\n\n\tcopy (range, internal) {\n\t\tvar sel, textRange;\n\t\tthis.blocked = false;\n\t\tthis.customSelection = false;\n\t\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t}\n\n\t//PASTE EVENT HANDLING\n\tsetPasteAction(action){\n\n\t\tswitch(typeof action){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\n\n\t\t\t\tif(!this.pasteAction){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetPasteParser(parser){\n\t\tswitch(typeof parser){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\n\n\t\t\t\tif(!this.pasteParser){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpaste(e){\n\t\tvar data, rowData, rows;\n\n\t\tif(this.checkPasteOrigin(e)){\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif(rowData){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif(this.table.modExists(\"mutator\")){\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\n\t\t\t}\n\t\t}\n\t}\n\n\tmutateData(data){\n\t\tvar output = [];\n\n\t\tif(Array.isArray(data)){\n\t\t\tdata.forEach((row) => {\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t}else{\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\n\tcheckPasteOrigin(e){\n\t\tvar valid = true;\n\t\tvar blocked = this.confirm(\"clipboard-paste\", [e]);\n\n\t\tif(blocked || ![\"DIV\", \"SPAN\"].includes(e.target.tagName)){\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t}\n\n\tgetPasteData(e){\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t}\n}\n\nClipboard.moduleName = \"clipboard\";\n\n//load defaults\nClipboard.pasteActions = defaultPasteActions;\nClipboard.pasteParsers = defaultPasteParsers;\n\nexport default Clipboard;","class CalcComponent{\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n}\n\nexport default CalcComponent;","export default {\n\t\"avg\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = 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(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(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\t\"unique\":function(values, data, calcParams){\n\t\tvar unique = values.filter((value, index) => {\n\t\t\treturn (values || value === 0) && values.indexOf(value) === index;\n\t\t});\n\n\t\treturn unique.length;\n\t},\n};","import Module from '../../core/Module.js';\n\nimport CalcComponent from './CalcComponent.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\nimport Row from '../../core/row/Row.js';\n\nimport defaultCalculations from './defaults/calculations.js';\n\nclass ColumnCalcs extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\t\t\n\t\tthis.blocked = false;\n\t\tthis.recalcAfterBlock = false;\n\t\t\n\t\tthis.registerTableOption(\"columnCalcs\", true);\n\t\t\n\t\tthis.registerColumnOption(\"topCalc\");\n\t\tthis.registerColumnOption(\"topCalcParams\");\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\n\t\tthis.registerColumnOption(\"bottomCalc\");\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\n\t\t\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t\t\n\t\tthis.subscribe(\"redraw-blocked\", this.blockRedraw.bind(this));\n\t\tthis.subscribe(\"redraw-restored\", this.restoreRedraw.bind(this));\n\n\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\n\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\t\n\ttableRedraw(force){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t\n\t\tif(force){\n\t\t\tthis.redraw();\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.blocked = true;\n\t\tthis.recalcAfterBlock = false;\n\t}\n\t\n\t\n\trestoreRedraw(){\n\t\tthis.blocked = false;\n\t\t\n\t\tif(this.recalcAfterBlock){\n\t\t\tthis.recalcAfterBlock = false;\n\t\t\tthis.recalcActiveRowsRefresh();\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tuserRecalc(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tblockCheck(){\n\t\tif(this.blocked){\n\t\t\tthis.recalcAfterBlock = true;\n\t\t}\n\t\t\n\t\treturn this.blocked;\n\t}\n\t\n\tvisibleRows(viewable, rows){\n\t\tif(this.topRow){\n\t\t\trows.unshift(this.topRow);\n\t\t}\n\t\t\n\t\tif(this.botRow){\n\t\t\trows.push(this.botRow);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.recalcRowGroup(row);\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRowsRefresh(){\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\n\t\t\tthis.recalcAll();\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRows(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\tcellValueChanged(cell){\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\n\t\t\tif(this.table.options.groupBy){\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\n\t\t\t\t\tthis.recalcActiveRows();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeColumnCheck(column){\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//initialize column calcs\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\tvar config = {\n\t\t\ttopCalcParams:def.topCalcParams || {},\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\n\t\t};\n\t\t\n\t\tif(def.topCalc){\n\t\t\t\n\t\t\tswitch(typeof def.topCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\n\t\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.topCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif(def.bottomCalc){\n\t\t\tswitch(typeof def.bottomCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\n\t\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.botCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t//dummy functions to handle being mock column manager\n\tregisterColumnField(){}\n\t\n\tremoveCalcs(){\n\t\tvar changed = false;\n\t\t\n\t\tif(this.topInitialized){\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(this.botInitialized){\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.footerRemove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\treinitializeCalcs(){\n\t\tif(this.topCalcs.length){\n\t\t\tthis.initializeTopRow();\n\t\t}\n\n\t\tif(this.botCalcs.length){\n\t\t\tthis.initializeBottomRow();\n\t\t}\n\t}\n\t\n\tinitializeTopRow(){\n\t\tvar\tfragment = document.createDocumentFragment();\n\t\t\n\t\tif(!this.topInitialized){\n\n\t\t\tfragment.appendChild(document.createElement(\"br\"));\n\t\t\tfragment.appendChild(this.topElement);\n\n\t\t\tthis.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t}\n\t\n\tinitializeBottomRow(){\n\t\tif(!this.botInitialized){\n\t\t\tthis.footerPrepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tif(this.botInitialized && this.botRow){\n\t\t\tthis.botElement.scrollLeft = left;\n\t\t}\n\t}\n\t\n\trecalc(rows){\n\t\tvar data, row;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(this.topInitialized || this.botInitialized){\n\t\t\t\tdata = this.rowsToData(rows);\n\t\t\t\t\n\t\t\t\tif(this.topInitialized){\n\t\t\t\t\tif(this.topRow){\n\t\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"top\", data);\n\t\t\t\t\tthis.topRow = row;\n\t\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.botInitialized){\n\t\t\t\t\tif(this.botRow){\n\t\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"bottom\", data);\n\t\t\t\t\tthis.botRow = row;\n\t\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t\tthis.botElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t\t\t\n\t\t\t\t//set resizable handles\n\t\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcRowGroup(row){\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t}\n\t\n\trecalcAll(){\n\t\tif(this.topCalcs.length || this.botCalcs.length){\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\n\t\t\t\t\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\n\t\t\t\t\n\t\t\t\tgroups.forEach((group) => {\n\t\t\t\t\tthis.recalcGroup(group);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcGroup(group){\n\t\tvar data, rowData;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(group){\n\t\t\t\tif(group.calcs){\n\t\t\t\t\tif(group.calcs.bottom){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(group.calcs.top){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//generate top stats row\n\tgenerateTopRow(rows){\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t}\n\t//generate bottom stats row\n\tgenerateBottomRow(rows){\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t}\n\t\n\trowsToData(rows){\n\t\tvar data = [];\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tdata.push(row.getData());\n\t\t\t\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\t\tdata = data.concat(children);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//generate stats row\n\tgenerateRow(pos, data){\n\t\tvar rowData = this.generateRowData(pos, data),\n\t\trow;\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.disable();\n\t\t}\n\t\t\n\t\trow = new Row(rowData, this, \"calc\");\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.enable();\n\t\t}\n\t\t\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\t\n\t\trow.component = false;\n\t\t\n\t\trow.getComponent = () => {\n\t\t\tif(!row.component){\n\t\t\t\trow.component = new CalcComponent(row);\n\t\t\t}\n\t\t\t\n\t\t\treturn row.component;\n\t\t};\n\t\t\n\t\trow.generateCells = () => {\n\t\t\t\n\t\t\tvar cells = [];\n\t\t\t\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\t\n\t\t\t\t//set field name of mock column\n\t\t\t\tthis.genColumn.setField(column.getField());\n\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\n\t\t\t\t\n\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams:{}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//ensure css class definition is replicated to calculation cell\n\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\n\t\t\t\t\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(this.genColumn, row);\n\t\t\t\tcell.getElement();\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\t\t\t\t\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\t\t\t\t\n\t\t\t\tif(!column.visible){\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\trow.cells = cells;\n\t\t};\n\t\t\n\t\treturn row;\n\t}\n\t\n\t//generate stats row\n\tgenerateRowData(pos, data){\n\t\tvar rowData = {},\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\tparams, paramKey;\n\t\t\n\t\tcalcs.forEach(function(column){\n\t\t\tvar values = [];\n\t\t\t\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\n\t\t\t\tdata.forEach(function(item){\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\t\t\t\t\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowData;\n\t}\n\t\n\thasTopCalcs(){\n\t\treturn\t!!(this.topCalcs.length);\n\t}\n\t\n\thasBottomCalcs(){\n\t\treturn\t!!(this.botCalcs.length);\n\t}\n\t\n\t//handle table redraw\n\tredraw(){\n\t\tif(this.topRow){\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif(this.botRow){\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t}\n\t\n\t//return the calculated\n\tgetResults(){\n\t\tvar results = {},\n\t\tgroups;\n\t\t\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\t\t\t\n\t\t\tgroups.forEach((group) => {\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\n\t\t\t});\n\t\t}else{\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn results;\n\t}\n\t\n\t//get results from a group\n\tgetGroupResults(group){\n\t\tvar groupObj = group._getSelf(),\n\t\tsubGroups = group.getSubGroups(),\n\t\tsubGroupResults = {},\n\t\tresults = {};\n\t\t\n\t\tsubGroups.forEach((subgroup) => {\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\n\t\t});\n\t\t\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults,\n\t\t};\n\t\t\n\t\treturn results;\n\t}\n\t\n\tadjustForScrollbar(width){\n\t\tif(this.botRow){\n\t\t\tif(this.table.rtl){\n\t\t\t\tthis.botElement.style.paddingLeft = width + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.botElement.style.paddingRight = width + \"px\";\n\t\t\t}\n\t\t}\n\t}\n}\n\nColumnCalcs.moduleName = \"columnCalcs\";\n\n//load defaults\nColumnCalcs.calculations = defaultCalculations;\n\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\n\nimport Row from '../../core/row/Row.js';\n\nimport RowComponent from '../../core/row/RowComponent.js';\n\nclass DataTree extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function(){};\n\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//selecting a parent row selects its children\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.dataTree){\n\t\t\tvar dummyEl = null,\n\t\t\toptions = this.table.options;\n\n\t\t\tthis.field = options.dataTreeChildField;\n\t\t\tthis.indent = options.dataTreeChildIndent;\n\n\t\t\tif(this.options(\"movableRows\")){\n\t\t\t\tconsole.warn(\"The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeBranchElement){\n\n\t\t\t\tif(options.dataTreeBranchElement === true){\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t\t}else{\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch-empty\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeCollapseElement){\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.collapseEl.tabIndex = 0;\n\t\t\t\tthis.collapseEl.innerHTML = \"
        \";\n\t\t\t}\n\n\t\t\tif(options.dataTreeExpandElement){\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.expandEl.tabIndex = 0;\n\t\t\t\tthis.expandEl.innerHTML = \"
        \";\n\t\t\t}\n\n\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedrawing.bind(this));\n\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\n\t\t}\n\t}\n\n\ttableRedrawing(force){\n\t\tvar rows;\n\n\t\tif(force){\n\t\t\trows = this.table.rowManager.getRows();\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.reinitializeRowChildren(row);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeElementField(){\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\n\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\t}\n\t\n\tgetRowChildren(row){\n\t\treturn this.getTreeChildren(row, true);\n\t}\n\n\tcolumnMoving(){\n\t\tvar rows = [];\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\trowDataChanged(row, visible, updatedData){\n\t\tif(this.redrawNeeded(updatedData)){\n\t\t\tthis.initializeRow(row);\n\n\t\t\tif(visible){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tcellValueChanged(cell){\n\t\tvar field = cell.column.getField();\n\n\t\tif(field === this.elementField){\n\t\t\tthis.layoutRow(cell.row);\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t\t}\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t\t}\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\t\tchildren:children,\n\t\t};\n\t}\n\n\treinitializeRowChildren(row){\n\t\tvar children = this.getTreeChildren(row, false, true);\n\n\t\tchildren.forEach(function(child){\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n\n\tlayoutRow(row){\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\tel = cell.getElement(),\n\t\tconfig = row.modules.dataTree;\n\n\t\tif(config.branchEl){\n\t\t\tif(config.branchEl.parentNode){\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t\t}\n\t\t\tconfig.branchEl = false;\n\t\t}\n\n\t\tif(config.controlEl){\n\t\t\tif(config.controlEl.parentNode){\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t\t}\n\t\t\tconfig.controlEl = false;\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\t\tif(config.index){\n\t\t\tif(this.branchEl){\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\t\tif(this.table.rtl){\n\t\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\t}else{\n\t\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\t}\n\t\t\t}else{\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateControlElement(row, el){\n\t\tvar config = row.modules.dataTree,\n\t\toldControl = config.controlEl;\n\n\t\tel = el || row.getCells()[0].getElement();\n\n\t\tif(config.children !== false){\n\n\t\t\tif(config.open){\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.collapseRow(row);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif(oldControl && oldControl.parentNode === el){\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\n\t\t\t}else{\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetRows(rows){\n\t\tvar output = [];\n\n\t\trows.forEach((row, i) => {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif(row instanceof Row){\n\n\t\t\t\trow.create();\n\n\t\t\t\tconfig = row.modules.dataTree;\n\n\t\t\t\tif(!config.index && config.children !== false){\n\t\t\t\t\tchildren = this.getChildren(row);\n\n\t\t\t\t\tchildren.forEach((child) => {\n\t\t\t\t\t\tchild.create();\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tgetChildren(row, allChildren){\n\t\tvar config = row.modules.dataTree,\n\t\tchildren = [],\n\t\toutput = [];\n\n\t\tif(config.children !== false && (config.open || allChildren)){\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach((child) => {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = this.getChildren(child);\n\n\t\t\t\tsubChildren.forEach((sub) => {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgenerateChildren(row){\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif(!Array.isArray(childArray)){\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach((childData) => {\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\n\n\t\t\tchildRow.create();\n\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\n\t\t\tif(childRow.modules.dataTree.children){\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t}\n\n\texpandRow(row, silent){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\tcollapseRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\ttoggleRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tif(config.open){\n\t\t\t\tthis.collapseRow(row);\n\t\t\t}else{\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowExpanded(row){\n\t\treturn row.modules.dataTree.open;\n\t}\n\n\tgetTreeParent(row){\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t}\n\n\tgetTreeParentRoot(row){\n\t\treturn row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;\n\t}\n\n\tgetFilteredTreeChildren(row){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [], children;\n\n\t\tif(config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tchildren.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(childRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\trowDelete(row){\n\t\tvar parent = row.modules.dataTree.parent,\n\t\tchildIndex;\n\n\t\tif(parent){\n\t\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t\t}\n\n\t\t\tif(!parent.data[this.field].length){\n\t\t\t\tdelete parent.data[this.field];\n\t\t\t}\n\n\t\t\tthis.initializeRow(parent);\n\t\t\tthis.layoutRow(parent);\n\t\t}\n\n\t\tthis.refreshData(true);\n\t}\n\n\taddTreeChildRow(row, data, top, index){\n\t\tvar childIndex = false;\n\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif(!Array.isArray(row.data[this.field])){\n\t\t\trow.data[this.field] = [];\n\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\n\t\t\t}\n\t\t}\n\n\t\tif(childIndex === false){\n\t\t\tif(top){\n\t\t\t\trow.data[this.field].unshift(data);\n\t\t\t}else{\n\t\t\t\trow.data[this.field].push(data);\n\t\t\t}\n\t\t}\n\n\t\tthis.initializeRow(row);\n\t\tthis.layoutRow(row);\n\n\t\tthis.refreshData(true);\n\t}\n\n\tfindChildIndex(subject, parent){\n\t\tvar match = false;\n\n\t\tif(typeof subject == \"object\"){\n\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\tmatch = subject.data;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\tmatch = subject._getSelf().data;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\tif(parent.modules.dataTree){\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tmatch = match.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else if(subject === null){\n\t\t\t\tmatch = false;\n\t\t\t}\n\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\tmatch = false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tmatch = parent.data[this.field].find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t}\n\n\t\tif(match){\n\n\t\t\tif(Array.isArray(parent.data[this.field])){\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t\t}\n\n\t\t\tif(match == -1){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\t\treturn match;\n\t}\n\n\tgetTreeChildren(row, component, recurse){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [];\n\n\t\tif(config && config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\t\tif(recurse){\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetChildField(){\n\t\treturn this.field;\n\t}\n\n\tredrawNeeded(data){\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n\t}\n}\n\nDataTree.moduleName = \"dataTree\";\n\nexport default DataTree;","export default function(list, options = {}, setFileContents){\n\tvar delimiter = options.delimiter ? options.delimiter : \",\",\n\tfileContents = [],\n\theaders = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = [];\n\n\t\tswitch(row.type){\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"header\":\n\t\t\t\trow.columns.forEach((col, i) => {\n\t\t\t\t\tif(col && col.depth === 1){\n\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}\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\n\t\t\t\t\tif(col){\n\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(headers.length){\n\t\tfileContents.unshift(headers.join(delimiter));\n\t}\n\n\tfileContents = fileContents.join(\"\\n\");\n\n\tif(options.bom){\n\t\tfileContents = \"\\ufeff\" + fileContents;\n\t}\n\n\tsetFileContents(fileContents, \"text/csv\");\n}\n","export default function(list, options, setFileContents){\n\tvar fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = {};\n\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif(col){\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\tsetFileContents(fileContents, \"application/json\");\n}","export default function(list, options = {}, setFileContents){\n\tvar header = [],\n\tbody = [],\n\tautoTableParams = {},\n\trowGroupStyles = options.rowGroupStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 12,\n\t\tcellPadding: 6,\n\t\tfillColor: 220,\n\t},\n\trowCalcStyles = options.rowCalcStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 10,\n\t\tcellPadding: 4,\n\t\tfillColor: 232,\n\t},\n\tjsPDFParams = options.jsPDF || {},\n\ttitle = options.title ? options.title : \"\";\n\n\tif(!jsPDFParams.orientation){\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t}\n\n\tif(!jsPDFParams.unit){\n\t\tjsPDFParams.unit = \"pt\";\n\t}\n\n\t//parse row list\n\tlist.forEach((row) => {\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\theader.push(parseRow(row));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tbody.push(parseRow(row));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfunction parseRow(row, styles){\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach((col) =>{\n\t\t\tvar cell;\n\n\t\t\tif(col){\n\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcell = {\n\t\t\t\t\tcontent:col.value,\n\t\t\t\t\tcolSpan:col.width,\n\t\t\t\t\trowSpan:col.height,\n\t\t\t\t};\n\n\t\t\t\tif(styles){\n\t\t\t\t\tcell.styles = styles;\n\t\t\t\t}\n\n\t\t\t\trowData.push(cell);\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t}\n\n\n\t//configure PDF\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\tif(options.autoTable){\n\t\tif(typeof options.autoTable === \"function\"){\n\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t}else{\n\t\t\tautoTableParams = options.autoTable;\n\t\t}\n\t}\n\n\tif(title){\n\t\tautoTableParams.didDrawPage = function(data) {\n\t\t\tdoc.text(title, 40, 30);\n\t\t};\n\t}\n\n\tautoTableParams.head = header;\n\tautoTableParams.body = body;\n\n\tdoc.autoTable(autoTableParams);\n\n\tif(options.documentProcessing){\n\t\toptions.documentProcessing(doc);\n\t}\n\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n}\n","import CoreFeature from '../../../../core/CoreFeature.js';\n\nexport default function(list, options, setFileContents){\n\tvar self = this,\n\tsheetName = options.sheetName || \"Sheet1\",\n\tworkbook = XLSX.utils.book_new(),\n\ttableFeatures = new CoreFeature(this),\n\tcompression = 'compress' in options ? options.compress : true,\n\twriteOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression},\n\toutput;\n\n\twriteOptions.type = 'binary';\n\n\tworkbook.SheetNames = [];\n\tworkbook.Sheets = {};\n\n\tfunction generateSheet(){\n\t\tvar rows = [],\n\t\tmerges = [],\n\t\tworksheet = {},\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\n\n\t\t//parse row list\n\t\tlist.forEach((row, i) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function(col, j){\n\n\t\t\t\tif(col){\n\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\tif(col.width > 1 || col.height > -1){\n\t\t\t\t\t\tif(col.height > 1 || col.width > 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}\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\trows.push(rowData);\n\t\t});\n\n\t\t//convert rows to worksheet\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\tif(merges.length){\n\t\t\tworksheet[\"!merges\"] = merges;\n\t\t}\n\n\t\treturn worksheet;\n\t}\n\n\tif(options.sheetOnly){\n\t\tsetFileContents(generateSheet());\n\t\treturn;\n\t}\n\n\tif(options.sheets){\n\t\tfor(var sheet in options.sheets){\n\n\t\t\tif(options.sheets[sheet] === true){\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t}else{\n\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\n\t\t\t\t\ttype:\"xlsx\",\n\t\t\t\t\toptions:{sheetOnly:true},\n\t\t\t\t\tactive:self.active,\n\t\t\t\t\tintercept:function(data){\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}else{\n\t\tworkbook.SheetNames.push(sheetName);\n\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t}\n\n\tif(options.documentProcessing){\n\t\tworkbook = options.documentProcessing(workbook);\n\t}\n\n\t//convert workbook to binary array\n\tfunction s2ab(s) {\n\t\tvar buf = new ArrayBuffer(s.length);\n\t\tvar view = new Uint8Array(buf);\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\t\treturn buf;\n\t}\n\n\toutput = XLSX.write(workbook, writeOptions);\n\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\n}\n","export default function(list, options, setFileContents){\n\tif(this.modExists(\"export\", true)){\n\t\tsetFileContents(this.modules.export.generateHTMLTable(list), \"text/html\");\n\t}\n}","export default function (list, options, setFileContents) {\n\tconst fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tconst item = {};\n\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(JSON.stringify(item));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\n}","import csv from './downloaders/csv.js';\nimport json from './downloaders/json.js';\nimport pdf from './downloaders/pdf.js';\nimport xlsx from './downloaders/xlsx.js';\nimport html from './downloaders/html.js';\nimport jsonLines from './downloaders/jsonLines.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tjsonLines:jsonLines,\n\tpdf:pdf,\n\txlsx:xlsx,\n\thtml:html,\n};","import Module from '../../core/Module.js';\n\nimport defaultDownloaders from './defaults/downloaders.js';\n\nclass Download extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.registerTableOption(\"downloadEncoder\", function(data, mimeType){\n\t\t\treturn new Blob([data],{type:mimeType});\n\t\t}); //function to manipulate download data\n\t\tthis.registerTableOption(\"downloadReady\", undefined); //warn of function deprecation\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\n\n\t\tthis.registerColumnOption(\"download\");\n\t\tthis.registerColumnOption(\"titleDownload\");\n\t}\n\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"downloadReady\", \"downloadEncoder\");\n\t}\t\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tdownloadToTab(type, filename, options, active){\n\t\tthis.download(type, filename, options, active, true);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//trigger file download\n\tdownload(type, filename, options, range, interceptCallback){\n\t\tvar downloadFunc = false;\n\n\t\tfunction buildLink(data, mime){\n\t\t\tif(interceptCallback){\n\t\t\t\tif(interceptCallback === true){\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t}else{\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif(typeof type == \"function\"){\n\t\t\tdownloadFunc = type;\n\t\t}else{\n\t\t\tif(Download.downloaders[type]){\n\t\t\t\tdownloadFunc = Download.downloaders[type];\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tif(downloadFunc){\n\t\t\tvar list = this.generateExportList(range);\n\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\n\t\t}\n\t}\n\n\tgenerateExportList(range){\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t\t//assign group header formatter\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\n\t\t\tgroupHeader = [groupHeader];\n\t\t}\n\n\t\tlist.forEach((row) => {\n\t\t\tvar group;\n\n\t\t\tif(row.type === \"group\"){\n\t\t\t\tgroup = row.columns[0];\n\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t}\n\n\ttriggerDownload(data, mime, type, filename, newTab){\n\t\tvar element = document.createElement('a'),\n\t\tblob = this.table.options.downloadEncoder(data, mime);\n\n\t\tif(blob){\n\t\t\tif(newTab){\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t}else{\n\t\t\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\t\t\t\t\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t}else{\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\n\t\t}\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nDownload.moduleName = \"download\";\n\n//load defaults\nDownload.downloaders = defaultDownloaders;\n\nexport default Download;","export default function maskInput(el, options){\n\tvar mask = options.mask,\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\";\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\", (e) => {\n\t\tvar index = el.value.length,\n\t\tchar = e.key;\n\n\t\tif(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){\n\t\t\tif(index >= mask.length){\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\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\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\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\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", (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\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}","import maskInput from '../../inputMask.js';\n\n//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange(e);\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//resizable text area element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"hybrid\",\n\tvalue = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\tinput = document.createElement(\"textarea\"),\n\tscrollHeight = 0;\n\n\t//create and style input\n\tinput.style.display = \"block\";\n\tinput.style.padding = \"2px\";\n\tinput.style.height = \"100%\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\tinput.style.whiteSpace = \"pre-wrap\";\n\tinput.style.resize = \"none\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = value;\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\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\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t},300);\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\tinput.addEventListener(\"keyup\", function(){\n\n\t\tinput.style.height = \"\";\n\n\t\tvar heightNow = input.scrollHeight;\n\n\t\tinput.style.height = heightNow + \"px\";\n\n\t\tif(heightNow != scrollHeight){\n\t\t\tscrollHeight = heightNow;\n\t\t\tcell.getRow().normalizeHeight();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"keydown\", function(e){\n\n\t\tswitch(e.keyCode){\n\n\t\t\tcase 13:\n\t\t\t\tif(e.shiftKey && editorParams.shiftEnterSubmit){\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", \"number\");\n\n\tif(typeof editorParams.max != \"undefined\"){\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\n\tif(typeof editorParams.min != \"undefined\"){\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\n\tif(typeof editorParams.step != \"undefined\"){\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = cellValue;\n\n\tvar blurFunc = function(e){\n\t\tonChange();\n\t};\n\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\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\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(){\n\t\tvar value = input.value;\n\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\n\t\tif(value !== cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.setAttribute(\"type\", \"range\");\n\t\n\tif (typeof editorParams.max != \"undefined\") {\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\t\n\tif (typeof editorParams.min != \"undefined\") {\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\t\n\tif (typeof editorParams.step != \"undefined\") {\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\t\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value;\n\t\t\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\t\t\n\t\tif(value != cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e){\n\t\tonChange();\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tfunction convertDate(value){\n\t\tvar newDatetime;\n\t\t\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\t\t\n\t\treturn newDatetime.toFormat(\"yyyy-MM-dd\");\n\t}\n\t\n\tinput.type = \"date\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.max){\n\t\tinput.setAttribute(\"max\", inputFormat ? convertDate(editorParams.max) : editorParams.max);\n\t}\n\n\tif(editorParams.min){\n\t\tinput.setAttribute(\"min\", inputFormat ? convertDate(editorParams.min) : editorParams.min);\n\t}\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\t\t\n\t\t\tcellValue = convertDate(cellValue);\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDate;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDate = DT.fromFormat(String(value), \"yyyy-MM-dd\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDate;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDate.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDate.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"time\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"HH:mm\");\n\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\n\tconsole.log(\"val\", cellValue);\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() == \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxTime = DT.fromFormat(String(value), \"hh:mm\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"datetime-local\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"yyyy-MM-dd\") + \"T\" + newDatetime.toFormat(\"HH:mm\");\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDateTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDateTime = DT.fromISO(String(value));\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDateTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDateTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDateTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","import maskInput from './inputMask.js';\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\n\nexport default class Edit{\n\tconstructor(editor, cell, onRendered, success, cancel, editorParams){\n\t\tthis.edit = editor;\n\t\tthis.table = editor.table;\n\t\tthis.cell = cell;\n\t\tthis.params = this._initializeParams(editorParams);\n\t\t\n\t\tthis.data = [];\n\t\tthis.displayItems = [];\n\t\tthis.currentItems = [];\n\t\tthis.focusedItem = null;\n\t\t\n\t\tthis.input = this._createInputElement();\n\t\tthis.listEl = this._createListElement();\n\t\t\n\t\tthis.initialValues = null; \n\t\t\n\t\tthis.isFilter = cell.getType() === \"header\";\n\t\t\n\t\tthis.filterTimeout = null;\n\t\tthis.filtered = false;\n\t\tthis.typing = false;\n\t\t\n\t\tthis.values = []; \n\t\tthis.popup = null; \n\t\t\n\t\tthis.listIteration = 0;\n\t\t\n\t\tthis.lastAction=\"\";\n\t\tthis.filterTerm=\"\";\n\t\t\n\t\tthis.blurable = true;\n\t\t\n\t\tthis.actions = {\n\t\t\tsuccess:success,\n\t\t\tcancel:cancel\n\t\t};\n\t\t\n\t\tthis._deprecatedOptionsCheck();\n\t\tthis._initializeValue();\n\t\t\n\t\tonRendered(this._onRendered.bind(this));\n\t}\n\t\n\t_deprecatedOptionsCheck(){\n\t\tif(this.params.listItemFormatter){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.sortValuesList){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchFunc){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchingPlaceholder){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t}\n\t\n\t_initializeValue(){\n\t\tvar initialValue = this.cell.getValue();\n\t\t\n\t\tif(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\n\t\t\tinitialValue = this.params.defaultValue;\n\t\t}\n\t\t\n\t\tthis.initialValues = this.params.multiselect ? initialValue : [initialValue];\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.input.value = this.initialValues ? this.initialValues.join(\",\") : \"\";\n\t\t\tthis.headerFilterInitialListGen(); \n\t\t}\n\t}\n\t\n\t_onRendered(){\n\t\tvar cellEl = this.cell.getElement();\n\t\t\n\t\tfunction clickStop(e){\n\t\t\te.stopPropagation();\n\t\t}\t\n\t\t\n\t\tif(!this.isFilter){\n\t\t\tthis.input.style.height = \"100%\";\n\t\t\tthis.input.focus({preventScroll: true});\n\t\t}\n\t\t\n\t\t\n\t\tcellEl.addEventListener(\"click\", clickStop);\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tcellEl.removeEventListener(\"click\", clickStop);\n\t\t}, 1000);\n\t\t\n\t\tthis.input.addEventListener(\"mousedown\", this._preventPopupBlur.bind(this));\n\t}\n\t\n\t_createListElement(){\n\t\tvar listEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-list\");\n\t\t\n\t\tlistEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\tlistEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\t\n\t\treturn listEl;\n\t}\n\t\n\t_setListWidth(){\n\t\tvar element = this.isFilter ? this.input : this.cell.getElement();\n\t\t\n\t\tthis.listEl.style.minWidth = element.offsetWidth + \"px\";\n\t\t\n\t\tif(this.params.maxWidth){\n\t\t\tif(this.params.maxWidth === true){\n\t\t\t\tthis.listEl.style.maxWidth = element.offsetWidth + \"px\";\n\t\t\t}else if(typeof this.params.maxWidth === \"number\"){\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t_createInputElement(){\n\t\tvar attribs = this.params.elementAttributes;\n\t\tvar input = document.createElement(\"input\");\n\t\t\n\t\tinput.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\n\t\t\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\t\n\t\tif(!this.params.autocomplete){\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.style.caretColor = \"transparent\";\n\t\t\t// input.readOnly = (this.edit.currentCell != false);\n\t\t}\n\t\t\n\t\tif(attribs && typeof attribs == \"object\"){\n\t\t\tfor (let key in attribs){\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) + attribs[\"+\" + key]);\n\t\t\t\t}else{\n\t\t\t\t\tinput.setAttribute(key, attribs[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this.params.mask){\n\t\t\tmaskInput(input, this.params);\n\t\t}\n\t\t\n\t\tthis._bindInputEvents(input);\n\t\t\n\t\treturn input;\n\t}\n\t\n\t_initializeParams(params){\n\t\tvar valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\n\t\tvalueCheck;\n\t\t\n\t\tparams = Object.assign({}, params);\n\t\t\n\t\tparams.verticalNavigation = params.verticalNavigation || \"editor\";\n\t\tparams.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\n\t\tparams.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\n\t\tparams.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\n\t\t\n\t\tparams.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\n\t\t\n\t\tvalueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\n\t\t\n\t\tif(!valueCheck){\n\t\t\tconsole.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\");\n\t\t}else if(valueCheck > 1){\n\t\t\tconsole.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\");\n\t\t}\n\t\t\n\t\tif(params.autocomplete){\n\t\t\tif(params.multiselect){\n\t\t\t\tparams.multiselect = false;\n\t\t\t\tconsole.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\");\n\t\t\t}\n\t\t}else{\n\t\t\tif(params.freetext){\n\t\t\t\tparams.freetext = false;\n\t\t\t\tconsole.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterFunc){\n\t\t\t\tparams.filterFunc = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterRemote){\n\t\t\t\tparams.filterRemote = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.mask){\n\t\t\t\tparams.mask = false;\n\t\t\t\tconsole.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.allowEmpty){\n\t\t\t\tparams.allowEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.listOnEmpty){\n\t\t\t\tparams.listOnEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(params.filterRemote && !(typeof params.valuesLookup === \"function\" || params.valuesURL)){\n\t\t\tparams.filterRemote = false;\n\t\t\tconsole.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\n\t\t}\n\t\treturn params;\n\t}\n\t//////////////////////////////////////\n\t////////// Event Handling ////////////\n\t//////////////////////////////////////\n\t\n\t_bindInputEvents(input){\n\t\tinput.addEventListener(\"focus\", this._inputFocus.bind(this));\n\t\tinput.addEventListener(\"click\", this._inputClick.bind(this));\n\t\tinput.addEventListener(\"blur\", this._inputBlur.bind(this));\n\t\tinput.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\tinput.addEventListener(\"search\", this._inputSearch.bind(this));\n\t\t\n\t\tif(this.params.autocomplete){\n\t\t\tinput.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\t\t}\n\t}\n\t\n\t\n\t_inputFocus(e){\n\t\tthis.rebuildOptionsList();\n\t}\n\t\n\t_filter(){\n\t\tif(this.params.filterRemote){\n\t\t\tclearTimeout(this.filterTimeout);\n\t\t\t\n\t\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\t\tthis.rebuildOptionsList();\n\t\t\t}, this.params.filterDelay);\n\t\t}else{\n\t\t\tthis._filterList();\n\t\t}\n\t}\n\t\n\t_inputClick(e){\n\t\te.stopPropagation();\n\t}\n\t\n\t_inputBlur(e){\n\t\tif(this.blurable){\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.hide();\n\t\t\t}else{\n\t\t\t\tthis._resolveValue(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_inputSearch(){\n\t\tthis._clearChoices();\n\t}\n\t\n\t_inputKeyDown(e){\n\t\tswitch(e.keyCode){\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\t\tthis._keyUp(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: //down arrow\n\t\t\t\tthis._keyDown(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //right arrow\n\t\t\t\tthis._keySide(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 13: //enter\n\t\t\t\tthis._keyEnter();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27: //escape\n\t\t\t\tthis._keyEsc();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 36: //home\n\t\t\tcase 35: //end\n\t\t\t\tthis._keyHomeEnd(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: //tab\n\t\t\t\tthis._keyTab(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keySelectLetter(e);\n\t\t}\n\t}\n\t\n\t_inputKeyUp(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 38: //up arrow\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //up arrow\n\t\t\tcase 40: //right arrow\n\t\t\tcase 13: //enter\n\t\t\tcase 27: //escape\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keyAutoCompLetter(e);\n\t\t}\n\t}\n\t\n\t_preventPopupBlur(){\n\t\tif(this.popup){\n\t\t\tthis.popup.blockHide();\n\t\t}\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.restoreHide();\n\t\t\t}\n\t\t}, 10);\n\t}\n\t\n\t_preventBlur(){\n\t\tthis.blurable = false;\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tthis.blurable = true;\n\t\t}, 10);\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Keyboard Navigation /////////\n\t//////////////////////////////////////\n\t\n\t_keyTab(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyUp(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index > 0){\n\t\t\t\tthis._focusItem(this.displayItems[index - 1]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyDown(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index < this.displayItems.length - 1){\n\t\t\t\tif(index == -1){\n\t\t\t\t\tthis._focusItem(this.displayItems[0]);\n\t\t\t\t}else{\n\t\t\t\t\tthis._focusItem(this.displayItems[index + 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keySide(e){\n\t\tif(!this.params.autocomplete){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\t_keyEnter(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyEsc(e){\n\t\tthis._cancel();\n\t}\n\t\n\t_keyHomeEnd(e){\n\t\tif(this.params.autocomplete){\n\t\t\t//prevent table navigation while using input element\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\t\n\t_keySelectLetter(e){\n\t\tif(!this.params.autocomplete){\n\t\t\t// if(this.edit.currentCell === false){\n\t\t\te.preventDefault();\n\t\t\t// }\n\t\t\t\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\n\t\t\t\tthis._scrollToValue(e.keyCode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyAutoCompLetter(e){\n\t\tthis._filter();\n\t\tthis.lastAction = \"typing\";\n\t\tthis.typing = true;\n\t}\n\t\n\t\n\t_scrollToValue(char){\n\t\tclearTimeout(this.filterTimeout);\n\t\t\n\t\tvar character = String.fromCharCode(char).toLowerCase();\n\t\tthis.filterTerm += character.toLowerCase();\n\t\t\n\t\tvar match = this.displayItems.find((item) => {\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\n\t\t});\n\t\t\n\t\tif(match){\n\t\t\tthis._focusItem(match);\n\t\t}\n\t\t\n\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\tthis.filterTerm = \"\";\n\t\t}, 800);\n\t}\n\t\n\t_focusItem(item){\n\t\tthis.lastAction = \"focus\";\n\t\t\n\t\tif(this.focusedItem && this.focusedItem.element){\n\t\t\tthis.focusedItem.element.classList.remove(\"focused\");\n\t\t}\n\t\t\n\t\tthis.focusedItem = item;\n\t\t\n\t\tif(item && item.element){\n\t\t\titem.element.classList.add(\"focused\");\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\n\t\t}\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t/////// Data List Generation /////////\n\t//////////////////////////////////////\n\theaderFilterInitialListGen(){\n\t\tthis._generateOptions(true);\n\t}\n\t\n\trebuildOptionsList(){\n\t\tthis._generateOptions()\n\t\t\t.then(this._sortOptions.bind(this))\n\t\t\t.then(this._buildList.bind(this))\n\t\t\t.then(this._showList.bind(this))\n\t\t\t.catch((e) => {\n\t\t\t\tif(!Number.isInteger(e)){\n\t\t\t\t\tconsole.error(\"List generation error\", e);\n\t\t\t\t}\n\t\t\t});\n\t}\n\t\n\t_filterList(){\n\t\tthis._buildList(this._filterOptions());\n\t\tthis._showList();\n\t}\n\t\n\t_generateOptions(silent){\n\t\tvar values = [];\n\t\tvar iteration = ++ this.listIteration;\n\t\t\n\t\tthis.filtered = false;\n\t\t\n\t\tif(this.params.values){\n\t\t\tvalues = this.params.values;\n\t\t}else if (this.params.valuesURL){\n\t\t\tvalues = this._ajaxRequest(this.params.valuesURL, this.input.value);\n\t\t}else{\n\t\t\tif(typeof this.params.valuesLookup === \"function\"){\n\t\t\t\tvalues = this.params.valuesLookup(this.cell, this.input.value);\n\t\t\t}else if(this.params.valuesLookup){\n\t\t\t\tvalues = this._uniqueColumnValues(this.params.valuesLookupField);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(values instanceof Promise){\n\t\t\tif(!silent){\n\t\t\t\tthis._addPlaceholder(this.params.placeholderLoading);\n\t\t\t}\n\t\t\t\n\t\t\treturn values.then()\n\t\t\t\t.then((responseValues) => {\n\t\t\t\t\tif(this.listIteration === iteration){\n\t\t\t\t\t\treturn this._parseList(responseValues);\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn Promise.reject(iteration);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.resolve(this._parseList(values));\n\t\t}\n\t}\n\t\n\t_addPlaceholder(contents){\n\t\tvar placeholder = document.createElement(\"div\");\n\t\t\n\t\tif(typeof contents === \"function\"){\n\t\t\tcontents = contents(this.cell.getComponent(), this.listEl);\n\t\t}\n\t\t\n\t\tif(contents){\n\t\t\tthis._clearList();\n\t\t\t\n\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\tplaceholder = contents;\n\t\t\t}else{\n\t\t\t\tplaceholder.classList.add(\"tabulator-edit-list-placeholder\");\n\t\t\t\tplaceholder.innerHTML = contents;\n\t\t\t}\n\t\t\t\n\t\t\tthis.listEl.appendChild(placeholder);\n\t\t\t\n\t\t\tthis._showList();\n\t\t}\n\t}\n\t\n\t_ajaxRequest(url, term){\n\t\tvar params = this.params.filterRemote ? {term:term} : {};\n\t\turl = urlBuilder(url, {}, params);\n\t\t\n\t\treturn fetch(url)\n\t\t\t.then((response)=>{\n\t\t\t\tif(response.ok) {\n\t\t\t\t\treturn response.json()\n\t\t\t\t\t\t.catch((error)=>{\n\t\t\t\t\t\t\tconsole.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error)=>{\n\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \", error);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\t}\n\t\n\t_uniqueColumnValues(field){\n\t\tvar output = {},\n\t\tdata = this.table.getData(this.params.valuesLookup),\n\t\tcolumn;\n\t\t\n\t\tif(field){\n\t\t\tcolumn = this.table.columnManager.getColumnByField(field);\n\t\t}else{\n\t\t\tcolumn = this.cell.getColumn()._getSelf();\n\t\t}\n\t\t\n\t\tif(column){\n\t\t\tdata.forEach((row) => {\n\t\t\t\tvar val = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\n\t\t\t\t\toutput[val] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\toutput = [];\n\t\t}\n\t\t\n\t\treturn Object.keys(output);\n\t}\n\t\n\t\n\t_parseList(inputValues){\n\t\tvar data = [];\n\t\t\n\t\tif(!Array.isArray(inputValues)){\n\t\t\tinputValues = Object.entries(inputValues).map(([key, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:key,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t\n\t\tinputValues.forEach((value) => {\n\t\t\tif(typeof value !== \"object\"){\n\t\t\t\tvalue = {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:value,\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tthis._parseListItem(value, data, 0);\n\t\t});\n\t\t\n\t\tif(!this.currentItems.length && this.params.freetext){\n\t\t\tthis.input.value = this.initialValues;\n\t\t\tthis.typing = true;\n\t\t\tthis.lastAction = \"typing\";\n\t\t}\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\treturn data; \n\t}\n\t\n\t_parseListItem(option, data, level){\n\t\tvar item = {};\n\t\t\n\t\tif(option.options){\n\t\t\titem = this._parseListGroup(option, level + 1);\n\t\t}else{\n\t\t\titem = {\n\t\t\t\tlabel:option.label,\n\t\t\t\tvalue:option.value,\n\t\t\t\titemParams:option.itemParams,\n\t\t\t\telementAttributes: option.elementAttributes,\n\t\t\t\telement:false,\n\t\t\t\tselected:false,\n\t\t\t\tvisible:true,\n\t\t\t\tlevel:level,\n\t\t\t\toriginal:option,\n\t\t\t};\n\t\t\t\n\t\t\tif(this.initialValues && this.initialValues.indexOf(option.value) > -1){\n\t\t\t\tthis._chooseItem(item, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tdata.push(item);\n\t}\n\t\n\t_parseListGroup(option, level){\n\t\tvar item = {\n\t\t\tlabel:option.label,\n\t\t\tgroup:true,\n\t\t\titemParams:option.itemParams,\n\t\t\telementAttributes:option.elementAttributes,\n\t\t\telement:false,\n\t\t\tvisible:true,\n\t\t\tlevel:level,\n\t\t\toptions:[],\n\t\t\toriginal:option,\n\t\t};\n\t\t\n\t\toption.options.forEach((child) => {\n\t\t\tthis._parseListItem(child, item.options, level);\n\t\t});\n\t\t\n\t\treturn item;\n\t}\n\t\n\t_sortOptions(options){\n\t\tvar sorter;\n\t\t\n\t\tif(this.params.sort){\n\t\t\tsorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\n\t\t\t\n\t\t\tthis._sortGroup(sorter, options);\n\t\t}\n\t\t\n\t\treturn options;\n\t}\n\t\n\t_sortGroup(sorter, options){\n\t\toptions.sort((a,b) => {\n\t\t\treturn sorter(a.label, b.label, a.value, b.value, a.original, b.original);\n\t\t});\n\t\t\n\t\toptions.forEach((option) => {\n\t\t\tif(option.group){\n\t\t\t\tthis._sortGroup(sorter, option.options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_defaultSortFunction(as, bs){\n\t\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\t\tvar emptyAlign = 0;\n\t\t\n\t\tif(this.params.sort === \"desc\"){\n\t\t\t[as, bs] = [bs, as];\n\t\t}\n\t\t\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\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}\n\t\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn a.length > b.length;\n\t\t}\n\t\t\n\t\treturn emptyAlign;\n\t}\n\t\n\t_filterOptions(){\n\t\tvar filterFunc = this.params.filterFunc || this._defaultFilterFunc,\n\t\tterm = this.input.value;\n\t\t\n\t\tif(term){\n\t\t\tthis.filtered = true;\n\t\t\t\n\t\t\tthis.data.forEach((item) => {\n\t\t\t\tthis._filterItem(filterFunc, term, item);\n\t\t\t});\n\t\t}else{\n\t\t\tthis.filtered = false;\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\t_filterItem(func, term, item){\n\t\tvar matches = false;\n\t\t\n\t\tif(!item.group){\n\t\t\titem.visible = func(term, item.label, item.value, item.original);\n\t\t}else{\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tif(this._filterItem(func, term, option)){\n\t\t\t\t\tmatches = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\titem.visible = matches;\n\t\t}\n\t\t\n\t\treturn item.visible;\n\t}\n\t\n\t_defaultFilterFunc(term, label, value, item){\n\t\tterm = String(term).toLowerCase();\n\t\t\n\t\tif(label !== null && typeof label !== \"undefined\"){\n\t\t\tif(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t//////////////////////////////////////\n\t/////////// Display List /////////////\n\t//////////////////////////////////////\n\t\n\t_clearList(){\n\t\twhile(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\n\t\t\n\t\tthis.displayItems = [];\n\t}\n\t\n\t_buildList(data){\n\t\tthis._clearList();\n\t\t\n\t\tdata.forEach((option) => {\n\t\t\tthis._buildItem(option);\n\t\t});\n\t\t\n\t\tif(!this.displayItems.length){\n\t\t\tthis._addPlaceholder(this.params.placeholderEmpty);\n\t\t} \n\t}\n\t\n\t_buildItem(item){\n\t\tvar el = item.element,\n\t\tcontents;\n\t\t\n\t\tif(!this.filtered || item.visible){\n\t\t\t\n\t\t\tif(!el){\n\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\n\t\t\t\tcontents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\n\t\t\t\t\n\t\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = contents;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-group\");\n\t\t\t\t}else{\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-item\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\n\t\t\t\t\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\n\t\t\t\t\tfor (let key in item.elementAttributes){\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\tel.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.addEventListener(\"click\", this._groupClick.bind(this, item));\n\t\t\t\t}else{\n\t\t\t\t\tel.addEventListener(\"click\", this._itemClick.bind(this, item));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\t\t\t\n\t\t\t\titem.element = el;\n\t\t\t}\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tthis.listEl.appendChild(el);\n\t\t\t\n\t\t\tif(item.group){\n\t\t\t\titem.options.forEach((option) => {\n\t\t\t\t\tthis._buildItem(option);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.displayItems.push(item);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_showList(){\n\t\tvar startVis = this.popup && this.popup.isVisible();\n\t\t\n\t\tif(this.input.parentNode){\n\t\t\tif(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\n\t\t\t\tif(this.popup){\n\t\t\t\t\tthis.popup.hide(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis._setListWidth();\n\t\t\t\n\t\t\tif(!this.popup){\n\t\t\t\tthis.popup = this.edit.popup(this.listEl);\n\t\t\t}\n\t\t\t\n\t\t\tthis.popup.show(this.cell.getElement(), \"bottom\");\n\t\t\t\n\t\t\tif(!startVis){\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.popup.hideOnBlur(this._resolveValue.bind(this, true));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_styleItem(item){\n\t\tif(item && item.element){\n\t\t\tif(item.selected){\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}else{\n\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// User Interaction ///////////\n\t//////////////////////////////////////\n\t\n\t_itemClick(item, e){\n\t\te.stopPropagation();\n\t\t\n\t\tthis._chooseItem(item);\n\t}\n\t\n\t_groupClick(item, e){\n\t\te.stopPropagation();\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t////// Current Item Management ///////\n\t//////////////////////////////////////\n\t\n\t_cancel(){\n\t\tthis.popup.hide(true);\n\t\tthis.actions.cancel();\n\t}\n\t\n\t_clearChoices(){\n\t\tthis.typing = true;\n\t\t\n\t\tthis.currentItems.forEach((item) => {\n\t\t\titem.selected = false;\n\t\t\tthis._styleItem(item);\n\t\t});\n\t\t\n\t\tthis.currentItems = [];\n\t\t\n\t\tthis.focusedItem = null;\n\t}\n\t\n\t_chooseItem(item, silent){\n\t\tvar index;\n\t\t\n\t\tthis.typing = false;\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\tindex = this.currentItems.indexOf(item);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.currentItems.splice(index, 1);\n\t\t\t\titem.selected = false;\n\t\t\t}else{\n\t\t\t\tthis.currentItems.push(item);\n\t\t\t\titem.selected = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.input.value = this.currentItems.map(item => item.label).join(\",\");\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t}else{\n\t\t\tthis.currentItems = [item];\n\t\t\titem.selected = true;\n\t\t\t\n\t\t\tthis.input.value = item.label;\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis._resolveValue();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis._focusItem(item);\n\t}\n\t\n\t_resolveValue(blur){\n\t\tvar output, initialValue;\n\t\t\n\t\tif(this.popup){\n\t\t\tthis.popup.hide(true);\n\t\t}\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\toutput = this.currentItems.map(item => item.value);\n\t\t}else{\n\t\t\tif(blur && this.params.autocomplete && this.typing){\n\t\t\t\tif(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\n\t\t\t\t\toutput = this.input.value;\n\t\t\t\t}else{\n\t\t\t\t\tthis.actions.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.currentItems[0]){\n\t\t\t\t\toutput = this.currentItems[0].value;\n\t\t\t\t}else{\n\t\t\t\t\tinitialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;\n\t\t\t\t\t\n\t\t\t\t\tif(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\n\t\t\t\t\t\toutput = initialValue;\n\t\t\t\t\t}else{\n\t\t\t\t\t\toutput = this.params.emptyValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(output === \"\"){\n\t\t\toutput = this.params.emptyValue;\n\t\t}\n\t\t\n\t\tthis.actions.success(output);\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.initialValues = output && !Array.isArray(output) ? [output] : output;\n\t\t\tthis.currentItems = [];\n\t\t}\n\t}\n\t\n}\n","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The select editor has been deprecated, please use the new list editor\");\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\n\n\teditorParams.autocomplete = true;\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","//star rating\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar self = this,\n\telement = cell.getElement(),\n\tvalue = cell.getValue(),\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\tstars = [],\n\tstarsHolder = document.createElement(\"div\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\n\t//change star type\n\tfunction starChange(val){\n\t\tstars.forEach(function(star, i){\n\t\t\tif(i < val){\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}else{\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//build stars\n\tfunction buildStar(i){\n\n\t\tvar starHolder = document.createElement(\"span\");\n\t\tvar nextStar = star.cloneNode(true);\n\n\t\tstars.push(nextStar);\n\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tstarChange(i);\n\t\t});\n\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t});\n\n\t\tstarHolder.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tsuccess(i);\n\t\t\telement.blur();\n\t\t});\n\n\t\tstarHolder.appendChild(nextStar);\n\t\tstarsHolder.appendChild(starHolder);\n\n\t}\n\n\t//handle keyboard navigation value change\n\tfunction changeValue(val){\n\t\tvalue = val;\n\t\tstarChange(val);\n\t}\n\n\t//style cell\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\t//style holding element\n\tstarsHolder.style.verticalAlign = \"middle\";\n\tstarsHolder.style.display = \"inline-block\";\n\tstarsHolder.style.padding = \"4px\";\n\n\t//style star\n\tstar.setAttribute(\"width\", size);\n\tstar.setAttribute(\"height\", size);\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//create correct number of stars\n\tfor(var i=1;i<= maxStars;i++){\n\t\tbuildStar(i);\n\t}\n\n\t//ensure value does not exceed number of stars\n\tvalue = Math.min(parseInt(value), maxStars);\n\n\t// set initial styling of stars\n\tstarChange(value);\n\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\n\t\tstarChange(0);\n\t});\n\n\tstarsHolder.addEventListener(\"click\", function(e){\n\t\tsuccess(0);\n\t});\n\n\telement.addEventListener(\"blur\", function(e){\n\t\tcancel();\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\tchangeValue(value + 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\tchangeValue(value - 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 13: //enter\n\t\t\t\tsuccess(value);\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn starsHolder;\n}","//draggable progress bar\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar element = cell.getElement(),\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\n\tpercent = (max - min) / 100,\n\tvalue = cell.getValue() || 0,\n\thandle = document.createElement(\"div\"),\n\tbar = document.createElement(\"div\"),\n\tmouseDrag, mouseDragWidth;\n\n\t//set new value\n\tfunction updateValue(){\n\t\tvar style = window.getComputedStyle(element, null);\n\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\n\t\tsuccess(calcVal);\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\telement.setAttribute(\"aria-label\", value);\n\t}\n\n\t//style handle\n\thandle.style.position = \"absolute\";\n\thandle.style.right = \"0\";\n\thandle.style.top = \"0\";\n\thandle.style.bottom = \"0\";\n\thandle.style.width = \"5px\";\n\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t//style bar\n\tbar.style.display = \"inline-block\";\n\tbar.style.position = \"relative\";\n\t// bar.style.top = \"8px\";\n\t// bar.style.bottom = \"8px\";\n\t// bar.style.left = \"4px\";\n\t// bar.style.marginRight = \"4px\";\n\tbar.style.height = \"100%\";\n\tbar.style.backgroundColor = \"#488CE9\";\n\tbar.style.maxWidth = \"100%\";\n\tbar.style.minWidth = \"0%\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//style cell\n\telement.style.padding = \"4px 4px\";\n\n\t//make sure value is in range\n\tvalue = Math.min(parseFloat(value), max);\n\tvalue = Math.max(parseFloat(value), min);\n\n\t//workout percentage\n\tvalue = Math.round((value - min) / percent);\n\t// bar.style.right = value + \"%\";\n\tbar.style.width = value + \"%\";\n\n\telement.setAttribute(\"aria-valuemin\", min);\n\telement.setAttribute(\"aria-valuemax\", max);\n\n\tbar.appendChild(handle);\n\n\thandle.addEventListener(\"mousedown\", function(e){\n\t\tmouseDrag = e.screenX;\n\t\tmouseDragWidth = bar.offsetWidth;\n\t});\n\n\thandle.addEventListener(\"mouseover\", function(){\n\t\thandle.style.cursor = \"ew-resize\";\n\t});\n\n\telement.addEventListener(\"mousemove\", function(e){\n\t\tif(mouseDrag){\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\n\t\t}\n\t});\n\n\telement.addEventListener(\"mouseup\", function(e){\n\t\tif(mouseDrag){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tmouseDrag = false;\n\t\t\tmouseDragWidth = false;\n\n\t\t\tupdateValue();\n\t\t}\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\tcase 13: //enter\n\t\t\t\tupdateValue();\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t}\n\t});\n\n\telement.addEventListener(\"blur\", function(){\n\t\tcancel();\n\t});\n\n\treturn bar;\n}","//checkbox\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar value = cell.getValue(),\n\tinput = document.createElement(\"input\"),\n\ttristate = editorParams.tristate,\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\tindetermState = false,\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\n\t\n\tinput.setAttribute(\"type\", \"checkbox\");\n\tinput.style.marginTop = \"5px\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = value;\n\t\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\n\t\tindetermState = true;\n\t\tinput.indeterminate = true;\n\t}\n\t\n\tif(this.table.browser != \"firefox\" && this.table.browser != \"safari\"){ //prevent blur issue on mac firefox\n\t\tonRendered(function(){\n\t\t\tif(cell.getType() === \"cell\"){\n\t\t\t\tinput.focus({preventScroll: true});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\n\t\n\tfunction setValue(blur){\n\t\tvar checkedValue = input.checked;\n\t\t\n\t\tif(trueValueSet && checkedValue){\n\t\t\tcheckedValue = editorParams.trueValue;\n\t\t}else if(falseValueSet && !checkedValue){\n\t\t\tcheckedValue = editorParams.falseValue;\n\t\t}\n\t\t\n\t\tif(tristate){\n\t\t\tif(!blur){\n\t\t\t\tif(input.checked && !indetermState){\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\tindetermState = true;\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\tindetermState = false;\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(indetermState){\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\treturn checkedValue;\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"change\", function(e){\n\t\tsuccess(setValue());\n\t});\n\n\tinput.addEventListener(\"blur\", function(e){\n\t\tsuccess(setValue(true));\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tif(e.keyCode == 13){\n\t\t\tsuccess(setValue());\n\t\t}\n\t\tif(e.keyCode == 27){\n\t\t\tcancel();\n\t\t}\n\t});\n\t\n\treturn input;\n}","import input from './editors/input.js';\nimport textarea from './editors/textarea.js';\nimport number from './editors/number.js';\nimport range from './editors/range.js';\nimport date from './editors/date.js';\nimport time from './editors/time.js';\nimport datetime from './editors/datetime.js';\nimport select from './editors/select.js';\nimport list from './editors/list.js';\nimport autocomplete from './editors/autocomplete.js';\nimport star from './editors/star.js';\nimport progress from './editors/progress.js';\nimport tickCross from './editors/tickCross.js';\n\nexport default {\n\tinput:input,\n\ttextarea:textarea,\n\tnumber:number,\n\trange:range,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tselect:select,\n\tlist:list,\n\tautocomplete:autocomplete,\n\tstar:star,\n\tprogress:progress,\n\ttickCross:tickCross,\n};","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultEditors from './defaults/editors.js';\n\nclass Edit extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t\tthis.editedCells = [];\n\t\t\n\t\tthis.editors = Edit.editors;\n\t\t\n\t\tthis.registerColumnOption(\"editable\");\n\t\tthis.registerColumnOption(\"editor\");\n\t\tthis.registerColumnOption(\"editorParams\");\n\t\t\n\t\tthis.registerColumnOption(\"cellEditing\");\n\t\tthis.registerColumnOption(\"cellEdited\");\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\n\t\t\n\t\tthis.registerTableOption(\"editTriggerEvent\", \"focus\");\n\t\t\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellIsEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.updateCellClass.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-layout\", this.rowEditableCheck.bind(this));\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\n\t\tthis.subscribe(\"clipboard-paste\", this.pasteBlocker.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\n\t\t\n\t\t\n\t\t// this.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\n\t\t// this.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Paste Negation //////////\n\t///////////////////////////////////\n\t\n\tpasteBlocker(e){\n\t\tif(this.currentCell){\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Keybinding Functions ///////\n\t///////////////////////////////////\n\t\n\tkeybindingNavigateNext(e){\n\t\tvar cell = this.currentCell,\n\t\tnewRow = this.options(\"tabEndNewRow\");\n\n\t\tif(cell){\n\t\t\tif(!this.navigateNext(cell, e)){\n\t\t\t\tif(newRow){\n\t\t\t\t\tcell.getElement().firstChild.blur();\n\t\t\t\t\t\n\t\t\t\t\tif(!this.invalidEdit){\n\t\t\t\t\t\t\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\t\t\t\t\t\t\n\t\t\t\t\t\tnewRow.then(() => {\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tcell.getComponent().navigateNext();\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\t\n\t///////////////////////////////////\n\t///////// Cell Functions //////////\n\t///////////////////////////////////\n\t\n\tcellIsEdited(cell){\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\n\t}\n\t\n\tcellCancelEdit(cell){\n\t\tif(cell === this.currentCell){\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\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tupdateCellClass(cell){\n\t\tif(this.allowEdit(cell)) {\n\t\t\tcell.getElement().classList.add(\"tabulator-editable\");\n\t\t}\n\t\telse {\n\t\t\tcell.getElement().classList.remove(\"tabulator-editable\");\n\t\t}\n\t}\n\t\n\tclearCellEdited(cells){\n\t\tif(!cells){\n\t\t\tcells = this.table.modules.edit.getEditedCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n\t\n\tnavigatePrev(cell = this.currentCell, e){\n\t\tvar nextCell, prevRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateLeft();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(prevRow){\n\t\t\t\t\tnextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateNext(cell = this.currentCell, e){\n\t\tvar nextCell, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateRight();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(nextRow){\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateLeft(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateRight(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateUp(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateDown(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tfindNextEditableCell(row, index){\n\t\tvar nextCell = false;\n\t\t\n\t\tif(index < row.cells.length-1){\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tnextCell = cell;\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\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindPrevEditableCell(row, index){\n\t\tvar prevCell = false;\n\t\t\n\t\tif(index > 0){\n\t\t\tfor(var i = index-1; i >= 0; i--){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tprevCell = cell;\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\t\n\t\treturn prevCell;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.editor !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\tcolumnDeleteCheck(column){\n\t\tif(this.currentCell && this.currentCell.column === column){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowDeleteCheck(row){\n\t\tif(this.currentCell && this.currentCell.row === row){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowEditableCheck(row){\n\t\trow.getCells().forEach((cell) => {\n\t\t\tif(cell.column.modules.edit && typeof cell.column.modules.edit.check === \"function\"){\n\t\t\t\tthis.updateCellClass(cell);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//initialize column editor\n\tinitializeColumn(column){\n\t\tvar config = {\n\t\t\teditor:false,\n\t\t\tblocked:false,\n\t\t\tcheck:column.definition.editable,\n\t\t\tparams:column.definition.editorParams || {}\n\t\t};\n\t\t\n\t\t//set column editor\n\t\tswitch(typeof column.definition.editor){\n\t\t\tcase \"string\":\n\t\t\t\tif(this.editors[column.definition.editor]){\n\t\t\t\t\tconfig.editor = this.editors[column.definition.editor];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"boolean\":\n\t\t\t\tif(column.definition.editor === true){\n\t\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\n\t\t\t\t\t\tif(this.editors[column.definition.formatter]){\n\t\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(config.editor){\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t}\n\t\n\tgetCurrentCell(){\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t}\n\t\n\tclearEditor(cancel){\n\t\tvar cell = this.currentCell,\n\t\tcellEl;\n\t\t\n\t\tthis.invalidEdit = false;\n\t\t\n\t\tif(cell){\n\t\t\tthis.currentCell = false;\n\t\t\t\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\n\t\t\t\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\n\t\t\t\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\tcell.table.element.classList.remove(\"tabulator-editing\");\n\t\t}\n\t}\n\t\n\tcancelEdit(){\n\t\tif(this.currentCell){\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\t\t\t\n\t\t\tthis.clearEditor(true);\n\t\t\tcell.setValueActual(cell.getValue());\n\t\t\tcell.cellRendered();\n\t\t\t\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\n\t\t\t\tcell.row.normalizeHeight(true);\n\t\t\t}\n\t\t\t\n\t\t\tif(cell.column.definition.cellEditCancelled){\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\n\t\t}\n\t}\n\t\n\t//return a formatted value for a cell\n\tbindEditor(cell){\n\t\tif(cell.column.modules.edit){\n\t\t\tvar self = this,\n\t\t\telement = cell.getElement(true);\n\t\t\t\n\t\t\tthis.updateCellClass(cell);\n\t\t\telement.setAttribute(\"tabindex\", 0);\n\t\t\t\n\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif (e.button === 2) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}else{\n\t\t\t\t\tself.mouseClick = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(this.options(\"editTriggerEvent\") === \"dblclick\"){\n\t\t\t\telement.addEventListener(\"dblclick\", function(e){\n\t\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\tif(this.options(\"editTriggerEvent\") === \"focus\" || this.options(\"editTriggerEvent\") === \"click\"){\n\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif(this.options(\"editTriggerEvent\") === \"focus\"){\n\t\t\t\telement.addEventListener(\"focus\", function(e){\n\t\t\t\t\tif(!self.recursionBlock){\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfocusCellNoEvent(cell, block){\n\t\tthis.recursionBlock = true;\n\t\t\n\t\tif(!(block && this.table.browser === \"ie\")){\n\t\t\tcell.getElement().focus({preventScroll: true});\n\t\t}\n\t\t\n\t\tthis.recursionBlock = false;\n\t}\n\t\n\teditCell(cell, forceEdit){\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t}\n\t\n\tfocusScrollAdjust(cell){\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t\trowEl = cell.row.getElement();\n\t\t\t\n\t\t\tif(rowEl.offsetTop < topEdge){\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\n\t\t\t}else{\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0);\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t}\n\t\t\t\n\t\t\tif(cellEl.offsetLeft < leftEdge){\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\n\t\t\t}else{\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tallowEdit(cell) {\n\t\tvar check = cell.column.modules.edit ? true : false;\n\t\t\n\t\tif(cell.column.modules.edit){\n\t\t\tswitch(typeof cell.column.modules.edit.check){\n\t\t\t\tcase \"function\":\n\t\t\t\t\tif(cell.row.initialized){\n\t\t\t\t\t\tcheck = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcheck = !!cell.row.data[cell.column.modules.edit.check];\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tcheck = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn check;\n\t}\n\t\n\tedit(cell, e, forceEdit){\n\t\tvar self = this,\n\t\tallowEdit = true,\n\t\trendered = function(){},\n\t\telement = cell.getElement(),\n\t\teditFinished = false,\n\t\tcellEditor, component, params;\n\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\t\t\n\t\tif(this.currentCell){\n\t\t\tif(!this.invalidEdit && this.currentCell !== cell){\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t//handle successful value change\n\t\tfunction success(value){\n\t\t\tif(self.currentCell === cell && !editFinished){\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\n\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\n\n\t\t\t\t\teditFinished = true;\n\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\t\n\t\t\t\t\tif(!cell.modules.edit){\n\t\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.modules.edit.edited = true;\n\t\t\t\t\t\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\n\t\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.setValue(value, true);\n\n\t\t\t\t\treturn valid === true;\n\t\t\t\t}else{\n\t\t\t\t\teditFinished = true;\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\t\trendered();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\teditFinished = false;\n\t\t\t\t\t}, 10);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//handle aborted edit\n\t\tfunction cancel(){\n\t\t\t// editFinished = true;\n\n\t\t\tif(self.currentCell === cell && !editFinished){\n\t\t\t\tself.cancelEdit();\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\trendered = callback;\n\t\t}\n\t\t\n\t\tif(!cell.column.modules.edit.blocked){\n\t\t\tif(e){\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\t\n\t\t\tallowEdit = this.allowEdit(cell);\n\t\t\t\n\t\t\tif(allowEdit || forceEdit){\n\t\t\t\tself.cancelEdit();\n\t\t\t\t\n\t\t\t\tself.currentCell = cell;\n\t\t\t\t\n\t\t\t\tthis.focusScrollAdjust(cell);\n\t\t\t\t\n\t\t\t\tcomponent = cell.getComponent();\n\t\t\t\t\n\t\t\t\tif(this.mouseClick){\n\t\t\t\t\tthis.mouseClick = false;\n\t\t\t\t\t\n\t\t\t\t\tif(cell.column.definition.cellClick){\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(cell.column.definition.cellEditing){\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\n\t\t\t\t\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\t\t\t\t\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\t\t\t\t\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif(this.currentCell && cellEditor !== false){\n\t\t\t\t\tif(cellEditor instanceof Node){\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.table.element.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\t\t\t\telement.appendChild(cellEditor);\n\t\t\t\t\t\t\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\t\t\t\t\t\t\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\n\t\t\t\t\t\t\t\te.stopPropagation();\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\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\tthis.blur(element);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.blur(element);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\tthis.blur(element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.mouseClick = false;\n\t\t\tthis.blur(element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tblur(element){\n\t\tif(!this.confirm(\"edit-blur\", [element]) ){\n\t\t\telement.blur();\n\t\t}\n\t}\n\t\n\tgetEditedCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.editedCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearEdited(cell){\n\t\tvar editIndex;\n\t\t\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\n\t\t\tcell.modules.edit.edited = false;\n\t\t\t\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\n\t\t}\n\t\t\n\t\teditIndex = this.editedCells.indexOf(cell);\n\t\t\n\t\tif(editIndex > -1){\n\t\t\tthis.editedCells.splice(editIndex, 1);\n\t\t}\n\t}\n}\n\nEdit.moduleName = \"edit\";\n\n//load defaults\nEdit.editors = defaultEditors;\n\n\nexport default Edit;\n","class ExportRow{\n\tconstructor(type, columns, component, indent){\n\t\tthis.type = type;\n\t\tthis.columns = columns;\n\t\tthis.component = component || false;\n\t\tthis.indent = indent || 0;\n\t}\n}\n\nexport default ExportRow;","class ExportColumn{\n\tconstructor(value, component, width, height, depth){\n\t\tthis.value = value;\n\t\tthis.component = component || false;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\t}\n}\n\nexport default ExportColumn;","import Module from '../../core/Module.js';\n\nimport ExportRow from './ExportRow.js';\nimport ExportColumn from './ExportColumn.js';\n\nclass Export extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t\t\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html output config\n\t\t\n\t\tthis.registerColumnOption(\"htmlOutput\");\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tgenerateExportList(config, style, range, colVisProp){\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\n\t\tvar headers, body;\n\t\t\n\t\tif (range === 'range') {\n\t\t\tvar columns = this.table.modules.selectRange.selectedColumns();\n\t\t\theaders = this.config.columnHeaders !== false\n\t\t\t\t? this.headersToExportRows(this.generateColumnGroupHeaders(columns))\n\t\t\t\t: [];\n\t\t\tbody = this.bodyToExportRows(this.rowLookup(range), this.table.modules.selectRange.selectedColumns(true));\n\t\t} else {\n\t\t\theaders = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\t\t\tbody = this.bodyToExportRows(this.rowLookup(range));\n\t\t}\n\n\t\treturn headers.concat(body);\n\t}\n\t\n\tgenerateTable(config, style, range, colVisProp){\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\n\t\t\n\t\treturn this.generateTableElement(list);\n\t}\n\t\n\trowLookup(range){\n\t\tvar rows = [];\n\t\t\n\t\tif(typeof range == \"function\"){\n\t\t\trange.call(this.table).forEach((row) =>{\n\t\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tswitch(range){\n\t\t\t\tcase true:\n\t\t\t\tcase \"visible\":\n\t\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"all\":\n\t\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"selected\":\n\t\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"range\":\n\t\t\t\t\trows = this.table.modules.selectRange.selectedRows();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"active\":\n\t\t\t\tdefault:\n\t\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Object.assign([], rows);\n\t}\n\t\n\tgenerateColumnGroupHeaders(columns){\n\t\tvar output = [];\n\t\t\n\t\tif (!columns) {\n\t\t\tcolumns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\t\t}\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\tvar colData = this.processColumnGroup(column);\n\t\t\t\n\t\t\tif(colData){\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\t\n\tprocessColumnGroup(column){\n\t\tvar subGroups = column.columns,\n\t\tmaxDepth = 0,\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\t\t\n\t\tvar groupData = {\n\t\t\ttitle:title,\n\t\t\tcolumn:column,\n\t\t\tdepth:1,\n\t\t};\n\t\t\n\t\tif(subGroups.length){\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\t\t\t\n\t\t\tsubGroups.forEach((subGroup) => {\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\n\t\t\t\t\n\t\t\t\tif(subGroupData){\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t\t\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tgroupData.depth += maxDepth;\n\t\t\t\n\t\t\tif(!groupData.width){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.columnVisCheck(column)){\n\t\t\t\tgroupData.width = 1;\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groupData;\n\t}\n\t\n\tcolumnVisCheck(column){\n\t\tvar visProp = column.definition[this.colVisProp];\n\t\t\n\t\tif(typeof visProp === \"function\"){\n\t\t\tvisProp = visProp.call(this.table, column.getComponent());\n\t\t}\n\t\t\n\t\treturn visProp !== false && (column.visible || (!column.visible && visProp));\n\t}\n\t\n\theadersToExportRows(columns){\n\t\tvar headers = [],\n\t\theaderDepth = 0,\n\t\texportRows = [];\n\t\t\n\t\tfunction parseColumnGroup(column, level){\n\t\t\t\n\t\t\tvar depth = headerDepth - level;\n\t\t\t\n\t\t\tif(typeof headers[level] === \"undefined\"){\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\n\t\t\t\n\t\t\theaders[level].push(column);\n\t\t\t\n\t\t\tif(column.height > 1){\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\n\t\t\t\t\t\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\n\t\t\t\t\t\theaders[level + i] = [];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\theaders[level + i].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.width > 1){\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\n\t\t\t\t\theaders[level].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.subGroups){\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\t//calculate maximum header depth\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.depth > headerDepth){\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\t\t\n\t\tcolumns.forEach(function(column){\n\t\t\tparseColumnGroup(column,0);\n\t\t});\n\t\t\n\t\theaders.forEach((header) => {\n\t\t\tvar columns = [];\n\t\t\t\n\t\t\theader.forEach((col) => {\n\t\t\t\tif(col){\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t\t}else{\n\t\t\t\t\tcolumns.push(null);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tbodyToExportRows(rows, columns = []){\n\t\tvar exportRows = [];\n\t\t\n\t\tif (columns.length === 0) {\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif (this.columnVisCheck(column)) {\n\t\t\t\t\tcolumns.push(column.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\n\t\trows = rows.filter((row) => {\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn this.config.rowGroups !== false;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn this.config.columnCalcs !== false;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\trows.forEach((row, i) => {\n\t\t\tvar rowData = row.getData(this.colVisProp);\n\t\t\tvar exportCols = [];\n\t\t\tvar indent = 0;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\tindent = row.level;\n\t\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\" :\n\t\t\t\tcase \"row\" :\n\t\t\t\t\tcolumns.forEach((col) => {\n\t\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tgenerateTableElement(list){\n\t\tvar table = document.createElement(\"table\"),\n\t\theaderEl = document.createElement(\"thead\"),\n\t\tbodyEl = document.createElement(\"tbody\"),\n\t\tstyles = this.lookupTableStyles(),\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t\tsetup = {};\n\t\t\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\t\t\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t\t}\n\t\t\n\t\t//assign group header formatter\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\t\t\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\n\t\t\tsetup.groupHeader = [setup.groupHeader];\n\t\t}\n\t\t\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\t\n\t\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\t\t\n\t\t\n\t\tif(list.length > 1000){\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\t\t\n\t\tlist.forEach((row, i) => {\n\t\t\tlet rowEl;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"header\":\n\t\t\t\t\theaderEl.appendChild(this.generateHeaderElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbodyEl.appendChild(this.generateGroupElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbodyEl.appendChild(this.generateCalcElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\trowEl = this.generateRowElement(row, setup, styles);\n\t\t\t\t\n\t\t\t\t\tthis.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\t\tbodyEl.appendChild(rowEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(headerEl.innerHTML){\n\t\t\ttable.appendChild(headerEl);\n\t\t}\n\t\t\n\t\ttable.appendChild(bodyEl);\n\t\t\n\t\t\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\t\treturn table;\n\t}\n\t\n\tlookupTableStyles(){\n\t\tvar styles = {};\n\t\t\n\t\t//lookup row styles\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\t\t\t\n\t\t\tif(styles.firstRow){\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn styles;\n\t}\n\t\n\tgenerateHeaderElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trow.columns.forEach((column) => {\n\t\t\tif(column){\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\t\t\t\t\n\t\t\t\tcellEl.innerHTML = column.value;\n\t\t\t\t\n\t\t\t\tif(this.cloneTableStyle){\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.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\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\n\t\t\t\tif(column.component._column.visible){\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t\t}else{\n\t\t\t\t\tif(column.component._column.definition.width){\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.component._column.parent){\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateGroupElement(row, setup, styles){\n\t\t\n\t\tvar rowEl = document.createElement(\"tr\"),\n\t\tcellEl = document.createElement(\"td\"),\n\t\tgroup = row.columns[0];\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}else{\n\t\t\tif(setup.groupHeader !== false){\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t\t\n\t\tcellEl.colSpan = group.width;\n\t\tcellEl.innerHTML = group.value;\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\t\t\n\t\tif(group.component.isVisible()){\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\n\t\trowEl.appendChild(cellEl);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateCalcElement(row, setup, styles){\n\t\tvar rowEl = this.generateRowElement(row, setup, styles);\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateRowElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\trow.columns.forEach((col, i) => {\n\t\t\tif(col){\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\tcolumn = col.component._column,\n\t\t\t\ttable = this.table,\n\t\t\t\tindex = table.columnManager.findColumnIndex(column),\n\t\t\t\tvalue = col.value,\n\t\t\t\tcellStyle;\n\t\t\t\t\n\t\t\t\tvar cellWrapper = {\n\t\t\t\t\tmodules:{},\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\treturn row.component.getData();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn row.component;\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:function(){\n\t\t\t\t\t\treturn table;\n\t\t\t\t\t},\n\t\t\t\t\tgetComponent:function(){\n\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t},\n\t\t\t\t\tcolumn:column,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\n\t\t\t\t}else{\n\t\t\t\t\tswitch(typeof value){\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = value !== null ? JSON.stringify(value) : \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\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\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(value instanceof Node){\n\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t}else{\n\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;\n\t\t\t\t\n\t\t\t\tif(cellStyle){\n\t\t\t\t\tthis.mapElementStyles(cellStyle, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\n\t\t\t\t\tif(column.definition.align){\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(setup.rowFormatter && row.type === \"row\" && this.config.formatCells !== false){\n\t\t\tlet formatComponent = Object.assign(row.component);\n\n\t\t\tformatComponent.getElement = function(){return rowEl;};\n\n\t\t\tsetup.rowFormatter(row.component);\n\t\t}\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateHTMLTable(list){\n\t\tvar holder = document.createElement(\"div\");\n\t\t\n\t\tholder.appendChild(this.generateTableElement(list));\n\t\t\n\t\treturn holder.innerHTML;\n\t}\n\t\n\tgetHtml(visible, style, config, colVisProp){\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\t\t\n\t\treturn this.generateHTMLTable(list);\n\t}\n\t\n\tmapElementStyles(from, to, props){\n\t\tif(this.cloneTableStyle && from && to){\n\t\t\t\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\" : \"backgroundColor\",\n\t\t\t\t\"color\" : \"fontColor\",\n\t\t\t\t\"width\" : \"width\",\n\t\t\t\t\"font-weight\" : \"fontWeight\",\n\t\t\t\t\"font-family\" : \"fontFamily\",\n\t\t\t\t\"font-size\" : \"fontSize\",\n\t\t\t\t\"text-align\" : \"textAlign\",\n\t\t\t\t\"border-top\" : \"borderTop\",\n\t\t\t\t\"border-left\" : \"borderLeft\",\n\t\t\t\t\"border-right\" : \"borderRight\",\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\n\t\t\t\t\"padding-top\" : \"paddingTop\",\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\n\t\t\t\t\"padding-right\" : \"paddingRight\",\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\n\t\t\t};\n\t\t\t\n\t\t\tif(window.getComputedStyle){\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\t\t\t\t\n\t\t\t\tprops.forEach(function(prop){\n\t\t\t\t\tif(!to.style[lookup[prop]]){\n\t\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nExport.moduleName = \"export\";\n\nexport default Export;\n","export default {\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(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(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}\n\t\t\telse{\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(filterVal, rowVal, rowData, filterParams){\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\tmatches = [];\n\n\t\tkeywords.forEach((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(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}\n\t\t\telse{\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(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}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\":function(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};","import Module from '../../core/Module.js';\n\nimport defaultFilters from './defaults/filters.js';\n\nclass Filter extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t\tthis.tableInitialized = false;\n\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\n\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\n\t\tthis.registerTableOption(\"placeholderHeaderFilter\", false); //placeholder when header filter is empty\n\n\t\tthis.registerColumnOption(\"headerFilter\");\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\n\t\tthis.registerColumnOption(\"headerFilterParams\");\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\n\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\n\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\n\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.subscribe(\"placeholder\", this.generatePlaceholder.bind(this));\n\n\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\n\t\t}\n\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialFilter){\n\t\t\tthis.setFilter(this.table.options.initialFilter);\n\t\t}\n\n\t\tif(this.table.options.initialHeaderFilter){\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\n\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.tableInitialized = true;\n\t}\n\n\tremoteFilterParams(data, config, silent, params){\n\t\tparams.filter = this.getFilters(true, true);\n\t\treturn params;\n\t}\n\n\tgeneratePlaceholder(text){\n\t\tif(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){\n\t\t\treturn this.table.options.placeholderHeaderFilter;\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t//set standard filters\n\tuserSetFilter(field, type, value, params){\n\t\tthis.setFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\t//set standard filters\n\tuserRefreshFilter(){\n\t\tthis.refreshFilter();\n\t}\n\n\t//add filter to array\n\tuserAddFilter(field, type, value, params){\n\t\tthis.addFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\tuserSetHeaderFilterFocus(field){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.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\tuserGetHeaderFilterValue(field) {\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\treturn this.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\tuserSetHeaderFilterValue(field, value){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.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\t//remove filter from array\n\tuserRemoveFilter(field, type, value){\n\t\tthis.removeFilter(field, type, value);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear filters\n\tuserClearFilter(all){\n\t\tthis.clearFilter(all);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear header filters\n\tuserClearHeaderFilter(){\n\t\tthis.clearHeaderFilter();\n\t\tthis.refreshFilter();\n\t}\n\n\n\t//search for specific row components\n\tsearchRows(field, type, value){\n\t\treturn this.search(\"rows\", field, type, value);\n\t}\n\n\t//search for specific data\n\tsearchData(field, type, value){\n\t\treturn this.search(\"data\", field, type, value);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumnHeaderFilter(column){\n\t\tvar def = column.definition;\n\n\t\tif(def.headerFilter){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\n\t//initialize column header filter\n\tinitializeColumn(column, value){\n\t\tvar self = this,\n\t\tfield = column.getField();\n\n\t\t//handle successfully value change\n\t\tfunction success(value){\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\ttype = \"\",\n\t\t\tfilterChangeCheck = \"\",\n\t\t\tfilterFunc;\n\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\n\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\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\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}else{\n\t\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\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function(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 column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!filterFunc){\n\t\t\t\t\t\tswitch(filterType){\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\n\t\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\t}else{\n\t\t\t\t\t\t\t\t\t\treturn false;\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\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type};\n\t\t\t\t}else{\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\t\tself.trackChanges();\n\t\t\t\t\tself.refreshFilter();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess:success,\n\t\t\tattrType:false,\n\t\t\ttagType:false,\n\t\t\temptyFunc:false,\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t}\n\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\n\t\tvar self = this,\n\t\tsuccess = column.modules.filter.success,\n\t\tfield = column.getField(),\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;\n\n\t\tcolumn.modules.filter.value = initialValue;\n\n\t\t//handle aborted edit\n\t\tfunction cancel(){}\n\n\t\tfunction onRendered(callback){\n\t\t\tonRenderedCallback = callback;\n\t\t}\n\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t\t}\n\n\t\tif(field){\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\n\t\t\t\treturn !value && value !== 0;\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch(typeof column.definition.headerFilter){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"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\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== 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}else{\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(editor){\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:() => {\n\t\t\t\t\t\treturn \"header\";\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight:function(){\n\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\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);\n\n\t\t\t\tif(!editorElement){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(editorElement instanceof Node)){\n\t\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\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : (column.definition.headerFilterPlaceholder || self.langText(\"headerFilters|default\")));\n\t\t\t\t});\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\n\t\t\t\t\tvar left = this.table.columnManager.contentsElement.scrollLeft;\n\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft;\n\n\t\t\t\t\tif(left !== headerPos){\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function(e){\n\t\t\t\t\tif(typingTimer){\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function(){\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\n\t\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\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propagating click to column sorters etc\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",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}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tif(!reinitialize){\n\t\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t\t}\n\n\t\t\t\tif(onRenderedCallback){\n\t\t\t\t\tonRenderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t}\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\thideHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tshowHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//programmatically set focus of header filter\n\tsetHeaderFilterFocus(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically get value of header filter\n\tgetHeaderFilterValue(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\treturn column.modules.filter.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\t//programmatically set value of header filter\n\tsetHeaderFilterValue(column, value){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\treloadHeaderFilter(column){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshFilter(){\n\t\tif(this.tableInitialized){\n\t\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\t\tthis.reloadData(null, false, false);\n\t\t\t}else{\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the filters has changed since last use\n\ttrackChanges(){\n\t\tthis.changed = true;\n\t\tthis.dispatch(\"filter-changed\");\n\t}\n\n\t//check if the filters has changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//set standard filters\n\tsetFilter(field, type, value, params){\n\t\tthis.filterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tthis.addFilter(field);\n\t}\n\n\t//add filter to array\n\taddFilter(field, type, value, params){\n\t\tvar changed = false;\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tthis.filterList.push(filter);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\n\t\tif(changed){\n\t\t\tthis.trackChanges();\n\t\t}\n\t}\n\n\tfindFilter(filter){\n\t\tvar column;\n\n\t\tif(Array.isArray(filter)){\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif(typeof filter.field == \"function\"){\n\t\t\tfilterFunc = function(data){\n\t\t\t\treturn filter.field(data, filter.type || {});// pass params to custom filter function\n\t\t\t};\n\t\t}else{\n\n\t\t\tif(Filter.filters[filter.type]){\n\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}\n\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t}\n\n\tfindSubFilters(filters){\n\t\tvar output = [];\n\n\t\tfilters.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t}\n\n\t//get all filters\n\tgetFilters(all, ajax){\n\t\tvar output = [];\n\n\t\tif(all){\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif(ajax){\n\t\t\toutput.forEach(function(item){\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\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t}\n\n\t//filter to Object\n\tfiltersToArray(filterList, ajax){\n\t\tvar output = [];\n\n\t\tfilterList.forEach((filter) => {\n\t\t\tvar item;\n\n\t\t\tif(Array.isArray(filter)){\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\n\t\t\t}else{\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value};\n\n\t\t\t\tif(ajax){\n\t\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//get all filters\n\tgetHeaderFilters(){\n\t\tvar output = [];\n\n\t\tfor(var key in this.headerFilters){\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//remove filter from array\n\tremoveFilter(field, type, value){\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tvar index = -1;\n\n\t\t\tif(typeof filter.field == \"object\"){\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.filterList.splice(index, 1);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear filters\n\tclearFilter(all){\n\t\tthis.filterList = [];\n\n\t\tif(all){\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear header filters\n\tclearHeaderFilter(){\n\t\tthis.headerFilters = {};\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.headerFilterColumns.forEach((column) => {\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\n\t\t\t\tdelete column.modules.filter.value;\n\t\t\t}\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\t\tthis.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//search data and return matching rows\n\tsearch (searchType, field, type, value){\n\t\tvar activeRows = [],\n\t\tfilterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach((filter) => {\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\n\t\t});\n\n\t\treturn activeRows;\n\t}\n\n\t//filter row array\n\tfilter(rowList, filters){\n\t\tvar activeRows = [],\n\t\tactiveRowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\n\t\t}\n\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\n\n\t\t\trowList.forEach((row) => {\n\t\t\t\tif(this.filterRow(row)){\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}else{\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\n\n\t\t\tactiveRows.forEach((row) => {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t}\n\n\t//filter individual row\n\tfilterRow(row, filters){\n\t\tvar match = true,\n\t\tdata = row.getData();\n\n\t\tthis.filterList.forEach((filter) => {\n\t\t\tif(!this.filterRecurse(filter, data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\n\t\tfor(var field in this.headerFilters){\n\t\t\tif(!this.headerFilters[field].func(data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t}\n\n\tfilterRecurse(filter, data){\n\t\tvar match = false;\n\n\t\tif(Array.isArray(filter)){\n\t\t\tfilter.forEach((subFilter) => {\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t}\n}\n\nFilter.moduleName = \"filter\";\n\n//load defaults\nFilter.filters = defaultFilters;\n\nexport default Filter;","export default function(cell, formatterParams, onRendered){\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\treturn cell.getValue();\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\tvar floatVal = parseFloat(cell.getValue()),\n\tsign = \"\",\n\tnumber, integer, decimal, rgx, value;\n\n\tvar decimalSym = formatterParams.decimal || \".\";\n\tvar thousandSym = formatterParams.thousand || \",\";\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\n\tvar symbol = formatterParams.symbol || \"\";\n\tvar after = !!formatterParams.symbolAfter;\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\tif(isNaN(floatVal)){\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t}\n\n\tif(floatVal < 0){\n\t\tfloatVal = Math.abs(floatVal);\n\t\tsign = negativeSign;\n\t}\n\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\tnumber = String(number).split(\".\");\n\n\tinteger = number[0];\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\tif (formatterParams.thousand !== false) {\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\t}\n\n\tvalue = integer + decimal;\n\t\n\tif(sign === true){\n\t\tvalue = \"(\" + value + \")\";\n\t\treturn after ? value + symbol : symbol + value;\n\t}else{\n\t\treturn after ? sign + value + symbol : sign + symbol + value;\n\t}\n}","import Helpers from '../../../../core/tools/Helpers.js';\n\n\nexport default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\turlPrefix = formatterParams.urlPrefix || \"\",\n\tdownload = formatterParams.download,\n\tlabel = value,\n\tel = document.createElement(\"a\"),\n\tdata;\n\n\tfunction labelTraverse(path, data){\n\t\tvar item = path.shift(),\n\t\tvalue = data[item];\n\t\t\n\t\tif(path.length && typeof value === \"object\"){\n\t\t\treturn labelTraverse(path, value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tif(formatterParams.labelField){\n\t\tdata = cell.getData();\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\n\t}\n\n\tif(formatterParams.label){\n\t\tswitch(typeof formatterParams.label){\n\t\t\tcase \"string\":\n\t\t\t\tlabel = formatterParams.label;\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(label){\n\t\tif(formatterParams.urlField){\n\t\t\tdata = cell.getData();\n\n\t\t\tvalue = Helpers.retrieveNestedData(this.table.options.nestedFieldSeparator, formatterParams.urlField, data);\n\t\t}\n\n\t\tif(formatterParams.url){\n\t\t\tswitch(typeof formatterParams.url){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\tif(formatterParams.target){\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t}\n\n\t\tif(formatterParams.download){\n\n\t\t\tif(typeof download == \"function\"){\n\t\t\t\tdownload = download(cell);\n\t\t\t}else{\n\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t}\n\n\t\t\tel.setAttribute(\"download\", download);\n\t\t}\n\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\treturn el;\n\t}else{\n\t\treturn \" \";\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"img\"),\n\tsrc = cell.getValue();\n\n\tif(formatterParams.urlPrefix){\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t}\n\n\tif(formatterParams.urlSuffix){\n\t\tsrc = src + formatterParams.urlSuffix;\n\t}\n\n\tel.setAttribute(\"src\", src);\n\n\tswitch(typeof formatterParams.height){\n\t\tcase \"number\":\n\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.height = formatterParams.height;\n\t\t\tbreak;\n\t}\n\n\tswitch(typeof formatterParams.width){\n\t\tcase \"number\":\n\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.width = formatterParams.width;\n\t\t\tbreak;\n\t}\n\n\tel.addEventListener(\"load\", function(){\n\t\tcell.getRow().normalizeHeight();\n\t});\n\n\treturn el;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tempty = formatterParams.allowEmpty,\n\ttruthy = formatterParams.allowTruthy,\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\n\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\n\t\telement.setAttribute(\"aria-checked\", true);\n\t\treturn tick || \"\";\n\t}else{\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\treturn \"\";\n\t\t}else{\n\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\treturn cross || \"\";\n\t\t}\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif(newDatetime.isValid){\n\t\t\tif(formatterParams.timezone){\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\n\t\t\t}\n\n\t\t\treturn newDatetime.toFormat(outputFormat);\n\t\t}else{\n\t\t\tif(invalid === true || !value){\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}else{\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif (newDatetime.isValid){\n\t\t\tif(humanize){\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\n\t\t\t}else{\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[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}else{\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar value = cell.getValue();\n\n\tif (typeof formatterParams[value] === \"undefined\") {\n\t\tconsole.warn('Missing display value for ' + value);\n\t\treturn value;\n\t}\n\n\treturn formatterParams[value];\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\tstars = document.createElement(\"span\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\tstarActive = '',\n\tstarInactive = '';\n\n\t//style stars holder\n\tstars.style.verticalAlign = \"middle\";\n\n\t//style star\n\tstar.setAttribute(\"width\", \"14\");\n\tstar.setAttribute(\"height\", \"14\");\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\tfor(var i=1;i<= maxStars;i++){\n\t\tvar nextStar = star.cloneNode(true);\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\tstars.appendChild(nextStar);\n\t}\n\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\telement.setAttribute(\"aria-label\", value);\n\n\treturn stars;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\tel = document.createElement(\"span\"),\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\tcolor = \"#666666\",\n\tpercent, percentValue;\n\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\n\t\treturn;\n\t}\n\n\tel.classList.add(\"tabulator-traffic-light\");\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set color\n\tswitch(typeof colors){\n\t\tcase \"string\":\n\t\t\tcolor = colors;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = colors(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(colors)){\n\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = colors[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\tel.style.backgroundColor = color;\n\n\treturn el;\n}","import CellComponent from '../../../../core/cell/CellComponent.js';\n\nexport default function(cell, formatterParams = {}, onRendered){ //progress bar\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\telement = cell.getElement(),\n\tmax = formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams.min ? formatterParams.min : 0,\n\tlegendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\tpercent, percentValue, color, legend, legendColor;\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set bar color\n\tswitch(typeof formatterParams.color){\n\t\tcase \"string\":\n\t\t\tcolor = formatterParams.color;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = formatterParams.color(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.color)){\n\t\t\t\tlet unit = 100 / formatterParams.color.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tcolor = \"#2DC214\";\n\t}\n\n\t//generate legend\n\tswitch(typeof formatterParams.legend){\n\t\tcase \"string\":\n\t\t\tlegend = formatterParams.legend;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegend = formatterParams.legend(value);\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tlegend = value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegend = false;\n\t}\n\n\t//set legend color\n\tswitch(typeof formatterParams.legendColor){\n\t\tcase \"string\":\n\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.legendColor)){\n\t\t\t\tlet unit = 100 / formatterParams.legendColor.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegendColor = \"#000\";\n\t}\n\n\telement.style.minWidth = \"30px\";\n\telement.style.position = \"relative\";\n\n\telement.setAttribute(\"aria-label\", percentValue);\n\n\tvar barEl = document.createElement(\"div\");\n\tbarEl.style.display = \"inline-block\";\n\tbarEl.style.width = percentValue + \"%\";\n\tbarEl.style.backgroundColor = color;\n\tbarEl.style.height = \"100%\";\n\n\tbarEl.setAttribute('data-max', max);\n\tbarEl.setAttribute('data-min', min);\n\n\tvar barContainer = document.createElement(\"div\");\n\tbarContainer.style.position = \"relative\";\n\tbarContainer.style.width = \"100%\";\n\tbarContainer.style.height = \"100%\";\n\n\tif(legend){\n\t\tvar legendEl = document.createElement(\"div\");\n\t\tlegendEl.style.position = \"absolute\";\n\t\tlegendEl.style.top = 0;\n\t\tlegendEl.style.left = 0;\n\t\tlegendEl.style.textAlign = legendAlign;\n\t\tlegendEl.style.width = \"100%\";\n\t\tlegendEl.style.color = legendColor;\n\t\tlegendEl.innerHTML = legend;\n\t}\n\n\tonRendered(function(){\n\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\tif(!(cell instanceof CellComponent)){\n\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\tholderEl.style.position = \"absolute\";\n\t\t\tholderEl.style.top = \"4px\";\n\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\tholderEl.style.left = \"4px\";\n\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\telement.appendChild(holderEl);\n\n\t\t\telement = holderEl;\n\t\t}\n\n\t\telement.appendChild(barContainer);\n\t\tbarContainer.appendChild(barEl);\n\n\t\tif(legend){\n\t\t\tbarContainer.appendChild(legendEl);\n\t\t}\n\t});\n\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\tvar content = document.createElement(\"span\");\n\tvar row = cell.getRow();\n\tvar table = cell.getTable();\n\n\trow.watchPosition((position) => {\n\t\tif (formatterParams.relativeToPage) {\n\t\t\tposition += table.modules.page.getPageSize() * (table.modules.page.getPage() - 1);\n\t\t}\n\t\tcontent.innerText = position;\n\t});\n\t\n\treturn content;\n}\n","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\treturn \"
        \";\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"div\"),\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\n\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\n\tel.innerHTML = `\n \n \n\n\n\n \n`;\n\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\tfunction toggleList(isOpen){\n\t\tvar collapseEl = config.element;\n\n\t\tconfig.open = isOpen;\n\n\t\tif(collapseEl){\n\n\t\t\tif(config.open){\n\t\t\t\tel.classList.add(\"open\");\n\t\t\t\tcollapseEl.style.display = '';\n\t\t\t}else{\n\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tel.addEventListener(\"click\", function(e){\n\t\te.stopImmediatePropagation();\n\t\ttoggleList(!config.open);\n\t\tcell.getTable().rowManager.adjustTableSize();\n\t});\n\n\ttoggleList(config.open);\n\n\treturn el;\n}","import RowComponent from '../../../../core/row/RowComponent.js';\n\nexport default function(cell, formatterParams, onRendered){\n\tvar checkbox = document.createElement(\"input\");\n\tvar blocked = false;\n\n\tcheckbox.type = 'checkbox';\n\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\n\t\n\tif(this.table.modExists(\"selectRow\", true)){\n\n\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(typeof cell.getRow == 'function'){\n\t\t\tvar row = cell.getRow();\n\n\t\t\tif(row instanceof RowComponent){\n\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\t\tif(this.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\t\tif(!blocked){\n\t\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t}else{\n\t\t\t\tcheckbox = \"\";\n\t\t\t}\n\t\t}else {\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\n\t\t\t\t\tthis.table.deselectRow();\n\t\t\t\t}else {\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t}\n\t}\n\n\treturn checkbox;\n}","import plaintext from './formatters/plaintext.js';\nimport html from './formatters/html.js';\nimport textarea from './formatters/textarea.js';\nimport money from './formatters/money.js';\nimport link from './formatters/link.js';\nimport image from './formatters/image.js';\nimport tickCross from './formatters/tickCross.js';\nimport datetime from './formatters/datetime.js';\nimport datetimediff from './formatters/datetimediff.js';\nimport lookup from './formatters/lookup.js';\nimport star from './formatters/star.js';\nimport traffic from './formatters/traffic.js';\nimport progress from './formatters/progress.js';\nimport color from './formatters/color.js';\nimport buttonTick from './formatters/buttonTick.js';\nimport buttonCross from './formatters/buttonCross.js';\nimport rownum from './formatters/rownum.js';\nimport handle from './formatters/handle.js';\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\nimport rowSelection from './formatters/rowSelection.js';\n\nexport default {\n\tplaintext:plaintext,\n\thtml:html,\n\ttextarea:textarea,\n\tmoney:money,\n\tlink:link,\n\timage:image,\n\ttickCross:tickCross,\n\tdatetime:datetime,\n\tdatetimediff:datetimediff,\n\tlookup:lookup,\n\tstar:star,\n\ttraffic:traffic,\n\tprogress:progress,\n\tcolor:color,\n\tbuttonTick:buttonTick,\n\tbuttonCross:buttonCross,\n\trownum:rownum,\n\thandle:handle,\n\tresponsiveCollapse:responsiveCollapse,\n\trowSelection:rowSelection,\n};","import Module from '../../core/Module.js';\n\nimport defaultFormatters from './defaults/formatters.js';\n\nclass Format extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.registerColumnOption(\"formatter\");\n\t\tthis.registerColumnOption(\"formatterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"formatterPrint\");\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\n\t\tthis.registerColumnOption(\"formatterClipboard\");\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\n\t\tthis.registerColumnOption(\"titleFormatter\");\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\n\t}\n\t\n\t//initialize column formatter\n\tinitializeColumn(column){\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\t\t\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t\t}\n\t}\n\t\n\tlookupFormatter(column, type){\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\n\t\tformatter = column.definition[\"formatter\" + type];\n\t\t\n\t\t//set column formatter\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tconfig.formatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = formatter;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn config;\n\t}\n\t\n\tcellRendered(cell){\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\n\t\t\tcell.modules.format.renderedCallback();\n\t\t\tcell.modules.format.rendered = true;\n\t\t}\n\t}\n\t\n\t//return a formatted value for a column header\n\tformatHeader(column, title, el){\n\t\tvar formatter, params, onRendered, mockCell;\n\t\t\n\t\tif(column.definition.titleFormatter){\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\n\t\t\t\n\t\t\tonRendered = (callback) => {\n\t\t\t\tcolumn.titleFormatterRendered = callback;\n\t\t\t};\n\t\t\t\n\t\t\tmockCell = {\n\t\t\t\tgetValue:function(){\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tgetElement:function(){\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tgetType:function(){\n\t\t\t\t\treturn \"header\";\n\t\t\t\t},\n\t\t\t\tgetColumn:function(){\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetTable:() => {\n\t\t\t\t\treturn this.table;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\tparams = column.definition.titleFormatterParams || {};\n\t\t\t\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\t\t\t\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\n\t\t}else{\n\t\t\treturn title;\n\t\t}\n\t}\n\t\n\t\n\t//return a formatted value for a cell\n\tformatValue(cell){\n\t\tvar component = cell.getComponent(),\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\tif(!cell.modules.format){\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\t\t\t\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t}\n\t\t\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t}\n\t\n\tformatExportValue(cell, type){\n\t\tvar formatter = cell.column.modules.format[type],\n\t\tparams;\n\t\t\n\t\tif(formatter){\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(cell.getComponent()) : formatter.params;\n\t\t\t\n\t\t\tfunction onRendered(callback){\n\t\t\t\tif(!cell.modules.format){\n\t\t\t\t\tcell.modules.format = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\t\tcell.modules.format.rendered = false;\n\t\t\t}\n\t\t\t\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t\t\t\n\t\t}else{\n\t\t\treturn this.formatValue(cell);\n\t\t}\n\t}\n\t\n\tsanitizeHTML(value){\n\t\tif(value){\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\t\t\t\n\t\t\treturn String(value).replace(/[&<>\"'`=/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t}\n\t\n\temptyToSpace(value){\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n\t}\n\t\n\t//get formatter for cell\n\tgetFormatter(formatter){\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tformatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t//Custom formatter Function, do nothing\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn formatter;\n\t}\n}\n\nFormat.moduleName = \"format\";\n\n//load defaults\nFormat.formatters = defaultFormatters;\n\nexport default Format;","import Module from '../../core/Module.js';\n\nclass FrozenColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.blocked = true;\n\t\t\n\t\tthis.registerColumnOption(\"frozen\");\n\t}\n\t\n\t//reset initial state\n\treset(){\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.active = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\n\t\t\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-deleted\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-show\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"columns-loaded\", this.reinitializeColumns.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t}\n\t\n\tblockLayout(){\n\t\tthis.blocked = true;\n\t}\n\t\n\tunblockLayout(){\n\t\tthis.blocked = false;\n\t}\n\t\n\tlayoutCell(cell){\n\t\tthis.layoutElement(cell.element, cell.column);\n\t}\n\t\n\treinitializeColumns(){\n\t\tthis.reset();\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tthis.initializeColumn(column);\n\t\t});\n\n\t\tthis.layout();\n\t}\n\t\n\t//initialize specific column\n\tinitializeColumn(column){\n\t\tvar config = {margin:0, edge:false};\n\t\t\n\t\tif(!column.isGroup){\t\t\t\n\t\t\tif(this.frozenCheck(column)){\n\t\t\t\tconfig.position = this.initializationMode;\n\t\t\t\t\n\t\t\t\tif(this.initializationMode == \"left\"){\n\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t}else{\n\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.active = true;\n\t\t\t\t\n\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t}else{\n\t\t\t\tthis.initializationMode = \"right\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfrozenCheck(column){\n\t\tif(column.parent.isGroup && column.definition.frozen){\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t\t}\n\t\t\n\t\tif(column.parent.isGroup){\n\t\t\treturn this.frozenCheck(column.parent);\n\t\t}else{\n\t\t\treturn column.definition.frozen;\n\t\t}\n\t}\n\t\n\t//layout calculation rows\n\tlayoutCalcRows(){\n\t\tif(this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modExists(\"groupRows\")){\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tlayoutGroupCalcs(groups){\n\t\tgroups.forEach((group) => {\n\t\t\tif(group.calcs.top){\n\t\t\t\tthis.layoutRow(group.calcs.top);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.calcs.bottom){\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.groupList && group.groupList.length){\n\t\t\t\tthis.layoutGroupCalcs(group.groupList);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//calculate column positions and layout headers\n\tlayoutColumnPosition(allCells){\n\t\tvar leftParents = [];\n\t\t\n\t\tvar leftMargin = 0;\n\t\tvar rightMargin = 0;\n\t\t\n\t\tthis.leftColumns.forEach((column, i) => {\t\n\t\t\tcolumn.modules.frozen.marginValue = leftMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tleftMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.leftColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\n\t\t\t\tif(!leftParents.includes(parentEl)){\n\t\t\t\t\tthis.layoutElement(parentEl, column);\n\t\t\t\t\tleftParents.push(parentEl);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tparentEl.classList.toggle(\"tabulator-frozen-left\", column.modules.frozen.edge && column.modules.frozen.position === \"left\");\n\t\t\t\tparentEl.classList.toggle(\"tabulator-frozen-right\", column.modules.frozen.edge && column.modules.frozen.position === \"right\");\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column, i) => {\n\t\t\t\n\t\t\tcolumn.modules.frozen.marginValue = rightMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\trightMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.rightColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetColGroupParentElement(column){\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n\t}\n\t\n\t//layout columns appropriately\n\tlayout(){\t\n\t\tif(this.active && !this.blocked){\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition();\n\t\t\t\n\t\t\tthis.reinitializeRows();\n\t\t\t\n\t\t\tthis.layoutCalcRows();\n\t\t}\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.table.rowManager.getVisibleRows(true);\n\t\tvar otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\t\t\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t\t\n\t\tvisibleRows.forEach((row) =>{\n\t\t\tif(row.type === \"row\"){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutRow(row){\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\n\t\t}\n\t\t\n\t\tthis.leftColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutElement(element, column){\n\t\tvar position;\n\t\t\n\t\tif(column.modules.frozen && element){\n\t\t\telement.style.position = \"sticky\";\n\n\t\t\tif(this.table.rtl){\n\t\t\t\tposition = column.modules.frozen.position === \"left\" ? \"right\" : \"left\";\n\t\t\t}else{\n\t\t\t\tposition = column.modules.frozen.position;\n\t\t\t}\n\t\t\n\t\t\telement.style[position] = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\t\t\t\n\t\t\telement.classList.toggle(\"tabulator-frozen-left\", column.modules.frozen.edge && column.modules.frozen.position === \"left\");\n\t\t\telement.classList.toggle(\"tabulator-frozen-right\", column.modules.frozen.edge && column.modules.frozen.position === \"right\");\n\t\t}\n\t}\n\n\tadjustForScrollbar(width){\n\t\tif(this.rightColumns.length){\n\t\t\tthis.table.columnManager.getContentsElement().style.width = \"calc(100% - \" + width + \"px)\";\n\t\t}\n\t}\n\t\n\t_calcSpace(columns, index){\n\t\tvar width = 0;\n\t\t\n\t\tfor (let i = 0; i < index; i++){\n\t\t\tif(columns[i].visible){\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn width;\n\t}\n}\n\nFrozenColumns.moduleName = \"frozenColumns\";\n\nexport default FrozenColumns;","import Module from '../../core/Module.js';\n\nclass FrozenRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\n\n\t\t//register table options\n\t\tthis.registerTableOption(\"frozenRowsField\", \"id\"); //field to choose frozen rows by\n\t\tthis.registerTableOption(\"frozenRows\", false); //holder for frozen row identifiers\n\t}\n\n\tinitialize(){\n\t\tvar\tfragment = document.createDocumentFragment();\n\t\t\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\t\t\n\t\tfragment.appendChild(document.createElement(\"br\"));\n\t\tfragment.appendChild(this.topElement);\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);\n\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\n\n\t\tif(this.table.options.frozenRows){\n\t\t\tthis.subscribe(\"data-processed\", this.initializeRows.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t}\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\tinitializeRows(){\n\t\tthis.table.rowManager.getRows().forEach((row) => {\n\t\t\tthis.initializeRow(row);\n\t\t});\n\t}\n\n\tinitializeRow(row){\n\t\tvar frozenRows = this.table.options.frozenRows,\n\t\trowType = typeof frozenRows;\n\n\t\tif(rowType === \"number\"){\n\t\t\tif(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(rowType === \"function\"){\n\t\t\tif(frozenRows.call(this.table, row.getComponent())){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(Array.isArray(frozenRows)){\n\t\t\tif(frozenRows.includes(row.data[this.options(\"frozenRowsField\")])){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowFrozen(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\treturn index > -1;\n\t}\n\n\tisFrozen(){\n\t\treturn !!this.rows.length;\n\t}\n\n\tvisibleRows(viewable, rows){\n\t\tthis.rows.forEach((row) => {\n\t\t\trows.push(row);\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\t//filter frozen rows out of display data\n\tgetRows(rows){\n\t\tvar output = rows.slice(0);\n\n\t\tthis.rows.forEach(function(row){\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif(index > -1){\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tfreezeRow(row){\n\t\tif(!row.modules.frozen){\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.styleRows();\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t}\n\n\tunfreezeRow(row){\n\t\tif(row.modules.frozen){\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tthis.detachRow(row);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tif(this.rows.length){\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t}\n\n\tdetachRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t}\n\n\tstyleRows(row){\n\t\tthis.rows.forEach((row, i) => {\n\t\t\tthis.table.rowManager.styleRow(row, i);\n\t\t});\n\t}\n}\n\nFrozenRows.moduleName = \"frozenRows\";\n\nexport default FrozenRows;","//public group object\nclass GroupComponent {\n\tconstructor (group){\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"group\", target._group, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKey(){\n\t\treturn this._group.key;\n\t}\n\n\tgetField(){\n\t\treturn this._group.field;\n\t}\n\n\tgetElement(){\n\t\treturn this._group.element;\n\t}\n\n\tgetRows(){\n\t\treturn this._group.getRows(true);\n\t}\n\n\tgetSubGroups(){\n\t\treturn this._group.getSubGroups(true);\n\t}\n\n\tgetParentGroup(){\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t}\n\n\tisVisible(){\n\t\treturn this._group.visible;\n\t}\n\n\tshow(){\n\t\tthis._group.show();\n\t}\n\n\thide(){\n\t\tthis._group.hide();\n\t}\n\n\ttoggle(){\n\t\tthis._group.toggleVisibility();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible);\n\t}\n\n\t_getSelf(){\n\t\treturn this._group;\n\t}\n\n\tgetTable(){\n\t\treturn this._group.groupManager.table;\n\t}\n}\n\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\nimport GroupComponent from './GroupComponent.js';\n\n//Group functions\nclass Group{\n\t\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.element = false;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\t\t\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\t\t\n\t\tthis.createValueGroups();\n\t}\n\t\n\twipe(elementsOnly){\n\t\tif(!elementsOnly){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\tgroup.wipe();\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tif(row.modules){\n\t\t\t\t\t\tdelete row.modules.group;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n\t\n\tcreateElements(){\n\t\tvar arrow = document.createElement(\"div\");\n\t\tarrow.classList.add(\"tabulator-arrow\");\n\t\t\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\t\tthis.arrowElement.appendChild(arrow);\n\t\t\n\t\t//setup movable rows\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t}\n\t\n\tcreateValueGroups(){\n\t\tvar level = this.level + 1;\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\n\t\t\t\tthis._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t}\n\t\n\taddBindings(){\n\t\tvar toggleElement;\n\t\t\n\t\tif(this.groupManager.table.options.groupToggleElement){\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\n\t\t\t\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\n\t\t\t\tif(this.groupManager.table.options.groupToggleElement === \"arrow\"){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\t//allow click event to propagate before toggling visibility\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.toggleVisibility();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\t\n\t_createGroup(groupID, level){\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\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\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\t_addRowToGroup(row){\n\t\t\n\t\tvar level = this.level + 1;\n\t\t\n\t\tif(this.hasSubGroups){\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\tgroupKey = level + \"_\" + groupID;\n\t\t\t\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\t\tif(this.groups[groupKey]){\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(!this.groups[groupKey]){\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_addRow(row){\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t}\n\t\n\tinsertRow(row, to, after){\n\t\tvar data = this.conformRowData({});\n\t\t\n\t\trow.updateData(data);\n\t\t\n\t\tvar toIndex = this.rows.indexOf(to);\n\t\t\n\t\tif(toIndex > -1){\n\t\t\tif(after){\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\n\t\t\t}else{\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t}else{\n\t\t\tif(after){\n\t\t\t\tthis.rows.push(row);\n\t\t\t}else{\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\trow.modules.group = this;\n\t\t\n\t\t// this.generateGroupHeaderContents();\n\t\t\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\t\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\t\n\tscrollHeader(left){\n\t\tif(this.arrowElement){\n\t\t\tthis.arrowElement.style.marginLeft = left;\n\t\t\t\n\t\t\tthis.groupList.forEach(function(child){\n\t\t\t\tchild.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tgetRowIndex(row){}\n\t\n\t//update row data to match grouping constraints\n\tconformRowData(data){\n\t\tif(this.field){\n\t\t\tdata[this.field] = this.key;\n\t\t}else{\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\t\t\n\t\tif(this.parent){\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\tremoveRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t\t\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.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}\t\t\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(el.parentNode){\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupManager.blockRedraw){\n\t\t\t\tthis.generateGroupHeaderContents();\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupList.length){\n\t\t\t\tif(this.parent){\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t}else{\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetHeadersAndRows(){\n\t\tvar output = [];\n\t\t\n\t\toutput.push(this);\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\t\n\t\tif(this.calcs.top){\n\t\t\tthis.calcs.top.detachElement();\n\t\t\tthis.calcs.top.deleteCells();\n\t\t}\n\t\t\n\t\tif(this.calcs.bottom){\n\t\t\tthis.calcs.bottom.detachElement();\n\t\t\tthis.calcs.bottom.deleteCells();\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\tif(this.visible){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toutput = output.concat(this.rows);\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\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\t\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetData(visible, transform){\n\t\tvar output = [];\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(!visible || (visible && this.visible)){\n\t\t\tthis.rows.forEach((row) => {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRowCount(){\n\t\tvar count = 0;\n\t\t\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t}else{\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t\n\ttoggleVisibility(){\n\t\tif(this.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\t\n\thide(){\n\t\tthis.visible = false;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\t\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\n\t}\n\t\n\tshow(){\n\t\tthis.visible = true;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tvar prev = this.generateElement();\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((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\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\n\t}\n\t\n\t_visSet(){\n\t\tvar data = [];\n\t\t\n\t\tif(typeof this.visible == \"function\"){\n\t\t\t\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\t\t\t\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\t\n\t\t\t\tif(result){\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tif(this.rows.find(function(item){\n\t\t\t\treturn item === row;\n\t\t\t})){\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetSubGroups(component){\n\t\tvar output = [];\n\t\t\n\t\tthis.groupList.forEach(function(child){\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRows(component, includeChildren){\n\t\tvar output = [];\n\t\t\n\t\tif(includeChildren && this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getRows(component, includeChildren));\n\t\t\t});\n\t\t}else{\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\toutput.push(component ? row.getComponent() : row);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgenerateGroupHeaderContents(){\n\t\tvar data = [];\n\t\t\n\t\tvar rows = this.getRows(false, true);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\t\t\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\n\t\tif(typeof this.elementContents === \"string\"){\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t}else{\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\t\t\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t}\n\t\n\tgetPath(path = []) {\n\t\tpath.unshift(this.key);\n\t\tif(this.parent) {\n\t\t\tthis.parent.getPath(path);\n\t\t}\n\t\treturn path;\n\t}\n\t\n\t////////////// Standard Row Functions //////////////\n\t\n\tgetElement(){\n\t\treturn this.elementContents ? this.element : this.generateElement();\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.addBindings = false;\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(this.visible){\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t}else{\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\t\t\n\t\tthis.generateGroupHeaderContents();\n\t\t\n\t\t// this.addBindings();\n\t\t\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(){\n\t\tthis.setHeight(this.element.clientHeight);\n\t}\n\t\n\tinitialize(force){\n\t\tif(!this.initialized || force){\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\treinitialize(){\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\t\t\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.initialize(true);\n\t\t}\n\t}\n\t\n\tsetHeight(height){\n\t\tif(this.height != height){\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\tgetGroup(){\n\t\treturn this;\n\t}\n\t\n\treinitializeHeight(){}\n\t\n\tcalcHeight(){}\n\t\n\tsetCellHeight(){}\n\t\n\tclearCellHeight(){}\n\t\n\tdeinitializeHeight(){}\n\n\trendered(){}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new GroupComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n\nexport default Group;","import Module from '../../core/Module.js';\n\nimport Group from './Group.js';\n\nclass GroupRows extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\t\n\t\tthis.displayHandler = this.getRows.bind(this);\n\n\t\tthis.blockRedraw = false;\n\t\t\n\t\t//register table options\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\n\t\tthis.registerTableOption(\"groupValues\", false);\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\n\t\t\n\t\t//register table functions\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\n\t}\n\t\n\t//initialize group configuration\n\tinitialize(){\n\t\tthis.subscribe(\"table-destroy\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wipe\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wiped\", this._restore_redrawing.bind(this));\n\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t_blockRedrawing(){\n\t\tthis.blockRedraw = true;\n\t}\n\n\t_restore_redrawing(){\n\t\tthis.blockRedraw = false;\n\t}\n\n\tconfigureGroupSetup(){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar groupBy = this.table.options.groupBy,\n\t\t\tstartOpen = this.table.options.groupStartOpen,\n\t\t\tgroupHeader = this.table.options.groupHeader;\n\t\t\t\n\t\t\tthis.allowedValues = this.table.options.groupValues;\n\t\t\t\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\t\t\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\n\t\t\t\t};\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupIDLookups = [];\n\t\t\t\n\t\t\tif(groupBy){\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\t\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\t\t\t\t\t\n\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\tif(col.definition.topCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(col.definition.bottomCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\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\t\n\t\t\tif(!Array.isArray(groupBy)){\n\t\t\t\tgroupBy = [groupBy];\n\t\t\t}\n\t\t\t\n\t\t\tgroupBy.forEach((group, i) => {\n\t\t\t\tvar lookupFunc, column;\n\t\t\t\t\n\t\t\t\tif(typeof group == \"function\"){\n\t\t\t\t\tlookupFunc = group;\n\t\t\t\t}else{\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\n\t\t\t\t\t\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t\t};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groupIDLookups.push({\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\t\tfunc:lookupFunc,\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tif(startOpen){\n\t\t\t\tif(!Array.isArray(startOpen)){\n\t\t\t\t\tstartOpen = [startOpen];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstartOpen.forEach((level) => {\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.startOpen = startOpen;\n\t\t\t}\n\t\t\t\n\t\t\tif(groupHeader){\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t\t}\n\t\t}else{\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\trowSample(rows, prevValue){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar group = this.getGroups(false)[0];\n\t\t\t\n\t\t\tprevValue.push(group.getRows(false)[0]);\n\t\t}\n\t\t\n\t\treturn prevValue;\n\t}\n\t\n\tvirtualRenderFill(){\n\t\tvar el = this.table.rowManager.tableElement;\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\trows = rows.filter((row) => {\n\t\t\t\treturn row.type !== \"group\";\n\t\t\t});\n\t\t\t\n\t\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\n\t\t}else{\n\t\t\treturn rows;\n\t\t}\n\t}\n\t\n\trowAddingIndex(row, index, top){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.assignRowToGroup(row);\n\t\t\t\n\t\t\tvar groupRows = row.modules.group.rows;\n\t\t\t\n\t\t\tif(groupRows.length > 1){\n\t\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\n\t\t\t\t\tif(top){\n\t\t\t\t\t\tif(groupRows[0] !== row){\n\t\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn index;\n\t\t}\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"group-changed\");\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tsetGroupBy(groups){\n\t\tthis.table.options.groupBy = groups;\n\t\t\n\t\tif(!this.initialized){\n\t\t\tthis.initialize();\n\t\t}\n\t\t\n\t\tthis.configureGroupSetup();\n\n\t\tif(!groups && this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs === true){\n\t\t\tthis.table.modules.columnCalcs.reinitializeCalcs();\n\t\t}\n\t\t\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupValues(groupValues){\n\t\tthis.table.options.groupValues = groupValues;\n\t\tthis.configureGroupSetup();\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupStartOpen(values){\n\t\tthis.table.options.groupStartOpen = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tsetGroupHeader(values){\n\t\tthis.table.options.groupHeader = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tuserGetGroups(values){\n\t\treturn this.getGroups(true);\n\t}\n\t\n\t// get grouped table data in the same format as getData()\n\tuserGetGroupedData(){\n\t\treturn this.table.options.groupBy ? this.getGroupedData() : this.getData();\n\t}\n\t\n\t\n\t///////////////////////////////////////\n\t///////// Component Functions /////////\n\t///////////////////////////////////////\n\t\n\trowGetGroup(row){\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\trowMoving(from, to, after){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(!after && to instanceof Group){\n\t\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t\t}\n\t\t\t\n\t\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\n\t\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\n\t\t\t\n\t\t\tif(toGroup === fromGroup){\n\t\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t}else{\n\t\t\t\tif(fromGroup){\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\trowDeleting(row){\n\t\t//remove from group\n\t\tif(this.table.options.groupBy && row.modules.group){\n\t\t\trow.modules.group.removeRow(row);\n\t\t}\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.updateGroupRows(true);\n\t\t}\t\n\t}\n\t\n\tcellUpdated(cell){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.reassignRowToGroup(cell.row);\n\t\t}\n\t}\n\t\n\t//return appropriate rows with group headers\n\tgetRows(rows){\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\n\t\t\t\n\t\t\tthis.generateGroups(rows);\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\n\t\t\t}\n\t\t\t\n\t\t\treturn this.updateGroupRows();\n\t\t\t\n\t\t}else{\n\t\t\treturn rows.slice(0);\n\t\t}\n\t}\n\t\n\tgetGroups(component){\n\t\tvar groupComponents = [];\n\t\t\n\t\tthis.groupList.forEach(function(group){\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\tgetChildGroups(group){\n\t\tvar groupComponents = [];\n\t\t\n\t\tif(!group){\n\t\t\tgroup = this;\n\t\t}\n\t\t\n\t\tgroup.groupList.forEach((child) => {\n\t\t\tif(child.groupList.length){\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\n\t\t\t}else{\n\t\t\t\tgroupComponents.push(child);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\twipe(){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\tpullGroupListData(groupList) {\n\t\tvar groupListData = [];\n\t\t\n\t\tgroupList.forEach((group) => {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\t\t\t\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\n\t\t\t\t\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t}\n\t\t\t\n\t\t\telse {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\t\n\t\t\t\tgroup.getRows().forEach((row) => {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupListData;\n\t}\n\t\n\tgetGroupedData(){\n\t\t\n\t\treturn this.pullGroupListData(this.groupList);\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\t\n\t\tif(this.options(\"dataTree\")){\n\t\t\trow = this.table.modules.dataTree.getTreeParentRoot(row);\n\t\t}\n\t\t\n\t\tthis.groupList.forEach((group) => {\n\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\n\t\t\tif(result){\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tcountGroups(){\n\t\treturn this.groupList.length;\n\t}\n\t\n\tgenerateGroups(rows){\n\t\tvar oldGroups = this.groups;\n\t\t\n\t\tthis.groups = {};\n\t\tthis.groupList = [];\n\t\t\n\t\tif(this.allowedValues && this.allowedValues[0]){\n\t\t\tthis.allowedValues[0].forEach((value) => {\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\n\t\t\t});\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t}else{\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t\t\n\t\tObject.values(oldGroups).forEach((group) => {\n\t\t\tgroup.wipe(true);\n\t\t});\t\n\t}\n\t\n\t\n\tcreateGroup(groupID, level, oldGroups){\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\tgroup;\n\t\t\n\t\toldGroups = oldGroups || [];\n\t\t\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\tassignRowToExistingGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tgroupKey = \"0_\" + groupID;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n\t\n\tassignRowToGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\n\t\t\n\t\tif(newGroupNeeded){\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\t\t\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\t\t\n\t\treturn !newGroupNeeded;\n\t}\n\t\n\treassignRowToGroup(row){\n\t\tif(row.type === \"row\"){\n\t\t\tvar oldRowGroup = row.modules.group,\n\t\t\toldGroupPath = oldRowGroup.getPath(),\n\t\t\tnewGroupPath = this.getExpectedPath(row),\n\t\t\tsamePath;\n\t\t\t\n\t\t\t// figure out if new group path is the same as old group path\n\t\t\tsamePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\n\t\t\t\treturn element === newGroupPath[index];\n\t\t\t});\n\t\t\t\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\t\t\tif(!samePath) {\n\t\t\t\toldRowGroup.removeRow(row);\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetExpectedPath(row) {\n\t\tvar groupPath = [], rowData = row.getData();\n\t\t\n\t\tthis.groupIDLookups.forEach((groupId) => {\n\t\t\tgroupPath.push(groupId.func(rowData));\n\t\t});\n\t\t\n\t\treturn groupPath;\n\t}\n\t\n\tupdateGroupRows(force){\n\t\tvar output = [];\n\n\t\tif(!this.blockRedraw){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tscrollHeaders(left){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\n\t\t\t}\n\t\t\t\n\t\t\tleft = left + \"px\";\n\t\t\t\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tgroup.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcheckBasicModeGroupHeaderWidth(){\n\t\tvar element = this.table.rowManager.tableElement,\n\t\tonlyGroupHeaders = true;\n\t\t\n\t\tthis.table.rowManager.getDisplayRows().forEach((row, index) =>{\n\t\t\tthis.table.rowManager.styleRow(row, index);\n\t\t\telement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t\t\n\t\t\tif(row.type !== \"group\"){\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n}\n\nGroupRows.moduleName = \"groupRows\";\n\nexport default GroupRows;","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\taction.component.deleteActual();\n\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowDelete: function(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\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowMove: function(action){\n\t\tvar after = (action.data.posFrom - action.data.posTo) > 0;\n\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);\n\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(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\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowDelete:function(action){\n\t\taction.component.deleteActual();\n\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowMove: function(action){\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);\n\t\t\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","import Module from '../../core/Module.js';\nimport Row from '../../core/row/Row.js';\nimport Cell from '../../core/cell/Cell.js';\n\nimport defaultUndoers from './defaults/undoers.js';\nimport defaultRedoers from './defaults/redoers.js';\n\nclass History extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.history){\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\n\t}\n\n\trowMoved(from, to, after){\n\t\tthis.action(\"rowMove\", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});\n\t}\n\n\trowAdded(row, data, pos, index){\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\n\t}\n\n\trowDeleted(row){\n\t\tvar index, rows;\n\n\t\tif(this.table.options.groupBy){\n\n\t\t\trows = row.getComponent().getGroup()._getSelf().rows;\n\t\t\tindex = rows.indexOf(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = rows[index-1];\n\t\t\t}\n\t\t}else{\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\n\t\t\t}\n\t\t}\n\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\n\t}\n\n\tcellUpdated(cell){\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\n\t}\n\n\tclear(){\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t}\n\n\taction(type, component, data){\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype:type,\n\t\t\tcomponent:component,\n\t\t\tdata:data,\n\t\t});\n\n\t\tthis.index ++;\n\t}\n\n\tgetHistoryUndoSize(){\n\t\treturn this.index + 1;\n\t}\n\n\tgetHistoryRedoSize(){\n\t\treturn this.history.length - (this.index + 1);\n\t}\n\n\tclearComponentHistory(component){\n\t\tvar index = this.history.findIndex(function(item){\n\t\t\treturn item.component === component;\n\t\t});\n\n\t\tif(index > -1){\n\t\t\tthis.history.splice(index, 1);\n\t\t\tif(index <= this.index){\n\t\t\t\tthis.index--;\n\t\t\t}\n\n\t\t\tthis.clearComponentHistory(component);\n\t\t}\n\t}\n\n\tundo(){\n\t\tif(this.index > -1){\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(this.options(\"history\") ? \"History Undo Error - No more history to undo\" : \"History module not enabled\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tredo(){\n\t\tif(this.history.length-1 > this.index){\n\n\t\t\tthis.index++;\n\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.redoers[action.type].call(this, action);\n\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(this.options(\"history\") ? \"History Redo Error - No more history to redo\" : \"History module not enabled\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//rebind rows to new element after deletion\n\t_rebindRow(oldRow, newRow){\n\t\tthis.history.forEach(function(action){\n\t\t\tif(action.component instanceof Row){\n\t\t\t\tif(action.component === oldRow){\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t}else if(action.component instanceof Cell){\n\t\t\t\tif(action.component.row === oldRow){\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif(field){\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nHistory.moduleName = \"history\";\n\n//load defaults\nHistory.undoers = defaultUndoers;\nHistory.redoers = defaultRedoers;\n\nexport default History;","import Module from '../../core/Module.js';\n\nclass HtmlTableImport extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t}\n\n\tinitialize(){\n\t\tthis.tableElementCheck();\n\t}\n\n\ttableElementCheck(){\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\n\t\t\tif(this.table.originalElement.childNodes.length){\n\t\t\t\tthis.parseTable();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element.\");\n\t\t\t}\n\t\t}\n\t}\n\n\tparseTable(){\n\t\tvar element = this.table.originalElement,\n\t\toptions = this.table.options,\n\t\theaders = element.getElementsByTagName(\"th\"),\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\n\t\tdata = [];\n\n\t\tthis.hasIndex = false;\n\n\t\tthis.dispatchExternal(\"htmlImporting\");\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for Tabulator inline options\n\t\tthis._extractOptions(element, options);\n\n\t\tif(headers.length){\n\t\t\tthis._extractHeaders(headers, rows);\n\t\t}else{\n\t\t\tthis._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor(var index = 0; index < rows.length; index++){\n\t\t\tvar row = rows[index],\n\t\t\tcells = row.getElementsByTagName(\"td\"),\n\t\t\titem = {};\n\n\t\t\t//create index if the don't exist in table\n\t\t\tif(!this.hasIndex){\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\toptions.data = data;\n\n\t\tthis.dispatchExternal(\"htmlImported\");\n\t}\n\n\t//extract tabulator attribute options\n\t_extractOptions(element, options, defaultOptions){\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach((item) => {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor(var index in attributes){\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//get value of attribute\n\t_attribValue(value){\n\t\tif(value === \"true\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(value === \"false\"){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t//find column if it has already been defined\n\t_findCol(title){\n\t\tvar match = this.table.options.columns.find((column) => {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t}\n\n\t//extract column from headers\n\t_extractHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\texists = false,\n\t\t\tcol = this._findCol(header.textContent),\n\t\t\twidth;\n\n\t\t\tif(col){\n\t\t\t\texists = true;\n\t\t\t}else{\n\t\t\t\tcol = {title:header.textContent.trim()};\n\t\t\t}\n\n\t\t\tif(!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replaceAll(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif(width && !col.width)\t{\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for Tabulator inline options\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif(col.field == this.table.options.index){\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif(!exists){\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\n\t\t}\n\t}\n\n\t//generate blank headers\n\t_generateBlankHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\tcol = {title:\"\", field:\"col\" + index};\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif(width){\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n}\n\nHtmlTableImport.moduleName = \"htmlTableImport\";\n\nexport default HtmlTableImport;\n","function csvImporter(input){\n\tvar data = [],\n\trow = 0, \n\tcol = 0,\n\tinQuote = false;\n \n\t//Iterate over each character\n\tfor (let index = 0; index < input.length; index++) {\n\t\tlet char = input[index], \n\t\tnextChar = input[index+1]; \n \n\t\t//Initialize empty row\n\t\tif(!data[row]){\n\t\t\tdata[row] = [];\n\t\t}\n\n\t\t//Initialize empty column\n\t\tif(!data[row][col]){\n\t\t\tdata[row][col] = \"\";\n\t\t}\n \n\t\t//Handle quotation mark inside string\n\t\tif (char == '\"' && inQuote && nextChar == '\"') { \n\t\t\tdata[row][col] += char; \n\t\t\tindex++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//Begin / End Quote\n\t\tif (char == '\"') { \n\t\t\tinQuote = !inQuote;\n\t\t\tcontinue;\n\t\t}\n \n\t\t//Next column (if not in quote)\n\t\tif (char == ',' && !inQuote) { \n\t\t\tcol++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CRLF) \n\t\tif (char == '\\r' && nextChar == '\\n' && !inQuote) { \n\t\t\tcol = 0; \n\t\t\trow++; \n\t\t\tindex++; \n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CR or LF) \n\t\tif ((char == '\\r' || char == '\\n') && !inQuote) { \n\t\t\tcol = 0;\n\t\t\trow++;\n\t\t\tcontinue; \n\t\t}\n\n\t\t//Normal Character, append to column\n\t\tdata[row][col] += char;\n\t}\n\n\treturn data;\n}\n\nexport default csvImporter;","export default function(input){\n\ttry {\n\t\treturn JSON.parse(input);\n\t} catch(e) {\n\t\tconsole.warn(\"JSON Import Error - File contents is invalid JSON\", e);\n\t\treturn Promise.reject();\n\t}\n}","function arrayImporter(input){\n\treturn input;\n}\n\nexport default arrayImporter;","import csv from './importers/csv.js';\nimport json from './importers/json.js';\nimport array from './importers/array.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tarray:array,\n};","import Module from '../../core/Module.js';\n\nimport defaultImporters from './defaults/importers.js';\n\nclass Import extends Module{\n \n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.registerTableOption(\"importFormat\");\n\t\tthis.registerTableOption(\"importReader\", \"text\");\n\t}\n \n\tinitialize(){\n\t\tthis.registerTableFunction(\"import\", this.importFromFile.bind(this));\n\n\t\tif(this.table.options.importFormat){\n\t\t\tthis.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\n\t\t\tthis.subscribe(\"data-load\", this.loadData.bind(this), 10);\n\t\t}\n\t}\n\n\tloadDataCheck(data){\n\t\treturn this.table.options.importFormat && (typeof data === \"string\" || (Array.isArray(data) && data.length && Array.isArray(data)));\n\t}\n\n\tloadData(data, params, config, silent, previousData){\n\t\treturn this.importData(this.lookupImporter(), data)\n\t\t\t.then(this.structureData.bind(this))\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import data\");\n\t\t\t\treturn Promise.reject(err);\n\t\t\t});\n\t}\n\n\tlookupImporter(importFormat){\n\t\tvar importer;\n \n\t\tif(!importFormat){\n\t\t\timportFormat = this.table.options.importFormat;\n\t\t}\n \n\t\tif(typeof importFormat === \"string\"){\n\t\t\timporter = Import.importers[importFormat];\n\t\t}else{\n\t\t\timporter = importFormat;\n\t\t}\n\n\t\tif(!importer){\n\t\t\tconsole.error(\"Import Error - Importer not found:\", importFormat);\n\t\t}\n \n\t\treturn importer;\n\t}\n \n\timportFromFile(importFormat, extension){\n\t\tvar importer = this.lookupImporter(importFormat);\n \n\t\tif(importer){\n\t\t\treturn this.pickFile(extension)\n\t\t\t\t.then(this.importData.bind(this, importer))\n\t\t\t\t.then(this.structureData.bind(this))\n\t\t\t\t.then(this.setData.bind(this))\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import file\");\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t});\n\t\t}\n\t}\n \n\tpickFile(extensions){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.type = \"file\";\n\t\t\tinput.accept = extensions;\n \n\t\t\tinput.addEventListener(\"change\", (e) => {\n\t\t\t\tvar file = input.files[0],\n\t\t\t\treader = new FileReader();\n \n\t\t\t\tswitch(this.table.options.importReader){\n\t\t\t\t\tcase \"buffer\":\n\t\t\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"binary\":\n\t\t\t\t\t\treader.readAsBinaryString(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treader.readAsText(file);\n\t\t\t\t}\n \n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tresolve(reader.result);\n\t\t\t\t};\n \n\t\t\t\treader.onerror = (e) => {\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n \n\t\t\tinput.click();\n\t\t});\n\t}\n \n\timportData(importer, fileContents){\n\t\tvar data = importer.call(this.table, fileContents);\n \n\t\tif(data instanceof Promise){\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn data ? Promise.resolve(data) : Promise.reject();\n\t\t}\n\t}\n\n\tstructureData(parsedData){\n\t\tvar data = [];\n \n\t\tif(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\n\t\t\tif(this.table.options.autoColumns){\n\t\t\t\tdata = this.structureArrayToObject(parsedData);\n\t\t\t}else{\n\t\t\t\tdata = this.structureArrayToColumns(parsedData);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn parsedData;\n\t\t}\n\t}\n\n\tstructureArrayToObject(parsedData){\n\t\tvar columns = parsedData.shift();\n\n\t\tvar data = parsedData.map((values) => {\n\t\t\tvar row = {};\n\n\t\t\tcolumns.forEach((key, i) => {\n\t\t\t\trow[key] = values[i];\n\t\t\t});\n\n\t\t\treturn row;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tstructureArrayToColumns(parsedData){\n\t\tvar data = [],\n\t\tcolumns = this.table.getColumns();\n\n\t\t//remove first row if it is the column names\n\t\tif(columns[0] && parsedData[0][0]){\n\t\t\tif(columns[0].getDefinition().title === parsedData[0][0]){\n\t\t\t\tparsedData.shift();\n\t\t\t}\n\t\t}\n \n\t\t//convert row arrays to objects\n\t\tparsedData.forEach((rowData) => {\n\t\t\tvar row = {};\n\n\t\t\trowData.forEach((value, index) => {\n\t\t\t\tvar column = columns[index];\n\n\t\t\t\tif(column){\n\t\t\t\t\trow[column.getField()] = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdata.push(row);\n\t\t});\n\n\t\treturn data;\n\t}\n \n\tsetData(data){\n\t\treturn this.table.setData(data);\n\t}\n}\n\nImport.moduleName = \"import\";\n\n//load defaults\nImport.importers = defaultImporters;\n\nexport default Import;","import Module from '../../core/Module.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\n\nclass Interaction extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.eventMap = {\n\t\t\t//row events\n\t\t\trowClick:\"row-click\",\n\t\t\trowDblClick:\"row-dblclick\",\n\t\t\trowContext:\"row-contextmenu\",\n\t\t\trowMouseEnter:\"row-mouseenter\",\n\t\t\trowMouseLeave:\"row-mouseleave\",\n\t\t\trowMouseOver:\"row-mouseover\",\n\t\t\trowMouseOut:\"row-mouseout\",\n\t\t\trowMouseMove:\"row-mousemove\",\n\t\t\trowMouseDown:\"row-mousedown\",\n\t\t\trowMouseUp:\"row-mouseup\",\n\t\t\trowTap:\"row\",\n\t\t\trowDblTap:\"row\",\n\t\t\trowTapHold:\"row\",\n\n\t\t\t//cell events\n\t\t\tcellClick:\"cell-click\",\n\t\t\tcellDblClick:\"cell-dblclick\",\n\t\t\tcellContext:\"cell-contextmenu\",\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\n\t\t\tcellMouseOver:\"cell-mouseover\",\n\t\t\tcellMouseOut:\"cell-mouseout\",\n\t\t\tcellMouseMove:\"cell-mousemove\",\n\t\t\tcellMouseDown:\"cell-mousedown\",\n\t\t\tcellMouseUp:\"cell-mouseup\",\n\t\t\tcellTap:\"cell\",\n\t\t\tcellDblTap:\"cell\",\n\t\t\tcellTapHold:\"cell\",\n\n\t\t\t//column header events\n\t\t\theaderClick:\"column-click\",\n\t\t\theaderDblClick:\"column-dblclick\",\n\t\t\theaderContext:\"column-contextmenu\",\n\t\t\theaderMouseEnter:\"column-mouseenter\",\n\t\t\theaderMouseLeave:\"column-mouseleave\",\n\t\t\theaderMouseOver:\"column-mouseover\",\n\t\t\theaderMouseOut:\"column-mouseout\",\n\t\t\theaderMouseMove:\"column-mousemove\",\n\t\t\theaderMouseDown:\"column-mousedown\",\n\t\t\theaderMouseUp:\"column-mouseup\",\n\t\t\theaderTap:\"column\",\n\t\t\theaderDblTap:\"column\",\n\t\t\theaderTapHold:\"column\",\n\n\t\t\t//group header\n\t\t\tgroupClick:\"group-click\",\n\t\t\tgroupDblClick:\"group-dblclick\",\n\t\t\tgroupContext:\"group-contextmenu\",\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\n\t\t\tgroupMouseOver:\"group-mouseover\",\n\t\t\tgroupMouseOut:\"group-mouseout\",\n\t\t\tgroupMouseMove:\"group-mousemove\",\n\t\t\tgroupMouseDown:\"group-mousedown\",\n\t\t\tgroupMouseUp:\"group-mouseup\",\n\t\t\tgroupTap:\"group\",\n\t\t\tgroupDblTap:\"group\",\n\t\t\tgroupTapHold:\"group\",\n\t\t};\n\n\t\tthis.subscribers = {};\n\n\t\tthis.touchSubscribers = {};\n\n\t\tthis.columnSubscribers = {};\n\n\t\tthis.touchWatchers = {\n\t\t\trow:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcell:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcolumn:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tgroup:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t}\n\t\t};\n\n\t\tthis.registerColumnOption(\"headerClick\");\n\t\tthis.registerColumnOption(\"headerDblClick\");\n\t\tthis.registerColumnOption(\"headerContext\");\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\n\t\tthis.registerColumnOption(\"headerMouseOver\");\n\t\tthis.registerColumnOption(\"headerMouseOut\");\n\t\tthis.registerColumnOption(\"headerMouseMove\");\n\t\tthis.registerColumnOption(\"headerMouseDown\");\n\t\tthis.registerColumnOption(\"headerMouseUp\");\n\t\tthis.registerColumnOption(\"headerTap\");\n\t\tthis.registerColumnOption(\"headerDblTap\");\n\t\tthis.registerColumnOption(\"headerTapHold\");\n\n\t\tthis.registerColumnOption(\"cellClick\");\n\t\tthis.registerColumnOption(\"cellDblClick\");\n\t\tthis.registerColumnOption(\"cellContext\");\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\n\t\tthis.registerColumnOption(\"cellMouseOver\");\n\t\tthis.registerColumnOption(\"cellMouseOut\");\n\t\tthis.registerColumnOption(\"cellMouseMove\");\n\t\tthis.registerColumnOption(\"cellMouseDown\");\n\t\tthis.registerColumnOption(\"cellMouseUp\");\n\t\tthis.registerColumnOption(\"cellTap\");\n\t\tthis.registerColumnOption(\"cellDblTap\");\n\t\tthis.registerColumnOption(\"cellTapHold\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.initializeExternalEvents();\n\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.clearTouchWatchers.bind(this));\n\t\tthis.subscribe(\"scroll-vertical\", this.clearTouchWatchers.bind(this));\n\t}\n\n\tclearTouchWatchers(){\n\t\tvar types = Object.values(this.touchWatchers);\n\n\t\ttypes.forEach((type) => {\n\t\t\tfor(let key in type){\n\t\t\t\ttype[key] = null;\n\t\t\t}\n\t\t});\n\t}\n\t\t\n\tcellContentsSelectionFixer(e, cell){\n\t\tvar range;\n\n\t\tif(this.table.modExists(\"edit\")){\n\t\t\tif (this.table.modules.edit.currentCell === cell){\n\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\n\tinitializeExternalEvents(){\n\t\tfor(let key in this.eventMap){\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key));\n\t\t}\n\t}\n\n\tsubscriptionChanged(key, added){\n\t\tif(added){\n\t\t\tif(!this.subscribers[key]){\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t}else{\n\t\t\t\t\tthis.subscribeTouchEvents(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t\tdelete this.subscribers[key];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.unsubscribeTouchEvents(key);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tsubscribeTouchEvents(key){\n\t\tvar type = this.eventMap[key];\n\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\n\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\t\t}\n\n\t\tthis.subscribers[key] = true;\n\t}\n\n\tunsubscribeTouchEvents(key){\n\t\tvar noTouch = true,\n\t\ttype = this.eventMap[key];\n\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\n\t\t\tdelete this.subscribers[key];\n\n\t\t\tfor(let i in this.eventMap){\n\t\t\t\tif(this.eventMap[i] === type){\n\t\t\t\t\tif(this.subscribers[i]){\n\t\t\t\t\t\tnoTouch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(noTouch){\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\n\t\tfor(let key in this.eventMap){\n\t\t\tif(def[key]){\n\t\t\t\tthis.subscriptionChanged(key, true);\n\n\t\t\t\tif(!this.columnSubscribers[key]){\n\t\t\t\t\tthis.columnSubscribers[key] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.columnSubscribers[key].push(column);\n\t\t\t}\n\t\t}\n\t}\n\n\thandle(action, e, component){\n\t\tthis.dispatchEvent(action, e, component);\n\t}\n\n\thandleTouch(type, action, e, component){\n\t\tvar watchers = this.touchWatchers[type];\n\n\t\tif(type === \"column\"){\n\t\t\ttype = \"header\";\n\t\t}\n\n\t\tswitch(action){\n\t\t\tcase \"start\":\n\t\t\t\twatchers.tap = true;\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\n\t\t\t\twatchers.tapHold = setTimeout(() => {\n\t\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\t\twatchers.tapHold = null;\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\n\t\t\t\t}, 1000);\n\t\t\t\tbreak;\n\n\t\t\tcase \"end\":\n\t\t\t\tif(watchers.tap){\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\n\t\t\t\t}\n\n\t\t\t\tif(watchers.tapDbl){\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\n\t\t\t\t}else{\n\t\t\t\t\twatchers.tapDbl = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\t\twatchers.tapDbl = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\twatchers.tapHold = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdispatchEvent(action, e, component){\n\t\tvar componentObj = component.getComponent(),\n\t\tcallback;\n\n\t\tif(this.columnSubscribers[action]){\n\n\t\t\tif(component instanceof Cell){\n\t\t\t\tcallback = component.column.definition[action];\n\t\t\t}else if(component instanceof Column){\n\t\t\t\tcallback = component.definition[action];\n\t\t\t}\n\n\t\t\tif(callback){\n\t\t\t\tcallback(e, componentObj);\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchExternal(action, e, componentObj);\n\t}\n}\n\nInteraction.moduleName = \"interaction\";\n\nexport default Interaction;\n","export default {\n\tnavPrev:\"shift + 9\",\n\tnavNext:9,\n\tnavUp:38,\n\tnavDown:40,\n\tnavLeft:37,\n\tnavRight:39,\n\tscrollPageUp:33,\n\tscrollPageDown:34,\n\tscrollToStart:36,\n\tscrollToEnd:35,\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 67\"],\n\n\trangeJumpUp:[\"ctrl + 38\", \"meta + 38\"],\n\trangeJumpDown:[\"ctrl + 40\", \"meta + 40\"],\n\trangeJumpLeft:[\"ctrl + 37\", \"meta + 37\"],\n\trangeJumpRight:[\"ctrl + 39\", \"meta + 39\"],\n\trangeExpandUp:\"shift + 38\",\n\trangeExpandDown:\"shift + 40\",\n\trangeExpandLeft:\"shift + 37\",\n\trangeExpandRight:\"shift + 39\",\n\trangeExpandJumpUp:[\"ctrl + shift + 38\", \"meta + shift + 38\"],\n\trangeExpandJumpDown:[\"ctrl + shift + 40\", \"meta + shift + 40\"],\n\trangeExpandJumpLeft:[\"ctrl + shift + 37\", \"meta + shift + 37\"],\n\trangeExpandJumpRight:[\"ctrl + shift + 39\", \"meta + shift + 39\"],\n};\n","export default {\n\tkeyBlock:function(e){\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight;\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(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\n\t\tscrollMax = 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\n\t},\n\tscrollToStart:function(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(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(e){\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\n\t},\n\n\tnavNext:function(e){\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\n\t},\n\n\tnavLeft:function(e){\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\n\t},\n\n\tnavRight:function(e){\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\n\t},\n\n\tnavUp:function(e){\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\n\t},\n\n\tnavDown:function(e){\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\n\t},\n\n\trangeJumpLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", true, false);\n\t},\n\trangeJumpRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", true, false);\n\t},\n\trangeJumpUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", true, false);\n\t},\n\trangeJumpDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", true, false);\n\t},\n\trangeExpandLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", false, true);\n\t},\n\trangeExpandRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", false, true);\n\t},\n\trangeExpandUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", false, true);\n\t},\n\trangeExpandDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", false, true);\n\t},\n\trangeExpandJumpLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", true, true);\n\t},\n\trangeExpandJumpRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", true, true);\n\t},\n\trangeExpandJumpUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", true, true);\n\t},\n\trangeExpandJumpDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", true, true);\n\t},\n\n\tundo:function(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(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(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","import Module from '../../core/Module.js';\n\nimport defaultBindings from './defaults/bindings.js';\nimport defaultActions from './defaults/actions.js';\n\nclass Keybindings extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\n\t}\n\n\tinitialize(){\n\t\tvar bindings = this.table.options.keybindings,\n\t\tmergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif(bindings !== false){\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings);\n\t\t\tObject.assign(mergedBindings, bindings);\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t}\n\n\tmapBindings(bindings){\n\t\tfor(let key in bindings){\n\t\t\tif(Keybindings.actions[key]){\n\t\t\t\tif(bindings[key]){\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach((binding) => {\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\n\t\t\t\t\t\t\n\t\t\t\t\t\tbindingList.forEach((item) => {\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\n\t\t\t\t\t\t});\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapBinding(action, symbolsList){\n\t\tvar binding = {\n\t\t\taction: Keybindings.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false,\n\t\t\tmeta: false,\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach((symbol) => {\n\t\t\tswitch(symbol){\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"meta\":\n\t\t\t\t\tbinding.meta = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif(!this.watchKeys[symbol]){\n\t\t\t\t\t\tthis.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t}\n\n\tbindEvents(){\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function(binding){\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t}\n\n\tclearBindings(){\n\t\tif(this.keyupBinding){\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif(this.keydownBinding){\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t}\n\n\tcheckBinding(e, binding){\n\t\tvar match = true;\n\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\n\t\t\tbinding.keys.forEach((key) => {\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\n\n\t\t\t\tif(index == -1){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tbinding.action.call(this, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\nKeybindings.moduleName = \"keybindings\";\n\n//load defaults\nKeybindings.bindings = defaultBindings;\nKeybindings.actions = defaultActions;\n\nexport default Keybindings;","import Module from '../../core/Module.js';\n\nclass Menu extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.menuContainer = null;\n\t\tthis.nestedMenuBlock = false;\n\t\t\n\t\tthis.currentComponent = null;\n\t\tthis.rootPopup = null;\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\n\t\t\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\n\t\tthis.registerTableOption(\"rowDblClickMenu\", false);\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\n\t\tthis.registerTableOption(\"groupDblClickMenu\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextMenu\");\n\t\tthis.registerColumnOption(\"headerClickMenu\");\n\t\tthis.registerColumnOption(\"headerDblClickMenu\");\n\t\tthis.registerColumnOption(\"headerMenu\");\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\n\t\tthis.registerColumnOption(\"contextMenu\");\n\t\tthis.registerColumnOption(\"clickMenu\");\n\t\tthis.registerColumnOption(\"dblClickMenu\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tif(!this.deprecationCheck(\"menuContainer\", \"popupContainer\")){\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\n\t\t}\n\t}\t\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextMenu){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickMenu){\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowDblClickMenu){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextMenu){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickMenu){\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupDblClickMenu){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu));\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar\tdef = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){\n\t\t\tthis.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerDblClickMenu\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerMenu){\n\t\t\tthis.initializeColumnHeaderMenu(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\n\t\t}\n\t\t\n\t\tif(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){\n\t\t\tthis.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, \"dblClickMenu\");\n\t\t\tthis.subscribe(\"cell-dblclick\", this.columnSubscribers.dblClickMenu);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderMenu(column){\n\t\tvar icon = column.definition.headerMenuIcon,\n\t\theaderMenuEl;\n\t\t\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\n\t\t\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderMenuEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderMenuEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadMenuTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadMenuTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadMenuEvent(menu, e, component){\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\n\t\t\n\t\tthis.loadMenu(e, component, menu);\n\t}\n\t\n\tloadMenu(e, component, menu, parentEl, parentPopup){\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\n\t\tmenuEl = document.createElement(\"div\"),\n\t\tpopup;\n\t\t\n\t\tmenuEl.classList.add(\"tabulator-menu\");\n\t\t\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\t//abort if no menu set\n\t\tif(!menu || !menu.length){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!parentEl){\n\t\t\tif(this.nestedMenuBlock){\n\t\t\t\t//abort if child menu already open\n\t\t\t\tif(this.rootPopup){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\n\t\t\t\t\tthis.nestedMenuBlock = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\n\t\t\t\n\t\t}else{\n\t\t\tpopup = parentPopup.child(menuEl);\n\t\t}\n\t\t\n\t\tmenu.forEach((item) => {\n\t\t\tvar itemEl = document.createElement(\"div\"),\n\t\t\tlabel = item.label,\n\t\t\tdisabled = item.disabled;\n\t\t\t\n\t\t\tif(item.separator){\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t\t}else{\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\t\t\t\t\n\t\t\t\tif(typeof label == \"function\"){\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(label instanceof Node){\n\t\t\t\t\titemEl.appendChild(label);\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(typeof disabled == \"function\"){\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(disabled){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(item.action){\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\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\t\n\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmenuEl.appendChild(itemEl);\n\t\t});\n\t\t\n\t\tmenuEl.addEventListener(\"click\", (e) => {\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tpopup.show(parentEl || e);\n\t\t\n\t\tif(popup === this.rootPopup){\n\t\t\tthis.rootPopup.hideOnBlur(() => {\n\t\t\t\tthis.rootPopup = null;\n\t\t\t\t\n\t\t\t\tif(this.currentComponent){\n\t\t\t\t\tthis.dispatch(\"menu-closed\", menu, popup);\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\n\t\t\t\t\tthis.currentComponent = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.currentComponent = component;\n\t\t\t\n\t\t\tthis.dispatch(\"menu-opened\", menu, popup);\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nMenu.moduleName = \"menu\";\n\nexport default Menu;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the destination column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\t\t\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\n\t}\n\t\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.movableColumns){\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"alert-show\", this.abortMove.bind(this));\n\t\t}\n\t}\n\n\tabortMove(){\n\t\tclearTimeout(this.checkTimeout);\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\tcolEl;\n\t\t\n\t\tif(!column.modules.frozen && !column.isGroup){\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tconfig.mousemove = function(e){\n\t\t\t\tif(column.parent === self.moving.parent){\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\t\t\n\t\tcolumn.modules.moveColumn = config;\n\t}\n\t\n\tbindTouchEvents(column){\n\t\tvar colEl = column.getElement(),\n\t\tstartXMove = false, //shifting center position of the cell\n\t\tnextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\n\t\t\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\t\t\t\t\n\t\t\t\tthis.startMove(e, column);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\n\t\t\tvar diff, moveToCol;\n\t\t\t\n\t\t\tif(this.moving){\n\t\t\t\tthis.moveHover(e);\n\t\t\t\t\n\t\t\t\tif(!startXMove){\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\t\t\t\t\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\n\t\t\t\t\t\tmoveToCol = nextCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\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(prevCol && -diff - prevColWidthLast > prevColWidth){\n\t\t\t\t\t\tmoveToCol = prevCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(moveToCol){\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tstartMove(e, column){\n\t\tvar element = column.getElement(),\n\t\theaderElement = this.table.columnManager.getContentsElement(),\n\t\theadersElement = this.table.columnManager.getHeadersElement();\n\t\t\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\n\t\t\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\t\t\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t\t\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\t\t\n\t\theaderElement.appendChild(this.hoverElement);\n\t\t\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\n\t\t\n\t\tif(!this.touchMove){\n\t\t\tthis._bindMouseMove();\n\t\t\t\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t\t\n\t\tthis.moveHover(e);\n\t}\n\t\n\t_bindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_unbindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tmoveColumn(column, after){\n\t\tvar movingCells = this.moving.getCells();\n\t\t\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\t\t\n\t\tif(after){\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tendMove(e){\n\t\tif(e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\t\t\t\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\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\t\t\t\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(this.toCol){\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\t\t\t\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\t\t\t\n\t\t\tif(!this.touchMove){\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tmoveHover(e){\n\t\tvar columnHolder = this.table.columnManager.getContentsElement(),\n\t\tscrollLeft = columnHolder.scrollLeft,\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\n\t\tscrollPos;\n\t\t\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\n\t\t\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nMoveColumns.moduleName = \"moveColumn\";\n\nexport default MoveColumns;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the destination row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connectionSelectorsTables = false;\n\t\tthis.connectionSelectorsElements = false;\n\t\tthis.connectionElements = [];\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\n\n\t\tthis.registerColumnOption(\"rowHandle\");\n\t}\n\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.movableRows){\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeGroupHeader(group){\n\t\tvar self = this,\n\t\tconfig = {};\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, group);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl;\n\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\tif(rowEl.previousSibling){\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\trowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\n\t\tif(!this.hasHandle){\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tthis.hasHandle = true;\n\t\t}\n\t}\n\n\tinitializeCell(cell){\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tvar self = this,\n\t\t\tcellEl = cell.getElement(true);\n\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\n\t\t}\n\t}\n\n\tbindTouchEvents(row, element){\n\t\tvar startYMove = false, //shifting center position of the cell\n\t\tnextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tthis.startMove(e, row);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", (e) => {\n\n\t\t\tvar diff, moveToRow;\n\n\t\t\tif(this.moving){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthis.moveHover(e);\n\n\t\t\t\tif(!startYMove){\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\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(prevRow && -diff - prevRowHeightLast > prevRowHeight){\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(moveToRow){\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t\tthis.touchMove = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t_bindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\t_unbindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\tstartMove(e, row){\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif(!this.connection){\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t}else{\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif(this.connection){\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t}else{\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\n\n\t\tthis.moveHover(e);\n\t}\n\n\tsetStartPosition(e, row){\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\telement, position;\n\n\t\telement = row.getElement();\n\t\tif(this.connection){\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t}else{\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\n\t\t}\n\t}\n\n\tendMove(e){\n\t\tif(!e || e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif(!this.connection){\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif(this.toRow){\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif(this.connection){\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveRow(row, after){\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t}\n\n\tmoveHover(e){\n\t\tif(this.connection){\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t}else{\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t}\n\n\tmoveHoverTable(e){\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\tscrollTop = rowHolder.scrollTop,\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop;\n\t\t\n\t\tthis.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + \"px\";\n\t}\n\n\tmoveHoverConnections(e){\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\n\t}\n\n\telementRowDrop(e, element, row){\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\n\t}\n\n\t//establish connection with other tables\n\tconnectToTables(row){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\t\trow:row,\n\t\t\t});\n\t\t}\n\n\t\tif(this.connectionSelectorsElements){\n\n\t\t\tthis.connectionElements = [];\n\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t\t}\n\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\n\t\t\t\tif(typeof query === \"string\"){\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t\t}else{\n\t\t\t\t\tthis.connectionElements.push(query);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.connectionElements.forEach((element) => {\n\t\t\t\tvar dropEvent = (e) => {\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\n\t\t\t\t};\n\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t\t});\n\t\t}\n\t}\n\n\t//disconnect from other tables\n\tdisconnectFromTables(){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t\t}\n\n\t\tthis.connectionElements.forEach((element) => {\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\t\tdelete element.tabulatorElementDropEvent;\n\t\t});\n\t}\n\n\t//accept incomming connection\n\tconnect(table, row){\n\t\tif(!this.connectedTable){\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\n\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//close incoming connection\n\tdisconnect(table){\n\t\tif(table === this.connectedTable){\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t}\n\n\tdropComplete(table, row, success){\n\t\tvar sender = false;\n\n\t\tif(success){\n\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(sender){\n\t\t\t\tsender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table);\n\t\t\t}else{\n\t\t\t\tif(this.table.options.movableRowsSender){\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t}\n\n\ttableRowDrop(e, row){\n\t\tvar receiver = false,\n\t\tsuccess = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(receiver){\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif(success){\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow:row,\n\t\t\tsuccess:success,\n\t\t});\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t}\n\t}\n}\n\nMoveRows.prototype.receivers = {\n\tinsert:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate:function(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(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(fromRow, toRow, toTable){\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.moduleName = \"moveRow\";\n\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\n\nimport defaultMutators from './defaults/mutators.js';\n\nclass Mutator extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of mutation types\n\t\tthis.enabled = true;\n\n\t\tthis.registerColumnOption(\"mutator\");\n\t\tthis.registerColumnOption(\"mutatorParams\");\n\t\tthis.registerColumnOption(\"mutatorData\");\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\n\t\tthis.registerColumnOption(\"mutatorEdit\");\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\n\t\tthis.registerColumnOption(\"mutateLink\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\n\t}\n\n\trowDataChanged(row, tempData, updatedData){\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\n\t}\n\n\t//initialize column mutator\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\tmutator;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\n\n\t\t\t\tif(mutator){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator:mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t}\n\n\tlookupMutator(value){\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Mutator.mutators[value]){\n\t\t\t\t\tmutator = Mutator.mutators[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t}\n\n\t//apply mutator to row\n\ttransformRow(data, type, updatedData){\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\tvalue;\n\n\t\tif(this.enabled){\n\n\t\t\tthis.table.columnManager.traverse((column) => {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif(column.modules.mutate){\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif(mutator){\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\t\tif((type == \"data\" && !updatedData)|| typeof value !== \"undefined\"){\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\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\treturn data;\n\t}\n\n\t//apply mutator to new cell value\n\ttransformCell(cell, value){\n\t\tif(cell.column.modules.mutate){\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t\t\ttempData = {};\n\n\t\t\tif(mutator){\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\t\t\tcell.column.setFieldValue(tempData, value);\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tmutateLink(cell){\n\t\tvar links = cell.column.definition.mutateLink;\n\n\t\tif(links){\n\t\t\tif(!Array.isArray(links)){\n\t\t\t\tlinks = [links];\n\t\t\t}\n\n\t\t\tlinks.forEach((link) => {\n\t\t\t\tvar linkCell = cell.row.getCell(link);\n\n\t\t\t\tif(linkCell){\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tenable(){\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(){\n\t\tthis.enabled = false;\n\t}\n}\n\nMutator.moduleName = \"mutator\";\n\n//load defaults\nMutator.mutators = defaultMutators;\n\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\n\tif(totalRows){\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\n\t\t\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\n\t\t\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(ofEl);\n\t\tel.appendChild(totalEl);\n\t\tel.appendChild(rowsEl);\n\t}else{\n\t\tvalueEl.innerHTML = \" 0 \";\n\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(rowsEl);\n\t}\n\t\n\treturn el;\n}","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\t\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\t\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\t\n\tel.appendChild(showingEl);\n\tel.appendChild(valueEl);\n\tel.appendChild(ofEl);\n\tel.appendChild(totalEl);\n\tel.appendChild(rowsEl);\n\t\n\treturn el;\n}","import rows from './pageCounters/rows.js';\nimport pages from './pageCounters/pages.js';\n\n\nexport default {\n\trows:rows,\n\tpages:pages,\n};","import Module from '../../core/Module.js';\n\nimport defaultPageCounters from './defaults/pageCounters.js';\n\nclass Page extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\t\t\n\t\tthis.element = null;\n\t\tthis.pageCounterElement = null;\n\t\tthis.pageCounter = null;\n\t\t\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.remoteRowCountEstimate = null;\n\t\t\n\t\tthis.initialLoad = true;\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\n\t\t\n\t\tthis.pageSizes = [];\n\t\t\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\n\t\t\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\n\t\t\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\n\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad){\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\n\t\t\t\n\t\t\tthis.createElements();\n\t\t\tthis.initializePageCounter();\n\t\t\tthis.initializePaginator();\n\t\t}else if(this.table.options.progressiveLoad){\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\t\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad);\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowAddingPosition(row, top){\n\t\tvar rowManager = this.table.rowManager,\n\t\tdisplayRows = rowManager.getDisplayRows(),\n\t\tindex;\n\t\t\n\t\tif(top){\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[0];\n\t\t\t}else{\n\t\t\t\tif(rowManager.activeRows.length){\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.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(displayRows.length){\n\t\t\t\tindex = displayRows[displayRows.length - 1];\n\t\t\t\ttop = displayRows.length < this.size ? false : true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {index, top};\n\t}\n\t\n\tcalculatePageSizes(){\n\t\tvar testElRow, testElCell;\n\t\t\n\t\tif(this.table.options.paginationSize){\n\t\t\tthis.size = this.table.options.paginationSize;\n\t\t}else{\n\t\t\ttestElRow = document.createElement(\"div\");\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\t\ttestElRow.style.visibility = \"hidden\";\n\t\t\t\n\t\t\ttestElCell = document.createElement(\"div\");\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\n\t\t\t\n\t\t\ttestElRow.appendChild(testElCell);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\n\t\t\t\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\n\t\t}\n\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\n\t\t\n\t\tthis.generatePageSizeSelectList();\n\t}\n\t\n\tinitialLoadComplete(){\n\t\tthis.initialLoad = false;\n\t}\n\t\n\tremotePageParams(data, config, silent, params){\n\t\tif(!this.initialLoad){\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\n\t\t\t\tthis.reset(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//configure request params\n\t\tparams.page = this.page;\n\t\t\n\t\t//set page size if defined\n\t\tif(this.size){\n\t\t\tparams.size = this.size;\n\t\t}\n\t\t\n\t\treturn params;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetPageToRow(row){\n\t\tif(this.table.options.pagination){\n\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\treturn this.setPageToRow(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Promise.reject();\n\t}\n\t\n\tuserSetPageSize(size){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.setPageSize(size);\n\t\t\treturn this.setPage(1);\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tscrollVertical(top, dir){\n\t\tvar element, diff, margin;\n\t\tif(!dir && !this.table.dataLoader.loading){\n\t\t\telement = this.table.rowManager.getElement();\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\n\t\t\t\n\t\t\tif(diff < margin){\n\t\t\t\tthis.nextPage()\n\t\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\n\t\t\t}\n\t\t}\n\t}\n\t\n\trestOnRenderBefore(rows, renderInPosition){\n\t\tif(!renderInPosition){\n\t\t\tif(this.mode === \"local\"){\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(){\n\t\tthis.refreshData(true, \"all\");\n\t}\n\t\n\tcreateElements(){\n\t\tvar button;\n\t\t\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\t\t\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\t\t\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\t\t\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\t\t\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\t\t\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\t\t\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\t\t\n\t\tif(this.table.options.paginationSizeSelector){\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t}\n\t\n\tgeneratePageSizeSelectList(){\n\t\tvar pageSizes = [];\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes = [];\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t}else{\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t\n\t\t\tpageSizes.forEach((item) => {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\t\n\t\t\t\tif(item === true){\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\n\t\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = item;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\t\t\t\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t}\n\t\n\tinitializePageCounter(){\n\t\tvar counter = this.table.options.paginationCounter,\n\t\tpageCounter = null;\n\t\t\n\t\tif(counter){\n\t\t\tif(typeof counter === \"function\"){\n\t\t\t\tpageCounter = counter;\n\t\t\t}else{\n\t\t\t\tpageCounter = Page.pageCounters[counter];\n\t\t\t}\n\t\t\t\n\t\t\tif(pageCounter){\n\t\t\t\tthis.pageCounter = pageCounter;\n\t\t\t\t\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup pagination\n\tinitializePaginator(hidden){\n\t\tvar pageSelectLabel, paginationCounterHolder;\n\t\t\n\t\tif(!hidden){\n\t\t\t//build pagination element\n\t\t\t\n\t\t\t//bind localizations\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\n\t\t\t\tthis.firstBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\n\t\t\t\tthis.prevBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\n\t\t\t\tthis.nextBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\n\t\t\t\tthis.lastBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\t//click bindings\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(1);\n\t\t\t});\n\t\t\t\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.previousPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.nextPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(this.max);\n\t\t\t});\n\t\t\t\n\t\t\tif(this.table.options.paginationElement){\n\t\t\t\tthis.element = this.table.options.paginationElement;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pageSizeSelect){\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\n\t\t\t\t\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\n\t\t\t\t\tthis.setPage(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//append to DOM\n\t\t\tthis.element.appendChild(this.firstBut);\n\t\t\tthis.element.appendChild(this.prevBut);\n\t\t\tthis.element.appendChild(this.pagesElement);\n\t\t\tthis.element.appendChild(this.nextBut);\n\t\t\tthis.element.appendChild(this.lastBut);\n\t\t\t\n\t\t\tif(!this.table.options.paginationElement){\n\t\t\t\tif(this.table.options.paginationCounter){\n\n\t\t\t\t\tpaginationCounterHolder; \n\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(paginationCounterHolder){\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\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\tthis.footerAppend(this.pageCounterElement);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.footerAppend(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.page = this.table.options.paginationInitialPage;\n\t\t\tthis.count = this.table.options.paginationButtonCount;\n\t\t}\n\t\t\n\t\t//set default values\n\t\tthis.mode = this.table.options.paginationMode;\n\t}\n\t\n\tinitializeProgressive(mode){\n\t\tthis.initializePaginator(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"page-changed\");\n\t}\n\t\n\t//calculate maximum page from number of rows\n\tsetMaxRows(rowCount){\n\t\tif(!rowCount){\n\t\t\tthis.max = 1;\n\t\t}else{\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\n\t\t}\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t}\n\t}\n\t\n\t//reset to first page without triggering action\n\treset(force){\n\t\tif(!this.initialLoad){\n\t\t\tif(this.mode == \"local\" || force){\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.trackChanges();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//set the maximum page\n\tsetMaxPage(max){\n\t\t\n\t\tmax = parseInt(max);\n\t\t\n\t\tthis.max = max || 1;\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t}\n\t\n\t//set current page number\n\tsetPage(page){\n\t\tswitch(page){\n\t\t\tcase \"first\":\n\t\t\t\treturn this.setPage(1);\n\t\n\t\t\tcase \"prev\":\n\t\t\t\treturn this.previousPage();\n\t\t\t\n\t\t\tcase \"next\":\n\t\t\t\treturn this.nextPage();\n\t\t\t\n\t\t\tcase \"last\":\n\t\t\t\treturn this.setPage(this.max);\n\t\t}\n\t\t\n\t\tpage = parseInt(page);\n\t\t\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\n\t\t\tthis.page = page;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageToRow(row){\n\t\tvar rows = this.displayRows(-1);\n\t\tvar index = rows.indexOf(row);\n\t\n\t\tif(index > -1){\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\n\t\t\t\n\t\t\treturn this.setPage(page);\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageSize(size){\n\t\tif(size !== true){\n\t\t\tsize = parseInt(size);\n\t\t}\n\n\t\tif(size > 0){\n\t\t\tthis.size = size;\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\n\t\t}\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\t_setPageCounter(totalRows, size, currentRow){\n\t\tvar content;\n\t\t\n\t\tif(this.pageCounter){\n\n\t\t\tif(this.mode === \"remote\"){\n\t\t\t\tsize = this.size;\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\n\t\t\t}\n\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\n\t\t\t\n\t\t\tswitch(typeof content){\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif(content instanceof Node){\n\t\t\t\t\t\n\t\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.pageCounterElement.appendChild(content);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\t\n\t\t\t\t\t\tif(content != null){\n\t\t\t\t\t\t\tconsole.warn(\"Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:\", content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.pageCounterElement.innerHTML = content;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup the pagination buttons\n\t_setPageButtons(){\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\n\t\t\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\n\t\t\n\t\tif(this.page == 1){\n\t\t\tthis.firstBut.disabled = true;\n\t\t\tthis.prevBut.disabled = true;\n\t\t}else{\n\t\t\tthis.firstBut.disabled = false;\n\t\t\tthis.prevBut.disabled = false;\n\t\t}\n\t\t\n\t\tif(this.page == this.max){\n\t\t\tthis.lastBut.disabled = true;\n\t\t\tthis.nextBut.disabled = true;\n\t\t}else{\n\t\t\tthis.lastBut.disabled = false;\n\t\t\tthis.nextBut.disabled = false;\n\t\t}\n\t\t\n\t\tfor(let i = min; i <= max; i++){\n\t\t\tif(i>0 && i <= this.max){\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.footerRedraw();\n\t}\n\t\n\t_generatePageButton(page){\n\t\tvar button = document.createElement(\"button\");\n\t\t\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif(page == this.page){\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\t\t\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\t\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t\t});\n\t\t\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\t\t\n\t\tbutton.addEventListener(\"click\", (e) => {\n\t\t\tthis.setPage(page);\n\t\t});\n\t\t\n\t\treturn button;\n\t}\n\t\n\t//previous page\n\tpreviousPage(){\n\t\tif(this.page > 1){\n\t\t\tthis.page--;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\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\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//next page\n\tnextPage(){\n\t\tif(this.page < this.max){\n\t\t\tthis.page++;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tif(!this.progressiveLoad){\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\n\t\t\t}\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//return current page number\n\tgetPage(){\n\t\treturn this.page;\n\t}\n\t\n\t//return max page number\n\tgetPageMax(){\n\t\treturn this.max;\n\t}\n\t\n\tgetPageSize(size){\n\t\treturn this.size;\n\t}\n\t\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\t\n\t//return appropriate rows for current page\n\tgetRows(data){\n\t\tvar actualRowPageSize = 0,\n\t\toutput, start, end, actualStartRow;\n\n\t\tvar actualRows = data.filter((row) => {\n\t\t\treturn row.type === \"row\";\n\t\t});\n\t\t\n\t\tif(this.mode == \"local\"){\n\t\t\toutput = [];\n\t\t\t\n\t\t\tthis.setMaxRows(data.length);\n\t\t\t\n\t\t\tif(this.size === true){\n\t\t\t\tstart = 0;\n\t\t\t\tend = data.length;\n\t\t\t}else{\n\t\t\t\tstart = this.size * (this.page - 1);\n\t\t\t\tend = start + parseInt(this.size);\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageButtons();\n\t\t\t\n\t\t\tfor(let i = start; i < end; i++){\n\t\t\t\tlet row = data[i];\n\n\t\t\t\tif(row){\n\t\t\t\t\toutput.push(row);\n\n\t\t\t\t\tif(row.type === \"row\"){\n\t\t\t\t\t\tif(!actualStartRow){\n\t\t\t\t\t\t\tactualStartRow = row;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tactualRowPageSize++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\n\t\t\t\n\t\t\treturn output;\n\t\t}else{\n\t\t\tthis._setPageButtons();\n\t\t\tthis._setPageCounter(actualRows.length);\n\t\t\t\n\t\t\treturn data.slice(0);\n\t\t}\n\t}\n\t\n\ttrigger(){\n\t\tvar left;\n\t\t\n\t\tswitch(this.mode){\n\t\t\tcase \"local\":\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\t\t\t\n\t\t\t\tthis.refreshData();\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\n\t\t\t\treturn Promise.resolve();\n\t\t\t\n\t\t\tcase \"remote\":\n\t\t\t\tthis.dataChanging = true;\n\t\t\t\treturn this.reloadData(null)\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.dataChanging = false;\n\t\t\t\t\t});\n\t\t\t\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\treturn this.reloadData(null, true);\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\n\t\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t_parseRemoteData(data){\n\t\tvar margin;\n\t\t\n\t\tif(typeof data.last_page === \"undefined\"){\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\n\t\t}\n\t\t\n\t\tif(data.data){\n\t\t\tthis.max = parseInt(data.last_page) || 1;\n\n\t\t\tthis.remoteRowCountEstimate = typeof data.last_row !== \"undefined\" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0));\n\t\t\t\n\t\t\tif(this.progressiveLoad){\n\t\t\t\tswitch(this.mode){\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page == 1){\n\t\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\n\t\t\t\t\t\n\t\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\n\t\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\n\t\t}\n\t\t\n\t\treturn data.data;\n\t}\n\t\n\t//handle the footer element being redrawn\n\tfooterRedraw(){\n\t\tvar footer = this.table.footerManager.containerElement;\n\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}else{\n\t\t\tthis.pagesElement.style.display = '';\n\t\t\t\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n}\n\nPage.moduleName = \"page\";\n\n//load defaults\nPage.pageCounters = defaultPageCounters;\n\nexport default Page;\n","// read persistance information from storage\nexport default {\n\tlocal:function(id, type){\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie:function(id, type){\n\t\tvar cookie = document.cookie,\n\t\tkey = id + \"-\" + type,\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\n\t\tend, 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.slice(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif(end > -1){\n\t\t\t\tcookie = cookie.slice(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","//write persistence information to storage\nexport default {\n\tlocal:function(id, type, data){\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie:function(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};","import Module from '../../core/Module.js';\n\nimport defaultReaders from './defaults/readers.js';\nimport defaultWriters from './defaults/writers.js';\n\nclass Persistence extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\t\tthis.defWatcherBlock = false;\n\t\tthis.config = {};\n\t\tthis.readFunc = false;\n\t\tthis.writeFunc = false;\n\n\t\tthis.registerTableOption(\"persistence\", false);\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\n\t}\n\n\t// Test for whether localStorage is available for use.\n\tlocalStorageTest() {\n\t\tvar testKey = \"_tabulator_test\";\n\n\t\ttry {\n\t\t\twindow.localStorage.setItem( testKey, testKey);\n\t\t\twindow.localStorage.removeItem( testKey );\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//setup parameters\n\tinitialize(){\n\t\tif(this.table.options.persistence){\n\t\t\t//determine persistent layout storage type\n\t\t\tvar mode = this.table.options.persistenceMode,\n\t\t\tid = this.table.options.persistenceID,\n\t\t\tretrievedData;\n\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\n\n\t\t\tif(this.table.options.persistenceReaderFunc){\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.readers[this.mode]){\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.table.options.persistenceWriterFunc){\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.writers[this.mode]){\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//set storage tag\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\n\n\t\t\tthis.config = {\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\t\t\theaderFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter,\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\n\t\t\t};\n\n\t\t\t//load pagination data if needed\n\t\t\tif(this.config.page){\n\t\t\t\tretrievedData = this.retrieveData(\"page\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\n\t\t\t\t\t\tthis.table.options.paginationSize = retrievedData.paginationSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof retrievedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retrievedData.paginationInitialPage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//load group data if needed\n\t\t\tif(this.config.group){\n\t\t\t\tretrievedData = this.retrieveData(\"group\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\n\t\t\t\t\t\tthis.table.options.groupBy = retrievedData.groupBy;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retrievedData.groupStartOpen;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\n\t\t\t\t\t\tthis.table.options.groupHeader = retrievedData.groupHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.config.columns){\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\n\t\t\t}\n\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\n\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"headerFilter\"));\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"column-width\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\n\t\t}\n\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\n\t}\n\n\teventSave(type){\n\t\tif(this.config[type]){\n\t\t\tthis.save(type);\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tvar sorters, filters, headerFilters;\n\n\t\tif(this.config.sort){\n\t\t\tsorters = this.load(\"sort\");\n\n\t\t\tif(!sorters === false){\n\t\t\t\tthis.table.options.initialSort = sorters;\n\t\t\t}\n\t\t}\n\n\t\tif(this.config.filter){\n\t\t\tfilters = this.load(\"filter\");\n\n\t\t\tif(!filters === false){\n\t\t\t\tthis.table.options.initialFilter = filters;\n\t\t\t}\n\t\t}\n\t\tif(this.config.headerFilter){\n\t\t\theaderFilters = this.load(\"headerFilter\");\n\n\t\t\tif(!headerFilters === false){\n\t\t\t\tthis.table.options.initialHeaderFilter = headerFilters;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\ttableRedraw(force){\n\t\tif(force && this.config.columns){\n\t\t\tthis.save(\"columns\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tgetColumnLayout(){\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\n\t}\n\n\tsetColumnLayout(layout){\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout, true));\n\t\treturn true;\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumn(column){\n\t\tvar def, keys;\n\n\t\tif(this.config.columns){\n\t\t\tthis.defWatcherBlock = true;\n\n\t\t\tdef = column.getDefinition();\n\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\t\tkeys.forEach((key)=>{\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\t\tvar value = def[key];\n\n\t\t\t\tif(props){\n\t\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\t\tset: (newValue) => {\n\t\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(props.set){\n\t\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget:() => {\n\t\t\t\t\t\t\tif(props.get){\n\t\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\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\tthis.defWatcherBlock = false;\n\t\t}\n\t}\n\n\t//load saved definitions\n\tload(type, current){\n\t\tvar data = this.retrieveData(type);\n\n\t\tif(current){\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//retrieve data from memory\n\tretrieveData(type){\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n\t}\n\n\t//merge old and new column definitions\n\tmergeDefinition(oldCols, newCols, mergeAllNew){\n\t\tvar output = [];\n\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach((column, to) => {\n\t\t\tvar from = this._findColumn(oldCols, column),\n\t\t\tkeys;\n\n\t\t\tif(from){\n\t\t\t\tif(mergeAllNew){\n\t\t\t\t\tkeys = Object.keys(column);\n\t\t\t\t}else if(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(from);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\n\t\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(from.columns){\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\n\t\toldCols.forEach((column, i) => {\n\t\t\tvar from = this._findColumn(newCols, column);\n\n\t\t\tif (!from) {\n\t\t\t\tif(output.length>i){\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t}else{\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//find matching columns\n\t_findColumn(columns, subject){\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\n\n\t\treturn columns.find(function(col){\n\t\t\tswitch(type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t}\n\t\t});\n\t}\n\n\t//save data\n\tsave(type){\n\t\tvar data = {};\n\n\t\tswitch(type){\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"headerFilter\":\n\t\t\t\tdata = this.table.modules.filter.getHeaderFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tdata = this.getGroupConfig();\n\t\t\t\tbreak;\n\n\t\t\tcase \"page\":\n\t\t\t\tdata = this.getPageConfig();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(this.writeFunc){\n\t\t\tthis.writeFunc(this.id, type, data);\n\t\t}\n\n\t}\n\n\t//ensure sorters contain no function data\n\tvalidateSorters(data){\n\t\tdata.forEach(function(item){\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetGroupConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.group){\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgetPageConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.page){\n\t\t\tif(this.config.page === true || this.config.page.size){\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t\t}\n\n\t\t\tif(this.config.page === true || this.config.page.page){\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\n\t//parse columns for data to store\n\tparseColumns(columns){\n\t\tvar definitions = [],\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\t\tcolumns.forEach((column) => {\n\t\t\tvar defStore = {},\n\t\t\tcolDef = column.getDefinition(),\n\t\t\tkeys;\n\n\t\t\tif(column.isGroup){\n\t\t\t\tdefStore.title = colDef.title;\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\n\t\t\t}else{\n\t\t\t\tdefStore.field = column.getField();\n\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t\tkeys.push(\"visible\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tswitch(key){\n\t\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\n\t\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\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\tdefinitions.push(defStore);\n\t\t});\n\n\t\treturn definitions;\n\t}\n}\n\nPersistence.moduleName = \"persistence\";\n\nPersistence.moduleInitOrder = -10;\n\n//load defaults\nPersistence.readers = defaultReaders;\nPersistence.writers = defaultWriters;\n\nexport default Persistence;","import Module from '../../core/Module.js';\n\nclass Popup extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\n\t\tthis.registerTableOption(\"rowDblClickPopup\", false);\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\n\t\tthis.registerTableOption(\"groupDblClickPopup\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextPopup\");\n\t\tthis.registerColumnOption(\"headerClickPopup\");\n\t\tthis.registerColumnOption(\"headerDblClickPopup\");\n\t\tthis.registerColumnOption(\"headerPopup\");\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\n\t\tthis.registerColumnOption(\"contextPopup\");\n\t\tthis.registerColumnOption(\"clickPopup\");\n\t\tthis.registerColumnOption(\"dblClickPopup\");\n\n\t\tthis.registerComponentFunction(\"cell\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"group\", \"popup\", this._componentPopupCall.bind(this));\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\t_componentPopupCall(component, contents, position){\n\t\tthis.loadPopupEvent(contents, null, component, position);\n\t}\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextPopup){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickPopup){\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\n\t\t}\n\n\t\tif(this.table.options.rowDblClickPopup){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextPopup){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickPopup){\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\n\t\t}\n\n\t\tif(this.table.options.groupDblClickPopup){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup));\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\n\t\t\n\t\t\n\t\t}if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){\n\t\t\tthis.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerDblClickPopup\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickPopup);\n\t\t}\n\t\t\n\t\tif(def.headerPopup){\n\t\t\tthis.initializeColumnHeaderPopup(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\n\t\t}\n\n\t\tif(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){\n\t\t\tthis.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, \"dblClickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.dblClickPopup);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderPopup(column){\n\t\tvar icon = column.definition.headerPopupIcon,\n\t\theaderPopupEl;\n\t\t\n\t\theaderPopupEl = document.createElement(\"span\");\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\n\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderPopupEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderPopupEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadPopupTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadPopupTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadPopupEvent(contents, e, component, position){\n\t\tvar renderedCallback;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\n\t\t\n\t\tthis.loadPopup(e, component, contents, renderedCallback, position);\n\t}\n\t\n\tloadPopup(e, component, contents, renderedCallback, position){\n\t\tvar touch = !(e instanceof MouseEvent),\n\t\tcontentsEl, popup;\n\t\t\n\t\tif(contents instanceof HTMLElement){\n\t\t\tcontentsEl = contents;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\tcontentsEl.innerHTML = contents;\n\t\t}\n\t\t\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\n\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\tpopup = this.popup(contentsEl);\n\n\t\tif(typeof renderedCallback === \"function\"){\n\t\t\tpopup.renderCallback(renderedCallback);\n\t\t}\n\n\t\tif(e){\n\t\t\tpopup.show(e);\n\t\t}else{\n\t\t\tpopup.show(component.getElement(), position || \"center\");\n\t\t}\n\n\t\t\n\t\tpopup.hideOnBlur(() => {\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\n\t\t});\n\n\n\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent());\n\t}\n}\n\nPopup.moduleName = \"popup\";\n\nexport default Popup;\n","import Module from '../../core/Module.js';\n\nclass Print extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t\tthis.beforeprintEventHandler = null;\n\t\tthis.afterprintEventHandler = null;\n\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\n\n\t\tthis.registerColumnOption(\"print\");\n\t\tthis.registerColumnOption(\"titlePrint\");\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\tthis.beforeprintEventHandler = this.replaceTable.bind(this);\n\t\t\tthis.afterprintEventHandler = this.cleanup.bind(this);\n\n\t\t\twindow.addEventListener(\"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.addEventListener(\"afterprint\", this.afterprintEventHandler);\n\t\t\tthis.subscribe(\"table-destroy\", this.destroy.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\n\t}\n\n\tdestroy(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\twindow.removeEventListener( \"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.removeEventListener( \"afterprint\", this.afterprintEventHandler );\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\treplaceTable(){\n\t\tif(!this.manualBlock){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t}\n\n\tcleanup(){\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif(this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t}\n\n\tprintFullscreen(visible, style, config){\n\t\tvar scrollX = window.scrollX,\n\t\tscrollY = window.scrollY,\n\t\theaderEl = document.createElement(\"div\"),\n\t\tfooterEl = document.createElement(\"div\"),\n\t\ttableEl = this.table.modules.export.generateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\n\t\theaderContent, footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif(this.table.options.printHeader){\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif(typeof headerContent == \"string\"){\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t}else{\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif(this.table.options.printFooter){\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\n\t\t\tif(typeof footerContent == \"string\"){\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t}else{\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif(this.table.options.printFormatter){\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t}\n}\n\nPrint.moduleName = \"print\";\n\nexport default Print;","import Module from '../../core/Module.js';\n\nclass ReactiveData extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t\t\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.reactiveData){\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\n\t\t}\n\t}\n\t\n\twatchData(data){\n\t\tvar self = this,\n\t\tversion;\n\t\t\n\t\tthis.currentVersion ++;\n\t\t\n\t\tversion = this.currentVersion;\n\t\t\n\t\tthis.unwatchData();\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\t//override array push function\n\t\tthis.origFuncs.push = data.push;\n\t\t\n\t\tObject.defineProperty(this.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\t\n\t\t\t\t\tself.block(\"data-push\");\n\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.push.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-push\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array unshift function\n\t\tthis.origFuncs.unshift = data.unshift;\n\t\t\n\t\tObject.defineProperty(this.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-unshift\");\n\t\t\t\t\t\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.unshift.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-unshift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array shift function\n\t\tthis.origFuncs.shift = data.shift;\n\t\t\n\t\tObject.defineProperty(this.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-shift\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.shift.call(data);\n\n\t\t\t\t\tself.unblock(\"data-shift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array pop function\n\t\tthis.origFuncs.pop = data.pop;\n\t\t\n\t\tObject.defineProperty(this.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-pop\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.pop.call(data);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-pop\");\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array splice function\n\t\tthis.origFuncs.splice = data.splice;\n\t\t\n\t\tObject.defineProperty(this.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\tend = args[1],\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\n\t\t\t\tstartRow, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-splice\");\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif(newRows){\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(startRow){\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\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\t\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif(end !== 0){\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\t\t\t\t\t\t\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 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\t\n\t\t\t\t\tif(newRows || end !== 0){\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.splice.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-splice\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result ;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchData(){\n\t\tif(this.data !== false){\n\t\t\tfor(var key in this.origFuncs){\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable:true,\n\t\t\t\t\twritable:true,\n\t\t\t\t\tvalue: this.origFuncs.key,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\t\t\n\t\tif(this.table.options.dataTree){\n\t\t\tthis.watchTreeChildren(row);\n\t\t}\n\t}\n\t\n\twatchTreeChildren (row){\n\t\tvar self = this,\n\t\tchildField = row.getData()[this.table.options.dataTreeChildField],\n\t\torigFuncs = {};\n\t\t\n\t\tif(childField){\n\t\t\t\n\t\t\torigFuncs.push = childField.push;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"push\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-push\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-push\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.unshift = childField.unshift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-unshift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-unshift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.shift = childField.shift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-shift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.shift.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-shift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.pop = childField.pop;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-pop\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.pop.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-pop\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.splice = childField.splice;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-splice\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-splice\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trebuildTree(row){\n\t\tthis.table.modules.dataTree.initializeRow(row);\n\t\tthis.table.modules.dataTree.layoutRow(row);\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\t\n\twatchKey(row, data, key){\n\t\tvar self = this,\n\t\tprops = Object.getOwnPropertyDescriptor(data, key),\n\t\tvalue = data[key],\n\t\tversion = this.currentVersion;\n\t\t\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: (newValue) => {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"key\");\n\t\t\t\t\t\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"key\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(props.set){\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget:() => {\n\t\t\t\t\n\t\t\t\tif(props.get){\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue:data[key],\n\t\t\t});\n\t\t}\n\t}\n\t\n\tblock(key){\n\t\tif(!this.blocked){\n\t\t\tthis.blocked = key;\n\t\t}\n\t}\n\t\n\tunblock(key){\n\t\tif(this.blocked === key){\n\t\t\tthis.blocked = false;\n\t\t}\n\t}\n}\n\nReactiveData.moduleName = \"reactiveData\";\n\nexport default ReactiveData;\n\n\n\n","import Module from '../../core/Module.js';\n\nclass ResizeColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.latestX = false;\n\t\tthis.handle = null;\n\t\tthis.initialNextColumn = null;\n\t\tthis.nextColumn = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.registerColumnOption(\"resizable\", true);\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\n\t}\n\t\n\tinitializeEventWatchers(){\n\t\tif(!this.initialized){\n\t\t\t\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\n\t\t\tthis.subscribe(\"column-width\", this.columnWidthUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t\n\tlayoutCellHandles(cell){\n\t\tif(cell.row.type === \"row\"){\n\t\t\tthis.deInitializeComponent(cell);\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\n\t\t}\n\t}\n\t\n\tlayoutColumnHeader(column){\n\t\tif(column.definition.resizable){\n\t\t\tthis.initializeEventWatchers();\n\t\t\tthis.deInitializeComponent(column);\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\n\t\t}\n\t}\n\t\n\tcolumnLayoutUpdated(column){\n\t\tvar prev = column.prevColumn();\n\t\t\n\t\tthis.reinitializeColumn(column);\n\t\t\n\t\tif(prev){\n\t\t\tthis.reinitializeColumn(prev);\n\t\t}\n\t}\n\t\n\tcolumnWidthUpdated(column){\n\t\tif(column.modules.frozen){\n\t\t\tif(this.table.modules.frozenColumns.leftColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}else if(this.table.modules.frozenColumns.rightColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfrozenColumnOffset(column){\n\t\tvar offset = false;\n\n\t\tif(column.modules.frozen){\n\t\t\toffset = column.modules.frozen.marginValue; \n\n\t\t\tif(column.modules.frozen.position === \"left\"){\n\t\t\t\toffset += column.getWidth() - 3;\n\t\t\t}else{\n\t\t\t\tif(offset){\n\t\t\t\t\toffset -= 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn offset !== false ? offset + \"px\" : false;\n\t}\n\t\n\treinitializeColumn(column){\n\t\tvar frozenOffset = this.frozenColumnOffset(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\n\t\t\t\tif(frozenOffset){\n\t\t\t\t\tcell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t\t\tcell.modules.resize.handleEl.style[\"z-index\"] = 11;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\n\t\t\tif(frozenOffset){\n\t\t\t\tcolumn.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\n\t\t}\n\t}\n\t\n\tinitializeColumn(type, component, column, element){\n\t\tvar self = this,\n\t\tvariableHeight = false,\n\t\tmode = column.definition.resizable,\n\t\tconfig = {},\n\t\tnearestColumn = column.getLastColumn();\n\t\t\n\t\t//set column resize mode\n\t\tif(type === \"header\"){\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tconfig = {variableHeight:variableHeight};\n\t\t}\n\t\t\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\n\t\t\t\n\t\t\tvar handle = document.createElement('span');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\t\t\t\n\t\t\thandle.addEventListener(\"click\", function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t\tvar handleDown = function(e){\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t};\n\t\t\t\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\t\t\t\n\t\t\t//resize column on double click\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\n\t\t\t\t\n\t\t\t\te.stopPropagation();\n\t\t\t\tnearestColumn.reinitializeWidth(true);\n\t\t\t\t\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(column.modules.frozen){\n\t\t\t\thandle.style.position = \"sticky\";\n\t\t\t\thandle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);\n\t\t\t}\n\t\t\t\n\t\t\tconfig.handleEl = handle;\n\t\t\t\n\t\t\tif(element.parentNode && column.visible){\n\t\t\t\telement.after(handle);\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tcomponent.modules.resize = config;\n\t}\n\t\n\tdeInitializeColumn(column){\n\t\tthis.deInitializeComponent(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tthis.deInitializeComponent(cell);\n\t\t});\n\t}\n\t\n\tdeInitializeComponent(component){\n\t\tvar handleEl;\n\t\t\n\t\tif(component.modules.resize){\n\t\t\thandleEl = component.modules.resize.handleEl;\n\t\t\t\n\t\t\tif(handleEl && handleEl.parentElement){\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tresizeHandle(component, height){\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\n\t\t}\n\t}\n\t\n\t_checkResizability(column){\n\t\treturn column.definition.resizable;\n\t}\n\t\n\t_mouseDown(e, column, handle){\n\t\tvar self = this;\n\t\t\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tfunction mouseMove(e){\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\n\t\t\tstartDiff = x - self.startX,\n\t\t\tmoveDiff = x - self.latestX,\n\t\t\tblockedBefore, blockedAfter;\n\t\t\t\n\t\t\tself.latestX = x;\n\t\t\t\n\t\t\tif(self.table.rtl){\n\t\t\t\tstartDiff = -startDiff;\n\t\t\t\tmoveDiff = -moveDiff;\n\t\t\t}\n\t\t\t\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\n\t\t\t\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tif(moveDiff < 0){\n\t\t\t\tself.nextColumn = self.initialNextColumn;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\n\t\t\t\t\n\t\t\t\tif(moveDiff > 0){\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(self.nextColumn){\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.table.columnManager.rerenderColumns(true);\n\t\t\t\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction mouseUp(e){\n\t\t\t\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif(self.startColumn.modules.edit){\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\t\t\t\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\t\t\t\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(self.startWidth !== column.getWidth()){\n\t\t\t\tself.table.columnManager.verticalAlignHeaders();\n\n\t\t\t\tself.dispatch(\"column-resized\", column);\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\n\t\t\t}\n\t\t}\n\t\t\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\t\t\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 = true;\n\t\t}\n\t\t\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.latestX = self.startX;\n\t\tself.startWidth = column.getWidth();\n\t\t\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeColumns.moduleName = \"resizeColumns\";\n\nexport default ResizeColumns;","import Module from '../../core/Module.js';\n\nclass ResizeRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.resizableRows){\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\trowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-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(e){\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\n\t\tprevHandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function(e){\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif(prevRow){\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\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\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t}\n\n\t_mouseDown(e, row, handle){\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e){\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e){\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\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 = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeRows.moduleName = \"resizeRows\";\n\nexport default ResizeRows;","import Module from '../../core/Module.js';\n\nclass ResizeTable extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.binding = false;\n\t\tthis.visibilityObserver = false;\n\t\tthis.resizeObserver = false;\n\t\tthis.containerObserver = false;\n\t\t\n\t\tthis.tableHeight = 0;\n\t\tthis.tableWidth = 0;\n\t\tthis.containerHeight = 0;\n\t\tthis.containerWidth = 0;\n\t\t\n\t\tthis.autoResize = false;\n\t\t\n\t\tthis.visible = false;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.initialRedraw = false;\n\t\t\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.autoResize){\n\t\t\tvar table = this.table,\n\t\t\ttableStyle;\n\t\t\t\n\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\n\t\t\tif(table.element.parentNode){\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof IntersectionObserver !== \"undefined\" && typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\n\t\t\t\t\n\t\t\t\tthis.initializeVisibilityObserver();\n\t\t\t\t\n\t\t\t\tthis.autoResize = true;\n\t\t\t\t\n\t\t\t\tthis.resizeObserver = new ResizeObserver((entry) => {\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(table.element.parentNode){\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.resizeObserver.observe(table.element);\n\t\t\t\t\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\n\t\t\t\t\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.binding = function(){\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\ttable.columnManager.rerenderColumns(true);\n\t\t\t\t\t\ttable.redraw();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeVisibilityObserver(){\n\t\tthis.visibilityObserver = new IntersectionObserver((entries) => {\n\t\t\tthis.visible = entries[0].isIntersecting;\n\t\t\t\n\t\t\tif(!this.initialized){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.initialRedraw = !this.visible;\n\t\t\t}else{\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.redrawTable(this.initialRedraw);\n\t\t\t\t\tthis.initialRedraw = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.visibilityObserver.observe(this.table.element);\n\t}\n\t\n\tredrawTable(force){\n\t\tif(this.initialized && this.visible){\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\t\t\tthis.table.redraw(force);\n\t\t}\n\t}\n\t\n\ttableResized(){\n\t\tthis.table.rowManager.redraw();\n\t}\n\t\n\tclearBindings(){\n\t\tif(this.binding){\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\t\t\n\t\tif(this.resizeObserver){\n\t\t\tthis.resizeObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.visibilityObserver){\n\t\t\tthis.visibilityObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.containerObserver){\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t\t}\n\t}\n}\n\nResizeTable.moduleName = \"resizeTable\";\n\nexport default ResizeTable;","import Module from '../../core/Module.js';\n\nclass ResponsiveLayout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t\tthis.collapseHandleColumn = false;\n\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\n\n\t\tthis.registerColumnOption(\"responsive\");\n\t}\n\n\t//generate responsive columns list\n\tinitialize(){\n\t\tif(this.table.options.responsiveLayout){\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\n\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.generateCollapsedRowContent.bind(this));\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\ttableRedraw(force){\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\n\t\t\tif(!force){\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeResponsivity(){\n\t\tvar columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//determine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\n\t\t\tif(column.modules.responsive){\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\n\t\t//assign collapse column\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\n\t\t\t\tthis.collapseHandleColumn = col;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(this.collapseHandleColumn){\n\t\t\tif(this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}else{\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//define layout information\n\tinitializeColumn(column){\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\n\t}\n\n\tinitializeRow(row){\n\t\tvar el;\n\n\t\tif(row.type !== \"calc\"){\n\t\t\tel = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement:el,\n\t\t\t\topen:this.collapseStartOpen,\n\t\t\t};\n\n\t\t\tif(!this.collapseStartOpen){\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tlayoutRow(row){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t}\n\n\t//update column visibility\n\tupdateColumnVisibility(column, responsiveToggle){\n\t\tif(!responsiveToggle && column.modules.responsive){\n\t\t\tcolumn.modules.responsive.visible = column.visible;\n\t\t\tthis.initializeResponsivity();\n\t\t}\n\t}\n\n\thideColumn(column){\n\t\tvar colCount = this.hiddenColumns.length;\n\n\t\tcolumn.hide(false, true);\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !colCount){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}\n\t\t}\n\t}\n\n\tshowColumn(column){\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//redraw columns to fit space\n\tupdate(){\n\t\tvar working = true;\n\n\t\twhile(working){\n\n\t\t\tlet width = this.table.modules.layout.getMode() == \"fitColumns\" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth();\n\n\t\t\tlet diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width;\n\n\t\t\tif(diff < 0){\n\t\t\t\t//table is too wide\n\t\t\t\tlet column = this.columns[this.index];\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.hideColumn(column);\n\t\t\t\t\tthis.index ++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t//table has spare space\n\t\t\t\tlet column = this.columns[this.index -1];\n\n\t\t\t\tif(column){\n\t\t\t\t\tif(diff > 0){\n\t\t\t\t\t\tif(diff >= column.getWidth()){\n\t\t\t\t\t\t\tthis.showColumn(column);\n\t\t\t\t\t\t\tthis.index --;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\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}\n\n\t\t\tif(!this.table.rowManager.activeRowsCount){\n\t\t\t\tthis.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedContent(){\n\t\tvar rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach((row) => {\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t});\n\t}\n\n\tgenerateCollapsedRowContent(row){\n\t\tvar el, contents;\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\n\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif(contents){\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedRowData(row){\n\t\tvar data = row.getData(),\n\t\toutput = [],\n\t\tmockCellComponent;\n\n\t\tthis.hiddenColumns.forEach((column) => {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif(column.definition.title && column.field){\n\t\t\t\tif(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue:false,\n\t\t\t\t\t\tdata:{},\n\t\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction onRendered(callback){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tformatCollapsedData(data){\n\t\tvar list = document.createElement(\"table\");\n\n\t\tdata.forEach(function(item){\n\t\t\tvar row = document.createElement(\"tr\");\n\t\t\tvar titleData = document.createElement(\"td\");\n\t\t\tvar valueData = document.createElement(\"td\");\n\t\t\tvar node_content;\n\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\t\ttitleData.appendChild(titleHighlight);\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\n\t\t\t});\n\n\t\t\tif(item.value instanceof Node){\n\t\t\t\tnode_content = document.createElement(\"div\");\n\t\t\t\tnode_content.appendChild(item.value);\n\t\t\t\tvalueData.appendChild(node_content);\n\t\t\t}else{\n\t\t\t\tvalueData.innerHTML = item.value;\n\t\t\t}\n\n\t\t\trow.appendChild(titleData);\n\t\t\trow.appendChild(valueData);\n\t\t\tlist.appendChild(row);\n\t\t}, this);\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t}\n}\n\nResponsiveLayout.moduleName = \"responsiveLayout\";\n\nexport default ResponsiveLayout;\n","import Module from '../../core/Module.js';\n\nclass SelectRow extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t\tthis.headerCheckboxElement = null; // hold header select element\n\t\t\n\t\tthis.registerTableOption(\"selectableRows\", \"highlight\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRowsRangeMode\", \"drag\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRowsRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\n\t\tthis.registerTableOption(\"selectableRowsPersistence\", true); // maintain selection when table view is updated\n\t\tthis.registerTableOption(\"selectableRowsCheck\", function(data, row){return true;}); //check whether row is selectable\n\t\t\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\n\t}\n\t\n\tinitialize(){\n\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tif(this.table.options.selectableRows === \"highlight\" && this.table.options.selectableRange){\n\t\t\tthis.table.options.selectableRows = false;\n\t\t}\n\n\t\tif(this.table.options.selectableRows !== false){\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.selectableRows && !this.table.options.selectableRowsPersistence){\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"selectable\", \"selectableRows\", true);\n\t\tthis.deprecationCheck(\"selectableRollingSelection\", \"selectableRowsRollingSelection\", true);\n\t\tthis.deprecationCheck(\"selectableRangeMode\", \"selectableRowsRangeMode\", true);\n\t\tthis.deprecationCheck(\"selectablePersistence\", \"selectableRowsPersistence\", true);\n\t\tthis.deprecationCheck(\"selectableCheck\", \"selectableRowsCheck\", true);\n\t}\n\t\n\trowRetrieve(type, prevValue){\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\n\t}\n\t\n\trowDeleted(row){\n\t\tthis._deselectRow(row, true);\n\t}\n\t\n\tclearSelectionData(silent){\n\t\tvar prevSelected = this.selectedRows.length;\n\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\t\t\n\t\tif(prevSelected && silent !== true){\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t}\n\t\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tselectable = self.checkRowSelectability(row),\n\t\telement = row.getElement();\n\t\t\n\t\t// trigger end of row selection\n\t\tvar endSelect = function(){\n\t\t\t\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\t\t\n\t\trow.modules.select = {selected:false};\n\n\t\telement.classList.toggle(\"tabulator-selectable\", selectable);\n\t\telement.classList.toggle(\"tabulator-unselectable\", !selectable);\n\t\t\n\t\t//set row selection class\n\t\tif(self.checkRowSelectability(row)){\t\t\t\n\t\t\tif(self.table.options.selectableRows && self.table.options.selectableRows != \"highlight\"){\n\t\t\t\tif(self.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\n\t\t\t\t}else{\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!self.selecting){\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selecting = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selectPrev = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\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\t\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\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\t\n\thandleComplexRowClick(row, e){\n\t\tif(e.shiftKey){\n\t\t\tthis.table._clearSelection();\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\n\t\t\t\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\n\t\t\t\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\t\t\t\n\t\t\tif(e.ctrlKey || e.metaKey){\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.options.selectableRows !== true && !this.isRowSelected(row)){\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectableRows){\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.lastClickedRow = row;\n\t\t\t}else{\n\t\t\t\tthis.deselectRows(undefined, true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.selectableRows !== true){\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectableRows){\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectableRows);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectRows(toggledRows);\n\t\t\t}\n\t\t\tthis.table._clearSelection();\n\t\t}\n\t\telse if(e.ctrlKey || e.metaKey){\n\t\t\tthis.toggleRow(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}else{\n\t\t\tthis.deselectRows(undefined, true);\n\t\t\tthis.selectRows(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}\n\t}\n\n\tcheckRowSelectability(row){\n\t\tif(row && row.type === \"row\"){\n\t\t\treturn this.table.options.selectableRowsCheck.call(this.table, row.getComponent());\n\t\t}\n\n\t\treturn false;\n\t}\n\t\n\t//toggle row selection\n\ttoggleRow(row){\n\t\tif(this.checkRowSelectability(row)){\n\t\t\tif(row.modules.select && row.modules.select.selected){\n\t\t\t\tthis._deselectRow(row);\n\t\t\t}else{\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//select a number of rows\n\tselectRows(rows){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"number\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._selectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(false, changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._selectRow(rowMatch, false, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//select an individual row\n\t_selectRow(rowInfo, silent, force){\n\t\t//handle max row count\n\t\tif(!isNaN(this.table.options.selectableRows) && this.table.options.selectableRows !== true && !force){\n\t\t\tif(this.selectedRows.length >= this.table.options.selectableRows){\n\t\t\t\tif(this.table.options.selectableRowsRollingSelection){\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t}else{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\t\t\n\t\tif(row){\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectedRows.push(row);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tthis._rowSelectionChanged(silent, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisRowSelected(row){\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t}\n\t\n\t//deselect a number of rows\n\tdeselectRows(rows, silent){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = Object.assign([], this.selectedRows);\n\t\t\t\tbreak;\n\n\t\t\tcase \"number\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._deselectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(silent, [], changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._deselectRow(rowMatch, silent, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//deselect an individual row\n\t_deselectRow(rowInfo, silent){\n\t\tvar self = this,\n\t\trow = self.table.rowManager.findRow(rowInfo),\n\t\tindex, element;\n\t\t\n\t\tif(row){\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\t\t\t\n\t\t\tif(index > -1){\n\n\t\t\t\telement = row.getElement();\n\t\t\t\t\n\t\t\t\tif(element){\n\t\t\t\t\telement.classList.remove(\"tabulator-selected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t\t}\n\t\t\t\tself.selectedRows.splice(index, 1);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tself._rowSelectionChanged(silent, undefined, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetSelectedData(){\n\t\tvar data = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetSelectedRows(){\n\t\tvar rows = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\trows.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t_rowSelectionChanged(silent, selected = [], deselected = []){\n\t\tif(this.headerCheckboxElement){\n\t\t\tif(this.selectedRows.length === 0){\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\n\t\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else {\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(!silent){\n\t\t\tif(!Array.isArray(selected)){\n\t\t\t\tselected = [selected];\n\t\t\t}\n\n\t\t\tselected = selected.map(row => row.getComponent());\n\n\t\t\tif(!Array.isArray(deselected)){\n\t\t\t\tdeselected = [deselected];\n\t\t\t}\n\n\t\t\tdeselected = deselected.map(row => row.getComponent());\n\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows(), selected, deselected);\n\t\t}\n\t}\n\t\n\tregisterRowSelectCheckbox (row, element) {\n\t\tif(!row._row.modules.select){\n\t\t\trow._row.modules.select = {};\n\t\t}\n\t\t\n\t\trow._row.modules.select.checkboxEl = element;\n\t}\n\t\n\tregisterHeaderSelectCheckbox (element) {\n\t\tthis.headerCheckboxElement = element;\n\t}\n\t\n\tchildRowSelection(row, select){\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\t\t\n\t\tif(select){\n\t\t\tfor(let child of children){\n\t\t\t\tthis._selectRow(child, true);\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let child of children){\n\t\t\t\tthis._deselectRow(child, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nSelectRow.moduleName = \"selectRow\";\n\nexport default SelectRow;","//sort numbers\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar decimal = params.decimalSeparator;\n\tvar thousand = params.thousandSeparator;\n\tvar emptyAlign = 0;\n\n\ta = String(a);\n\tb = String(b);\n\n\tif(thousand){\n\t\ta = a.split(thousand).join(\"\");\n\t\tb = b.split(thousand).join(\"\");\n\t}\n\n\tif(decimal){\n\t\ta = a.split(decimal).join(\".\");\n\t\tb = b.split(decimal).join(\".\");\n\t}\n\n\ta = parseFloat(a);\n\tb = parseFloat(b);\n\n\t//handle non numeric values\n\tif(isNaN(a)){\n\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t}else if(isNaN(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\treturn a - b;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort strings\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\tvar locale;\n\n\t//handle empty values\n\tif(!a){\n\t\temptyAlign = !b ? 0 : -1;\n\t}else if(!b){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\tswitch(typeof params.locale){\n\t\t\tcase \"boolean\":\n\t\t\t\tif(params.locale){\n\t\t\t\t\tlocale = this.langLocale();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tlocale = params.locale;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort datetime\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tif(typeof DT != \"undefined\"){\n\t\tif(!DT.isDateTime(a)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\ta = DT.fromISO(String(a));\n\t\t\t}else{\n\t\t\t\ta = DT.fromFormat(String(a), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!DT.isDateTime(b)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\tb = DT.fromISO(String(b));\n\t\t\t}else{\n\t\t\t\tb = DT.fromFormat(String(b), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!a.isValid){\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\n\t\t}else if(!b.isValid){\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\n\t}else{\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\n\t}\n}","import datetime from './datetime.js';\n\n//sort date\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"dd/MM/yyyy\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","import datetime from './datetime.js';\n\n//sort times\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"HH:mm\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","//sort booleans\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\treturn el1 - el2;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar type = params.type || \"length\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tfunction calc(value){\n\t\tvar result;\n\n\t\tswitch(type){\n\t\t\tcase \"length\":\n\t\t\t\tresult = value.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"sum\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"max\":\n\t\t\t\tresult = Math.max.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"min\":\n\t\t\t\tresult = Math.min.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"avg\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t}) / value.length;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t//handle non array values\n\tif(!Array.isArray(a)){\n\t\temptyAlign = !Array.isArray(b) ? 0 : -1;\n\t}else if(!Array.isArray(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\treturn calc(b) - calc(a);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\treturn el1 - el2;\n}","//sort alpha numeric strings\nexport default function(as, bs, aRow, bRow, column, dir, params){\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\n\t//handle empty values\n\tif(!as && as!== 0){\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t}else if(!bs && bs!== 0){\n\t\temptyAlign = 1;\n\t}else{\n\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\ta = String(as).toLowerCase();\n\t\tb = String(bs).toLowerCase();\n\t\tif(a === b) return 0;\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\ta = a.match(rx);\n\t\tb = b.match(rx);\n\t\tL = a.length > b.length ? b.length : a.length;\n\t\twhile(i < L){\n\t\t\ta1= a[i];\n\t\t\tb1= b[i++];\n\t\t\tif(a1 !== b1){\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\treturn a1 - b1;\n\t\t\t\t}\n\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\treturn a.length > b.length;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import number from './sorters/number.js';\nimport string from './sorters/string.js';\nimport date from './sorters/date.js';\nimport time from './sorters/time.js';\nimport datetime from './sorters/datetime.js';\nimport boolean from './sorters/boolean.js';\nimport array from './sorters/array.js';\nimport exists from './sorters/exists.js';\nimport alphanum from './sorters/alphanum.js';\n\nexport default {\n\tnumber:number,\n\tstring:string,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tboolean:boolean,\n\tarray:array,\n\texists:exists,\n\talphanum:alphanum\n};","import Module from '../../core/Module.js';\n\nimport defaultSorters from './defaults/sorters.js';\n\nclass Sort extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\t\t\n\t\tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\n\t\t\n\t\tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\n\t\tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\n\t\tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\n\t\tthis.registerTableOption(\"headerSortElement\", \"
        \"); //header sort element\n\t\tthis.registerTableOption(\"headerSortClickElement\", \"header\"); //element which triggers sort when clicked\n\t\t\n\t\tthis.registerColumnOption(\"sorter\");\n\t\tthis.registerColumnOption(\"sorterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"headerSort\", true);\n\t\tthis.registerColumnOption(\"headerSortStartingDir\");\n\t\tthis.registerColumnOption(\"headerSortTristate\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.registerDataHandler(this.sort.bind(this), 20);\n\t\t\n\t\tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\n\t\tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\n\t\tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\n\t\t\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\n\t\t}\n\t}\n\t\n\ttableBuilt(){\n\t\tif(this.table.options.initialSort){\n\t\t\tthis.setSort(this.table.options.initialSort);\n\t\t}\n\t}\n\t\n\tremoteSortParams(data, config, silent, params){\n\t\tvar sorters = this.getSort();\n\t\t\n\t\tsorters.forEach((item) => {\n\t\t\tdelete item.column;\n\t\t});\n\t\t\n\t\tparams.sort = sorters;\n\t\t\n\t\treturn params;\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetSort(sortList, dir){\n\t\tthis.setSort(sortList, dir);\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\t\n\tclearSort(){\n\t\tthis.clear();\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\t//initialize column header for sorting\n\tinitializeColumn(column){\n\t\tvar sorter = false,\n\t\tcolEl,\n\t\tarrowEl;\n\t\t\n\t\tswitch(typeof column.definition.sorter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Sort.sorters[column.definition.sorter]){\n\t\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tcolumn.modules.sort = {\n\t\t\tsorter:sorter, dir:\"none\",\n\t\t\tparams:column.definition.sorterParams || {},\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate,\n\t\t};\n\t\t\n\t\tif(column.definition.headerSort !== false){\n\t\t\t\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\t\t\t\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\t\t\t\n\t\t\tswitch(this.table.options.headerSortClickElement){\n\t\t\t\tcase \"icon\":\n\t\t\t\t\tarrowEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"header\":\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch(this.table.options.headerSortElement){\n\t\t\t\tcase \"function\":\n\t\t\t\t//do nothing\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"object\":\n\t\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t\t}\n\t\t\t\n\t\t\t//create sorter arrow\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\n\t\t\t\n\t\t\tcolumn.modules.sort.element = arrowEl;\n\t\t\t\n\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t\n\t\t\tif(this.table.options.headerSortClickElement === \"icon\"){\n\t\t\t\tarrowEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//sort on click\n\t\t\t(this.table.options.headerSortClickElement === \"icon\" ? arrowEl : colEl).addEventListener(\"click\", (e) => {\n\t\t\t\tvar dir = \"\",\n\t\t\t\tsorters=[],\n\t\t\t\tmatch = false;\n\t\t\t\t\n\t\t\t\tif(column.modules.sort){\n\t\t\t\t\tif(column.modules.sort.tristate){\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tdir = \"none\";\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\tswitch(column.modules.sort.dir){\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = this.getSort();\n\t\t\t\t\t\t\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(match > -1){\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\t\t\t\t\t\t\t\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}else{\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tthis.setSort(sorters);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(dir == \"none\"){\n\t\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tthis.setSort(column, dir);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\n\t\t\t\t\tthis.refreshSort();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trefreshSort(){\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.reloadData(null, false, false);\n\t\t}else{\n\t\t\tthis.refreshData(true);\n\t\t}\n\t\t\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\t\n\t//check if the sorters have changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\t\n\t//return current sorters\n\tgetSort(){\n\t\tvar self = this,\n\t\tsorters = [];\n\t\t\n\t\tself.sortList.forEach(function(item){\n\t\t\tif(item.column){\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn sorters;\n\t}\n\t\n\t//change sort list and trigger sort\n\tsetSort(sortList, dir){\n\t\tvar self = this,\n\t\tnewSortList = [];\n\t\t\n\t\tif(!Array.isArray(sortList)){\n\t\t\tsortList = [{column: sortList, dir:dir}];\n\t\t}\n\t\t\n\t\tsortList.forEach(function(item){\n\t\t\tvar column;\n\t\t\t\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t\tself.sortList = newSortList;\n\t\t\n\t\tthis.dispatch(\"sort-changed\");\n\t}\n\t\n\t//clear sorters\n\tclear(){\n\t\tthis.setSort([]);\n\t}\n\t\n\t//find appropriate sorter for column\n\tfindSorter(column){\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\tsorter = \"string\",\n\t\tfield, value;\n\t\t\n\t\tif(row){\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\t\t\t\n\t\t\tif(field){\n\t\t\t\t\n\t\t\t\tvalue = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Sort.sorters[sorter];\n\t}\n\t\n\t//work through sort list sorting data\n\tsort(data){\n\t\tvar self = this,\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t\tsortListActual = [],\n\t\trowComponents = [];\n\t\t\n\t\tif(this.subscribedExternal(\"dataSorting\")){\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\n\t\t}\n\t\t\n\t\tself.clearColumnHeaders();\n\t\t\n\t\tif(this.table.options.sortMode !== \"remote\"){\n\t\t\t\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tvar sortObj;\n\t\t\t\t\n\t\t\t\tif(item.column){\n\t\t\t\t\tsortObj = item.column.modules.sort;\n\t\t\t\t\t\n\t\t\t\t\tif(sortObj){\n\t\t\t\t\t\t\n\t\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\t\tif(!sortObj.sorter){\n\t\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\t\t\t\t\t\t\n\t\t\t\t\t\tsortListActual.push(item);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t//sort data\n\t\t\tif (sortListActual.length) {\n\t\t\t\tself._sortItems(data, sortListActual);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataSorted\")){\n\t\t\tdata.forEach((row) => {\n\t\t\t\trowComponents.push(row.getComponent());\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//clear sort arrows on columns\n\tclearColumnHeaders(){\n\t\tthis.table.columnManager.getRealColumns().forEach((column) => {\n\t\t\tif(column.modules.sort){\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//set the column header sort direction\n\tsetColumnHeader(column, dir){\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir === \"asc\" ? \"ascending\" : \"descending\");\n\t\tthis.setColumnHeaderSortIcon(column, dir);\n\t}\n\t\n\tsetColumnHeaderSortIcon(column, dir){\n\t\tvar sortEl = column.modules.sort.element,\n\t\tarrowEl;\n\t\t\n\t\tif(column.definition.headerSort && typeof this.table.options.headerSortElement === \"function\"){\n\t\t\twhile(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild);\n\t\t\t\n\t\t\tarrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir);\n\t\t\t\n\t\t\tif(typeof arrowEl === \"object\"){\n\t\t\t\tsortEl.appendChild(arrowEl);\n\t\t\t}else{\n\t\t\t\tsortEl.innerHTML = arrowEl;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//sort each item in sort list\n\t_sortItems(data, sortList){\n\t\tvar sorterCount = sortList.length - 1;\n\t\t\n\t\tdata.sort((a, b) => {\n\t\t\tvar result;\n\t\t\t\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\n\t\t\t\tlet sortItem = sortList[i];\n\t\t\t\t\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\t\t\t\t\n\t\t\t\tif(result !== 0){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn result;\n\t\t});\n\t}\n\t\n\t//process individual rows for a sort function on active data\n\t_sortRow(a, b, column, dir, params){\n\t\tvar el1Comp, el2Comp;\n\t\t\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\t\t\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\t\t\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\t\t\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\t\t\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t}\n}\n\nSort.moduleName = \"sort\";\n\n//load defaults\nSort.sorters = defaultSorters;\n\nexport default Sort;\n","class RangeComponent {\n\tconstructor(range) {\n\t\tthis._range = range;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function (target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t} else {\n\t\t\t\t\treturn target._range.table.componentFunctionBinder.handle(\"range\", target._range, name);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\tgetElement() {\n\t\treturn this._range.element;\n\t}\n\n\tgetData() {\n\t\treturn this._range.getData();\n\t}\n\n\tgetCells() {\n\t\treturn this._range.getCells(true);\n\t}\n\n\tgetStructuredCells() {\n\t\treturn this._range.getStructuredCells();\n\t}\n\n\tgetRows() {\n\t\treturn this._range.getRows().map((row) => row.getComponent());\n\t}\n\n\tgetColumns() {\n\t\treturn this._range.getColumns().map((column) => column.getComponent());\n\t}\n\t\n\tgetBounds() {\n\t\treturn this._range.getBounds();\n\t}\n\n\tgetTopEdge() {\n\t\treturn this._range.top;\n\t}\n\n\tgetBottomEdge() {\n\t\treturn this._range.bottom;\n\t}\n\n\tgetLeftEdge() {\n\t\treturn this._range.left;\n\t}\n\n\tgetRightEdge() {\n\t\treturn this._range.right;\n\t}\n\n\tsetBounds(start, end){\n\t\tif(this._range.destroyedGuard(\"setBounds\")){\n\t\t\tthis._range.setBounds(start ? start._cell : start, end ? end._cell : end);\n\t\t}\n\t}\n\n\tsetStartBound(start){\n\t\tif(this._range.destroyedGuard(\"setStartBound\")){\n\t\t\tthis._range.setEndBound(start ? start._cell : start);\n\t\t\tthis._range.rangeManager.layoutElement();\n\t\t}\n\t}\n\n\tsetEndBound(end){\n\t\tif(this._range.destroyedGuard(\"setEndBound\")){\n\t\t\tthis._range.setEndBound(end ? end._cell : end);\n\t\t\tthis._range.rangeManager.layoutElement();\n\t\t}\n\t}\n\n\tclearValues(){\n\t\tif(this._range.destroyedGuard(\"clearValues\")){\n\t\t\tthis._range.clearValues();\n\t\t}\n\t}\n\n\tremove(){\n\t\tif(this._range.destroyedGuard(\"remove\")){\n\t\t\tthis._range.destroy(true);\n\t\t}\n\t}\n}\n\nexport default RangeComponent;\n","import CoreFeature from '../../core/CoreFeature.js';\nimport RangeComponent from \"./RangeComponent\";\n\nclass Range extends CoreFeature{\n\tconstructor(table, rangeManager, start, end) {\n\t\tsuper(table);\n\t\t\n\t\tthis.rangeManager = rangeManager;\n\t\tthis.element = null;\n\t\tthis.initialized = false;\n\t\tthis.initializing = {\n\t\t\tstart:false,\n\t\t\tend:false,\n\t\t};\n\t\tthis.destroyed = false;\n\t\t\n\t\tthis.top = 0;\n\t\tthis.bottom = 0;\n\t\tthis.left = 0;\n\t\tthis.right = 0;\n\t\t\n\t\tthis.table = table;\n\t\tthis.start = {row:0, col:0};\n\t\tthis.end = {row:0, col:0};\n\n\t\tif(this.rangeManager.rowHeader){\n\t\t\tthis.left = 1;\n\t\t\tthis.right = 1;\n\t\t\tthis.start.col = 1;\n\t\t\tthis.end.col = 1;\n\t\t}\n\t\t\n\t\tthis.initElement();\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tthis.initBounds(start, end);\n\t\t});\n\t}\n\t\n\tinitElement(){\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-range\");\n\t}\n\t\n\tinitBounds(start, end){\n\t\tthis._updateMinMax();\n\t\t\n\t\tif(start){\n\t\t\tthis.setBounds(start, end || start);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Boundary Setup ///////\n\t///////////////////////////////////\n\t\n\tsetStart(row, col) {\n\t\tif(this.start.row !== row || this.start.col !== col){\n\t\t\tthis.start.row = row;\n\t\t\tthis.start.col = col;\n\t\t\t\n\t\t\tthis.initializing.start = true;\n\t\t\tthis._updateMinMax();\n\t\t}\n\t}\n\t\n\tsetEnd(row, col) {\n\t\tif(this.end.row !== row || this.end.col !== col){\n\t\t\tthis.end.row = row;\n\t\t\tthis.end.col = col;\n\t\t\t\n\t\t\tthis.initializing.end = true;\n\t\t\tthis._updateMinMax();\n\t\t}\n\t}\n\t\n\tsetBounds(start, end, visibleRows){\n\t\tif(start){\n\t\t\tthis.setStartBound(start);\n\t\t}\n\t\t\n\t\tthis.setEndBound(end || start);\n\t\tthis.rangeManager.layoutElement(visibleRows);\n\t}\n\t\n\tsetStartBound(element){\n\t\tvar row, col;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(this.rangeManager.columnSelection){\n\t\t\t\tthis.setStart(0, element.getPosition() - 1);\n\t\t\t}\n\t\t}else{\n\t\t\trow = element.row.position - 1;\n\t\t\tcol = element.column.getPosition() - 1;\n\t\t\t\n\t\t\tif (element.column === this.rangeManager.rowHeader) {\n\t\t\t\tthis.setStart(row, 1);\n\t\t\t} else {\n\t\t\t\tthis.setStart(row, col);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tsetEndBound(element){\n\t\tvar rowsCount = this._getTableRows().length,\n\t\trow, col, isRowHeader;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(this.rangeManager.columnSelection){\n\t\t\t\tif (this.rangeManager.selecting === \"column\") {\n\t\t\t\t\tthis.setEnd(rowsCount - 1, element.getPosition() - 1);\n\t\t\t\t} else if (this.rangeManager.selecting === \"cell\") {\n\t\t\t\t\tthis.setEnd(0, element.getPosition() - 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\trow = element.row.position - 1;\n\t\t\tcol = element.column.getPosition() - 1;\n\t\t\tisRowHeader = element.column === this.rangeManager.rowHeader;\n\t\t\t\n\t\t\tif (this.rangeManager.selecting === \"row\") {\n\t\t\t\tthis.setEnd(row, this._getTableColumns().length - 1);\n\t\t\t} else if (this.rangeManager.selecting !== \"row\" && isRowHeader) {\n\t\t\t\tthis.setEnd(row, 0);\n\t\t\t} else if (this.rangeManager.selecting === \"column\") {\n\t\t\t\tthis.setEnd(rowsCount - 1, col);\n\t\t\t} else {\n\t\t\t\tthis.setEnd(row, col);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_updateMinMax() {\n\t\tthis.top = Math.min(this.start.row, this.end.row);\n\t\tthis.bottom = Math.max(this.start.row, this.end.row);\n\t\tthis.left = Math.min(this.start.col, this.end.col);\n\t\tthis.right = Math.max(this.start.col, this.end.col);\n\t\t\n\t\tif(this.initialized){\n\t\t\tthis.dispatchExternal(\"rangeChanged\", this.getComponent());\n\t\t}else{\n\t\t\tif(this.initializing.start && this.initializing.end){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.dispatchExternal(\"rangeAdded\", this.getComponent());\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_getTableColumns() {\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex();\n\t}\n\t\n\t_getTableRows() {\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Rendering ///////\n\t///////////////////////////////////\n\t\n\tlayout() {\n\t\tvar _vDomTop = this.table.rowManager.renderer.vDomTop,\n\t\t_vDomBottom = this.table.rowManager.renderer.vDomBottom,\n\t\t_vDomLeft = this.table.columnManager.renderer.leftCol,\n\t\t_vDomRight = this.table.columnManager.renderer.rightCol,\t\t\n\t\ttop, bottom, left, right, topLeftCell, bottomRightCell;\n\t\t\n\t\tif (_vDomTop == null) {\n\t\t\t_vDomTop = 0;\n\t\t}\n\t\t\n\t\tif (_vDomBottom == null) {\n\t\t\t_vDomBottom = Infinity;\n\t\t}\n\t\t\n\t\tif (_vDomLeft == null) {\n\t\t\t_vDomLeft = 0;\n\t\t}\n\t\t\n\t\tif (_vDomRight == null) {\n\t\t\t_vDomRight = Infinity;\n\t\t}\n\t\t\n\t\tif (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) {\n\t\t\ttop = Math.max(this.top, _vDomTop);\n\t\t\tbottom = Math.min(this.bottom, _vDomBottom);\n\t\t\tleft = Math.max(this.left, _vDomLeft);\n\t\t\tright = Math.min(this.right, _vDomRight);\n\t\t\t\n\t\t\ttopLeftCell = this.rangeManager.getCell(top, left);\n\t\t\tbottomRightCell = this.rangeManager.getCell(bottom, right);\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-range-active\");\n\t\t\t// this.element.classList.toggle(\"tabulator-range-active\", this === this.rangeManager.activeRange);\n\t\t\t\n\t\t\tthis.element.style.left = topLeftCell.row.getElement().offsetLeft + topLeftCell.getElement().offsetLeft + \"px\";\n\t\t\tthis.element.style.top = topLeftCell.row.getElement().offsetTop + \"px\";\n\t\t\tthis.element.style.width = bottomRightCell.getElement().offsetLeft + bottomRightCell.getElement().offsetWidth - topLeftCell.getElement().offsetLeft + \"px\";\n\t\t\tthis.element.style.height = bottomRightCell.row.getElement().offsetTop + bottomRightCell.row.getElement().offsetHeight - topLeftCell.row.getElement().offsetTop + \"px\";\n\t\t}\n\t}\n\t\n\tatTopLeft(cell) {\n\t\treturn cell.row.position - 1 === this.top && cell.column.getPosition() - 1 === this.left;\n\t}\n\t\n\tatBottomRight(cell) {\n\t\treturn cell.row.position - 1 === this.bottom && cell.column.getPosition() - 1 === this.right;\n\t}\n\t\n\toccupies(cell) {\n\t\treturn this.occupiesRow(cell.row) && this.occupiesColumn(cell.column);\n\t}\n\t\n\toccupiesRow(row) {\n\t\treturn this.top <= row.position - 1 && row.position - 1 <= this.bottom;\n\t}\n\t\n\toccupiesColumn(col) {\n\t\treturn this.left <= col.getPosition() - 1 && col.getPosition() - 1 <= this.right;\n\t}\n\t\n\toverlaps(left, top, right, bottom) {\n\t\tif ((this.left > right || left > this.right) || (this.top > bottom || top > this.bottom)){\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\treturn true;\n\t}\n\t\n\tgetData() {\n\t\tvar data = [],\n\t\trows = this.getRows(),\n\t\tcolumns = this.getColumns();\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tvar rowData = row.getData(),\n\t\t\tresult = {};\n\t\t\t\n\t\t\tcolumns.forEach((column) => {\n\t\t\t\tresult[column.field] = rowData[column.field];\n\t\t\t});\n\t\t\t\n\t\t\tdata.push(result);\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetCells(structured, component) {\n\t\tvar cells = [],\n\t\trows = this.getRows(),\n\t\tcolumns = this.getColumns();\n\t\t\n\t\tif (structured) {\n\t\t\tcells = rows.map((row) => {\n\t\t\t\tvar arr = [];\n\t\t\t\t\n\t\t\t\trow.getCells().forEach((cell) => {\n\t\t\t\t\tif (columns.includes(cell.column)) {\n\t\t\t\t\t\tarr.push(component ? cell.getComponent() : cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn arr;\n\t\t\t});\n\t\t} else {\n\t\t\trows.forEach((row) => {\n\t\t\t\trow.getCells().forEach((cell) => {\n\t\t\t\t\tif (columns.includes(cell.column)) {\n\t\t\t\t\t\tcells.push(component ? cell.getComponent() : cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn cells;\n\t}\n\t\n\tgetStructuredCells() {\n\t\treturn this.getCells(true, true);\n\t}\n\t\n\tgetRows() {\n\t\treturn this._getTableRows().slice(this.top, this.bottom + 1);\n\t}\n\t\n\tgetColumns() {\n\t\treturn this._getTableColumns().slice(this.left, this.right + 1);\n\t}\n\t\n\tclearValues(){\n\t\tvar cells = this.getCells();\n\t\tvar clearValue = this.table.options.selectableRangeClearCellsValue;\n\t\t\n\t\tthis.table.blockRedraw();\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tcell.setValue(clearValue);\n\t\t});\n\t\t\n\t\tthis.table.restoreRedraw();\n\t\t\n\t}\n\t\n\tgetBounds(component){\n\t\tvar cells = this.getCells(false, component),\n\t\toutput = {\n\t\t\tstart:null,\n\t\t\tend:null,\n\t\t};\n\t\t\n\t\tif(cells.length){\n\t\t\toutput.start = cells[0];\n\t\t\toutput.end = cells[cells.length - 1];\n\t\t}else{\n\t\t\tconsole.warn(\"No bounds defined on range\");\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponent() {\n\t\tif (!this.component) {\n\t\t\tthis.component = new RangeComponent(this);\n\t\t}\n\t\treturn this.component;\n\t}\n\t\n\tdestroy(notify) {\n\t\tthis.destroyed = true;\n\t\t\n\t\tthis.element.remove();\n\t\t\n\t\tif(notify){\n\t\t\tthis.rangeManager.rangeRemoved(this);\n\t\t}\n\t\t\n\t\tif(this.initialized){\n\t\t\tthis.dispatchExternal(\"rangeRemoved\", this.getComponent());\n\t\t}\n\t}\n\t\n\tdestroyedGuard(func){\n\t\tif(this.destroyed){\n\t\t\tconsole.warn(\"You cannot call the \" + func + \" function on a destroyed range\");\n\t\t}\n\t\t\n\t\treturn !this.destroyed;\n\t}\n}\n\nexport default Range;\n","import Module from \"../../core/Module.js\";\nimport Range from \"./Range.js\";\n\nclass SelectRange extends Module {\n\tconstructor(table) {\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = \"cell\";\n\t\tthis.mousedown = false;\n\t\tthis.ranges = [];\n\t\tthis.overlay = null;\n\t\tthis.rowHeader = null;\n\t\tthis.layoutChangeTimeout = null;\n\t\tthis.columnSelection = false;\n\t\tthis.rowSelection = false;\n\t\tthis.maxRanges = 0;\n\t\tthis.activeRange = false;\n\t\tthis.blockKeydown = false;\n\t\t\n\t\tthis.keyDownEvent = this._handleKeyDown.bind(this);\n\t\tthis.mouseUpEvent = this._handleMouseUp.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"selectableRange\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeColumns\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeRows\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeClearCells\", false); //allow clearing of active range\n\t\tthis.registerTableOption(\"selectableRangeClearCellsValue\", undefined); //value for cleared active range\n\n\t\tthis.registerTableFunction(\"getRangesData\", this.getRangesData.bind(this));\n\t\tthis.registerTableFunction(\"getRanges\", this.getRanges.bind(this));\n\t\tthis.registerTableFunction(\"addRange\", this.addRangeFromComponent.bind(this));\n\n\t\tthis.registerComponentFunction(\"cell\", \"getRanges\", this.cellGetRanges.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getRanges\", this.rowGetRanges.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getRanges\", this.colGetRanges.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Initialization ///////\n\t///////////////////////////////////\n\t\n\tinitialize() {\n\t\tif (this.options(\"selectableRange\")) {\t\t\n\t\t\tif(!this.options(\"selectableRows\")){\n\t\t\t\t\n\t\t\t\tthis.maxRanges = this.options(\"selectableRange\");\n\t\t\t\t\n\t\t\t\tthis.initializeTable();\n\t\t\t\tthis.initializeWatchers();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"SelectRange functionality cannot be used in conjunction with row selection\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\tinitializeTable() {\t\t\n\t\tthis.overlay = document.createElement(\"div\");\n\t\tthis.overlay.classList.add(\"tabulator-range-overlay\");\n\t\t\n\t\tthis.rangeContainer = document.createElement(\"div\");\n\t\tthis.rangeContainer.classList.add(\"tabulator-range-container\");\n\t\t\n\t\tthis.activeRangeCellElement = document.createElement(\"div\");\n\t\tthis.activeRangeCellElement.classList.add(\"tabulator-range-cell-active\");\n\t\t\n\t\tthis.overlay.appendChild(this.rangeContainer);\n\t\tthis.overlay.appendChild(this.activeRangeCellElement);\n\t\t\n\t\tthis.table.rowManager.element.addEventListener(\"keydown\", this.keyDownEvent);\n\t\t\n\t\tthis.resetRanges();\n\t\t\n\t\tthis.table.rowManager.element.appendChild(this.overlay);\n\t\tthis.table.columnManager.element.setAttribute(\"tabindex\", 0);\n\t\tthis.table.element.classList.add(\"tabulator-ranges\");\n\t}\n\t\n\tinitializeWatchers() {\n\t\tthis.columnSelection = this.options(\"selectableRangeColumns\");\n\t\tthis.rowSelection = this.options(\"selectableRangeRows\");\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-mousedown\", this.handleColumnMouseDown.bind(this));\n\t\tthis.subscribe(\"column-mousemove\", this.handleColumnMouseMove.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.handleColumnResized.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"column-height\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"columns-loaded\", this.updateHeaderColumn.bind(this));\n\n\t\tthis.subscribe(\"cell-height\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.renderCell.bind(this));\n\t\tthis.subscribe(\"cell-mousedown\", this.handleCellMouseDown.bind(this));\n\t\tthis.subscribe(\"cell-mousemove\", this.handleCellMouseMove.bind(this));\n\t\tthis.subscribe(\"cell-click\", this.handleCellClick.bind(this));\n\t\tthis.subscribe(\"cell-editing\", this.handleEditingCell.bind(this));\n\t\t\n\t\tthis.subscribe(\"page-changed\", this.redraw.bind(this));\n\n\t\tthis.subscribe(\"scroll-vertical\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.layoutChange.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-destroy\", this.tableDestroyed.bind(this));\n\t\tthis.subscribe(\"data-processed\", this.resetRanges.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-layout\", this.layoutElement.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.redraw.bind(this));\n\t\tthis.subscribe(\"table-destroy\", this.tableDestroyed.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-editor-clear\", this.finishEditingCell.bind(this));\n\t\tthis.subscribe(\"edit-blur\", this.restoreFocus.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.keyNavigate.bind(this, \"left\"));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keyNavigate.bind(this, \"right\"));\n\t\tthis.subscribe(\"keybinding-nav-left\", this.keyNavigate.bind(this, \"left\"));\n\t\tthis.subscribe(\"keybinding-nav-right\", this.keyNavigate.bind(this, \"right\"));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.keyNavigate.bind(this, \"up\"));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.keyNavigate.bind(this, \"down\"));\n\t\tthis.subscribe(\"keybinding-nav-range\", this.keyNavigateRange.bind(this));\n\t}\n\t\n\t\n\tinitializeColumn(column) {\n\t\tif(this.columnSelection && column.definition.headerSort && this.options(\"headerSortClickElement\") !== \"icon\"){\n\t\t\tconsole.warn(\"Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'.\");\n\t\t}\n\t\t\n\t\tif (column.modules.edit) {\n\t\t\t// Block editor from taking action so we can trigger edit by\n\t\t\t// double clicking.\n\t\t\t// column.modules.edit.blocked = true;\n\t\t}\n\t}\n\t\n\tupdateHeaderColumn(){\n\t\tif(this.rowSelection){\n\t\t\tthis.rowHeader = this.table.columnManager.getVisibleColumnsByIndex()[0];\n\t\t\t\n\t\t\tif(this.rowHeader){\n\t\t\t\tthis.rowHeader.definition.cssClass = this.rowHeader.definition.cssClass + \" tabulator-range-row-header\";\n\t\t\t\t\n\t\t\t\tif(this.rowHeader.definition.headerSort){\n\t\t\t\t\tconsole.warn(\"Using column headerSort with selectableRangeRows option may result in unpredictable behavior\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.rowHeader.definition.editor){\n\t\t\t\t\tconsole.warn(\"Using column editor with selectableRangeRows option may result in unpredictable behavior\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Table Functions ///////\n\t///////////////////////////////////\n\t\n\tgetRanges(){\n\t\treturn this.ranges.map((range) => range.getComponent());\n\t}\n\t\n\tgetRangesData() {\n\t\treturn this.ranges.map((range) => range.getData());\n\t}\n\t\n\taddRangeFromComponent(start, end){\n\t\tstart = start ? start._cell : null;\n\t\tend = end ? end._cell : null;\n\t\t\n\t\treturn this.addRange(start, end);\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Component Functions ///////\n\t///////////////////////////////////\n\t\n\tcellGetRanges(cell){\n\t\tvar ranges = [];\n\t\t\n\t\tif (cell.column === this.rowHeader) {\n\t\t\tranges = this.ranges.filter((range) => range.occupiesRow(cell.row));\n\t\t} else {\n\t\t\tranges = this.ranges.filter((range) => range.occupies(cell));\n\t\t}\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\trowGetRanges(row){\n\t\tvar ranges = this.ranges.filter((range) => range.occupiesRow(row));\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\tcolGetRanges(col){\n\t\tvar ranges = this.ranges.filter((range) => range.occupiesColumn(col));\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Event Handlers /////////\n\t///////////////////////////////////\n\t\n\t_handleMouseUp(e){\n\t\tthis.mousedown = false;\n\t\tdocument.removeEventListener(\"mouseup\", this.mouseUpEvent);\n\t}\n\t\n\t_handleKeyDown(e) {\n\t\tif (!this.blockKeydown && (!this.table.modules.edit || (this.table.modules.edit && !this.table.modules.edit.currentCell))) {\n\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t// is editing a cell?\n\t\t\t\tif (this.table.modules.edit && this.table.modules.edit.currentCell) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.table.modules.edit.editCell(this.getActiveCell());\n\t\t\t\t\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\tif ((e.key === \"Backspace\" || e.key === \"Delete\") && this.options(\"selectableRangeClearCells\")) {\n\t\t\t\tif(this.activeRange){\n\t\t\t\t\tthis.activeRange.clearValues();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeFocus(cell){\n\t\tvar range;\n\t\t\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\t\n\trestoreFocus(element){\n\t\tthis.table.rowManager.element.focus();\n\t\t\n\t\treturn true;\n\t}\n\t\n\t///////////////////////////////////\n\t////// Column Functionality ///////\n\t///////////////////////////////////\n\t\n\thandleColumnResized(column) {\n\t\tvar selected;\n\t\t\n\t\tif (this.selecting !== \"column\" && this.selecting !== \"all\") {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tselected = this.ranges.some((range) => range.occupiesColumn(column));\n\t\t\n\t\tif (!selected) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.ranges.forEach((range) => {\n\t\t\tvar selectedColumns = range.getColumns(true);\n\t\t\t\n\t\t\tselectedColumns.forEach((selectedColumn) => {\n\t\t\t\tif (selectedColumn !== column) {\n\t\t\t\t\tselectedColumn.setWidth(column.width);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t\n\thandleColumnMouseDown(event, column) {\n\t\tif (event.button === 2 && (this.selecting === \"column\" || this.selecting === \"all\") && this.activeRange.occupiesColumn(column)) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.mousedown = true;\n\t\t\n\t\tdocument.addEventListener(\"mouseup\", this.mouseUpEvent);\n\t\t\n\t\tthis.newSelection(event, column);\n\t}\n\t\n\thandleColumnMouseMove(e, column) {\n\t\tif (column === this.rowHeader || !this.mousedown || this.selecting === 'all') {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRange.setBounds(false, column, true);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Cell Functionality ///////\n\t///////////////////////////////////\n\t\n\trenderCell(cell) {\n\t\tvar el = cell.getElement(),\n\t\trangeIdx = this.ranges.findIndex((range) => range.occupies(cell));\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", rangeIdx !== -1);\n\t\tel.classList.toggle(\"tabulator-range-only-cell-selected\", this.ranges.length === 1 && this.ranges[0].atTopLeft(cell) &&\tthis.ranges[0].atBottomRight(cell));\n\t\t\n\t\tel.dataset.range = rangeIdx;\n\t}\n\t\n\thandleCellMouseDown(event, cell) {\n\t\tif (event.button === 2 && (this.activeRange.occupies(cell) || ((this.selecting === \"row\" || this.selecting === \"all\") && this.activeRange.occupiesRow(cell.row)))) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.mousedown = true;\n\t\t\n\t\tdocument.addEventListener(\"mouseup\", this.mouseUpEvent);\n\t\t\n\t\tthis.newSelection(event, cell);\n\t}\n\t\n\thandleCellMouseMove(e, cell) {\n\t\tif (!this.mousedown || this.selecting === \"all\") {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRange.setBounds(false, cell, true);\n\t}\n\t\n\thandleCellClick(e, cell){\n\t\tthis.initializeFocus(cell);\n\t}\n\t\n\thandleEditingCell(cell) {\n\t\tif(this.activeRange){\n\t\t\tthis.activeRange.setBounds(cell);\n\t\t}\n\t}\n\t\n\tfinishEditingCell() {\n\t\tthis.blockKeydown = true;\n\t\tthis.table.rowManager.element.focus();\n\n\t\tsetTimeout(() => {\n\t\t\tthis.blockKeydown = false;\n\t\t}, 10);\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Navigation ///////\n\t///////////////////////////////////\n\t\n\tkeyNavigate(dir, e){\n\t\tif(this.navigate(false, false, dir)){\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\tkeyNavigateRange(e, dir, jump, expand){\n\t\tif(this.navigate(jump, expand, dir)){\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\tnavigate(jump, expand, dir) {\n\t\tvar moved = false,\n\t\trange, rangeEdge, nextRow, nextCol, row, column;\n\t\t\n\t\t// Don't navigate while editing\n\t\tif (this.table.modules.edit && this.table.modules.edit.currentCell) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// If there are more than 1 range, use the active range and destroy the others\n\t\tif (this.ranges.length > 1) {\n\t\t\tthis.ranges = this.ranges.filter((range) => {\n\t\t\t\tif (range === this.activeRange) {\n\t\t\t\t\trange.setEnd(range.start.row, range.start.col);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\trange.destroy();\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t\t\n\t\trange = this.activeRange;\n\t\t\n\t\trangeEdge = expand ? range.end : range.start;\n\t\tnextRow = rangeEdge.row;\n\t\tnextCol = rangeEdge.col;\n\t\t\n\t\tif(jump){\n\t\t\tswitch(dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnextCol = this.findJumpCellLeft(range.start.row, rangeEdge.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnextCol = this.findJumpCellRight(range.start.row, rangeEdge.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnextRow = this.findJumpCellUp(rangeEdge.row, range.start.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnextRow = this.findJumpCellDown(rangeEdge.row, range.start.col);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}else{\n\t\t\tif(expand){\n\t\t\t\tif ((this.selecting === 'row' && (dir === 'left' || dir === 'right')) || (this.selecting === 'column' && (dir === 'up' || dir === 'down'))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tswitch(dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnextCol = Math.max(nextCol - 1, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnextCol = Math.min(nextCol + 1, this.getTableColumns().length - 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnextRow = Math.max(nextRow - 1, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnextRow = Math.min(nextRow + 1, this.getTableRows().length - 1);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tmoved = nextCol !== rangeEdge.col || nextRow !== rangeEdge.row;\n\t\t\n\t\tif(!expand){\n\t\t\trange.setStart(nextRow, nextCol);\n\t\t}\n\t\t\n\t\trange.setEnd(nextRow, nextCol);\n\t\t\n\t\tif(!expand){\n\t\t\tthis.selecting = \"cell\";\n\t\t}\n\t\t\n\t\tif (moved) {\n\t\t\trow = this.getRowByRangePos(range.end.row);\n\t\t\tcolumn = this.getColumnByRangePos(range.end.col);\n\t\t\t\n\t\t\tif ((dir === 'left' || dir === 'right') && column.getElement().parentNode === null) {\n\t\t\t\tcolumn.getComponent().scrollTo(undefined, false);\n\t\t\t} else if ((dir === 'up' || dir === 'down') && row.getElement().parentNode === null) {\n\t\t\t\trow.getComponent().scrollTo(undefined, false);\n\t\t\t} else {\n\t\t\t\t// Use faster autoScroll when the elements are on the DOM\n\t\t\t\tthis.autoScroll(range, row.getElement(), column.getElement());\n\t\t\t}\n\t\t\t\n\t\t\tthis.layoutElement();\n\t\t\t\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\trangeRemoved(removed){\n\t\tthis.ranges = this.ranges.filter((range) => range !== removed);\n\t\t\n\t\tif(this.activeRange === removed){\n\t\t\tif(this.ranges.length){\n\t\t\t\tthis.activeRange = this.ranges[this.ranges.length - 1];\n\t\t\t}else{\n\t\t\t\tthis.addRange();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.layoutElement();\n\t}\n\t\n\tfindJumpCell(cells, reverse, emptyStart, emptySide){\n\t\tvar nextCell;\n\t\t\n\t\tif(reverse){\n\t\t\tcells = cells.reverse();\n\t\t}\n\t\t\n\t\tfor(let currentCell of cells){\n\t\t\tlet currentValue = currentCell.getValue();\n\t\t\t\n\t\t\tif(emptyStart){\n\t\t\t\tnextCell = currentCell;\n\t\t\t\tif(currentValue){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(emptySide){\n\t\t\t\t\tnextCell = currentCell;\n\t\t\t\t\t\n\t\t\t\t\tif(currentValue){\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(currentValue){\n\t\t\t\t\t\tnextCell = currentCell;\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\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindJumpCellLeft(rowPos, colPos){\n\t\tvar row = this.getRowByRangePos(rowPos),\n\t\tcells = row.cells.filter((cell) => cell.column.visible),\n\t\tisStartingCellEmpty = !cells[colPos].getValue(),\n\t\tisLeftOfStartingCellEmpty = cells[colPos] ? !cells[colPos].getValue() : false,\n\t\tjumpCol = colPos,\n\t\ttargetCells = this.rowHeader ? cells.slice(1, colPos) : cells.slice(0, colPos),\n\t\tnextCell = this.findJumpCell(targetCells, true, isStartingCellEmpty, isLeftOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpCol = nextCell.column.getPosition() - 1;\n\t\t}\n\t\t\n\t\treturn jumpCol;\n\t}\n\t\n\tfindJumpCellRight(rowPos, colPos){\n\t\tvar row = this.getRowByRangePos(rowPos),\n\t\tcells = row.cells.filter((cell) => cell.column.visible),\n\t\tisStartingCellEmpty = !cells[colPos].getValue(),\n\t\tisRightOfStartingCellEmpty = cells[colPos + 1] ? !cells[colPos + 1].getValue() : false,\n\t\tjumpCol = colPos,\n\t\tnextCell = this.findJumpCell(cells.slice(colPos + 1, cells.length), false, isStartingCellEmpty, isRightOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpCol = nextCell.column.getPosition() - 1;\n\t\t}\n\t\t\n\t\treturn jumpCol;\n\t}\n\t\n\tfindJumpCellUp(rowPos, colPos) {\n\t\tvar column = this.getColumnByRangePos(colPos),\n\t\tcells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)),\n\t\tisStartingCellEmpty = !cells[rowPos].getValue(),\n\t\tisTopOfStartingCellEmpty = cells[rowPos - 1] ? !cells[rowPos - 1].getValue() : false,\n\t\tjumpRow = rowPos,\n\t\tnextCell = this.findJumpCell(cells.slice(0, jumpRow), true, isStartingCellEmpty, isTopOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpRow = nextCell.row.position - 1;\n\t\t}\n\t\t\n\t\treturn jumpRow;\n\t}\n\t\n\tfindJumpCellDown(rowPos, colPos) {\n\t\tvar column = this.getColumnByRangePos(colPos),\n\t\tcells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)),\n\t\tisStartingCellEmpty = !cells[rowPos].getValue(),\n\t\tisBottomOfStartingCellEmpty = cells[rowPos + 1] ? !cells[rowPos + 1].getValue() : false,\n\t\tjumpRow = rowPos,\n\t\tnextCell = this.findJumpCell(cells.slice(jumpRow + 1, cells.length), false, isStartingCellEmpty, isBottomOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpRow = nextCell.row.position - 1;\n\t\t}\n\t\t\n\t\treturn jumpRow;\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Selection ///////\n\t///////////////////////////////////\n\tnewSelection(event, element) {\n\t\tvar range;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(!this.columnSelection){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif (element === this.rowHeader) {\n\t\t\t\trange = this.resetRanges();\n\t\t\t\tthis.selecting = \"all\";\n\t\t\t\t\n\t\t\t\tvar topLeftCell, bottomRightCell = this.getCell(-1, -1);\n\n\t\t\t\tif(this.rowHeader){\n\t\t\t\t\ttopLeftCell = this.getCell(0, 1);\n\t\t\t\t}else{\n\t\t\t\t\ttopLeftCell = this.getCell(0, 0);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trange.setBounds(topLeftCell, bottomRightCell);\t\t\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tthis.selecting = \"column\";\n\t\t\t}\n\t\t} else if (element.column === this.rowHeader) {\n\t\t\tthis.selecting = \"row\";\n\t\t} else {\n\t\t\tthis.selecting = \"cell\";\n\t\t}\n\t\t\n\t\tif (event.shiftKey) {\n\t\t\tthis.activeRange.setBounds(false, element);\n\t\t} else if (event.ctrlKey) {\n\t\t\tthis.addRange().setBounds(element);\n\t\t} else {\n\t\t\tthis.resetRanges().setBounds(element);\n\t\t}\n\t}\n\t\n\tautoScroll(range, row, column) {\n\t\tvar tableHolder = this.table.rowManager.element,\n\t\trowHeader, rect, view, withinHorizontalView, withinVerticalView;\n\n\t\tif (typeof row === 'undefined') {\n\t\t\trow = this.getRowByRangePos(range.end.row).getElement();\n\t\t}\n\t\t\n\t\tif (typeof column === 'undefined') {\n\t\t\tcolumn = this.getColumnByRangePos(range.end.col).getElement();\n\t\t}\n\n\t\tif (this.rowHeader) {\n\t\t\trowHeader = this.rowHeader.getElement();\n\t\t}\n\t\t\n\t\trect = {\n\t\t\tleft: column.offsetLeft,\n\t\t\tright: column.offsetLeft + column.offsetWidth,\n\t\t\ttop: row.offsetTop,\n\t\t\tbottom: row.offsetTop + row.offsetHeight,\n\t\t};\n\t\t\n\t\tview = {\n\t\t\tleft: tableHolder.scrollLeft,\n\t\t\tright: Math.ceil(tableHolder.scrollLeft + tableHolder.clientWidth),\n\t\t\ttop: tableHolder.scrollTop,\n\t\t\tbottom:\ttableHolder.scrollTop +\ttableHolder.offsetHeight - this.table.rowManager.scrollbarWidth,\n\t\t};\n\n\t\tif (rowHeader) {\n\t\t\tview.left += rowHeader.offsetWidth;\n\t\t}\n\t\t\n\t\twithinHorizontalView = view.left < rect.left &&\trect.left < view.right && view.left < rect.right &&\trect.right < view.right;\n\t\t\n\t\twithinVerticalView = view.top < rect.top &&\trect.top < view.bottom && view.top < rect.bottom &&\trect.bottom < view.bottom;\n\t\t\n\t\tif (!withinHorizontalView) {\n\t\t\tif (rect.left < view.left) {\n\t\t\t\ttableHolder.scrollLeft = rect.left;\n\t\t\t\tif (rowHeader) {\n\t\t\t\t\ttableHolder.scrollLeft -= rowHeader.offsetWidth;\n\t\t\t\t}\n\t\t\t} else if (rect.right > view.right) {\n\t\t\t\ttableHolder.scrollLeft = rect.right - tableHolder.clientWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (!withinVerticalView) {\n\t\t\tif (rect.top < view.top) {\n\t\t\t\ttableHolder.scrollTop = rect.top;\n\t\t\t} else if (rect.bottom > view.bottom) {\n\t\t\t\ttableHolder.scrollTop = rect.bottom - tableHolder.clientHeight;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t/////// Layout ///////\n\t///////////////////////////////////\n\t\n\tlayoutChange(){\n\t\tthis.overlay.style.visibility = \"hidden\";\n\t\tclearTimeout(this.layoutChangeTimeout);\n\t\tthis.layoutChangeTimeout = setTimeout(this.layoutRanges.bind(this), 200);\n\t}\n\t\n\tredraw(force) {\n\t\tif (force) {\n\t\t\tthis.selecting = 'cell';\n\t\t\tthis.resetRanges();\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\t\n\tlayoutElement(visibleRows) {\n\t\tvar rows;\n\t\t\n\t\tif (visibleRows) {\n\t\t\trows = this.table.rowManager.getVisibleRows(true);\n\t\t} else {\n\t\t\trows = this.table.rowManager.getRows();\n\t\t}\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\") {\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\trow.cells.forEach((cell) => this.renderCell(cell));\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.getTableColumns().forEach((column) => {\n\t\t\tthis.layoutColumn(column);\n\t\t});\n\t\t\n\t\tthis.layoutRanges();\n\t}\n\t\n\tlayoutRow(row) {\n\t\tvar el = row.getElement(),\n\t\tselected = false,\n\t\toccupied = this.ranges.some((range) => range.occupiesRow(row));\n\t\t\n\t\tif (this.selecting === \"row\") {\n\t\t\tselected = occupied;\n\t\t} else if (this.selecting === \"all\") {\n\t\t\tselected = true;\n\t\t}\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", selected);\n\t\tel.classList.toggle(\"tabulator-range-highlight\", occupied);\n\t}\n\t\n\tlayoutColumn(column) {\n\t\tvar el = column.getElement(),\t\t\n\t\tselected = false,\n\t\toccupied = this.ranges.some((range) => range.occupiesColumn(column));\n\t\t\n\t\tif (this.selecting === \"column\") {\n\t\t\tselected = occupied;\n\t\t} else if (this.selecting === \"all\") {\n\t\t\tselected = true;\n\t\t}\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", selected);\n\t\tel.classList.toggle(\"tabulator-range-highlight\", occupied);\n\t}\n\t\n\tlayoutRanges() {\n\t\tvar activeCell;\n\t\t\n\t\tif (!this.table.initialized) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tactiveCell = this.getActiveCell();\n\t\t\n\t\tif (!activeCell) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRangeCellElement.style.left = activeCell.row.getElement().offsetLeft + activeCell.getElement().offsetLeft + \"px\";\n\t\tthis.activeRangeCellElement.style.top =\tactiveCell.row.getElement().offsetTop + \"px\";\n\t\tthis.activeRangeCellElement.style.width = activeCell.getElement().offsetLeft + activeCell.getElement().offsetWidth - activeCell.getElement().offsetLeft + \"px\";\n\t\tthis.activeRangeCellElement.style.height = activeCell.row.getElement().offsetTop + activeCell.row.getElement().offsetHeight - activeCell.row.getElement().offsetTop + \"px\";\n\t\t\n\t\tthis.ranges.forEach((range) => range.layout());\n\t\t\n\t\tthis.overlay.style.visibility = \"visible\";\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t/////// Helper Functions ///////\n\t///////////////////////////////////\t\n\t\n\tgetCell(rowIdx, colIdx) {\n\t\tvar row;\n\t\t\n\t\tif (colIdx < 0) {\n\t\t\tcolIdx = this.getTableColumns().length + colIdx;\n\t\t\tif (colIdx < 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (rowIdx < 0) {\n\t\t\trowIdx = this.getTableRows().length + rowIdx;\n\t\t}\n\t\t\n\t\trow = this.table.rowManager.getRowFromPosition(rowIdx + 1);\n\t\t\n\t\treturn row ? row.getCells(false, true).filter((cell) => cell.column.visible)[colIdx] : null;\n\t}\n\t\n\t\n\tgetActiveCell() {\n\t\treturn this.getCell(this.activeRange.start.row, this.activeRange.start.col);\n\t}\n\t\n\tgetRowByRangePos(pos) {\n\t\treturn this.getTableRows()[pos];\n\t}\n\t\n\tgetColumnByRangePos(pos) {\n\t\treturn this.getTableColumns()[pos];\n\t}\n\t\n\tgetTableRows() {\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\t\n\tgetTableColumns() {\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex();\n\t}\n\t\n\taddRange(start, end) {\n\t\tvar range;\n\t\t\n\t\tif(this.maxRanges !== true && this.ranges.length >= this.maxRanges){\n\t\t\tthis.ranges.shift().destroy();\n\t\t}\n\t\t\n\t\trange = new Range(this.table, this, start, end);\n\t\t\n\t\tthis.activeRange = range;\n\t\tthis.ranges.push(range);\n\t\tthis.rangeContainer.appendChild(range.element);\n\t\t\n\t\treturn range;\n\t}\n\t\n\tresetRanges() {\n\t\tvar range, cell;\n\t\t\n\t\tthis.ranges.forEach((range) => range.destroy());\n\t\tthis.ranges = [];\n\t\t\n\t\trange = this.addRange();\n\t\t\n\t\tif(this.table.rowManager.activeRows.length){\n\t\t\tcell = this.table.rowManager.activeRows[0].cells[this.rowHeader ? 1 : 0];\n\n\t\t\tif(cell){\n\t\t\t\trange.setBounds(cell);\n\t\t\t\tthis.initializeFocus(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn range;\n\t}\n\t\n\ttableDestroyed(){\n\t\tdocument.removeEventListener(\"mouseup\", this.mouseUpEvent);\n\t\tthis.table.rowManager.element.removeEventListener(\"keydown\", this.keyDownEvent);\n\t}\n\t\n\tselectedRows(component) {\n\t\treturn component ? this.activeRange.getRows().map((row) => row.getComponent()) : this.activeRange.getRows();\n\t}\n\t\n\tselectedColumns(component) {\n\t\treturn component ? this.activeRange.getColumns().map((col) => col.getComponent()) : this.activeRange.getColumns();\n\t}\n}\n\nSelectRange.moduleName = \"selectRange\";\n\nexport default SelectRange;\n","import Module from '../../core/Module.js';\nimport Cell from '../../core/cell/Cell.js';\n\nclass Tooltip extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.tooltipSubscriber = null,\n\t\tthis.headerSubscriber = null,\n\t\t\n\t\tthis.timeout = null;\n\t\tthis.popupInstance = null;\n\t\t\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \n\t\t\n\t\tthis.registerColumnOption(\"tooltip\");\n\t\tthis.registerColumnOption(\"headerTooltip\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheckMsg(\"tooltipGenerationMode\", \"This option is no longer needed as tooltips are always generated on hover now\");\n\t}\t\n\t\n\tinitializeColumn(column){\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\n\t\t\tthis.headerSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\n\t\t}\n\t\t\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\n\t\t\tthis.tooltipSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\n\t\t}\n\t}\n\t\n\tmousemoveCheck(action, e, component){\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\n\t\t\n\t\tif(tooltip){\n\t\t\tthis.clearPopup();\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\n\t\t}\n\t}\n\n\tmouseoutCheck(action, e, component){\n\t\tif(!this.popupInstance){\n\t\t\tthis.clearPopup();\n\t\t}\n\t}\n\t\n\tclearPopup(action, e, component){\n\t\tclearTimeout(this.timeout);\n\t\tthis.timeout = null;\n\t\t\n\t\tif(this.popupInstance){\n\t\t\tthis.popupInstance.hide();\n\t\t}\n\t}\n\t\n\tloadTooltip(e, component, tooltip){\n\t\tvar contentsEl, renderedCallback, coords;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(typeof tooltip === \"function\"){\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\n\t\t}\n\t\t\n\t\tif(tooltip instanceof HTMLElement){\n\t\t\tcontentsEl = tooltip;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\t\n\t\t\tif(tooltip === true){\n\t\t\t\tif(component instanceof Cell){\n\t\t\t\t\ttooltip = component.value;\n\t\t\t\t}else{\n\t\t\t\t\tif(component.definition.field){\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\ttooltip = component.definition.title;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcontentsEl.innerHTML = tooltip;\n\t\t}\n\t\t\n\t\tif(tooltip || tooltip === 0 || tooltip === false){\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\n\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault());\n\t\t\t\n\t\t\tthis.popupInstance = this.popup(contentsEl);\n\t\t\t\n\t\t\tif(typeof renderedCallback === \"function\"){\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\n\t\t\t}\n\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\n\t\t\t\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\n\t\t\t\tthis.popupInstance = null;\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nTooltip.moduleName = \"tooltip\";\n\nexport default Tooltip;\n","export default {\n\t//is integer\n\tinteger: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function(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(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 alphanumeric\n\talphanumeric: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar reg = new RegExp(/^[a-z0-9]+$/i);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//maximum value\n\tmax: function(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(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(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(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\n\t//minimum string length\n\tminLength: function(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(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(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typeof parameters == \"string\"){\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function(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(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(cell, value, parameters){\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultValidators from './defaults/validators.js';\n\nclass Validate extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.invalidCells = [];\n\t\t\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\n\t\t\n\t\tthis.registerColumnOption(\"validator\");\n\t\t\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\n\t}\n\t\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Event Handling //////////\n\t///////////////////////////////////\n\t\n\teditValidate(cell, value, previousValue){\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\n\t\t\n\t\t// allow time for editor to make render changes then style cell\n\t\tif(valid !== true){\n\t\t\tsetTimeout(() => {\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn valid;\n\t}\n\t\n\teditorClear(cell, cancelled){\n\t\tif(cancelled){\n\t\t\tif(cell.column.modules.validate){\n\t\t\t\tthis.cellValidate(cell);\n\t\t\t}\n\t\t}\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t}\n\t\n\teditedClear(cell){\n\t\tif(cell.modules.validate){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Cell Functions /////////\n\t///////////////////////////////////\n\t\n\tcellIsValid(cell){\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\n\t}\n\t\n\tcellValidate(cell){\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Column Functions ////////\n\t///////////////////////////////////\n\t\n\tcolumnValidate(column){\n\t\tvar invalid = [];\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Row Functions //////////\n\t///////////////////////////////////\n\t\n\trowValidate(row){\n\t\tvar invalid = [];\n\t\t\n\t\trow.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\tuserClearCellValidation(cells){\n\t\tif(!cells){\n\t\t\tcells = this.getInvalidCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.clearValidation(cell._getSelf());\n\t\t});\n\t}\n\t\n\tuserValidate(cells){\n\t\tvar output = [];\n\t\t\n\t\t//clear row data\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trow = row.getComponent();\n\t\t\t\n\t\t\tvar valid = row.validate();\n\t\t\t\n\t\t\tif(valid !== true){\n\t\t\t\toutput = output.concat(valid);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output.length ? output : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.validator !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//validate\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = [],\n\t\tvalidator;\n\t\t\n\t\tif(column.definition.validator){\n\t\t\t\n\t\t\tif(Array.isArray(column.definition.validator)){\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\t\t\t\t\t\n\t\t\t\t\tif(validator){\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\t\t\t\t\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\t\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t}\n\t\n\t_extractValidator(value){\n\t\tvar type, params, pos;\n\t\t\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tpos = value.indexOf(':');\n\t\t\t\n\t\t\t\tif(pos > -1){\n\t\t\t\t\ttype = value.substring(0,pos);\n\t\t\t\t\tparams = value.substring(pos+1);\n\t\t\t\t}else{\n\t\t\t\t\ttype = value;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t}\n\t}\n\t\n\t_buildValidator(type, params){\n\t\t\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\n\t\t\n\t\tif(!func){\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn {\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc:func,\n\t\t\t\tparams:params,\n\t\t\t};\n\t\t}\n\t}\n\t\n\tvalidate(validators, cell, value){\n\t\tvar self = this,\n\t\tfailedValidators = [],\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\n\t\tif(validators){\n\t\t\tvalidators.forEach((item) => {\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\n\t\t\t\t\tfailedValidators.push({\n\t\t\t\t\t\ttype:item.type,\n\t\t\t\t\t\tparameters:item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(!cell.modules.validate){\n\t\t\tcell.modules.validate = {};\n\t\t}\n\t\t\n\t\tif(!failedValidators.length){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}else{\n\t\t\tcell.modules.validate.invalid = failedValidators;\n\t\t\t\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t}\n\t\t\t\n\t\t\tif(invalidIndex == -1){\n\t\t\t\tthis.invalidCells.push(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn failedValidators.length ? failedValidators : true;\n\t}\n\t\n\tgetInvalidCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.invalidCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearValidation(cell){\n\t\tvar invalidIndex;\n\t\t\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\n\t\t\t\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\t\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nValidate.moduleName = \"validate\";\n\n//load defaults\nValidate.validators = defaultValidators;\n\nexport default Validate;\n","//tabulator with all modules installed\nimport {default as Tabulator} from './Tabulator.js';\nimport * as modules from '../core/modules/optional.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nclass TabulatorFull extends Tabulator {}\n\n//bind modules and static functionality\nnew ModuleBinder(TabulatorFull, modules);\n\nexport default TabulatorFull;\n"],"names":["defaultOptions","RendererVirtualDomHorizontal","RendererBasicHorizontal","RendererVirtualDomVertical","RendererBasicVertical","InteractionMonitor","generateParamsList","defaultURLGenerator","List","Edit","html","textarea","tickCross","datetime","star","progress","csv","json","array","Popup","number","date","time"],"mappings":"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"} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/js/tabulator.min.js b/tmp/tabulator-5.6.1/dist/js/tabulator.min.js deleted file mode 100644 index 3004126..0000000 --- a/tmp/tabulator-5.6.1/dist/js/tabulator.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v5.6.1 (c) Oliver Folkerd 2024 */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Tabulator=t()}(this,(function(){"use strict";class e{constructor(e){this.table=e}reloadData(e,t,i){return this.table.dataLoader.load(e,void 0,void 0,void 0,t,i)}langText(){return this.table.modules.localize.getText(...arguments)}langBind(){return this.table.modules.localize.bind(...arguments)}langLocale(){return this.table.modules.localize.getLocale(...arguments)}commsConnections(){return this.table.modules.comms.getConnections(...arguments)}commsSend(){return this.table.modules.comms.send(...arguments)}layoutMode(){return this.table.modules.layout.getMode()}layoutRefresh(e){return this.table.modules.layout.layout(e)}subscribe(){return this.table.eventBus.subscribe(...arguments)}unsubscribe(){return this.table.eventBus.unsubscribe(...arguments)}subscribed(e){return this.table.eventBus.subscribed(e)}subscriptionChange(){return this.table.eventBus.subscriptionChange(...arguments)}dispatch(){return this.table.eventBus.dispatch(...arguments)}chain(){return this.table.eventBus.chain(...arguments)}confirm(){return this.table.eventBus.confirm(...arguments)}dispatchExternal(){return this.table.externalEvents.dispatch(...arguments)}subscribedExternal(e){return this.table.externalEvents.subscribed(e)}subscriptionChangeExternal(){return this.table.externalEvents.subscriptionChange(...arguments)}options(e){return this.table.options[e]}setOption(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}deprecationCheck(e,t,i){return this.table.deprecationAdvisor.check(e,t,i)}deprecationCheckMsg(e,t){return this.table.deprecationAdvisor.checkMsg(e,t)}deprecationMsg(e){return this.table.deprecationAdvisor.msg(e)}module(e){return this.table.module(e)}}class t{constructor(e){return this._column=e,this.type="ColumnComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._column.table.componentFunctionBinder.handle("column",e._column,t)}})}getElement(){return this._column.getElement()}getDefinition(){return this._column.getDefinition()}getField(){return this._column.getField()}getTitleDownload(){return this._column.getTitleDownload()}getCells(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}isVisible(){return this._column.visible}show(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}hide(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}toggle(){this._column.visible?this.hide():this.show()}delete(){return this._column.delete()}getSubColumns(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}getParentColumn(){return this._column.parent instanceof n&&this._column.parent.getComponent()}_getSelf(){return this._column}scrollTo(e,t){return this._column.table.columnManager.scrollToColumn(this._column,e,t)}getTable(){return this._column.table}move(e,t){var i=this._column.table.columnManager.findColumn(e);i?this._column.table.columnManager.moveColumn(this._column,i,t):console.warn("Move Error - No matching column found:",i)}getNextColumn(){var e=this._column.nextColumn();return!!e&&e.getComponent()}getPrevColumn(){var e=this._column.prevColumn();return!!e&&e.getComponent()}updateDefinition(e){return this._column.updateDefinition(e)}getWidth(){return this._column.getWidth()}setWidth(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.rerenderColumns(!0),t}}var i={title:void 0,field:void 0,columns:void 0,visible:void 0,hozAlign:void 0,vertAlign:void 0,width:void 0,minWidth:40,maxWidth:void 0,maxInitialWidth:void 0,cssClass:void 0,variableHeight:void 0,headerVertical:void 0,headerHozAlign:void 0,headerWordWrap:!1,editableTitle:void 0};class s{constructor(e){return this._cell=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}getValue(){return this._cell.getValue()}getOldValue(){return this._cell.getOldValue()}getInitialValue(){return this._cell.initialValue}getElement(){return this._cell.getElement()}getRow(){return this._cell.row.getComponent()}getData(e){return this._cell.row.getData(e)}getType(){return"cell"}getField(){return this._cell.column.getField()}getColumn(){return this._cell.column.getComponent()}setValue(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}restoreOldValue(){this._cell.setValueActual(this._cell.getOldValue())}restoreInitialValue(){this._cell.setValueActual(this._cell.initialValue)}checkHeight(){this._cell.checkHeight()}getTable(){return this._cell.table}_getSelf(){return this._cell}}class o extends e{constructor(e,t){super(e.table),this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.initialValue,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.loaded=!1,this.build()}build(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}generateElement(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell")}_configureCell(){var e=this.element,t=this.column.getField();(e.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(e.style.display="inline-flex",e.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(e.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),t&&e.setAttribute("tabulator-field",t),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((t=>{e.classList.add(t)}));this.dispatch("cell-init",this),this.column.visible||this.hide()}_generateContents(){var e;switch(typeof(e=this.chain("cell-format",this,null,(()=>this.element.innerHTML=this.value)))){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":this.element.innerHTML="";break;default:this.element.innerHTML=e}}cellRendered(){this.dispatch("cell-rendered",this)}getElement(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}getValue(){return this.value}getOldValue(){return this.oldValue}setValue(e,t,i){this.setValueProcessData(e,t,i)&&(this.dispatch("cell-value-updated",this),this.cellRendered(),this.column.definition.cellEdited&&this.column.definition.cellEdited.call(this.table,this.getComponent()),this.dispatchExternal("cellEdited",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()))}setValueProcessData(e,t,i){var s=!1;return(this.value!==e||i)&&(s=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),s&&this.dispatch("cell-value-changed",this),s}setValueActual(e){this.oldValue=this.value,this.value=e,this.dispatch("cell-value-save-before",this),this.column.setFieldValue(this.row.data,e),this.dispatch("cell-value-save-after",this),this.loaded&&this.layoutElement()}layoutElement(){this._generateContents(),this.dispatch("cell-layout",this)}setWidth(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}clearWidth(){this.width="",this.element.style.width=""}getWidth(){return this.width||this.element.offsetWidth}setMinWidth(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}setMaxWidth(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}checkHeight(){this.row.reinitializeHeight()}clearHeight(){this.element.style.height="",this.height=null,this.dispatch("cell-height",this,"")}setHeight(){this.height=this.row.height,this.element.style.height=this.row.heightStyled,this.dispatch("cell-height",this,this.row.heightStyled)}getHeight(){return this.height||this.element.offsetHeight}show(){this.element.style.display=this.column.vertAlign?"inline-flex":""}hide(){this.element.style.display="none"}delete(){this.dispatch("cell-delete",this),!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}}getIndex(){return this.row.getCellIndex(this)}getComponent(){return this.component||(this.component=new s(this)),this.component}}class n extends e{constructor(e,t){super(t.table),this.definition=e,this.parent=t,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleHolderElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleDownload=null,this.titleFormatterRendered=!1,this.mapDefinitions(),this.setField(this.definition.field),this.modules={},this.width=null,this.widthStyled="",this.maxWidth=null,this.maxWidthStyled="",this.maxInitialWidth=null,this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this.definition.columns?(this.isGroup=!0,this.definition.columns.forEach(((e,t)=>{var i=new n(e,this);this.attachColumn(i)})),this.checkColumnVisibility()):t.registerColumnField(this),this._initialize()}createElement(){var e=document.createElement("div");switch(e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),this.table.options.columnHeaderVertAlign){case"middle":e.style.justifyContent="center";break;case"bottom":e.style.justifyContent="flex-end"}return e}createGroupElement(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}mapDefinitions(){var e=this.table.options.columnDefaults;if(e)for(let t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(n.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===n.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(this.field||this.definition.title)+"' column:",e)}))}setField(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData}registerColumnPosition(e){this.parent.registerColumnPosition(e)}registerColumnField(e){this.parent.registerColumnField(e)}reRegisterPosition(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}_initialize(){for(var e=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);e.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.dispatch("column-init",this)}_buildColumnHeader(){var e=this.definition;(this.dispatch("column-layout",this),void 0!==e.visible&&(e.visible?this.show(!0):this.hide(!0)),e.cssClass)&&e.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));e.field&&this.element.setAttribute("tabulator-field",e.field),this.setMinWidth(parseInt(e.minWidth)),e.maxInitialWidth&&(this.maxInitialWidth=parseInt(e.maxInitialWidth)),e.maxWidth&&this.setMaxWidth(parseInt(e.maxWidth)),this.reinitializeWidth(),this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}_buildColumnHeaderContent(){var e=document.createElement("div");return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e}_buildColumnHeaderTitle(){var e=this.definition,t=document.createElement("div");if(t.classList.add("tabulator-col-title"),e.headerWordWrap&&t.classList.add("tabulator-col-title-wrap"),e.editableTitle){var i=document.createElement("input");i.classList.add("tabulator-title-editor"),i.addEventListener("click",(e=>{e.stopPropagation(),i.focus()})),i.addEventListener("mousedown",(e=>{e.stopPropagation()})),i.addEventListener("change",(()=>{e.title=i.value,this.dispatchExternal("columnTitleChanged",this.getComponent())})),t.appendChild(i),e.field?this.langBind("columns|"+e.field,(t=>{i.value=t||e.title||" "})):i.value=e.title||" "}else e.field?this.langBind("columns|"+e.field,(i=>{this._formatColumnHeaderTitle(t,i||e.title||" ")})):this._formatColumnHeaderTitle(t,e.title||" ");return t}_formatColumnHeaderTitle(e,t){var i=this.chain("column-format",[this,t,e],null,(()=>t));switch(typeof i){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.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:",i));break;case"undefined":e.innerHTML="";break;default:e.innerHTML=i}}_buildGroupHeader(){(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}_getFlatData(e){return e[this.field]}_getNestedData(e){var t,i=e,s=this.fieldStructure,o=s.length;for(let e=0;e{t.push(e),t=t.concat(e.getColumns(!0))})):t=this.columns,t}getCells(){return this.cells}getTopColumn(){return this.parent.isGroup?this.parent.getTopColumn():this}getDefinition(e){var t=[];return this.isGroup&&e&&(this.columns.forEach((function(e){t.push(e.getDefinition(!0))})),this.definition.columns=t),this.definition}checkColumnVisibility(){var e=!1;this.columns.forEach((function(t){t.visible&&(e=!0)})),e?(this.show(),this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!1)):this.hide()}show(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(e){e.show()})),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager.verticalAlignHeaders(),this.dispatch("column-show",this,t),e||this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths(),this.silent||this.table.columnManager.rerenderColumns())}hide(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager.verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(e){e.hide()})),this.dispatch("column-hide",this,t),e||this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths(),this.silent||this.table.columnManager.rerenderColumns())}matchChildWidths(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})),this.contentElement.style.maxWidth=e-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())}removeChild(e){var t=this.columns.indexOf(e);t>-1&&this.columns.splice(t,1),this.columns.length||this.delete()}setWidth(e){this.widthFixed=!0,this.setWidthActual(e)}setWidthActual(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.maxWidth&&(e=Math.min(this.maxWidth,e)),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(e){e.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.dispatch("column-width",this)}checkCellHeights(){var e=[];this.cells.forEach((function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)})),e.forEach((function(e){e.calcHeight()})),e.forEach((function(e){e.setCellHeight()}))}getWidth(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}getLeftOffset(){var e=this.element.offsetLeft;return this.parent.isGroup&&(e+=this.parent.getLeftOffset()),e}getHeight(){return Math.ceil(this.element.getBoundingClientRect().height)}setMinWidth(e){this.maxWidth&&e>this.maxWidth&&(e=this.maxWidth,console.warn("the minWidth ("+e+"px) for column '"+this.field+"' cannot be bigger that its maxWidth ("+this.maxWidthStyled+")")),this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}setMaxWidth(e){this.minWidth&&e{this.isGroup&&this.columns.forEach((function(e){e.delete()})),this.dispatch("column-delete",this);var i=this.cells.length;for(let e=0;e-1&&this._nextVisibleColumn(e+1)}_nextVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}prevColumn(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}_prevVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}reinitializeWidth(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.dispatch("column-width-fit-before",this),this.fitToData(e),this.dispatch("column-width-fit-after",this)}fitToData(e){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((e=>{e.clearWidth()})));var t=this.element.offsetWidth;if((!this.width||!this.widthFixed)&&(this.cells.forEach((e=>{var i=e.getWidth();i>t&&(t=i)})),t)){var i=t+1;this.maxInitialWidth&&!e&&(i=Math.min(i,this.maxInitialWidth)),this.setWidthActual(i)}}}updateDefinition(e){var t;return this.isGroup||this.parent.isGroup?(console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"),Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(t=Object.assign({},this.getDefinition()),t=Object.assign(t,e),this.table.columnManager.addColumn(t,!1,this).then((e=>(t.field==this.field&&(this.field=!1),this.delete().then((()=>e.getComponent()))))))}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}getComponent(){return this.component||(this.component=new t(this)),this.component}getPosition(){return this.table.columnManager.getVisibleColumnsByIndex().indexOf(this)+1}}n.defaultOptionList=i;class r{static elVisible(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}static elOffset(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}static retrieveNestedData(e,t,i){var s,o=e?t.split(e):[t],n=o.length;for(let e=0;ee.subject===l)),r>-1?t[n]=i[r].copy:(a=Object.assign(Array.isArray(l)?[]:{},l),i.unshift({subject:l,copy:a}),t[n]=this.deepClone(l,a,i)))}return t}}class a{constructor(e,t,i={}){this.table=e,this.msgType=t,this.registeredDefaults=Object.assign({},i)}register(e,t){this.registeredDefaults[e]=t}generate(e,t={}){var i=Object.assign({},this.registeredDefaults),s=this.table.options.debugInvalidOptions||!0===t.debugInvalidOptions;Object.assign(i,e);for(let e in t)i.hasOwnProperty(e)||(s&&console.warn("Invalid "+this.msgType+" option:",e),i[e]=t.key);for(let e in i)e in t?i[e]=t[e]:Array.isArray(i[e])?i[e]=Object.assign([],i[e]):"object"==typeof i[e]&&null!==i[e]?i[e]=Object.assign({},i[e]):void 0===i[e]&&delete i[e];return i}}class l extends e{constructor(e){super(e),this.elementVertical=e.rowManager.element,this.elementHorizontal=e.columnManager.element,this.tableElement=e.rowManager.tableElement,this.verticalFillMode="fit"}initialize(){}clearRows(){}clearColumns(){}reinitializeColumnWidths(e){}renderRows(){}renderColumns(){}rerenderRows(e){e&&e()}rerenderColumns(e,t){}renderRowCells(e){}rerenderRowCells(e,t){}scrollColumns(e,t){}scrollRows(e,t){}resize(){}scrollToRow(e){}scrollToRowNearestTop(e){}visibleRows(e){return[]}rows(){return this.table.rowManager.getDisplayRows()}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}clear(){this.clearRows(),this.clearColumns()}render(){this.renderRows(),this.renderColumns()}rerender(e){this.rerenderRows(),this.rerenderColumns()}scrollToRowPosition(e,t,i){var s=this.rows().indexOf(e),o=e.getElement(),n=0;return new Promise(((a,l)=>{if(s>-1){if(void 0===i&&(i=this.table.options.scrollToRowIfVisible),!i&&r.elVisible(o)&&(n=r.elOffset(o).top-r.elOffset(this.elementVertical).top)>0&&n{i.appendChild(e.getElement())})),e.element.appendChild(i),t||e.cells.forEach((e=>{e.cellRendered()}))}reinitializeColumnWidths(e){e.forEach((function(e){e.reinitializeWidth()}))}}class d extends l{constructor(e){super(e),this.leftCol=0,this.rightCol=0,this.scrollLeft=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0,this.fitDataColAvg=0,this.windowBuffer=200,this.visibleRows=null,this.initialized=!1,this.isFitData=!1,this.columns=[]}initialize(){this.compatibilityCheck(),this.layoutCheck(),this.vertScrollListen()}compatibilityCheck(){"fitDataTable"==this.options("layout")&&console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"),this.options("responsiveLayout")&&console.warn("Horizontal Virtual DOM is not compatible with responsive columns"),this.options("rtl")&&console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction")}layoutCheck(){this.isFitData=this.options("layout").startsWith("fitData")}vertScrollListen(){this.subscribe("scroll-vertical",this.clearVisRowCache.bind(this)),this.subscribe("data-refreshed",this.clearVisRowCache.bind(this))}clearVisRowCache(){this.visibleRows=null}renderColumns(e,t){this.dataChange()}scrollColumns(e,t){this.scrollLeft!=e&&(this.scrollLeft=e,this.scroll(e-(this.vDomScrollPosLeft+this.windowBuffer)))}calcWindowBuffer(){var e=this.elementVertical.clientWidth;this.table.columnManager.columnsByIndex.forEach((t=>{if(t.visible){var i=t.getWidth();i>e&&(e=i)}})),this.windowBuffer=2*e}rerenderColumns(e,t){var i={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol},s=0;e&&!this.initialized||(this.clear(),this.calcWindowBuffer(),this.scrollLeft=this.elementVertical.scrollLeft,this.vDomScrollPosLeft=this.scrollLeft-this.windowBuffer,this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,this.table.columnManager.columnsByIndex.forEach((e=>{var t,i={};e.visible&&(e.modules.frozen||(t=e.getWidth(),i.leftPos=s,i.rightPos=s+t,i.width=t,this.isFitData&&(i.fitDataCheck=!e.modules.vdomHoz||e.modules.vdomHoz.fitDataCheck),s+t>this.vDomScrollPosLeft&&s{t.appendChild(e.getElement())})),e.element.appendChild(t),e.cells.forEach((e=>{e.cellRendered()}))}}rerenderRowCells(e,t){this.reinitializeRow(e,t)}reinitializeColumnWidths(e){for(let e=this.leftCol;e<=this.rightCol;e++)this.columns[e].reinitializeWidth()}deinitialize(){this.initialized=!1}clear(){this.columns=[],this.leftCol=-1,this.rightCol=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0}dataChange(){var e,t,i=!1;if(this.isFitData){if(this.table.columnManager.columnsByIndex.forEach((e=>{!e.definition.width&&e.visible&&(i=!0)})),i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,e=this.chain("rows-sample",[1],[],(()=>this.table.rowManager.getDisplayRows()))[0])){t=e.getElement(),e.generateCells(),this.tableElement.appendChild(t);for(let i=0;i{e!==this.columns[i]&&(t=!1)})),!t)}reinitializeRows(){var e=this.getVisibleRows(),t=this.table.rowManager.getRows().filter((t=>!e.includes(t)));e.forEach((e=>{this.reinitializeRow(e,!0)})),t.forEach((e=>{e.deinitialize()}))}getVisibleRows(){return this.visibleRows||(this.visibleRows=this.table.rowManager.getVisibleRows()),this.visibleRows}scroll(e){this.vDomScrollPosLeft+=e,this.vDomScrollPosRight+=e,Math.abs(e)>this.windowBuffer/2?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}colPositionAdjust(e,t,i){for(let s=e;s{if("group"!==e.type){var t=e.getCell(i);e.getElement().insertBefore(t.getElement(),e.getCell(this.columns[this.rightCol]).getElement().nextSibling),t.cellRendered()}})),this.fitDataColActualWidthCheck(i),this.rightCol++,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.rightCol=this.rightCol)})),this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=i.getWidth()):t=!1}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}addColLeft(){for(var e=!1,t=!0;t;){let i=this.columns[this.leftCol-1];if(i)if(i.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft){e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var t=e.getCell(i);e.getElement().insertBefore(t.getElement(),e.getCell(this.columns[this.leftCol]).getElement()),t.cellRendered()}})),this.leftCol--,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.leftCol=this.leftCol)})),this.leftCol<=0?this.vDomPadLeft=0:this.vDomPadLeft-=i.getWidth();let t=this.fitDataColActualWidthCheck(i);t&&(this.scrollLeft=this.elementVertical.scrollLeft=this.elementVertical.scrollLeft+t,this.vDomPadRight-=t)}else t=!1;else t=!1}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}removeColRight(){for(var e=!1,t=!0;t;){let i=this.columns[this.rightCol];i&&i.modules.vdomHoz.leftPos>this.vDomScrollPosRight?(e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var t=e.getCell(i);try{e.getElement().removeChild(t.getElement())}catch(e){console.warn("Could not removeColRight",e.message)}}})),this.vDomPadRight+=i.getWidth(),this.rightCol--,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.rightCol=this.rightCol)}))):t=!1}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}removeColLeft(){for(var e=!1,t=!0;t;){let i=this.columns[this.leftCol];i&&i.modules.vdomHoz.rightPos{if("group"!==e.type){var t=e.getCell(i);try{e.getElement().removeChild(t.getElement())}catch(e){console.warn("Could not removeColLeft",e.message)}}})),this.vDomPadLeft+=i.getWidth(),this.leftCol++,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.leftCol=this.leftCol)}))):t=!1}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}fitDataColActualWidthCheck(e){var t,i;return e.modules.vdomHoz.fitDataCheck&&(e.reinitializeWidth(),(i=(t=e.getWidth())-e.modules.vdomHoz.width)&&(e.modules.vdomHoz.rightPos+=i,e.modules.vdomHoz.width=t,this.colPositionAdjust(this.columns.indexOf(e)+1,this.columns.length,i)),e.modules.vdomHoz.fitDataCheck=!1),i}initializeRow(e){if("group"!==e.type){e.modules.vdomHoz={leftCol:this.leftCol,rightCol:this.rightCol},this.table.modules.frozenColumns&&this.table.modules.frozenColumns.leftColumns.forEach((t=>{this.appendCell(e,t)}));for(let t=this.leftCol;t<=this.rightCol;t++)this.appendCell(e,this.columns[t]);this.table.modules.frozenColumns&&this.table.modules.frozenColumns.rightColumns.forEach((t=>{this.appendCell(e,t)}))}}appendCell(e,t){if(t&&t.visible){let i=e.getCell(t);e.getElement().appendChild(i.getElement()),i.cellRendered()}}reinitializeRow(e,t){if("group"!==e.type&&(t||!e.modules.vdomHoz||e.modules.vdomHoz.leftCol!==this.leftCol||e.modules.vdomHoz.rightCol!==this.rightCol)){for(var i=e.getElement();i.firstChild;)i.removeChild(i.firstChild);this.initializeRow(e)}}}class c extends e{constructor(e){super(e),this.blockHozScrollEvent=!1,this.headersElement=null,this.contentsElement=null,this.element=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.optionsList=new a(this.table,"column definition",i),this.redrawBlock=!1,this.redrawBlockUpdate=null,this.renderer=null}initialize(){this.initializeRenderer(),this.headersElement=this.createHeadersElement(),this.contentsElement=this.createHeaderContentsElement(),this.element=this.createHeaderElement(),this.contentsElement.insertBefore(this.headersElement,this.contentsElement.firstChild),this.element.insertBefore(this.contentsElement,this.element.firstChild),this.initializeScrollWheelWatcher(),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("scrollbar-vertical",this.padVerticalScrollbar.bind(this))}padVerticalScrollbar(e){this.table.rtl?this.headersElement.style.marginLeft=e+"px":this.headersElement.style.marginRight=e+"px"}initializeRenderer(){var e,t={virtual:d,basic:h};(e="string"==typeof this.table.options.renderHorizontal?t[this.table.options.renderHorizontal]:this.table.options.renderHorizontal)?(this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize()):console.error("Unable to find matching renderer:",this.table.options.renderHorizontal)}createHeadersElement(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e.setAttribute("role","row"),e}createHeaderContentsElement(){var e=document.createElement("div");return e.classList.add("tabulator-header-contents"),e.setAttribute("role","rowgroup"),e}createHeaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-header"),e.setAttribute("role","rowgroup"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e}getElement(){return this.element}getContentsElement(){return this.contentsElement}getHeadersElement(){return this.headersElement}scrollHorizontal(e){this.contentsElement.scrollLeft=e,this.scrollLeft=e,this.renderer.scrollColumns(e)}initializeScrollWheelWatcher(){this.contentsElement.addEventListener("wheel",(e=>{var t;e.deltaX&&(t=this.contentsElement.scrollLeft+e.deltaX,this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))}))}generateColumnsFromRowData(e){var t,i,s=[],o=this.table.options.autoColumnsDefinitions;if(e&&e.length){for(var n in t=e[0]){let e={field:n,title:n},o=t[n];switch(typeof o){case"undefined":i="string";break;case"boolean":i="boolean";break;case"object":i=Array.isArray(o)?"array":"string";break;default:i=isNaN(o)||""===o?o.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}e.sorter=i,s.push(e)}if(o)switch(typeof o){case"function":this.table.options.columns=o.call(this.table,s);break;case"object":Array.isArray(o)?s.forEach((e=>{var t=o.find((t=>t.field===e.field));t&&Object.assign(e,t)})):s.forEach((e=>{o[e.field]&&Object.assign(e,o[e.field])})),this.table.options.columns=s}else this.table.options.columns=s;this.setColumns(this.table.options.columns)}}setColumns(e,t){for(;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach(((e,t)=>{this._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.rerenderColumns(!1,!0),this.redraw(!0)}_addColumn(e,t,i){var s=new n(e,this),o=s.getElement(),r=i?this.findColumnIndex(i):i;if(i&&r>-1){var a=i.getTopColumn(),l=this.columns.indexOf(a),h=a.getElement();t?(this.columns.splice(l,0,s),h.parentNode.insertBefore(o,h)):(this.columns.splice(l+1,0,s),h.parentNode.insertBefore(o,h.nextSibling))}else t?(this.columns.unshift(s),this.headersElement.insertBefore(s.getElement(),this.headersElement.firstChild)):(this.columns.push(s),this.headersElement.appendChild(s.getElement()));return s.columnRendered(),s}registerColumnField(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}registerColumnPosition(e){this.columnsByIndex.push(e)}_reIndexColumns(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}verticalAlignHeaders(){var e=0;this.redrawBlock||(this.headersElement.style.height="",this.columns.forEach((e=>{e.clearVerticalAlign()})),this.columns.forEach((t=>{var i=t.getHeight();i>e&&(e=i)})),this.headersElement.style.height=e+"px",this.columns.forEach((t=>{t.verticalAlign(this.table.options.columnHeaderVertAlign,e)})),this.table.rowManager.adjustTableSize())}findColumn(e){var i;if("object"!=typeof e)return this.columnsByField[e]||!1;if(e instanceof n)return e;if(e instanceof t)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return i=[],this.columns.forEach((e=>{i.push(e),i=i.concat(e.getColumns(!0))})),i.find((t=>t.element===e))||!1}return!1}getColumnByField(e){return this.columnsByField[e]}getColumnsByFieldRoot(e){var t=[];return Object.keys(this.columnsByField).forEach((i=>{(this.table.options.nestedFieldSeparator?i.split(this.table.options.nestedFieldSeparator)[0]:i)===e&&t.push(this.columnsByField[i])})),t}getColumnByIndex(e){return this.columnsByIndex[e]}getFirstVisibleColumn(){var e=this.columnsByIndex.findIndex((e=>e.visible));return e>-1&&this.columnsByIndex[e]}getVisibleColumnsByIndex(){return this.columnsByIndex.filter((e=>e.visible))}getColumns(){return this.columns}findColumnIndex(e){return this.columnsByIndex.findIndex((t=>e===t))}getRealColumns(){return this.columnsByIndex}traverse(e){this.columnsByIndex.forEach(((t,i)=>{e(t,i)}))}getDefinitions(e){var t=[];return this.columnsByIndex.forEach((i=>{(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}getDefinitionTree(){var e=[];return this.columns.forEach((t=>{e.push(t.getDefinition(!0))})),e}getComponents(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((e=>{t.push(e.getComponent())})),t}getWidth(){var e=0;return this.columnsByIndex.forEach((t=>{t.visible&&(e+=t.getWidth())})),e}moveColumn(e,t,i){t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this.moveColumnActual(e,t,i),this.verticalAlignHeaders(),this.table.rowManager.reinitialize()}moveColumnActual(e,t,i){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,i):this._moveColumnInArray(this.columns,e,t,i),this._moveColumnInArray(this.columnsByIndex,e,t,i,!0),this.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}_moveColumnInArray(e,t,i,s,o){var n,r=e.indexOf(t);r>-1&&(e.splice(r,1),(n=e.indexOf(i))>-1?s&&(n+=1):n=r,e.splice(n,0,t),o&&(this.chain("column-moving-rows",[t,i,s],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(n,0,t)}})))}scrollToColumn(e,t,i){var s=0,o=e.getLeftOffset(),n=0,r=e.getElement();return new Promise(((a,l)=>{if(void 0===t&&(t=this.table.options.scrollToColumnPosition),void 0===i&&(i=this.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":n=-this.element.clientWidth/2;break;case"right":n=r.clientWidth-this.headersElement.clientWidth}if(!i&&o>0&&o+r.offsetWidth{t.push(i.generateCell(e))})),t}getFlexBaseWidth(){var e=this.table.element.clientWidth,t=0;return this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var s,o,n;i.visible&&(s=i.definition.width||0,o=parseInt(i.minWidth),n="string"==typeof s?s.indexOf("%")>-1?e/100*parseInt(s):parseInt(s):s,t+=n>o?n:o)})),t}addColumn(e,t,i){return new Promise(((s,o)=>{var n=this._addColumn(e,t,i);this._reIndexColumns(),this.dispatch("column-add",e,t,i),"fitColumns"!=this.layoutMode()&&n.reinitializeWidth(),this.redraw(!0),this.table.rowManager.reinitialize(),this.rerenderColumns(),s(n)}))}deregisterColumn(e){var t,i=e.getField();i&&delete this.columnsByField[i],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this.verticalAlignHeaders(),this.redraw()}rerenderColumns(e,t){this.redrawBlock?(!1===e||!0===e&&null===this.redrawBlockUpdate)&&(this.redrawBlockUpdate=e):this.renderer.rerenderColumns(e,t)}blockRedraw(){this.redrawBlock=!0,this.redrawBlockUpdate=null}restoreRedraw(){this.redrawBlock=!1,this.verticalAlignHeaders(),this.renderer.rerenderColumns(this.redrawBlockUpdate)}redraw(e){r.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(e),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}class u{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}getIndex(){return this._row.getData("data")[this._row.table.options.index]}getPosition(){return this._row.getPosition()}watchPosition(e){return this._row.watchPosition(e)}delete(){return this._row.delete()}scrollTo(e,t){return this._row.table.rowManager.scrollToRow(this._row,e,t)}move(e,t){this._row.moveToRow(e,t)}update(e){return this._row.updateData(e)}normalizeHeight(){this._row.normalizeHeight(!0)}_getSelf(){return this._row}reformat(){return this._row.reinitialize()}getTable(){return this._row.table}getNextRow(){var e=this._row.nextRow();return e?e.getComponent():e}getPrevRow(){var e=this._row.prevRow();return e?e.getComponent():e}}class m extends e{constructor(e,t,i="row"){super(t.table),this.parent=t,this.data={},this.type=i,this.element=!1,this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.position=0,this.positionWatchers=[],this.component=null,this.created=!1,this.setData(e)}create(){this.created||(this.created=!0,this.generateElement())}createElement(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}getElement(){return this.create(),this.element}detachElement(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}generateElement(){this.createElement(),this.dispatch("row-init",this)}generateCells(){this.cells=this.table.columnManager.generateCells(this)}initialize(e,t){if(this.create(),!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.dispatch("row-layout-before",this),this.generateCells(),this.initialized=!0,this.table.columnManager.renderer.renderRowCells(this,t),e&&this.normalizeHeight(),this.dispatch("row-layout",this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.dispatch("row-layout-after",this)}else this.table.columnManager.renderer.rerenderRowCells(this,t)}rendered(){this.cells.forEach((e=>{e.cellRendered()}))}reinitializeHeight(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}deinitialize(){this.initialized=!1}deinitializeHeight(){this.heightInitialized=!1}reinitialize(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),this.element&&null!==this.element.offsetParent&&this.initialize(!0),this.dispatch("row-relayout",this)}calcHeight(e){var t,i=0;this.table.options.rowHeight?this.height=this.table.options.rowHeight:(t=this.table.options.resizableRows?this.element.clientHeight:0,this.cells.forEach((function(e){var t=e.getHeight();t>i&&(i=t)})),this.height=e?Math.max(i,t):this.manualHeight?this.height:Math.max(i,t)),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}setCellHeight(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}clearCellHeight(){this.cells.forEach((function(e){e.clearHeight()}))}normalizeHeight(e){e&&!this.table.options.rowHeight&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}setHeight(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}getHeight(){return this.outerHeight}getWidth(){return this.element.offsetWidth}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}setData(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}updateData(e){var t,i=this.element&&r.elVisible(this.element),s={};return new Promise(((o,n)=>{"string"==typeof e&&(e=JSON.parse(e)),this.dispatch("row-data-save-before",this),this.subscribed("row-data-changing")&&(s=Object.assign(s,this.data),s=Object.assign(s,e)),t=this.chain("row-data-changing",[this,s,e],null,e);for(let e in t)this.data[e]=t[e];this.dispatch("row-data-save-after",this);for(let s in e){this.table.columnManager.getColumnsByFieldRoot(s).forEach((e=>{let s=this.getCell(e.getField());if(s){let o=e.getFieldValue(t);s.getValue()!==o&&(s.setValueProcessData(o),i&&s.cellRendered())}}))}i?(this.normalizeHeight(!0),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent())):(this.initialized=!1,this.height=0,this.heightStyled=""),this.dispatch("row-data-changed",this,i,e),this.dispatchExternal("rowUpdated",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),o()}))}getData(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}getCell(e){return e=this.table.columnManager.findColumn(e),this.initialized||0!==this.cells.length||this.generateCells(),this.cells.find((function(t){return t.column===e}))}getCellIndex(e){return this.cells.findIndex((function(t){return t===e}))}findCell(e){return this.cells.find((t=>t.element===e))}getCells(){return this.initialized||0!==this.cells.length||this.generateCells(),this.cells}nextRow(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}prevRow(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}moveToRow(e,t){var i=this.table.rowManager.findRow(e);i?(this.table.rowManager.moveRowActual(this,i,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)}delete(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}deleteActual(e){this.detachModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}detachModules(){this.dispatch("row-deleting",this)}deleteCells(){var e=this.cells.length;for(let t=0;t{e(this.position)})))}watchPosition(e){this.positionWatchers.push(e),e(this.position)}getGroup(){return this.modules.group||!1}getComponent(){return this.component||(this.component=new u(this)),this.component}}class p extends l{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.scrollTop=0,e.scrollLeft=0,e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility=""}renderRows(){var e=this.tableElement,t=!0,i=document.createDocumentFragment(),s=this.rows();s.forEach(((e,s)=>{this.styleRow(e,s),e.initialize(!1,!0),"group"!==e.type&&(t=!1),i.appendChild(e.getElement())})),e.appendChild(i),s.forEach((e=>{e.rendered(),e.heightInitialized||e.calcHeight(!0)})),s.forEach((e=>{e.heightInitialized||e.setCellHeight()})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}rerenderRows(e){this.clearRows(),e&&e(),this.renderRows(),this.rows().length||this.table.rowManager.tableEmpty()}scrollToRowNearestTop(e){var t=r.elOffset(e.getElement()).top;return!(Math.abs(this.elementVertical.scrollTop-t)>Math.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-t))}scrollToRow(e){var t=e.getElement();this.elementVertical.scrollTop=r.elOffset(t).top-r.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}visibleRows(e){return this.rows()}}class g extends l{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.elementVertical.scrollTop=0,this.elementVertical.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0}renderRows(){this._virtualRenderFill()}rerenderRows(e){for(var t=this.elementVertical.scrollTop,i=!1,s=!1,o=this.table.rowManager.scrollLeft,n=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(n[r]){var a=t-n[r].getElement().offsetTop;if(!(!1===s||Math.abs(a){e.deinitializeHeight()})),e&&e(),this.rows().length?this._virtualRenderFill(!1===i?this.rows.length-1:i,!0,s||0):(this.clear(),this.table.rowManager.tableEmpty()),this.scrollColumns(o)}scrollColumns(e){this.table.rowManager.scrollHorizontal(e)}scrollRows(e,t){var i=e-this.vDomScrollPosTop,s=e-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer,n=this.rows();if(this.scrollTop=e,-i>o||s>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*n.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(n,-i),s<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(n,-s):this.vDomScrollPosBottom=this.scrollTop)):(s>=0&&this._addBottomRow(n,s),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(n,i):this.vDomScrollPosTop=this.scrollTop))}resize(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}scrollToRowNearestTop(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}scrollToRow(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}visibleRows(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,s=!1,o=0,n=0,r=this.rows();if(e)o=this.vDomTop,n=this.vDomBottom;else for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(s){if(!(i-r[a].getElement().offsetTop>=0))break;n=a}else if(t-r[a].getElement().offsetTop>=0)o=a;else{if(s=!0,!(i-r[a].getElement().offsetTop>=0))break;n=a}return r.slice(o,n+1)}_virtualRenderFill(e,t,i){var s,o,n=this.tableElement,a=this.elementVertical,l=0,h=0,d=0,c=0,u=0,m=0,p=this.rows(),g=p.length,b=0,f=[],v=0,w=0,C=this.table.rowManager.fixedHeight,E=this.elementVertical.clientHeight,y=this.table.options.rowHeight,R=!0;if(i=i||0,e=e||0){for(;n.firstChild;)n.removeChild(n.firstChild);(c=(g-e+1)*this.vDomRowHeight){e.rendered(),e.heightInitialized||e.calcHeight(!0)})),f.forEach((e=>{e.heightInitialized||e.setCellHeight()})),f.forEach((e=>{d=e.getHeight(),vthis.vDomWindowBuffer&&(this.vDomWindowBuffer=2*d),v++})),R=this.table.rowManager.adjustTableSize(),E=this.elementVertical.clientHeight,R&&(C||this.table.options.maxHeight)&&(y=h/v,w=Math.max(this.vDomWindowMinTotalRows,Math.ceil(E/y+this.vDomWindowBuffer/y)))}e?(this.vDomTopPad=t?this.vDomRowHeight*this.vDomTop+i:this.scrollTop-u,this.vDomBottomPad=this.vDomBottom==g-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-h-u,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((h+u)/v),this.vDomBottomPad=this.vDomRowHeight*(g-this.vDomBottom-1),this.vDomScrollHeight=u+h+this.vDomBottomPad-E),n.style.paddingTop=this.vDomTopPad+"px",n.style.paddingBottom=this.vDomBottomPad+"px",t&&(this.scrollTop=this.vDomTopPad+u+i-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-E:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-E),this.elementVertical.scrollWidth>this.elementVertical.clientWidth&&t&&(this.scrollTop+=this.elementVertical.offsetHeight-E),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,a.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}_addTopRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomTop-1,r=0,a=!0;a;)if(this.vDomTop){let l,h,d=e[n];d&&r=l?(this.styleRow(d,n),i.insertBefore(d.getElement(),i.firstChild),d.initialized&&d.heightInitialized||s.push(d),d.initialize(),h||(l=d.getElement().offsetHeight,l>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l)),t-=l,o+=l,this.vDomTop--,n--,r++):a=!1):a=!1}else a=!1;for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomTopPad-=o,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n<1&&(this.vDomTopPad=0),i.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=o)}_removeTopRow(e,t){for(var i=[],s=0,o=0,n=!0;n;){let r,a=e[this.vDomTop];a&&o=r?(this.vDomTop++,t-=r,s+=r,i.push(a),o++):n=!1):n=!1}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomTopPad+=s,this.tableElement.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?s:s+this.vDomWindowBuffer)}_addBottomRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomBottom+1,r=0,a=!0;a;){let l,h,d=e[n];d&&r=l?(this.styleRow(d,n),i.appendChild(d.getElement()),d.initialized&&d.heightInitialized||s.push(d),d.initialize(),h||(l=d.getElement().offsetHeight,l>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l)),t-=l,o+=l,this.vDomBottom++,n++,r++):a=!1):a=!1}for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomBottomPad-=o,(this.vDomBottomPad<0||n==e.length-1)&&(this.vDomBottomPad=0),i.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=o)}_removeBottomRow(e,t){for(var i=[],s=0,o=0,n=!0;n;){let r,a=e[this.vDomBottom];a&&o=r?(this.vDomBottom--,t-=r,s+=r,i.push(a),o++):n=!1):n=!1}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomBottomPad+=s,this.vDomBottomPad<0&&(this.vDomBottomPad=0),this.tableElement.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=s)}_quickNormalizeRowHeight(e){for(let t of e)t.calcHeight();for(let t of e)t.setCellHeight()}}class b extends e{constructor(e){super(e),this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.placeholder=null,this.placeholderContents=null,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRowsPipeline=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRenderInPosition=!1,this.dataPipeline=[],this.displayPipeline=[],this.scrollbarWidth=0,this.renderer=null}createHolderElement(){var e=document.createElement("div");return e.classList.add("tabulator-tableholder"),e.setAttribute("tabindex",0),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e.setAttribute("role","rowgroup"),e}initializePlaceholder(){var e=this.table.options.placeholder;if("function"==typeof e&&(e=e.call(this.table)),e=this.chain("placeholder",[e],e,e)||e){let t=document.createElement("div");if(t.classList.add("tabulator-placeholder"),"string"==typeof e){let i=document.createElement("div");i.classList.add("tabulator-placeholder-contents"),i.innerHTML=e,t.appendChild(i),this.placeholderContents=i}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(t.appendChild(e),this.placeholderContents=e):(console.warn("Invalid placeholder provided, must be string or HTML Element",e),this.el=null);this.placeholder=t}}getElement(){return this.element}getTableElement(){return this.tableElement}initialize(){this.initializePlaceholder(),this.initializeRenderer(),this.element.appendChild(this.tableElement),this.firstRender=!0,this.element.addEventListener("scroll",(()=>{var e=this.element.scrollLeft,t=this.scrollLeft>e,i=this.element.scrollTop,s=this.scrollTop>i;this.scrollLeft!=e&&(this.scrollLeft=e,this.dispatch("scroll-horizontal",e,t),this.dispatchExternal("scrollHorizontal",e,t),this._positionPlaceholder()),this.scrollTop!=i&&(this.scrollTop=i,this.renderer.scrollRows(i,s),this.dispatch("scroll-vertical",i,s),this.dispatchExternal("scrollVertical",i,s))}))}findRow(e){if("object"!=typeof e){if(void 0===e)return!1;return this.rows.find((t=>t.data[this.table.options.index]==e))||!1}if(e instanceof m)return e;if(e instanceof u)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.rows.find((t=>t.getElement()===e))||!1}return!1}getRowFromDataObject(e){return this.rows.find((t=>t.data===e))||!1}getRowFromPosition(e){return this.getDisplayRows().find((t=>t.getPosition()===e&&t.isDisplayed()))}scrollToRow(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}setData(e,t,i){return new Promise(((s,o)=>{t&&this.getDisplayRows().length?this.table.options.pagination?this._setDataActual(e,!0):this.reRenderInPosition((()=>{this._setDataActual(e)})):(this.table.options.autoColumns&&i&&this.table.initialized&&this.table.columnManager.generateColumnsFromRowData(e),this.resetScroll(),this._setDataActual(e)),s()}))}_setDataActual(e,t){this.dispatchExternal("dataProcessing",e),this._wipeElements(),Array.isArray(e)?(this.dispatch("data-processing",e),e.forEach(((e,t)=>{if(e&&"object"==typeof e){var i=new m(e,this);this.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)})),this.refreshActiveData(!1,!1,t),this.dispatch("data-processed",e),this.dispatchExternal("dataProcessed",e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",typeof e,"\nData: ",e)}_wipeElements(){this.dispatch("rows-wipe"),this.destroy(),this.adjustTableSize(),this.dispatch("rows-wiped")}destroy(){this.rows.forEach((e=>{e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0}deleteRow(e,t){var i=this.rows.indexOf(e),s=this.activeRows.indexOf(e);s>-1&&this.activeRows.splice(s,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((t=>{var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowPositions(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this.tableEmpty(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}addRow(e,t,i,s){return this.addRowActual(e,t,i,s)}addRows(e,t,i,s){var o=[];return new Promise(((n,r)=>{t=this.findAddRowPos(t),Array.isArray(e)||(e=[e]),(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach(((e,s)=>{var n=this.addRow(e,t,i,!0);o.push(n),this.dispatch("row-added",n,e,t,i)})),this.refreshActiveData(!!s&&"displayPipeline",!1,!0),this.regenerateRowPositions(),this.displayRowsCount&&this._clearPlaceholder(),n(o)}))}findAddRowPos(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}addRowActual(e,t,i,s){var o,n,r=e instanceof m?e:new m(e||{},this),a=this.findAddRowPos(t),l=-1;return i||(n=this.chain("row-adding-position",[r,a],null,{index:i,top:a}),i=n.index,a=n.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,a],null,i))&&(l=this.rows.indexOf(i)),i&&l>-1?(o=this.activeRows.indexOf(i),this.displayRowIterator((function(e){var t=e.indexOf(i);t>-1&&e.splice(a?t:t+1,0,r)})),o>-1&&this.activeRows.splice(a?o:o+1,0,r),this.rows.splice(a?l:l+1,0,r)):a?(this.displayRowIterator((function(e){e.unshift(r)})),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator((function(e){e.push(r)})),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.dispatchExternal("rowAdded",r.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),s||this.reRenderInPosition(),r}moveRow(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowPositions(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}moveRowActual(e,t,i){this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((s=>{this.moveRowInArray(s,e,t,i)})),this.dispatch("row-moving",e,t,i)}moveRowInArray(e,t,i,s){var o,n,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(n=e.indexOf(i))>-1?s?e.splice(n+1,0,t):e.splice(n,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=n>o?n:o+1;for(let t=o-1&&t}nextDisplayRow(e,t){var i=this.getDisplayRowIndex(e),s=!1;return!1!==i&&i-1)&&i}getData(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}getComponents(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}getDataCount(e){return this.getRows(e).length}scrollHorizontal(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}registerDataPipelineHandler(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Data pipeline handlers must have a priority in order to be registered")}registerDisplayPipelineHandler(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Display pipeline handlers must have a priority in order to be registered")}refreshActiveData(e,t,i){var s=this.table,o="",n=0,a=["all","dataPipeline","display","displayPipeline","end"];if(!this.table.destroyed){if("function"==typeof e)if((n=this.dataPipeline.findIndex((t=>t.handler===e)))>-1)o="dataPipeline",t&&(n==this.dataPipeline.length-1?o="display":n++);else{if(!((n=this.displayPipeline.findIndex((t=>t.handler===e)))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);o="displayPipeline",t&&(n==this.displayPipeline.length-1?o="end":n++)}else o=e||"all",n=0;if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===o&&n{"row"===e.type&&(e.setPosition(t),t++)}))}setActiveRows(e){this.activeRows=this.activeRows=Object.assign([],e),this.activeRowsCount=this.activeRows.length}resetDisplayRows(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length}setDisplayRows(e,t){this.displayRows[t]=e,t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length)}getDisplayRows(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]}getVisibleRows(e,t){var i=Object.assign([],this.renderer.visibleRows(!t));return e&&(i=this.chain("rows-visible",[t],i,i)),i}displayRowIterator(e){this.activeRowsPipeline.forEach(e),this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length}getRows(e){var t=[];switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!1,!0);break;default:t=this.chain("rows-retrieve",e,null,this.rows)||this.rows}return t}reRenderInPosition(e){this.redrawBlock?e?e():this.redrawBlockRenderInPosition=!0:(this.dispatchExternal("renderStarted"),this.renderer.rerenderRows(e),this.fixedHeight||this.adjustTableSize(),this.scrollBarCheck(),this.dispatchExternal("renderComplete"))}scrollBarCheck(){var e=0;this.element.scrollHeight>this.element.clientHeight&&(e=this.element.offsetWidth-this.element.clientWidth),e!==this.scrollbarWidth&&(this.scrollbarWidth=e,this.dispatch("scrollbar-vertical",e))}initializeRenderer(){var e,t={virtual:g,basic:p};(e="string"==typeof this.table.options.renderVertical?t[this.table.options.renderVertical]:this.table.options.renderVertical)?(this.renderMode=this.table.options.renderVertical,this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize(),!this.table.element.clientHeight&&!this.table.options.height||this.table.options.minHeight&&this.table.options.maxHeight?this.fixedHeight=!1:this.fixedHeight=!0):console.error("Unable to find matching renderer:",this.table.options.renderVertical)}getRenderMode(){return this.renderMode}renderTable(){this.dispatchExternal("renderStarted"),this.element.scrollTop=0,this._clearTable(),this.displayRowsCount?(this.renderer.renderRows(),this.firstRender&&(this.firstRender=!1,this.fixedHeight||this.adjustTableSize(),this.layoutRefresh(!0))):this.renderEmptyScroll(),this.fixedHeight||this.adjustTableSize(),this.dispatch("table-layout"),this.displayRowsCount||this._showPlaceholder(),this.scrollBarCheck(),this.dispatchExternal("renderComplete")}renderEmptyScroll(){this.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"}_clearTable(){this._clearPlaceholder(),this.scrollTop=0,this.scrollLeft=0,this.renderer.clearRows()}tableEmpty(){this.renderEmptyScroll(),this._showPlaceholder()}checkPlaceholder(){this.displayRowsCount?this._clearPlaceholder():this.tableEmpty()}_showPlaceholder(){this.placeholder&&(this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder),this.initializePlaceholder(),this.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.placeholder),this._positionPlaceholder(),this.adjustTableSize())}_clearPlaceholder(){this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder),this.tableElement.style.minWidth="",this.tableElement.style.display=""}_positionPlaceholder(){this.placeholder&&this.placeholder.parentNode&&(this.placeholder.style.width=this.table.columnManager.getWidth()+"px",this.placeholderContents.style.width=this.table.rowManager.element.clientWidth+"px",this.placeholderContents.style.marginLeft=this.scrollLeft+"px")}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}normalizeHeight(){this.activeRows.forEach((function(e){e.normalizeHeight()}))}adjustTableSize(){let e,t=this.element.clientHeight,i=!1;if("fill"===this.renderer.verticalFillMode){let s=Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height+(this.table.footerManager&&this.table.footerManager.active&&!this.table.footerManager.external?this.table.footerManager.getElement().getBoundingClientRect().height:0));if(this.fixedHeight){e=isNaN(this.table.options.minHeight)?this.table.options.minHeight:this.table.options.minHeight+"px";const t="calc(100% - "+s+"px)";this.element.style.minHeight=e||"calc(100% - "+s+"px)",this.element.style.height=t,this.element.style.maxHeight=t}else this.element.style.height="",this.element.style.height=this.table.element.clientHeight-s+"px",this.element.scrollTop=this.scrollTop;this.renderer.resize(),this.fixedHeight||t==this.element.clientHeight||(i=!0,this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw()),this.scrollBarCheck()}return this._positionPlaceholder(),i}reinitialize(){this.rows.forEach((function(e){e.reinitialize(!0)}))}blockRedraw(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1}restoreRedraw(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.handler,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRenderInPosition&&this.reRenderInPosition(),this.redrawBlockRenderInPosition=!1}redraw(e){this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():(this.reRenderInPosition(),this.scrollHorizontal(this.scrollLeft))}resetScroll(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))}}class f extends e{constructor(e){super(e),this.active=!1,this.element=this.createElement(),this.containerElement=this.createContainerElement(),this.external=!1}initialize(){this.initializeElement()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e}createContainerElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer-contents"),this.element.appendChild(e),e}initializeElement(){if(this.table.options.footerElement)if("string"==typeof this.table.options.footerElement)"<"===this.table.options.footerElement[0]?this.containerElement.innerHTML=this.table.options.footerElement:(this.external=!0,this.containerElement=document.querySelector(this.table.options.footerElement));else this.element=this.table.options.footerElement}getElement(){return this.element}append(e){this.activate(),this.containerElement.appendChild(e),this.table.rowManager.adjustTableSize()}prepend(e){this.activate(),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()}remove(e){e.parentNode.removeChild(e),this.deactivate()}deactivate(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)}activate(){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display=""))}redraw(){this.dispatch("footer-redraw")}}class v extends e{constructor(e){super(e),this.el=null,this.abortClasses=["tabulator-headers","tabulator-table"],this.previousTargets={},this.listeners=["click","dblclick","contextmenu","mouseenter","mouseleave","mouseover","mouseout","mousemove","mouseup","mousedown","touchstart","touchend"],this.componentMap={"tabulator-cell":"cell","tabulator-row":"row","tabulator-group":"group","tabulator-col":"column"},this.pseudoTrackers={row:{subscriber:null,target:null},cell:{subscriber:null,target:null},group:{subscriber:null,target:null},column:{subscriber:null,target:null}},this.pseudoTracking=!1}initialize(){this.el=this.table.element,this.buildListenerMap(),this.bindSubscriptionWatchers()}buildListenerMap(){var e={};this.listeners.forEach((t=>{e[t]={handler:null,components:[]}})),this.listeners=e}bindPseudoEvents(){Object.keys(this.pseudoTrackers).forEach((e=>{this.pseudoTrackers[e].subscriber=this.pseudoMouseEnter.bind(this,e),this.subscribe(e+"-mouseover",this.pseudoTrackers[e].subscriber)})),this.pseudoTracking=!0}pseudoMouseEnter(e,t,i){this.pseudoTrackers[e].target!==i&&(this.pseudoTrackers[e].target&&this.dispatch(e+"-mouseleave",t,this.pseudoTrackers[e].target),this.pseudoMouseLeave(e,t),this.pseudoTrackers[e].target=i,this.dispatch(e+"-mouseenter",t,i))}pseudoMouseLeave(e,t){var i=Object.keys(this.pseudoTrackers),s={row:["cell"],cell:["row"]};(i=i.filter((t=>{var i=s[e];return t!==e&&(!i||i&&!i.includes(t))}))).forEach((e=>{var i=this.pseudoTrackers[e].target;this.pseudoTrackers[e].target&&(this.dispatch(e+"-mouseleave",t,i),this.pseudoTrackers[e].target=null)}))}bindSubscriptionWatchers(){var e=Object.keys(this.listeners),t=Object.values(this.componentMap);for(let i of t)for(let t of e){let e=i+"-"+t;this.subscriptionChange(e,this.subscriptionChanged.bind(this,i,t))}this.subscribe("table-destroy",this.clearWatchers.bind(this))}subscriptionChanged(e,t,i){var s=this.listeners[t].components,o=s.indexOf(e),n=!1;i?-1===o&&(s.push(e),n=!0):this.subscribed(e+"-"+t)||o>-1&&(s.splice(o,1),n=!0),"mouseenter"!==t&&"mouseleave"!==t||this.pseudoTracking||this.bindPseudoEvents(),n&&this.updateEventListeners()}updateEventListeners(){for(let e in this.listeners){let t=this.listeners[e];t.components.length?t.handler||(t.handler=this.track.bind(this,e),this.el.addEventListener(e,t.handler)):t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}track(e,t){var i=t.composedPath&&t.composedPath()||t.path,s=this.findTargets(i);s=this.bindComponents(e,s),this.triggerEvents(e,t,s),!this.pseudoTracking||"mouseover"!=e&&"mouseleave"!=e||Object.keys(s).length||this.pseudoMouseLeave("none",t)}findTargets(e){var t={};let i=Object.keys(this.componentMap);for(let s of e){let e=s.classList?[...s.classList]:[];if(e.filter((e=>this.abortClasses.includes(e))).length)break;let o=e.filter((e=>i.includes(e)));for(let e of o)t[this.componentMap[e]]||(t[this.componentMap[e]]=s)}return t.group&&t.group===t.row&&delete t.row,t}bindComponents(e,t){var i=Object.keys(t).reverse(),s=this.listeners[e],o={},n={};for(let e of i){let i,r=t[e],a=this.previousTargets[e];if(a&&a.target===r)i=a.component;else switch(e){case"row":case"group":if(s.components.includes("row")||s.components.includes("cell")||s.components.includes("group")){i=this.table.rowManager.getVisibleRows(!0).find((e=>e.getElement()===r)),t.row&&t.row.parentNode&&t.row.parentNode.closest(".tabulator-row")&&(t[e]=!1)}break;case"column":s.components.includes("column")&&(i=this.table.columnManager.findColumn(r));break;case"cell":s.components.includes("cell")&&(o.row instanceof m?i=o.row.findCell(r):t.row&&console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"))}i&&(o[e]=i,n[e]={target:r,component:i})}return this.previousTargets=n,o}triggerEvents(e,t,i){var s=this.listeners[e];for(let o in i)i[o]&&s.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}clearWatchers(){for(let e in this.listeners){let t=this.listeners[e];t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}}class w{constructor(e){this.table=e,this.bindings={}}bind(e,t,i){this.bindings[e]||(this.bindings[e]={}),this.bindings[e][t]?console.warn("Unable to bind component handler, a matching function name is already bound",e,t,i):this.bindings[e][t]=i}handle(e,t,i){if(this.bindings[e]&&this.bindings[e][i]&&"function"==typeof this.bindings[e][i].bind)return this.bindings[e][i].bind(null,t);"then"===i||"string"!=typeof i||i.startsWith("_")||this.table.options.debugInvalidComponentFuncs&&console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}class C extends e{constructor(e){super(e),this.requestOrder=0,this.loading=!1}initialize(){}load(e,t,i,s,o,n){var r=++this.requestOrder;return this.table.destroyed?Promise.resolve():(this.dispatchExternal("dataLoading",e),!e||0!=e.indexOf("{")&&0!=e.indexOf("[")||(e=JSON.parse(e)),this.confirm("data-loading",[e,t,i,o])?(this.loading=!0,o||this.alertLoader(),t=this.chain("data-params",[e,i,o],t||{},t||{}),t=this.mapParams(t,this.table.options.dataSendParams),this.chain("data-load",[e,t,i,o],!1,Promise.resolve([])).then((e=>{if(this.table.destroyed)console.warn("Data Load Response Blocked - Table has been destroyed");else{Array.isArray(e)||"object"!=typeof e||(e=this.mapParams(e,this.objectInvert(this.table.options.dataReceiveParams)));var t=this.chain("data-loaded",e,null,e);r==this.requestOrder?(this.clearAlert(),!1!==t&&(this.dispatchExternal("dataLoaded",t),this.table.rowManager.setData(t,s,void 0===n?!s:n))):console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made")}})).catch((e=>{console.error("Data Load Error: ",e),this.dispatchExternal("dataLoadError",e),o||this.alertError(),setTimeout((()=>{this.clearAlert()}),this.table.options.dataLoaderErrorTimeout)})).finally((()=>{this.loading=!1}))):(this.dispatchExternal("dataLoaded",e),e||(e=[]),this.table.rowManager.setData(e,s,void 0===n?!s:n),Promise.resolve()))}mapParams(e,t){var i={};for(let s in e)i[t.hasOwnProperty(s)?t[s]:s]=e[s];return i}objectInvert(e){var t={};for(let i in e)t[e[i]]=i;return t}blockActiveLoad(){this.requestOrder++}alertLoader(){("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader)&&this.table.alertManager.alert(this.table.options.dataLoaderLoading||this.langText("data|loading"))}alertError(){this.table.alertManager.alert(this.table.options.dataLoaderError||this.langText("data|error"),"error")}clearAlert(){this.table.alertManager.clear()}}class E{constructor(e,t,i){this.table=e,this.events={},this.optionsList=t||{},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=i}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifySubscriptionChange(e,!0)}subscribe(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}else delete this.events[e];this._notifySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_notifySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e,t=Array.from(arguments),i=t.shift();return this.events[i]&&this.events[i].forEach(((i,s)=>{let o=i.apply(this.table,t);s||(e=o)})),e}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="ExternalEvent:"+e[0],(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}}class y{constructor(e){this.events={},this.subscriptionNotifiers={},this.dispatch=e?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=e?this._debugChain.bind(this):this._chain.bind(this),this.confirm=e?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=e}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifySubscriptionChange(e,!0)}subscribe(e,t,i=1e4){this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort(((e,t)=>e.priority-t.priority)),this._notifySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e.callback===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_chain(e,t,i,s){var o=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach(((e,i)=>{o=e.callback.apply(this,t.concat([o]))})),o):"function"==typeof s?s():s}_confirm(e,t){var i=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach(((e,s)=>{e.callback.apply(this,t)&&(i=!0)})),i}_notifySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e=Array.from(arguments),t=e.shift();this.events[t]&&this.events[t].forEach((t=>{t.callback.apply(this,e)}))}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}_debugChain(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._chain(...arguments)}_debugConfirm(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._confirm(...arguments)}}class R extends e{constructor(e){super(e)}_warnUser(){this.options("debugDeprecation")&&console.warn(...arguments)}check(e,t,i){var s="";return void 0===this.options(e)||(s="Deprecated Setup Option - Use of the %c"+e+"%c option is now deprecated",t?(s=s+", Please use the %c"+t+"%c option instead",this._warnUser(s,"font-weight: bold;","font-weight: normal;","font-weight: bold;","font-weight: normal;"),i&&(this.table.options[t]=this.table.options[e])):this._warnUser(s,"font-weight: bold;","font-weight: normal;"),!1)}checkMsg(e,t){return void 0===this.options(e)||(this._warnUser("%cDeprecated Setup Option - Use of the %c"+e+" %c option is now deprecated, "+t,"font-weight: normal;","font-weight: bold;","font-weight: normal;"),!1)}msg(e){this._warnUser(e)}}class x{static register(e){x.tables.push(e)}static deregister(e){var t=x.tables.indexOf(e);t>-1&&x.tables.splice(t,1)}static lookupTable(e,t){var i,s,o=[];if("string"==typeof e){if((i=document.querySelectorAll(e)).length)for(var n=0;n{e.stopPropagation()}))),this}_fitToScreen(e,t,i,s,o){var n=this.container===document.body?document.documentElement.scrollTop:this.container.scrollTop;if((e+this.element.offsetWidth>=this.container.offsetWidth||this.reversedX)&&(this.element.style.left="",this.element.style.right=i?this.container.offsetWidth-s.left+"px":this.container.offsetWidth-e+"px",this.reversedX=!0),t+this.element.offsetHeight>Math.max(this.container.offsetHeight,n?this.container.scrollHeight:0))if(i)if("bottom"===o)this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight-i.offsetHeight-1+"px";else this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight+i.offsetHeight+1+"px";else this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight+"px"}isVisible(){return this.visible}hideOnBlur(e){return this.blurable=!0,this.visible&&(setTimeout((()=>{this.visible&&(this.table.rowManager.element.addEventListener("scroll",this.blurEvent),this.subscribe("cell-editing",this.blurEvent),document.body.addEventListener("click",this.blurEvent),document.body.addEventListener("contextmenu",this.blurEvent),document.body.addEventListener("mousedown",this.blurEvent),window.addEventListener("resize",this.blurEvent),document.body.addEventListener("keydown",this.escEvent),this.blurEventsBound=!0)}),100),this.blurCallback=e),this}_escapeCheck(e){27==e.keyCode&&this.hide()}blockHide(){this.hideable=!1}restoreHide(){this.hideable=!0}hide(e=!1){return this.visible&&this.hideable&&(this.blurable&&this.blurEventsBound&&(document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),document.body.removeEventListener("mousedown",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent),this.unsubscribe("cell-editing",this.blurEvent),this.blurEventsBound=!1),this.childPopup&&this.childPopup.hide(),this.parent&&(this.parent.childPopup=null),this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.visible=!1,this.blurCallback&&!e&&this.blurCallback(),this.unsubscribe("table-destroy",this.destroyBinding)),this}child(e){return this.childPopup&&this.childPopup.hide(),this.childPopup=new T(this.table,e,this),this.childPopup}}class k extends e{constructor(e,t){super(e),this._handler=null}initialize(){}registerTableOption(e,t){this.table.optionsList.register(e,t)}registerColumnOption(e,t){this.table.columnManager.optionsList.register(e,t)}registerTableFunction(e,t){void 0===this.table[e]?this.table[e]=(...i)=>(this.table.initGuard(e),t(...i)):console.warn("Unable to bind table function, name already in use",e)}registerComponentFunction(e,t,i){return this.table.componentFunctionBinder.bind(e,t,i)}registerDataHandler(e,t){this.table.rowManager.registerDataPipelineHandler(e,t),this._handler=e}registerDisplayHandler(e,t){this.table.rowManager.registerDisplayPipelineHandler(e,t),this._handler=e}displayRows(e){var t,i=this.table.rowManager.displayRows.length-1;if(this._handler&&(t=this.table.rowManager.displayPipeline.findIndex((e=>e.handler===this._handler)))>-1&&(i=t),e&&(i+=e),this._handler)return i>-1?this.table.rowManager.getDisplayRows(i):this.activeRows()}activeRows(){return this.table.rowManager.activeRows}refreshData(e,t){t||(t=this._handler),t&&this.table.rowManager.refreshActiveData(t,!1,e)}footerAppend(e){return this.table.footerManager.append(e)}footerPrepend(e){return this.table.footerManager.prepend(e)}footerRemove(e){return this.table.footerManager.remove(e)}popup(e,t){return new T(this.table,e,t)}alert(e,t){return this.table.alertManager.alert(e,t)}clearAlert(){return this.table.alertManager.clear()}}function M(e,t){e.forEach((function(e){e.reinitializeWidth()})),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()}var L={fitData:function(e,t){t&&this.table.columnManager.renderer.reinitializeColumnWidths(e),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:M,fitDataTable:M,fitDataStretch:function(e,t){var i=0,s=this.table.rowManager.element.clientWidth,o=0,n=!1;e.forEach(((e,t)=>{e.widthFixed||e.reinitializeWidth(),(this.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(n=e),e.visible&&(i+=e.getWidth())})),n?(o=s-i+n.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(n.setWidth(0),this.table.modules.responsiveLayout.update()),o>0?n.setWidth(o):n.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e,t){var i,s,o=this.table.rowManager.element.getBoundingClientRect().width,n=0,r=0,a=0,l=[],h=[],d=0,c=0;function u(e){return"string"==typeof e?e.indexOf("%")>-1?o/100*parseInt(e):parseInt(e):e}function m(e,t,i,s){var o=[],n=0,r=0,l=0,h=a,d=0,c=0,p=[];function g(e){return i*(e.column.definition.widthGrow||1)}function b(e){return u(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,n){var r=s?b(e):g(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(o-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,s;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(s=u(t),n+=s>i?s:i,e.definition.widthShrink&&(h.push({column:e,width:s>i?s:i}),d+=e.definition.widthShrink)):(l.push({column:e,width:0}),a+=e.definition.widthGrow||1))})),r=o-n,i=Math.floor(r/a),c=m(l,r,i,!1),l.length&&c>0&&(l[l.length-1].width+=c),l.forEach((function(e){r-=e.width})),(s=Math.abs(c)+r)>0&&d&&(c=m(h,s,Math.floor(s/d),!0)),c&&h.length&&(h[h.length-1].width-=c),l.forEach((function(e){e.column.setWidth(e.width)})),h.forEach((function(e){e.column.setWidth(e.width)}))}};class S extends k{constructor(e){super(e,"layout"),this.mode=null,this.registerTableOption("layout","fitData"),this.registerTableOption("layoutColumnsOnNewData",!1),this.registerColumnOption("widthGrow"),this.registerColumnOption("widthShrink")}initialize(){var e=this.table.options.layout;S.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode),this.subscribe("column-init",this.initializeColumn.bind(this))}initializeColumn(e){e.definition.widthGrow&&(e.definition.widthGrow=Number(e.definition.widthGrow)),e.definition.widthShrink&&(e.definition.widthShrink=Number(e.definition.widthShrink))}getMode(){return this.mode}layout(e){this.dispatch("layout-refreshing"),S.modes[this.mode].call(this,this.table.columnManager.columnsByIndex,e),this.dispatch("layout-refreshed")}}S.moduleName="layout",S.modes=L;class D extends k{constructor(e){super(e),this.locale="default",this.lang=!1,this.bindings={},this.langList={},this.registerTableOption("locale",!1),this.registerTableOption("langs",{})}initialize(){this.langList=r.deepClone(D.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);for(let e in this.table.options.langs)this.installLang(e,this.table.options.langs[e]);this.setLocale(this.table.options.locale),this.registerTableFunction("setLocale",this.setLocale.bind(this)),this.registerTableFunction("getLocale",this.getLocale.bind(this)),this.registerTableFunction("getLang",this.getLang.bind(this))}setHeaderFilterPlaceholder(e){this.langList.default.headerFilters.default=e}installLang(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}_setLangProp(e,t){for(let i in t)e[i]&&"object"==typeof e[i]?this._setLangProp(e[i],t[i]):e[i]=t[i]}setLocale(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langList[e]){let t=e.split("-")[0];this.langList[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=r.deepClone(this.langList.default||{}),"default"!=e&&function e(t,i){for(var s in t)"object"==typeof t[s]?(i[s]||(i[s]={}),e(t[s],i[s])):i[s]=t[s]}(this.langList[e],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}getLocale(e){return this.locale}getLang(e){return e?this.langList[e]:this.lang}getText(e,t){var i=(t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}_getLangElement(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}bind(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}_executeBindings(){for(let e in this.bindings)this.bindings[e].forEach((t=>{t(this.getText(e),this.lang)}))}}D.moduleName="localize",D.langs={default:{groups:{item:"item",items:"items"},columns:{},data:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All",counter:{showing:"Showing",of:"of",rows:"rows",pages:"pages"}},headerFilters:{default:"filter column...",columns:{}}}};class P extends k{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return x.lookupTable(e).forEach((e=>{this.table!==e&&t.push(e)})),t}send(e,t,i,s){var o=this.getConnections(e);o.forEach((e=>{e.tableComms(this.table.element,t,i,s)})),!o.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}receive(e,t,i,s){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,s);console.warn("Inter-table Comms Error - no such module:",t)}}P.moduleName="comms";var z=Object.freeze({__proto__:null,LayoutModule:S,LocalizeModule:D,CommsModule:P});class H{constructor(e,t){this.bindStaticFunctionality(e),this.bindModules(e,z,!0),t&&this.bindModules(e,t)}bindStaticFunctionality(e){e.moduleBindings={},e.extendModule=function(t,i,s){if(e.moduleBindings[t]){var o=e.moduleBindings[t][i];if(o)if("object"==typeof s)for(let e in s)o[e]=s[e];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",i)}else console.warn("Module Error - module does not exist:",t)},e.registerModule=function(t){Array.isArray(t)||(t=[t]),t.forEach((t=>{e.registerModuleBinding(t)}))},e.registerModuleBinding=function(t){e.moduleBindings[t.moduleName]=t},e.findTable=function(e){var t=x.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},e.prototype.bindModules=function(){var t=[],i=[],s=[];for(var o in this.modules={},e.moduleBindings){let n=e.moduleBindings[o],r=new n(this);this.modules[o]=r,n.prototype.moduleCore?this.modulesCore.push(r):n.moduleInitOrder?n.moduleInitOrder<0?t.push(r):i.push(r):s.push(r)}t.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),i.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),this.modulesRegular=t.concat(s.concat(i))}}bindModules(e,t,i){var s=Object.values(t);i&&s.forEach((e=>{e.prototype.moduleCore=!0})),e.registerModule(s)}}class F extends e{constructor(e){super(e),this.element=this._createAlertElement(),this.msgElement=this._createMsgElement(),this.type=null,this.element.appendChild(this.msgElement)}_createAlertElement(){var e=document.createElement("div");return e.classList.add("tabulator-alert"),e}_createMsgElement(){var e=document.createElement("div");return e.classList.add("tabulator-alert-msg"),e.setAttribute("role","alert"),e}_typeClass(){return"tabulator-alert-state-"+this.type}alert(e,t="msg"){if(e){for(this.clear(),this.dispatch("alert-show",t),this.type=t;this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.add(this._typeClass()),"function"==typeof e&&(e=e()),e instanceof HTMLElement?this.msgElement.appendChild(e):this.msgElement.innerHTML=e,this.table.element.appendChild(this.element)}}clear(){this.dispatch("alert-hide",this.type),this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.msgElement.classList.remove(this._typeClass())}}class _{constructor(e,t){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.alertManager=null,this.vdomHoz=null,this.externalEvents=null,this.eventBus=null,this.interactionMonitor=!1,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.originalElement=null,this.componentFunctionBinder=new w(this),this.dataLoader=!1,this.modules={},this.modulesCore=[],this.modulesRegular=[],this.deprecationAdvisor=new R(this),this.optionsList=new a(this,"table constructor"),this.initialized=!1,this.destroyed=!1,this.initializeElement(e)&&(this.initializeCoreSystems(t),setTimeout((()=>{this._create()}))),x.register(this)}initializeElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)}initializeCoreSystems(e){this.columnManager=new c(this),this.rowManager=new b(this),this.footerManager=new f(this),this.dataLoader=new C(this),this.alertManager=new F(this),this.bindModules(),this.options=this.optionsList.generate(_.defaultOptions,e),this._clearObjectPointers(),this._mapDeprecatedFunctionality(),this.externalEvents=new E(this,this.options,this.options.debugEventsExternal),this.eventBus=new y(this.options.debugEventsInternal),this.interactionMonitor=new v(this),this.dataLoader.initialize(),this.footerManager.initialize()}_mapDeprecatedFunctionality(){}_clearSelection(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")}_create(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this._rtlCheck(),this._buildElement(),this._initializeTable(),this._loadInitialData(),this.initialized=!0,this.externalEvents.dispatch("tableBuilt")}_rtlCheck(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}}_clearObjectPointers(){this.options.columns=this.options.columns.slice(0),Array.isArray(this.options.data)&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}_buildElement(){var e,t=this.element,i=this.options;if("TABLE"===t.tagName){this.originalElement=this.element,e=document.createElement("div");var s=t.attributes;for(var o in s)"object"==typeof s[o]&&e.setAttribute(s[o].name,s[o].value);t.parentNode.replaceChild(e,t),this.element=t=e}for(t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight)}_initializeTable(){var e=this.element,t=this.options;this.interactionMonitor.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modulesCore.forEach((e=>{e.initialize()})),e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),t.footerElement&&this.footerManager.activate(),t.autoColumns&&t.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modulesRegular.forEach((e=>{e.initialize()})),this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built")}_loadInitialData(){this.dataLoader.load(this.options.data),this.columnManager.verticalAlignHeaders()}destroy(){var e=this.element;for(this.destroyed=!0,x.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.destroy();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator"),this.externalEvents.dispatch("tableDestroyed")}_detectBrowser(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):e.indexOf("Mac OS")>-1?(this.browser="safari",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.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(e)||/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(e.slice(0,4))}initGuard(e,t){var i,s;return this.options.debugInitialization&&!this.initialized&&(e||(e=" "==(s="Error"==(i=(new Error).stack.split("\n"))[0]?i[2]:i[1])[0]?s.trim().split(" ")[1].split(".")[1]:s.trim().split("@")[0]),console.warn("Table Not Initialized - Calling the "+e+" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function."+(t?" "+t:""))),this.initialized}blockRedraw(){this.initGuard(),this.eventBus.dispatch("redraw-blocking"),this.rowManager.blockRedraw(),this.columnManager.blockRedraw(),this.eventBus.dispatch("redraw-blocked")}restoreRedraw(){this.initGuard(),this.eventBus.dispatch("redraw-restoring"),this.rowManager.restoreRedraw(),this.columnManager.restoreRedraw(),this.eventBus.dispatch("redraw-restored")}setData(e,t,i){return this.initGuard(!1,"To set initial data please use the 'data' property in the table constructor."),this.dataLoader.load(e,t,i,!1)}clearData(){this.initGuard(),this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}getData(e){return this.rowManager.getData(e)}getDataCount(e){return this.rowManager.getDataCount(e)}replaceData(e,t,i){return this.initGuard(),this.dataLoader.load(e,t,i,!0,!0)}updateData(e){var t=0;return this.initGuard(),new Promise(((i,s)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e&&e.length>0?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);o?(t++,o.updateData(e).then((()=>{--t||i()})).catch((t=>{s("Update Error - Unable to update row",e,t)}))):s("Update Error - Unable to find row",e)})):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))}))}addData(e,t,i){return this.initGuard(),new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?this.rowManager.addRows(e,t,i).then((e=>{var t=[];e.forEach((function(e){t.push(e.getComponent())})),s(t)})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}updateOrAddData(e){var t=[],i=0;return this.initGuard(),new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e&&e.length>0?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);i++,o?o.updateData(e).then((()=>{i--,t.push(o.getComponent()),i||s(t)})):this.rowManager.addRows(e).then((e=>{i--,t.push(e[0].getComponent()),i||s(t)}))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}getRow(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}getRowFromPosition(e){var t=this.rowManager.getRowFromPosition(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}deleteRow(e){var t=[];this.initGuard(),Array.isArray(e)||(e=[e]);for(let i of e){let e=this.rowManager.findRow(i,!0);if(!e)return console.error("Delete Error - No matching row found:",i),Promise.reject("Delete Error - No matching row found");t.push(e)}return t.sort(((e,t)=>this.rowManager.rows.indexOf(e)>this.rowManager.rows.indexOf(t)?1:-1)),t.forEach((e=>{e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}addRow(e,t,i){return this.initGuard(),"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i,!0).then((e=>e[0].getComponent()))}updateOrAddRow(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>i.getComponent())):this.rowManager.addRows(t).then((e=>e[0].getComponent()))}updateRow(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>Promise.resolve(i.getComponent()))):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}scrollToRow(e,t,i){var s=this.rowManager.findRow(e);return s?this.rowManager.scrollToRow(s,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}moveRow(e,t,i){var s=this.rowManager.findRow(e);this.initGuard(),s?s.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}getRows(e){return this.rowManager.getComponents(e)}getRowPosition(e){var t=this.rowManager.findRow(e);return t?t.getPosition():(console.warn("Position Error - No matching row found:",e),!1)}setColumns(e){this.initGuard(!1,"To set initial columns please use the 'columns' property in the table constructor"),this.columnManager.setColumns(e)}getColumns(e){return this.columnManager.getComponents(e)}getColumn(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}getColumnDefinitions(){return this.columnManager.getDefinitionTree()}showColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}hideColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}toggleColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}addColumn(e,t,i){var s=this.columnManager.findColumn(i);return this.initGuard(),this.columnManager.addColumn(e,t,s).then((e=>e.getComponent()))}deleteColumn(e){var t=this.columnManager.findColumn(e);return this.initGuard(),t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}updateColumnDefinition(e,t){var i=this.columnManager.findColumn(e);return this.initGuard(),i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}moveColumn(e,t,i){var s=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);this.initGuard(),s?o?this.columnManager.moveColumn(s,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}scrollToColumn(e,t,i){return new Promise(((s,o)=>{var n=this.columnManager.findColumn(e);return n?this.columnManager.scrollToColumn(n,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}redraw(e){this.initGuard(),this.columnManager.redraw(e),this.rowManager.redraw(e)}setHeight(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw(!0)}on(e,t){this.externalEvents.subscribe(e,t)}off(e,t){this.externalEvents.unsubscribe(e,t)}dispatchEvent(){Array.from(arguments).shift(),this.externalEvents.dispatch(...arguments)}alert(e,t){this.initGuard(),this.alertManager.alert(e,t)}clearAlert(){this.initGuard(),this.alertManager.clear()}modExists(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}module(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}_.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,debugInvalidComponentFuncs:!0,debugInitialization:!0,debugDeprecation:!0,height:!1,minHeight:!1,maxHeight:!1,columnHeaderVertAlign:"top",popupContainer:!1,columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",footerElement:!1,index:"id",textDirection:"auto",addRowPos:"bottom",headerVisible:!0,renderVertical:"virtual",renderHorizontal:"basic",renderVerticalBuffer:0,scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,rowHeight:null,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataLoaderErrorTimeout:3e3,dataSendParams:{},dataReceiveParams:{}},new H(_);class O extends k{constructor(e){super(e),this.allowedTypes=["","data","download","clipboard","print","htmlOutput"],this.registerColumnOption("accessor"),this.registerColumnOption("accessorParams"),this.registerColumnOption("accessorData"),this.registerColumnOption("accessorDataParams"),this.registerColumnOption("accessorDownload"),this.registerColumnOption("accessorDownloadParams"),this.registerColumnOption("accessorClipboard"),this.registerColumnOption("accessorClipboardParams"),this.registerColumnOption("accessorPrint"),this.registerColumnOption("accessorPrintParams"),this.registerColumnOption("accessorHtmlOutput"),this.registerColumnOption("accessorHtmlOutputParams")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="accessor"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupAccessor(e.definition[n]))&&(t=!0,i[n]={accessor:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.accessor=i)}lookupAccessor(e){var t=!1;switch(typeof e){case"string":O.accessors[e]?t=O.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t){var i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),s=e.getComponent(),o=r.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var n,r,a,l;e.modules.accessor&&(r=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(n=e.getFieldValue(o))&&(l=e.getComponent(),a="function"==typeof r.params?r.params(n,o,t,l,s):r.params,e.setFieldValue(o,r.accessor(n,o,t,a,l,s)))})),o}}O.moduleName="accessor",O.accessors={};function A(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(A(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(A(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}function B(e){var t=A(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}function V(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+B(i))),e}function I(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(I(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(I(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}var N={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=I(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class W extends k{constructor(e){super(e),this.config={},this.url="",this.urlGenerator=!1,this.params=!1,this.loaderPromise=!1,this.registerTableOption("ajaxURL",!1),this.registerTableOption("ajaxURLGenerator",!1),this.registerTableOption("ajaxParams",{}),this.registerTableOption("ajaxConfig","get"),this.registerTableOption("ajaxContentType","form"),this.registerTableOption("ajaxRequestFunc",!1),this.registerTableOption("ajaxRequesting",(function(){})),this.registerTableOption("ajaxResponse",!1),this.contentTypeFormatters=W.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||W.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||W.defaultURLGenerator,this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.setDefaultConfig(this.table.options.ajaxConfig),this.registerTableFunction("getAjaxUrl",this.getUrl.bind(this)),this.subscribe("data-loading",this.requestDataCheck.bind(this)),this.subscribe("data-params",this.requestParams.bind(this)),this.subscribe("data-load",this.requestData.bind(this))}requestParams(e,t,i,s){var o=this.table.options.ajaxParams;return o&&("function"==typeof o&&(o=o.call(this.table)),s=Object.assign(Object.assign({},o),s)),s}requestDataCheck(e,t,i,s){return!((e||!this.url)&&"string"!=typeof e)}requestData(e,t,i,s,o){var n;return!o&&this.requestDataCheck(e)?(e&&this.setUrl(e),n=this.generateConfig(i),this.sendRequest(this.url,t,n)):o}setDefaultConfig(e={}){this.config=Object.assign({},W.defaultConfig),"string"==typeof e?this.config.method=e:Object.assign(this.config,e)}generateConfig(e={}){var t=Object.assign({},this.config);return"string"==typeof e?t.method=e:Object.assign(t,e),t}setUrl(e){this.url=e}getUrl(){return this.url}sendRequest(e,t,i){return!1!==this.table.options.ajaxRequesting.call(this.table,e,t)?this.loaderPromise(e,i,t).then((i=>(this.table.options.ajaxResponse&&(i=this.table.options.ajaxResponse.call(this.table,e,t,i)),i))):Promise.reject()}}W.moduleName="ajax",W.defaultConfig={method:"GET"},W.defaultURLGenerator=V,W.defaultLoaderPromise=function(e,t,i){var s;return new Promise(((o,n)=>{if(e=this.urlGenerator.call(this.table,e,t,i),"GET"!=t.method.toUpperCase())if(s="object"==typeof this.table.options.ajaxContentType?this.table.options.ajaxContentType:this.contentTypeFormatters[this.table.options.ajaxContentType]){for(var r in s.headers)t.headers||(t.headers={}),void 0===t.headers[r]&&(t.headers[r]=s.headers[r]);t.body=s.body.call(this,e,t,i)}else console.warn("Ajax Error - Invalid ajaxContentType value:",this.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers.Origin&&(t.headers.Origin=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then((e=>{e.ok?e.json().then((e=>{o(e)})).catch((e=>{n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))})).catch((e=>{console.error("Ajax Load Error - Connection Error: ",e),n(e)}))):(console.warn("Ajax Load Error - No URL Set"),o([]))}))},W.contentTypeFormatters=N;class j extends k{constructor(e){super(e),this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0,this.registerTableOption("clipboard",!1),this.registerTableOption("clipboardCopyStyled",!0),this.registerTableOption("clipboardCopyConfig",!1),this.registerTableOption("clipboardCopyFormatter",!1),this.registerTableOption("clipboardCopyRowRange","active"),this.registerTableOption("clipboardPasteParser","table"),this.registerTableOption("clipboardPasteAction","insert"),this.registerColumnOption("clipboard"),this.registerColumnOption("titleClipboard")}initialize(){this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(e=>{var t,i,s;this.blocked||(e.preventDefault(),this.customSelection?(t=this.customSelection,this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t))):(s=this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig,this.table.options.clipboardCopyStyled,this.rowRange,"clipboard"),t=(i=this.table.modules.export.generateHTMLTable(s))?this.generatePlainContent(s):"",this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t),i=this.table.options.clipboardCopyFormatter("html",i))),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",t):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",t),i&&e.clipboardData.setData("text/html",i)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",t),i&&e.originalEvent.clipboardData.setData("text/html",i)),this.dispatchExternal("clipboardCopied",t,i),this.reset())})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(e=>{this.paste(e)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}reset(){this.blocked=!0,this.customSelection=!1}generatePlainContent(e){var t=[];return e.forEach((e=>{var i=[];e.columns.forEach((t=>{var s="";if(t)if("group"===e.type&&(t.value=t.component.getKey()),null===t.value)s="";else switch(typeof t.value){case"object":s=JSON.stringify(t.value);break;case"undefined":s="";break;default:s=t.value}i.push(s)})),t.push(i.join("\t"))})),t.join("\n")}copy(e,t){var i,s;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((e=document.createRange()).selectNodeContents(this.table.element),(i=window.getSelection()).toString()&&t&&(this.customSelection=i.toString()),i.removeAllRanges(),i.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),document.execCommand("copy"),i&&i.removeAllRanges())}setPasteAction(e){switch(typeof e){case"string":this.pasteAction=j.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}}setPasteParser(e){switch(typeof e){case"string":this.pasteParser=j.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}}paste(e){var t,i,s;this.checkPasteOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),s=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,s)):this.dispatchExternal("clipboardPasteError",t))}mutateData(e){var t=[];return Array.isArray(e)?e.forEach((e=>{t.push(this.table.modules.mutator.transformRow(e,"clipboard"))})):t=e,t}checkPasteOrigin(e){var t=!0;return!this.confirm("clipboard-paste",[e])&&["DIV","SPAN"].includes(e.target.tagName)||(t=!1),t}getPasteData(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t}}j.moduleName="clipboard",j.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)},range:function(e){var t,i,s,o,n,r=[],a=this.table.modules.selectRange.activeRange,l=!1;return n=e.length,a&&(i=(t=a.getBounds()).start,t.start===t.end&&(l=!0),i&&(s=(r=this.table.rowManager.activeRows.slice()).indexOf(i.row),o=l?e.length:r.indexOf(t.end.row)-s+1,s>-1&&(this.table.blockRedraw(),(r=r.slice(s,s+o)).forEach(((t,i)=>{t.updateData(e[i%n])})),this.table.restoreRedraw()))),r}},j.pasteParsers={table:function(e){var t=[],i=!0,s=this.table.columnManager.columns,o=[],n=[];return(e=e.split("\n")).forEach((function(e){t.push(e.split("\t"))})),!(!t.length||1===t.length&&t[0].length<2)&&(t[0].forEach((function(e){var t=s.find((function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()}));t?o.push(t):i=!1})),i||(i=!0,o=[],t[0].forEach((function(e){var t=s.find((function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()}));t?o.push(t):i=!1})),i||(o=this.table.columnManager.columnsByIndex)),i&&t.shift(),t.forEach((function(e){var t={};e.forEach((function(e,i){o[i]&&(t[o[i].field]=e)})),n.push(t)})),n)},range:function(e){var t,i,s,o,n,r=[],a=[],l=this.table.modules.selectRange.activeRange,h=!1;return!!(l&&(i=(t=l.getBounds()).start,t.start===t.end&&(h=!0),i&&((e=e.split("\n")).forEach((function(e){r.push(e.split("\t"))})),r.length&&(n=(o=this.table.columnManager.getVisibleColumnsByIndex()).indexOf(i.column))>-1)))&&(s=h?r[0].length:o.indexOf(t.end.column)-n+1,o=o.slice(n,n+s),r.forEach((e=>{var t={},i=e.length;o.forEach((function(s,o){t[s.field]=e[o%i]})),a.push(t)})),a)}};class G{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getTable(){return this._row.table}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}_getSelf(){return this._row}}var U={avg:function(e,t,i){var s=0,o=void 0!==i.precision?i.precision:2;return e.length&&(s=e.reduce((function(e,t){return Number(e)+Number(t)})),s/=e.length,s=!1!==o?s.toFixed(o):s),parseFloat(s).toString()},max:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))>s||null===s)&&(s=e)})),null!==s?!1!==o?s.toFixed(o):s:""},min:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))(e||0===t)&&e.indexOf(t)===i)).length}};class J extends k{constructor(e){super(e),this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.blocked=!1,this.recalcAfterBlock=!1,this.registerTableOption("columnCalcs",!0),this.registerColumnOption("topCalc"),this.registerColumnOption("topCalcParams"),this.registerColumnOption("topCalcFormatter"),this.registerColumnOption("topCalcFormatterParams"),this.registerColumnOption("bottomCalc"),this.registerColumnOption("bottomCalcParams"),this.registerColumnOption("bottomCalcFormatter"),this.registerColumnOption("bottomCalcFormatterParams")}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e}initialize(){this.genColumn=new n({field:"value"},this),this.subscribe("cell-value-changed",this.cellValueChanged.bind(this)),this.subscribe("column-init",this.initializeColumnCheck.bind(this)),this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("column-moved",this.recalcActiveRows.bind(this)),this.subscribe("column-add",this.recalcActiveRows.bind(this)),this.subscribe("data-refreshed",this.recalcActiveRowsRefresh.bind(this)),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("rows-visible",this.visibleRows.bind(this)),this.subscribe("scrollbar-vertical",this.adjustForScrollbar.bind(this)),this.subscribe("redraw-blocked",this.blockRedraw.bind(this)),this.subscribe("redraw-restored",this.restoreRedraw.bind(this)),this.subscribe("table-redrawing",this.resizeHolderWidth.bind(this)),this.subscribe("column-resized",this.resizeHolderWidth.bind(this)),this.subscribe("column-show",this.resizeHolderWidth.bind(this)),this.subscribe("column-hide",this.resizeHolderWidth.bind(this)),this.registerTableFunction("getCalcResults",this.getResults.bind(this)),this.registerTableFunction("recalc",this.userRecalc.bind(this)),this.resizeHolderWidth()}resizeHolderWidth(){this.topElement.style.minWidth=this.table.columnManager.headersElement.offsetWidth+"px"}tableRedraw(e){this.recalc(this.table.rowManager.activeRows),e&&this.redraw()}blockRedraw(){this.blocked=!0,this.recalcAfterBlock=!1}restoreRedraw(){this.blocked=!1,this.recalcAfterBlock&&(this.recalcAfterBlock=!1,this.recalcActiveRowsRefresh())}userRecalc(){this.recalc(this.table.rowManager.activeRows)}blockCheck(){return this.blocked&&(this.recalcAfterBlock=!0),this.blocked}visibleRows(e,t){return this.topRow&&t.unshift(this.topRow),this.botRow&&t.push(this.botRow),t}rowsUpdated(e){this.table.options.groupBy?this.recalcRowGroup(e):this.recalcActiveRows()}recalcActiveRowsRefresh(){this.table.options.groupBy&&this.table.options.dataTreeStartExpanded&&this.table.options.dataTree?this.recalcAll():this.recalcActiveRows()}recalcActiveRows(){this.recalc(this.table.rowManager.activeRows)}cellValueChanged(e){(e.column.definition.topCalc||e.column.definition.bottomCalc)&&(this.table.options.groupBy?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.recalcActiveRows(),"table"!=this.table.options.columnCalcs&&this.recalcRowGroup(e.row)):this.recalcActiveRows())}initializeColumnCheck(e){(e.definition.topCalc||e.definition.bottomCalc)&&this.initializeColumn(e)}initializeColumn(e){var t=e.definition,i={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(typeof t.topCalc){case"string":J.calculations[t.topCalc]?i.topCalc=J.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":i.topCalc=t.topCalc}i.topCalc&&(e.modules.columnCalcs=i,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(typeof t.bottomCalc){case"string":J.calculations[t.bottomCalc]?i.botCalc=J.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":i.botCalc=t.bottomCalc}i.botCalc&&(e.modules.columnCalcs=i,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}}registerColumnField(){}removeCalcs(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.footerRemove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()}reinitializeCalcs(){this.topCalcs.length&&this.initializeTopRow(),this.botCalcs.length&&this.initializeBottomRow()}initializeTopRow(){var e=document.createDocumentFragment();this.topInitialized||(e.appendChild(document.createElement("br")),e.appendChild(this.topElement),this.table.columnManager.getContentsElement().insertBefore(e,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)}initializeBottomRow(){this.botInitialized||(this.footerPrepend(this.botElement),this.botInitialized=!0)}scrollHorizontal(e){this.botInitialized&&this.botRow&&(this.botElement.scrollLeft=e)}recalc(e){var t,i;if(!this.blockCheck()&&(this.topInitialized||this.botInitialized)){if(t=this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),i=this.generateRow("top",t),this.topRow=i;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(i.getElement()),i.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),i=this.generateRow("bottom",t),this.botRow=i;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(i.getElement()),i.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}}recalcRowGroup(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))}recalcAll(){(this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalcActiveRows(),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs&&this.table.modules.groupRows.getChildGroups().forEach((e=>{this.recalcGroup(e)})))}recalcGroup(e){var t,i;this.blockCheck()||e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),i=this.generateRowData("bottom",t),e.calcs.bottom.updateData(i),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),i=this.generateRowData("top",t),e.calcs.top.updateData(i),e.calcs.top.reinitialize()))}generateTopRow(e){return this.generateRow("top",this.rowsToData(e))}generateBottomRow(e){return this.generateRow("bottom",this.rowsToData(e))}rowsToData(e){var t=[];return e.forEach((e=>{if(t.push(e.getData()),this.table.options.dataTree&&this.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree&&e.modules.dataTree.open){var i=this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(e));t=t.concat(i)}})),t}generateRow(e,t){var i,s=this.generateRowData(e,t);return this.table.modExists("mutator")&&this.table.modules.mutator.disable(),i=new m(s,this,"calc"),this.table.modExists("mutator")&&this.table.modules.mutator.enable(),i.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),i.component=!1,i.getComponent=()=>(i.component||(i.component=new G(i)),i.component),i.generateCells=()=>{var t=[];this.table.columnManager.columnsByIndex.forEach((s=>{this.genColumn.setField(s.getField()),this.genColumn.hozAlign=s.hozAlign,s.definition[e+"CalcFormatter"]&&this.table.modExists("format")?this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter(s.definition[e+"CalcFormatter"]),params:s.definition[e+"CalcFormatterParams"]||{}}:this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter("plaintext"),params:{}},this.genColumn.definition.cssClass=s.definition.cssClass;var n=new o(this.genColumn,i);n.getElement(),n.column=s,n.setWidth(),s.cells.push(n),t.push(n),s.visible||n.hide()})),i.cells=t},i}generateRowData(e,t){var i,s,o={},n="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return n.forEach((function(e){var n=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach((function(t){n.push(e.getFieldValue(t))})),s=r+"Params",i="function"==typeof e.modules.columnCalcs[s]?e.modules.columnCalcs[s](n,t):e.modules.columnCalcs[s],e.setFieldValue(o,e.modules.columnCalcs[r](n,t,i)))})),o}hasTopCalcs(){return!!this.topCalcs.length}hasBottomCalcs(){return!!this.botCalcs.length}redraw(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)}getResults(){var e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach((t=>{e[t.getKey()]=this.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e}getGroupResults(e){var t=e._getSelf(),i=e.getSubGroups(),s={};return i.forEach((e=>{s[e.getKey()]=this.getGroupResults(e)})),{top:t.calcs.top?t.calcs.top.getData():{},bottom:t.calcs.bottom?t.calcs.bottom.getData():{},groups:s}}adjustForScrollbar(e){this.botRow&&(this.table.rtl?this.botElement.style.paddingLeft=e+"px":this.botElement.style.paddingRight=e+"px")}}J.moduleName="columnCalcs",J.calculations=U;class X extends k{constructor(e){super(e),this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.registerTableOption("dataTree",!1),this.registerTableOption("dataTreeFilter",!0),this.registerTableOption("dataTreeSort",!0),this.registerTableOption("dataTreeElementColumn",!1),this.registerTableOption("dataTreeBranchElement",!0),this.registerTableOption("dataTreeChildIndent",9),this.registerTableOption("dataTreeChildField","_children"),this.registerTableOption("dataTreeCollapseElement",!1),this.registerTableOption("dataTreeExpandElement",!1),this.registerTableOption("dataTreeStartExpanded",!1),this.registerTableOption("dataTreeChildColumnCalcs",!1),this.registerTableOption("dataTreeSelectPropagate",!1),this.registerComponentFunction("row","treeCollapse",this.collapseRow.bind(this)),this.registerComponentFunction("row","treeExpand",this.expandRow.bind(this)),this.registerComponentFunction("row","treeToggle",this.toggleRow.bind(this)),this.registerComponentFunction("row","getTreeParent",this.getTreeParent.bind(this)),this.registerComponentFunction("row","getTreeChildren",this.getRowChildren.bind(this)),this.registerComponentFunction("row","addTreeChild",this.addTreeChildRow.bind(this)),this.registerComponentFunction("row","isTreeExpanded",this.isRowExpanded.bind(this))}initialize(){if(this.table.options.dataTree){var e=null,t=this.table.options;switch(this.field=t.dataTreeChildField,this.indent=t.dataTreeChildIndent,this.options("movableRows")&&console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"),t.dataTreeBranchElement?!0===t.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof t.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=t.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=t.dataTreeBranchElement:(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch-empty")),t.dataTreeCollapseElement?"string"==typeof t.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=t.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=t.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="
        "),t.dataTreeExpandElement?"string"==typeof t.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=t.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=t.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
        "),typeof t.dataTreeStartExpanded){case"boolean":this.startOpen=function(e,i){return t.dataTreeStartExpanded};break;case"function":this.startOpen=t.dataTreeStartExpanded;break;default:this.startOpen=function(e,i){return t.dataTreeStartExpanded[i]}}this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("row-deleted",this.rowDelete.bind(this),0),this.subscribe("row-data-changed",this.rowDataChanged.bind(this),10),this.subscribe("cell-value-updated",this.cellValueChanged.bind(this)),this.subscribe("edit-cancelled",this.cellValueChanged.bind(this)),this.subscribe("column-moving-rows",this.columnMoving.bind(this)),this.subscribe("table-built",this.initializeElementField.bind(this)),this.subscribe("table-redrawing",this.tableRedrawing.bind(this)),this.registerDisplayHandler(this.getRows.bind(this),30)}}tableRedrawing(e){e&&this.table.rowManager.getRows().forEach((e=>{this.reinitializeRowChildren(e)}))}initializeElementField(){var e=this.table.columnManager.getFirstVisibleColumn();this.elementField=this.table.options.dataTreeElementColumn||!!e&&e.field}getRowChildren(e){return this.getTreeChildren(e,!0)}columnMoving(){var e=[];return this.table.rowManager.rows.forEach((t=>{e=e.concat(this.getTreeChildren(t,!1,!0))})),e}rowDataChanged(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}cellValueChanged(e){e.column.getField()===this.elementField&&this.layoutRow(e.row)}initializeRow(e){var t=e.getData()[this.field],i=Array.isArray(t),s=i||!i&&"object"==typeof t&&null!==t;!s&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!s&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!s&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:s}}reinitializeRowChildren(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}layoutRow(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,t),e.getElement().classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(i.branchEl,t.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?t.style.paddingRight=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")}generateControlElement(e,t){var i=e.modules.dataTree,s=i.controlEl;t=t||e.getCells()[0].getElement(),!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.collapseRow(e)}))):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.expandRow(e)}))),i.controlEl.addEventListener("mousedown",(e=>{e.stopPropagation()})),s&&s.parentNode===t?s.parentNode.replaceChild(i.controlEl,s):t.insertBefore(i.controlEl,t.firstChild))}getRows(e){var t=[];return e.forEach(((e,i)=>{var s;t.push(e),e instanceof m&&(e.create(),(s=e.modules.dataTree).index||!1===s.children||this.getChildren(e).forEach((e=>{e.create(),t.push(e)})))})),t}getChildren(e,t){var i=e.modules.dataTree,s=[],o=[];return!1!==i.children&&(i.open||t)&&(Array.isArray(i.children)||(i.children=this.generateChildren(e)),s=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(i.children):i.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(s),s.forEach((e=>{o.push(e),this.getChildren(e).forEach((e=>{o.push(e)}))}))),o}generateChildren(e){var t=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach((i=>{var s=new m(i||{},this.table.rowManager);s.create(),s.modules.dataTree.index=e.modules.dataTree.index+1,s.modules.dataTree.parent=e,s.modules.dataTree.children&&(s.modules.dataTree.open=this.startOpen(s.getComponent(),s.modules.dataTree.index)),t.push(s)})),t}expandRow(e,t){var i=e.modules.dataTree;!1!==i.children&&(i.open=!0,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowExpanded",e.getComponent(),e.modules.dataTree.index))}collapseRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowCollapsed",e.getComponent(),e.modules.dataTree.index))}toggleRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}isRowExpanded(e){return e.modules.dataTree.open}getTreeParent(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}getTreeParentRoot(e){return e.modules.dataTree&&e.modules.dataTree.parent?this.getTreeParentRoot(e.modules.dataTree.parent):e}getFilteredTreeChildren(e){var t=e.modules.dataTree,i=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),(this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(t.children):t.children).forEach((e=>{e instanceof m&&i.push(e)}))),i}rowDelete(e){var t,i=e.modules.dataTree.parent;i&&(!1!==(t=this.findChildIndex(e,i))&&i.data[this.field].splice(t,1),i.data[this.field].length||delete i.data[this.field],this.initializeRow(i),this.layoutRow(i)),this.refreshData(!0)}addTreeChildRow(e,t,i,s){var o=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==s&&!1!==(o=this.findChildIndex(s,e))&&e.data[this.field].splice(i?o:o+1,0,t),!1===o&&(i?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.refreshData(!0)}findChildIndex(e,t){var i=!1;return"object"==typeof e?e instanceof m?i=e.data:e instanceof u?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?t.modules.dataTree&&(i=t.modules.dataTree.children.find((t=>t instanceof m&&t.element===e)))&&(i=i.data):null===e&&(i=!1):i=void 0!==e&&t.data[this.field].find((t=>t.data[this.table.options.index]==e)),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i}getTreeChildren(e,t,i){var s=e.modules.dataTree,o=[];return s&&s.children&&(Array.isArray(s.children)||(s.children=this.generateChildren(e)),s.children.forEach((e=>{e instanceof m&&(o.push(t?e.getComponent():e),i&&(o=o.concat(this.getTreeChildren(e,t,i))))}))),o}getChildField(){return this.field}redrawNeeded(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}X.moduleName="dataTree";var q={csv:function(e,t={},i){var s=t.delimiter?t.delimiter:",",o=[],n=[];e.forEach((e=>{var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(((e,t)=>{e&&1===e.depth&&(n[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":e.columns.forEach((e=>{if(e){switch(typeof e.value){case"object":e.value=null!==e.value?JSON.stringify(e.value):"";break;case"undefined":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}})),o.push(t.join(s))}})),n.length&&o.unshift(n.join(s)),o=o.join("\n"),t.bom&&(o="\ufeff"+o),i(o,"text/csv")},json:function(e,t,i){var s=[];e.forEach((e=>{var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),s.push(t)}})),i(s=JSON.stringify(s,null,"\t"),"application/json")},jsonLines:function(e,t,i){const s=[];e.forEach((e=>{const t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),s.push(JSON.stringify(t))}})),i(s.join("\n"),"application/x-ndjson")},pdf:function(e,t={},i){var s=[],o=[],n={},r=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},a=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},l=t.jsPDF||{},h=t.title?t.title:"";function d(e,t){var i=[];return e.columns.forEach((e=>{var s;if(e){switch(typeof e.value){case"object":e.value=null!==e.value?JSON.stringify(e.value):"";break;case"undefined":e.value=""}s={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(s.styles=t),i.push(s)}})),i}l.orientation||(l.orientation=t.orientation||"landscape"),l.unit||(l.unit="pt"),e.forEach((e=>{switch(e.type){case"header":s.push(d(e));break;case"group":o.push(d(e,r));break;case"calc":o.push(d(e,a));break;case"row":o.push(d(e))}}));var c=new jspdf.jsPDF(l);t.autoTable&&(n="function"==typeof t.autoTable?t.autoTable(c)||{}:t.autoTable),h&&(n.didDrawPage=function(e){c.text(h,40,30)}),n.head=s,n.body=o,c.autoTable(n),t.documentProcessing&&t.documentProcessing(c),i(c.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,s){var o=i.sheetName||"Sheet1",n=XLSX.utils.book_new(),r=new e(this),a=!("compress"in i)||i.compress,l=i.writeOptions||{bookType:"xlsx",bookSST:!0,compression:a};function h(){var e=[],i=[],s={},o={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce(((e,t)=>e+(t&&t.width?t.width:1)),0):0,r:t.length}};return t.forEach(((t,s)=>{var o=[];t.columns.forEach((function(e,t){e?(o.push(e.value instanceof Date||"object"!=typeof e.value?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&(e.height>1||e.width>1)&&i.push({s:{r:s,c:t},e:{r:s+e.height-1,c:t+e.width-1}})):o.push("")})),e.push(o)})),XLSX.utils.sheet_add_aoa(s,e),s["!ref"]=XLSX.utils.encode_range(o),i.length&&(s["!merges"]=i),s}if(l.type="binary",n.SheetNames=[],n.Sheets={},i.sheetOnly)s(h());else{if(i.sheets)for(var d in i.sheets)!0===i.sheets[d]?(n.SheetNames.push(d),n.Sheets[d]=h()):(n.SheetNames.push(d),r.commsSend(i.sheets[d],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){n.Sheets[d]=e}}));else n.SheetNames.push(o),n.Sheets[o]=h();i.documentProcessing&&(n=i.documentProcessing(n)),s(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),s=0;s!=e.length;++s)i[s]=255&e.charCodeAt(s);return t}(XLSX.write(n,l)),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.generateHTMLTable(e),"text/html")}};class K extends k{constructor(e){super(e),this.registerTableOption("downloadEncoder",(function(e,t){return new Blob([e],{type:t})})),this.registerTableOption("downloadReady",void 0),this.registerTableOption("downloadConfig",{}),this.registerTableOption("downloadRowRange","active"),this.registerColumnOption("download"),this.registerColumnOption("titleDownload")}initialize(){this.deprecatedOptionsCheck(),this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}deprecatedOptionsCheck(){this.deprecationCheck("downloadReady","downloadEncoder")}downloadToTab(e,t,i,s){this.download(e,t,i,s,!0)}download(e,t,i,s,o){var n=!1;if("function"==typeof e?n=e:K.downloaders[e]?n=K.downloaders[e]:console.warn("Download Error - No such download type found: ",e),n){var r=this.generateExportList(s);n.call(this.table,r,i||{},function(i,s){o?!0===o?this.triggerDownload(i,s,e,t,!0):o(i):this.triggerDownload(i,s,e,t)}.bind(this))}}generateExportList(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),i=this.table.options.groupHeaderDownload;return i&&!Array.isArray(i)&&(i=[i]),t.forEach((e=>{var t;"group"===e.type&&(t=e.columns[0],i&&i[e.indent]&&(t.value=i[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))})),t}triggerDownload(e,t,i,s,o){var n=document.createElement("a"),r=this.table.options.downloadEncoder(e,t);r&&(o?window.open(window.URL.createObjectURL(r)):(s=s||"Tabulator."+("function"==typeof i?"txt":i),navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,s):(n.setAttribute("href",window.URL.createObjectURL(r)),n.setAttribute("download",s),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n))),this.dispatchExternal("downloadComplete"))}commsReceived(e,t,i){if("intercept"===t)this.download(i.type,"",i.options,i.active,i.intercept)}}function Y(e,t){var i=t.mask,s=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",n=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var a=i[t];void 0!==a&&a!==n&&a!==s&&a!==o&&(e.value=e.value+""+a,r(t+1))}e.addEventListener("keydown",(t=>{var r=e.value.length,a=t.key;if(t.keyCode>46&&!t.ctrlKey&&!t.metaKey){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case s:if(a.toUpperCase()==a.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(a))return t.preventDefault(),t.stopPropagation(),!1;break;case n:break;default:if(a!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(i=>{i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}K.moduleName="download",K.downloaders=q;class ${constructor(e,t,i,s,o,n){this.edit=e,this.table=e.table,this.cell=t,this.params=this._initializeParams(n),this.data=[],this.displayItems=[],this.currentItems=[],this.focusedItem=null,this.input=this._createInputElement(),this.listEl=this._createListElement(),this.initialValues=null,this.isFilter="header"===t.getType(),this.filterTimeout=null,this.filtered=!1,this.typing=!1,this.values=[],this.popup=null,this.listIteration=0,this.lastAction="",this.filterTerm="",this.blurable=!0,this.actions={success:s,cancel:o},this._deprecatedOptionsCheck(),this._initializeValue(),i(this._onRendered.bind(this))}_deprecatedOptionsCheck(){this.params.listItemFormatter&&this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.sortValuesList&&this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchFunc&&this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchingPlaceholder&&this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options")}_initializeValue(){var e=this.cell.getValue();void 0===e&&void 0!==this.params.defaultValue&&(e=this.params.defaultValue),this.initialValues=this.params.multiselect?e:[e],this.isFilter&&(this.input.value=this.initialValues?this.initialValues.join(","):"",this.headerFilterInitialListGen())}_onRendered(){var e=this.cell.getElement();function t(e){e.stopPropagation()}this.isFilter||(this.input.style.height="100%",this.input.focus({preventScroll:!0})),e.addEventListener("click",t),setTimeout((()=>{e.removeEventListener("click",t)}),1e3),this.input.addEventListener("mousedown",this._preventPopupBlur.bind(this))}_createListElement(){var e=document.createElement("div");return e.classList.add("tabulator-edit-list"),e.addEventListener("mousedown",this._preventBlur.bind(this)),e.addEventListener("keydown",this._inputKeyDown.bind(this)),e}_setListWidth(){var e=this.isFilter?this.input:this.cell.getElement();this.listEl.style.minWidth=e.offsetWidth+"px",this.params.maxWidth&&(!0===this.params.maxWidth?this.listEl.style.maxWidth=e.offsetWidth+"px":"number"==typeof this.params.maxWidth?this.listEl.style.maxWidth=this.params.maxWidth+"px":this.listEl.style.maxWidth=this.params.maxWidth)}_createInputElement(){var e=this.params.elementAttributes,t=document.createElement("input");if(t.setAttribute("type",this.params.clearable?"search":"text"),t.style.padding="4px",t.style.width="100%",t.style.boxSizing="border-box",this.params.autocomplete||(t.style.cursor="default",t.style.caretColor="transparent"),e&&"object"==typeof e)for(let i in e)"+"==i.charAt(0)?(i=i.slice(1),t.setAttribute(i,t.getAttribute(i)+e["+"+i])):t.setAttribute(i,e[i]);return this.params.mask&&Y(t,this.params),this._bindInputEvents(t),t}_initializeParams(e){var t,i=["values","valuesURL","valuesLookup"];return(e=Object.assign({},e)).verticalNavigation=e.verticalNavigation||"editor",e.placeholderLoading=void 0===e.placeholderLoading?"Searching ...":e.placeholderLoading,e.placeholderEmpty=void 0===e.placeholderEmpty?"No Results Found":e.placeholderEmpty,e.filterDelay=void 0===e.filterDelay?300:e.filterDelay,e.emptyValue=Object.keys(e).includes("emptyValue")?e.emptyValue:"",(t=Object.keys(e).filter((e=>i.includes(e))).length)?t>1&&console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"):console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"),e.autocomplete?e.multiselect&&(e.multiselect=!1,console.warn("list editor config error - multiselect option is not available when autocomplete is enabled")):(e.freetext&&(e.freetext=!1,console.warn("list editor config error - freetext option is only available when autocomplete is enabled")),e.filterFunc&&(e.filterFunc=!1,console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled")),e.filterRemote&&(e.filterRemote=!1,console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled")),e.mask&&(e.mask=!1,console.warn("list editor config error - mask option is only available when autocomplete is enabled")),e.allowEmpty&&(e.allowEmpty=!1,console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled")),e.listOnEmpty&&(e.listOnEmpty=!1,console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"))),e.filterRemote&&"function"!=typeof e.valuesLookup&&!e.valuesURL&&(e.filterRemote=!1,console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source")),e}_bindInputEvents(e){e.addEventListener("focus",this._inputFocus.bind(this)),e.addEventListener("click",this._inputClick.bind(this)),e.addEventListener("blur",this._inputBlur.bind(this)),e.addEventListener("keydown",this._inputKeyDown.bind(this)),e.addEventListener("search",this._inputSearch.bind(this)),this.params.autocomplete&&e.addEventListener("keyup",this._inputKeyUp.bind(this))}_inputFocus(e){this.rebuildOptionsList()}_filter(){this.params.filterRemote?(clearTimeout(this.filterTimeout),this.filterTimeout=setTimeout((()=>{this.rebuildOptionsList()}),this.params.filterDelay)):this._filterList()}_inputClick(e){e.stopPropagation()}_inputBlur(e){this.blurable&&(this.popup?this.popup.hide():this._resolveValue(!0))}_inputSearch(){this._clearChoices()}_inputKeyDown(e){switch(e.keyCode){case 38:this._keyUp(e);break;case 40:this._keyDown(e);break;case 37:case 39:this._keySide(e);break;case 13:this._keyEnter();break;case 27:this._keyEsc();break;case 36:case 35:this._keyHomeEnd(e);break;case 9:this._keyTab(e);break;default:this._keySelectLetter(e)}}_inputKeyUp(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:this._keyAutoCompLetter(e)}}_preventPopupBlur(){this.popup&&this.popup.blockHide(),setTimeout((()=>{this.popup&&this.popup.restoreHide()}),10)}_preventBlur(){this.blurable=!1,setTimeout((()=>{this.blurable=!0}),10)}_keyTab(e){this.params.autocomplete&&"typing"===this.lastAction?this._resolveValue(!0):this.focusedItem&&this._chooseItem(this.focusedItem,!0)}_keyUp(e){var t=this.displayItems.indexOf(this.focusedItem);("editor"==this.params.verticalNavigation||"hybrid"==this.params.verticalNavigation&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&this._focusItem(this.displayItems[t-1]))}_keyDown(e){var t=this.displayItems.indexOf(this.focusedItem);("editor"==this.params.verticalNavigation||"hybrid"==this.params.verticalNavigation&&t=38&&e.keyCode<=90&&this._scrollToValue(e.keyCode))}_keyAutoCompLetter(e){this._filter(),this.lastAction="typing",this.typing=!0}_scrollToValue(e){clearTimeout(this.filterTimeout);var t=String.fromCharCode(e).toLowerCase();this.filterTerm+=t.toLowerCase();var i=this.displayItems.find((e=>void 0!==e.label&&e.label.toLowerCase().startsWith(this.filterTerm)));i&&this._focusItem(i),this.filterTimeout=setTimeout((()=>{this.filterTerm=""}),800)}_focusItem(e){this.lastAction="focus",this.focusedItem&&this.focusedItem.element&&this.focusedItem.element.classList.remove("focused"),this.focusedItem=e,e&&e.element&&(e.element.classList.add("focused"),e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"}))}headerFilterInitialListGen(){this._generateOptions(!0)}rebuildOptionsList(){this._generateOptions().then(this._sortOptions.bind(this)).then(this._buildList.bind(this)).then(this._showList.bind(this)).catch((e=>{Number.isInteger(e)||console.error("List generation error",e)}))}_filterList(){this._buildList(this._filterOptions()),this._showList()}_generateOptions(e){var t=[],i=++this.listIteration;return this.filtered=!1,this.params.values?t=this.params.values:this.params.valuesURL?t=this._ajaxRequest(this.params.valuesURL,this.input.value):"function"==typeof this.params.valuesLookup?t=this.params.valuesLookup(this.cell,this.input.value):this.params.valuesLookup&&(t=this._uniqueColumnValues(this.params.valuesLookupField)),t instanceof Promise?(e||this._addPlaceholder(this.params.placeholderLoading),t.then().then((e=>this.listIteration===i?this._parseList(e):Promise.reject(i)))):Promise.resolve(this._parseList(t))}_addPlaceholder(e){var t=document.createElement("div");"function"==typeof e&&(e=e(this.cell.getComponent(),this.listEl)),e&&(this._clearList(),e instanceof HTMLElement?t=e:(t.classList.add("tabulator-edit-list-placeholder"),t.innerHTML=e),this.listEl.appendChild(t),this._showList())}_ajaxRequest(e,t){return e=V(e,{},this.params.filterRemote?{term:t}:{}),fetch(e).then((e=>e.ok?e.json().catch((e=>(console.warn("List Ajax Load Error - Invalid JSON returned",e),Promise.reject(e)))):(console.error("List Ajax Load Error - Connection Error: "+e.status,e.statusText),Promise.reject(e)))).catch((e=>(console.error("List Ajax Load Error - Connection Error: ",e),Promise.reject(e))))}_uniqueColumnValues(e){var t,i={},s=this.table.getData(this.params.valuesLookup);return(t=e?this.table.columnManager.getColumnByField(e):this.cell.getColumn()._getSelf())?s.forEach((e=>{var s=t.getFieldValue(e);null!=s&&""!==s&&(i[s]=!0)})):(console.warn("unable to find matching column to create select lookup list:",e),i=[]),Object.keys(i)}_parseList(e){var t=[];return Array.isArray(e)||(e=Object.entries(e).map((([e,t])=>({label:t,value:e})))),e.forEach((e=>{"object"!=typeof e&&(e={label:e,value:e}),this._parseListItem(e,t,0)})),!this.currentItems.length&&this.params.freetext&&(this.input.value=this.initialValues,this.typing=!0,this.lastAction="typing"),this.data=t,t}_parseListItem(e,t,i){var s={};e.options?s=this._parseListGroup(e,i+1):(s={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,selected:!1,visible:!0,level:i,original:e},this.initialValues&&this.initialValues.indexOf(e.value)>-1&&this._chooseItem(s,!0)),t.push(s)}_parseListGroup(e,t){var i={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,visible:!0,level:t,options:[],original:e};return e.options.forEach((e=>{this._parseListItem(e,i.options,t)})),i}_sortOptions(e){var t;return this.params.sort&&(t="function"==typeof this.params.sort?this.params.sort:this._defaultSortFunction.bind(this),this._sortGroup(t,e)),e}_sortGroup(e,t){t.sort(((t,i)=>e(t.label,i.label,t.value,i.value,t.original,i.original))),t.forEach((t=>{t.group&&this._sortGroup(e,t.options)}))}_defaultSortFunction(e,t){var i,s,o,n,r,a=0,l=/(\d+)|(\D+)/g,h=/\d/,d=0;if("desc"===this.params.sort&&([e,t]=[t,e]),e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((i=String(e).toLowerCase())===(s=String(t).toLowerCase()))return 0;if(!h.test(i)||!h.test(s))return i>s?1:-1;for(i=i.match(l),s=s.match(l),r=i.length>s.length?s.length:i.length;an?1:-1;return i.length>s.length}d=1}else d=t||0===t?-1:0;return d}_filterOptions(){var e=this.params.filterFunc||this._defaultFilterFunc,t=this.input.value;return t?(this.filtered=!0,this.data.forEach((i=>{this._filterItem(e,t,i)}))):this.filtered=!1,this.data}_filterItem(e,t,i){var s=!1;return i.group?(i.options.forEach((i=>{this._filterItem(e,t,i)&&(s=!0)})),i.visible=s):i.visible=e(t,i.label,i.value,i.original),i.visible}_defaultFilterFunc(e,t,i,s){return e=String(e).toLowerCase(),null!=t&&(String(t).toLowerCase().indexOf(e)>-1||String(i).toLowerCase().indexOf(e)>-1)}_clearList(){for(;this.listEl.firstChild;)this.listEl.removeChild(this.listEl.firstChild);this.displayItems=[]}_buildList(e){this._clearList(),e.forEach((e=>{this._buildItem(e)})),this.displayItems.length||this._addPlaceholder(this.params.placeholderEmpty)}_buildItem(e){var t,i=e.element;if(!this.filtered||e.visible){if(!i){if((i=document.createElement("div")).tabIndex=0,(t=this.params.itemFormatter?this.params.itemFormatter(e.label,e.value,e.original,i):e.label)instanceof HTMLElement?i.appendChild(t):i.innerHTML=t,e.group?i.classList.add("tabulator-edit-list-group"):i.classList.add("tabulator-edit-list-item"),i.classList.add("tabulator-edit-list-group-level-"+e.level),e.elementAttributes&&"object"==typeof e.elementAttributes)for(let t in e.elementAttributes)"+"==t.charAt(0)?(t=t.slice(1),i.setAttribute(t,this.input.getAttribute(t)+e.elementAttributes["+"+t])):i.setAttribute(t,e.elementAttributes[t]);e.group?i.addEventListener("click",this._groupClick.bind(this,e)):i.addEventListener("click",this._itemClick.bind(this,e)),i.addEventListener("mousedown",this._preventBlur.bind(this)),e.element=i}this._styleItem(e),this.listEl.appendChild(i),e.group?e.options.forEach((e=>{this._buildItem(e)})):this.displayItems.push(e)}}_showList(){var e=this.popup&&this.popup.isVisible();if(this.input.parentNode){if(this.params.autocomplete&&""===this.input.value&&!this.params.listOnEmpty)return void(this.popup&&this.popup.hide(!0));this._setListWidth(),this.popup||(this.popup=this.edit.popup(this.listEl)),this.popup.show(this.cell.getElement(),"bottom"),e||setTimeout((()=>{this.popup.hideOnBlur(this._resolveValue.bind(this,!0))}),10)}}_styleItem(e){e&&e.element&&(e.selected?e.element.classList.add("active"):e.element.classList.remove("active"))}_itemClick(e,t){t.stopPropagation(),this._chooseItem(e)}_groupClick(e,t){t.stopPropagation()}_cancel(){this.popup.hide(!0),this.actions.cancel()}_clearChoices(){this.typing=!0,this.currentItems.forEach((e=>{e.selected=!1,this._styleItem(e)})),this.currentItems=[],this.focusedItem=null}_chooseItem(e,t){var i;this.typing=!1,this.params.multiselect?((i=this.currentItems.indexOf(e))>-1?(this.currentItems.splice(i,1),e.selected=!1):(this.currentItems.push(e),e.selected=!0),this.input.value=this.currentItems.map((e=>e.label)).join(","),this._styleItem(e)):(this.currentItems=[e],e.selected=!0,this.input.value=e.label,this._styleItem(e),t||this._resolveValue()),this._focusItem(e)}_resolveValue(e){var t,i;if(this.popup&&this.popup.hide(!0),this.params.multiselect)t=this.currentItems.map((e=>e.value));else if(e&&this.params.autocomplete&&this.typing){if(!(this.params.freetext||this.params.allowEmpty&&""===this.input.value))return void this.actions.cancel();t=this.input.value}else t=this.currentItems[0]?this.currentItems[0].value:null==(i=Array.isArray(this.initialValues)?this.initialValues[0]:this.initialValues)||""===i?i:this.params.emptyValue;""===t&&(t=this.params.emptyValue),this.actions.success(t),this.isFilter&&(this.initialValues=t&&!Array.isArray(t)?[t]:t,this.currentItems=[])}}var Z={input:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type",o.search?"search":"text"),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(e){null==n&&""!==r.value||r.value!==n?i(r.value)&&(n=r.value):s()}return r.value=void 0!==n?n:"",t((function(){"cell"===e.getType()&&(r.focus({preventScroll:!0}),r.style.height="100%",o.selectContents&&r.select())})),r.addEventListener("change",a),r.addEventListener("blur",a),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s();break;case 35:case 36:e.stopPropagation()}})),o.mask&&Y(r,o),r},textarea:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"hybrid",a=String(null!=n?n:""),l=document.createElement("textarea"),h=0;if(l.style.display="block",l.style.padding="2px",l.style.height="100%",l.style.width="100%",l.style.boxSizing="border-box",l.style.whiteSpace="pre-wrap",l.style.resize="none",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),l.setAttribute(e,l.getAttribute(e)+o.elementAttributes["+"+e])):l.setAttribute(e,o.elementAttributes[e]);function d(t){null==n&&""!==l.value||l.value!==n?(i(l.value)&&(n=l.value),setTimeout((function(){e.getRow().normalizeHeight()}),300)):s()}return l.value=a,t((function(){"cell"===e.getType()&&(l.focus({preventScroll:!0}),l.style.height="100%",l.scrollHeight,l.style.height=l.scrollHeight+"px",e.getRow().normalizeHeight(),o.selectContents&&l.select())})),l.addEventListener("change",d),l.addEventListener("blur",d),l.addEventListener("keyup",(function(){l.style.height="";var t=l.scrollHeight;l.style.height=t+"px",t!=h&&(h=t,e.getRow().normalizeHeight())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:e.shiftKey&&o.shiftEnterSubmit&&d();break;case 27:s();break;case 38:("editor"==r||"hybrid"==r&&l.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==r||"hybrid"==r&&l.selectionStart!==l.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&Y(l,o),l},number:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"editor",a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==o.max&&a.setAttribute("max",o.max),void 0!==o.min&&a.setAttribute("min",o.min),void 0!==o.step&&a.setAttribute("step",o.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),a.setAttribute(e,a.getAttribute(e)+o.elementAttributes["+"+e])):a.setAttribute(e,o.elementAttributes[e]);a.value=n;var l=function(e){h()};function h(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!==n?i(e)&&(n=e):s()}return t((function(){"cell"===e.getType()&&(a.removeEventListener("blur",l),a.focus({preventScroll:!0}),a.style.height="100%",a.addEventListener("blur",l),o.selectContents&&a.select())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:s();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&Y(a,o),a},range:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type","range"),void 0!==o.max&&r.setAttribute("max",o.max),void 0!==o.min&&r.setAttribute("min",o.min),void 0!==o.step&&r.setAttribute("step",o.step),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(){var e=r.value;isNaN(e)||""===e||(e=Number(e)),e!=n?i(e)&&(n=e):s()}return r.value=n,t((function(){"cell"===e.getType()&&(r.focus({preventScroll:!0}),r.style.height="100%")})),r.addEventListener("blur",(function(e){a()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s()}})),r},date:function(e,t,i,s,o){var n=o.format,r=o.verticalNavigation||"editor",a=n?window.DateTime||luxon.DateTime:null,l=e.getValue(),h=document.createElement("input");function d(e){return(a.isDateTime(e)?e:"iso"===n?a.fromISO(String(e)):a.fromFormat(String(e),n)).toFormat("yyyy-MM-dd")}if(h.type="date",h.style.padding="4px",h.style.width="100%",h.style.boxSizing="border-box",o.max&&h.setAttribute("max",n?d(o.max):o.max),o.min&&h.setAttribute("min",n?d(o.min):o.min),o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),h.setAttribute(e,h.getAttribute(e)+o.elementAttributes["+"+e])):h.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=h.value;if(null==l&&""!==t||t!==l){if(t&&n)switch(e=a.fromFormat(String(t),"yyyy-MM-dd"),n){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(n)}i(t)&&(l=h.value)}else s()}return l=void 0!==l?l:"",n&&(a?l=d(l):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),h.value=l,t((function(){"cell"===e.getType()&&(h.focus({preventScroll:!0}),h.style.height="100%",o.selectContents&&h.select())})),h.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==h)&&c()})),h.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation())}})),h},time:function(e,t,i,s,o){var n,r=o.format,a=o.verticalNavigation||"editor",l=r?window.DateTime||luxon.DateTime:null,h=e.getValue(),d=document.createElement("input");if(d.type="time",d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),d.setAttribute(e,d.getAttribute(e)+o.elementAttributes["+"+e])):d.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=d.value;if(null==h&&""!==t||t!==h){if(t&&r)switch(e=l.fromFormat(String(t),"hh:mm"),r){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(r)}i(t)&&(h=d.value)}else s()}return h=void 0!==h?h:"",r&&(l?(n=l.isDateTime(h)?h:"iso"===r?l.fromISO(String(h)):l.fromFormat(String(h),r),h=n.toFormat("HH:mm")):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),console.log("val",h),d.value=h,t((function(){"cell"==e.getType()&&(d.focus({preventScroll:!0}),d.style.height="100%",o.selectContents&&d.select())})),d.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==d)&&c()})),d.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}})),d},datetime:function(e,t,i,s,o){var n,r=o.format,a=o.verticalNavigation||"editor",l=r?window.DateTime||luxon.DateTime:null,h=e.getValue(),d=document.createElement("input");if(d.type="datetime-local",d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),d.setAttribute(e,d.getAttribute(e)+o.elementAttributes["+"+e])):d.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=d.value;if(null==h&&""!==t||t!==h){if(t&&r)switch(e=l.fromISO(String(t)),r){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(r)}i(t)&&(h=d.value)}else s()}return h=void 0!==h?h:"",r&&(l?(n=l.isDateTime(h)?h:"iso"===r?l.fromISO(String(h)):l.fromFormat(String(h),r),h=n.toFormat("yyyy-MM-dd")+"T"+n.toFormat("HH:mm")):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),d.value=h,t((function(){"cell"===e.getType()&&(d.focus({preventScroll:!0}),d.style.height="100%",o.selectContents&&d.select())})),d.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==d)&&c()})),d.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}})),d},select:function(e,t,i,s,o){return this.deprecationMsg("The select editor has been deprecated, please use the new list editor"),new $(this,e,t,i,s,o).input},list:function(e,t,i,s,o){return new $(this,e,t,i,s,o).input},autocomplete:function(e,t,i,s,o){return this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"),o.autocomplete=!0,new $(this,e,t,i,s,o).input},star:function(e,t,i,s,o){var n=this,r=e.getElement(),a=e.getValue(),l=r.getElementsByTagName("svg").length||5,h=r.getElementsByTagName("svg")[0]?r.getElementsByTagName("svg")[0].getAttribute("width"):14,d=[],c=document.createElement("div"),u=document.createElementNS("http://www.w3.org/2000/svg","svg");function m(e){d.forEach((function(t,i){i'):("ie"==n.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function p(e){var t=document.createElement("span"),s=u.cloneNode(!0);d.push(s),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),m(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),r.blur()})),t.appendChild(s),c.appendChild(t)}function g(e){a=e,m(e)}if(r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",c.style.verticalAlign="middle",c.style.display="inline-block",c.style.padding="4px",u.setAttribute("width",h),u.setAttribute("height",h),u.setAttribute("viewBox","0 0 512 512"),u.setAttribute("xml:space","preserve"),u.style.padding="0 1px",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+o.elementAttributes["+"+e])):c.setAttribute(e,o.elementAttributes[e]);for(var b=1;b<=l;b++)p(b);return m(a=Math.min(parseInt(a),l)),c.addEventListener("mousemove",(function(e){m(0)})),c.addEventListener("click",(function(e){i(0)})),r.addEventListener("blur",(function(e){s()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(a+1);break;case 37:g(a-1);break;case 13:i(a);break;case 27:s()}})),c},progress:function(e,t,i,s,o){var n,r,a=e.getElement(),l=void 0===o.max?a.getElementsByTagName("div")[0]&&a.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,h=void 0===o.min?a.getElementsByTagName("div")[0]&&a.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,d=(l-h)/100,c=e.getValue()||0,u=document.createElement("div"),m=document.createElement("div");function p(){var e=window.getComputedStyle(a,null),t=d*Math.round(m.offsetWidth/((a.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+h;i(t),a.setAttribute("aria-valuenow",t),a.setAttribute("aria-label",c)}if(u.style.position="absolute",u.style.right="0",u.style.top="0",u.style.bottom="0",u.style.width="5px",u.classList.add("tabulator-progress-handle"),m.style.display="inline-block",m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),m.setAttribute(e,m.getAttribute(e)+o.elementAttributes["+"+e])):m.setAttribute(e,o.elementAttributes[e]);return a.style.padding="4px 4px",c=Math.min(parseFloat(c),l),c=Math.max(parseFloat(c),h),c=Math.round((c-h)/d),m.style.width=c+"%",a.setAttribute("aria-valuemin",h),a.setAttribute("aria-valuemax",l),m.appendChild(u),u.addEventListener("mousedown",(function(e){n=e.screenX,r=m.offsetWidth})),u.addEventListener("mouseover",(function(){u.style.cursor="ew-resize"})),a.addEventListener("mousemove",(function(e){n&&(m.style.width=r+e.screenX-n+"px")})),a.addEventListener("mouseup",(function(e){n&&(e.stopPropagation(),e.stopImmediatePropagation(),n=!1,r=!1,p())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),m.style.width=m.clientWidth+a.clientWidth/100+"px";break;case 37:e.preventDefault(),m.style.width=m.clientWidth-a.clientWidth/100+"px";break;case 9:case 13:p();break;case 27:s()}})),a.addEventListener("blur",(function(){s()})),m},tickCross:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input"),a=o.tristate,l=void 0===o.indeterminateValue?null:o.indeterminateValue,h=!1,d=Object.keys(o).includes("trueValue"),c=Object.keys(o).includes("falseValue");if(r.setAttribute("type","checkbox"),r.style.marginTop="5px",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function u(e){var t=r.checked;return d&&t?t=o.trueValue:c&&!t&&(t=o.falseValue),a?e?h?l:t:r.checked&&!h?(r.checked=!1,r.indeterminate=!0,h=!0,l):(h=!1,t):t}return r.value=n,!a||void 0!==n&&n!==l&&""!==n||(h=!0,r.indeterminate=!0),"firefox"!=this.table.browser&&"safari"!=this.table.browser&&t((function(){"cell"===e.getType()&&r.focus({preventScroll:!0})})),r.checked=d?n===o.trueValue:!0===n||"true"===n||"True"===n||1===n,r.addEventListener("change",(function(e){i(u())})),r.addEventListener("blur",(function(e){i(u(!0))})),r.addEventListener("keydown",(function(e){13==e.keyCode&&i(u()),27==e.keyCode&&s()})),r}};class Q extends k{constructor(e){super(e),this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[],this.editors=Q.editors,this.registerColumnOption("editable"),this.registerColumnOption("editor"),this.registerColumnOption("editorParams"),this.registerColumnOption("cellEditing"),this.registerColumnOption("cellEdited"),this.registerColumnOption("cellEditCancelled"),this.registerTableOption("editTriggerEvent","focus"),this.registerTableFunction("getEditedCells",this.getEditedCells.bind(this)),this.registerTableFunction("clearCellEdited",this.clearCellEdited.bind(this)),this.registerTableFunction("navigatePrev",this.navigatePrev.bind(this)),this.registerTableFunction("navigateNext",this.navigateNext.bind(this)),this.registerTableFunction("navigateLeft",this.navigateLeft.bind(this)),this.registerTableFunction("navigateRight",this.navigateRight.bind(this)),this.registerTableFunction("navigateUp",this.navigateUp.bind(this)),this.registerTableFunction("navigateDown",this.navigateDown.bind(this)),this.registerComponentFunction("cell","isEdited",this.cellIsEdited.bind(this)),this.registerComponentFunction("cell","clearEdited",this.clearEdited.bind(this)),this.registerComponentFunction("cell","edit",this.editCell.bind(this)),this.registerComponentFunction("cell","cancelEdit",this.cellCancelEdit.bind(this)),this.registerComponentFunction("cell","navigatePrev",this.navigatePrev.bind(this)),this.registerComponentFunction("cell","navigateNext",this.navigateNext.bind(this)),this.registerComponentFunction("cell","navigateLeft",this.navigateLeft.bind(this)),this.registerComponentFunction("cell","navigateRight",this.navigateRight.bind(this)),this.registerComponentFunction("cell","navigateUp",this.navigateUp.bind(this)),this.registerComponentFunction("cell","navigateDown",this.navigateDown.bind(this))}initialize(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.bind(this)),this.subscribe("cell-value-changed",this.updateCellClass.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("row-layout",this.rowEditableCheck.bind(this)),this.subscribe("data-refreshing",this.cancelEdit.bind(this)),this.subscribe("clipboard-paste",this.pasteBlocker.bind(this)),this.subscribe("keybinding-nav-prev",this.navigatePrev.bind(this,void 0)),this.subscribe("keybinding-nav-next",this.keybindingNavigateNext.bind(this)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this,void 0)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this,void 0))}pasteBlocker(e){if(this.currentCell)return!0}keybindingNavigateNext(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(t,e)||i&&(t.getElement().firstChild.blur(),this.invalidEdit||(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((()=>{setTimeout((()=>{t.getComponent().navigateNext()}))}))))}cellIsEdited(e){return!!e.modules.edit&&e.modules.edit.edited}cellCancelEdit(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}updateCellClass(e){this.allowEdit(e)?e.getElement().classList.add("tabulator-editable"):e.getElement().classList.remove("tabulator-editable")}clearCellEdited(e){e||(e=this.table.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.table.modules.edit.clearEdited(e._getSelf())}))}navigatePrev(e=this.currentCell,t){var i,s;if(e){if(t&&t.preventDefault(),i=this.navigateLeft())return!0;if((s=this.table.rowManager.prevDisplayRow(e.row,!0))&&(i=this.findPrevEditableCell(s,s.cells.length)))return i.getComponent().edit(),!0}return!1}navigateNext(e=this.currentCell,t){var i,s;if(e){if(t&&t.preventDefault(),i=this.navigateRight())return!0;if((s=this.table.rowManager.nextDisplayRow(e.row,!0))&&(i=this.findNextEditableCell(s,-1)))return i.getComponent().edit(),!0}return!1}navigateLeft(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.findPrevEditableCell(e.row,i)))&&(s.getComponent().edit(),!0)}navigateRight(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.findNextEditableCell(e.row,i)))&&(s.getComponent().edit(),!0)}navigateUp(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.table.rowManager.prevDisplayRow(e.row,!0)))&&(s.cells[i].getComponent().edit(),!0)}navigateDown(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.table.rowManager.nextDisplayRow(e.row,!0)))&&(s.cells[i].getComponent().edit(),!0)}findNextEditableCell(e,t){var i=!1;if(t0)for(var s=t-1;s>=0;s--){let t=e.cells[s];if(t.column.modules.edit&&r.elVisible(t.getElement())){if(this.allowEdit(t)){i=t;break}}}return i}initializeColumnCheck(e){void 0!==e.definition.editor&&this.initializeColumn(e)}columnDeleteCheck(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}rowDeleteCheck(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}rowEditableCheck(e){e.getCells().forEach((e=>{e.column.modules.edit&&"function"==typeof e.column.modules.edit.check&&this.updateCellClass(e)}))}initializeColumn(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(typeof e.definition.editor){case"string":this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)}getCurrentCell(){return!!this.currentCell&&this.currentCell.getComponent()}clearEditor(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),this.dispatch("edit-editor-clear",i,e),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-editing"),i.table.element.classList.remove("tabulator-editing")}}cancelEdit(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.definition.cellEditCancelled&&e.column.definition.cellEditCancelled.call(this.table,t),this.dispatch("edit-cancelled",e),this.dispatchExternal("cellEditCancelled",t)}}bindEditor(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);this.updateCellClass(e),i.setAttribute("tabindex",0),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),"dblclick"===this.options("editTriggerEvent")&&i.addEventListener("dblclick",(function(s){i.classList.contains("tabulator-editing")||(i.focus({preventScroll:!0}),t.edit(e,s,!1))})),"focus"!==this.options("editTriggerEvent")&&"click"!==this.options("editTriggerEvent")||i.addEventListener("click",(function(s){i.classList.contains("tabulator-editing")||(i.focus({preventScroll:!0}),t.edit(e,s,!1))})),"focus"===this.options("editTriggerEvent")&&i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}focusCellNoEvent(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}editCell(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}focusScrollAdjust(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,s=e.row.getElement();s.offsetTopi&&(this.table.rowManager.element.scrollTop+=s.offsetTop+s.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,n=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin||0),n-=parseInt(this.table.modules.frozenColumns.rightMargin||0)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),n-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLeftn&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-n)}}allowEdit(e){var t=!!e.column.modules.edit;if(e.column.modules.edit)switch(typeof e.column.modules.edit.check){case"function":e.row.initialized&&(t=e.column.modules.edit.check(e.getComponent()));break;case"string":t=!!e.row.data[e.column.modules.edit.check];break;case"boolean":t=e.column.modules.edit.check}return t}edit(e,t,i){var s,o,n,r=this,a=function(){},l=e.getElement(),h=!1;if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,this.blur(l),!1;if(t&&t.stopPropagation(),this.allowEdit(e)||i){if(r.cancelEdit(),r.currentCell=e,this.focusScrollAdjust(e),o=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.definition.cellClick&&e.column.definition.cellClick.call(this.table,t,o)),e.column.definition.cellEditing&&e.column.definition.cellEditing.call(this.table,o),this.dispatch("cell-editing",e),this.dispatchExternal("cellEditing",o),n="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(o):e.column.modules.edit.params,s=e.column.modules.edit.editor.call(r,o,(function(e){a=e}),(function(t){if(r.currentCell===e&&!h){var i=r.chain("edit-success",[e,t],!0,!0);return!0===i||"highlight"===r.table.options.validationMode?(h=!0,r.clearEditor(),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==r.editedCells.indexOf(e)&&r.editedCells.push(e),e.setValue(t,!0),!0===i):(h=!0,r.invalidEdit=!0,r.focusCellNoEvent(e,!0),a(),setTimeout((()=>{h=!1}),10),!1)}}),(function(){r.currentCell!==e||h||r.cancelEdit()}),n),!this.currentCell||!1===s)return this.blur(l),!1;if(!(s instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",s),this.blur(l),!1;for(l.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-editing"),e.table.element.classList.add("tabulator-editing");l.firstChild;)l.removeChild(l.firstChild);l.appendChild(s),a();for(var d=l.children,c=0;c{e.push(t.getComponent())})),e}clearEdited(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.edit.edited=!1,this.dispatch("edit-edited-clear",e)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)}}Q.moduleName="edit",Q.editors=Z;class ee{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class te{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class ie extends k{constructor(e){super(e),this.config={},this.cloneTableStyle=!0,this.colVisProp="",this.registerTableOption("htmlOutputConfig",!1),this.registerColumnOption("htmlOutput"),this.registerColumnOption("titleHtmlOutput")}initialize(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}generateExportList(e,t,i,s){var o,n;if(this.cloneTableStyle=t,this.config=e||{},this.colVisProp=s,"range"===i){var r=this.table.modules.selectRange.selectedColumns();o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders(r)):[],n=this.bodyToExportRows(this.rowLookup(i),this.table.modules.selectRange.selectedColumns(!0))}else o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],n=this.bodyToExportRows(this.rowLookup(i));return o.concat(n)}generateTable(e,t,i,s){var o=this.generateExportList(e,t,i,s);return this.generateTableElement(o)}rowLookup(e){var t=[];if("function"==typeof e)e.call(this.table).forEach((e=>{(e=this.table.rowManager.findRow(e))&&t.push(e)}));else switch(e){case!0:case"visible":t=this.table.rowManager.getVisibleRows(!1,!0);break;case"all":t=this.table.rowManager.rows;break;case"selected":t=this.table.modules.selectRow.selectedRows;break;case"range":t=this.table.modules.selectRange.selectedRows();break;default:t=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],t)}generateColumnGroupHeaders(e){var t=[];return e||(e=!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex),e.forEach((e=>{var i=this.processColumnGroup(e);i&&t.push(i)})),t}processColumnGroup(e){var t=e.columns,i=0,s={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach((e=>{var t=this.processColumnGroup(e);t&&(s.width+=t.width,s.subGroups.push(t),t.depth>i&&(i=t.depth))})),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s}columnVisCheck(e){var t=e.definition[this.colVisProp];return"function"==typeof t&&(t=t.call(this.table,e.getComponent())),!1!==t&&(e.visible||!e.visible&&t)}headersToExportRows(e){var t=[],i=0,s=[];function o(e,s){var n=i-s;if(void 0===t[s]&&(t[s]=[]),e.height=e.subGroups?1:n-e.depth+1,t[s].push(e),e.height>1)for(let i=1;i1)for(let i=1;ii&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((e=>{var t=[];e.forEach((e=>{if(e){let i=void 0===e.title?"":e.title;t.push(new te(i,e.column.getComponent(),e.width,e.height,e.depth))}else t.push(null)})),s.push(new ee("header",t))})),s}bodyToExportRows(e,t=[]){var i=[];return 0===t.length&&this.table.columnManager.columnsByIndex.forEach((e=>{this.columnVisCheck(e)&&t.push(e.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),(e=e.filter((e=>{switch(e.type){case"group":return!1!==this.config.rowGroups;case"calc":return!1!==this.config.columnCalcs;case"row":return!(this.table.options.dataTree&&!1===this.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach(((e,s)=>{var o=e.getData(this.colVisProp),n=[],r=0;switch(e.type){case"group":r=e.level,n.push(new te(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new te(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new ee(e.type,n,e.getComponent(),r))})),i}generateTableElement(e){var t=document.createElement("table"),i=document.createElement("thead"),s=document.createElement("tbody"),o=this.lookupTableStyles(),n=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r={};return r.rowFormatter=null!==n?n:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(r.treeElementField=this.table.modules.dataTree.elementField),r.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r.groupHeader&&!Array.isArray(r.groupHeader)&&(r.groupHeader=[r.groupHeader]),t.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(((e,t)=>{let n;switch(e.type){case"header":i.appendChild(this.generateHeaderElement(e,r,o));break;case"group":s.appendChild(this.generateGroupElement(e,r,o));break;case"calc":s.appendChild(this.generateCalcElement(e,r,o));break;case"row":n=this.generateRowElement(e,r,o),this.mapElementStyles(t%2&&o.evenRow?o.evenRow:o.oddRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s.appendChild(n)}})),i.innerHTML&&t.appendChild(i),t.appendChild(s),this.mapElementStyles(this.table.element,t,["border-top","border-left","border-right","border-bottom"]),t}lookupTableStyles(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e}generateHeaderElement(e,t,i){var s=document.createElement("tr");return e.columns.forEach((e=>{if(e){var t=document.createElement("th"),i=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,this.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),this.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),this.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?this.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&this.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),s.appendChild(t)}})),s}generateGroupElement(e,t,i){var s=document.createElement("tr"),o=document.createElement("td"),n=e.columns[0];return s.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?n.value=t.groupHeader[e.indent](n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1!==t.groupHeader&&(n.value=e.component._group.generator(n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)),o.colSpan=n.width,o.innerHTML=n.value,s.classList.add("tabulator-print-table-group"),s.classList.add("tabulator-group-level-"+e.indent),n.component.isVisible()&&s.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(i.firstGroup,o,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(o),s}generateCalcElement(e,t,i){var s=this.generateRowElement(e,t,i);return s.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s}generateRowElement(e,t,i){var s=document.createElement("tr");if(s.classList.add("tabulator-print-table-row"),e.columns.forEach(((o,n)=>{if(o){var r,a=document.createElement("td"),l=o.component._column,h=this.table,d=h.columnManager.findColumnIndex(l),c=o.value,u={modules:{},getValue:function(){return c},getField:function(){return l.definition.field},getElement:function(){return a},getType:function(){return"cell"},getColumn:function(){return l.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getTable:function(){return h},getComponent:function(){return u},column:l};if((l.definition.cssClass?l.definition.cssClass.split(" "):[]).forEach((function(e){a.classList.add(e)})),this.table.modExists("format")&&!1!==this.config.formatCells)c=this.table.modules.format.formatExportValue(u,this.colVisProp);else switch(typeof c){case"object":c=null!==c?JSON.stringify(c):"";break;case"undefined":c=""}c instanceof Node?a.appendChild(c):a.innerHTML=c,(r=i.styleCells&&i.styleCells[d]?i.styleCells[d]:i.firstCell)&&(this.mapElementStyles(r,a,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),l.definition.align&&(a.style.textAlign=l.definition.align)),this.table.options.dataTree&&!1!==this.config.dataTree&&(t.treeElementField&&t.treeElementField==l.field||!t.treeElementField&&0==n)&&(e.component._row.modules.dataTree.controlEl&&a.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),a.firstChild),e.component._row.modules.dataTree.branchEl&&a.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),a.firstChild)),s.appendChild(a),u.modules.format&&u.modules.format.renderedCallback&&u.modules.format.renderedCallback()}})),t.rowFormatter&&"row"===e.type&&!1!==this.config.formatCells){Object.assign(e.component).getElement=function(){return s},t.rowFormatter(e.component)}return s}generateHTMLTable(e){var t=document.createElement("div");return t.appendChild(this.generateTableElement(e)),t.innerHTML}getHtml(e,t,i,s){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,s||"htmlOutput");return this.generateHTMLTable(o)}mapElementStyles(e,t,i){if(this.cloneTableStyle&&e&&t){var s={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var o=window.getComputedStyle(e);i.forEach((function(e){t.style[s[e]]||(t.style[s[e]]=o.getPropertyValue(e))}))}}}}ie.moduleName="export";var se={"=":function(e,t,i,s){return t==e},"<":function(e,t,i,s){return t":function(e,t,i,s){return t>e},">=":function(e,t,i,s){return t>=e},"!=":function(e,t,i,s){return t!=e},regex:function(e,t,i,s){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,s){var o=e.toLowerCase().split(void 0===s.separator?" ":s.separator),n=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((e=>{n.includes(e)&&r.push(!0)})),s.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,s){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}};class oe extends k{constructor(e){super(e),this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1,this.tableInitialized=!1,this.registerTableOption("filterMode","local"),this.registerTableOption("initialFilter",!1),this.registerTableOption("initialHeaderFilter",!1),this.registerTableOption("headerFilterLiveFilterDelay",300),this.registerTableOption("placeholderHeaderFilter",!1),this.registerColumnOption("headerFilter"),this.registerColumnOption("headerFilterPlaceholder"),this.registerColumnOption("headerFilterParams"),this.registerColumnOption("headerFilterEmptyCheck"),this.registerColumnOption("headerFilterFunc"),this.registerColumnOption("headerFilterFuncParams"),this.registerColumnOption("headerFilterLiveFilter"),this.registerTableFunction("searchRows",this.searchRows.bind(this)),this.registerTableFunction("searchData",this.searchData.bind(this)),this.registerTableFunction("setFilter",this.userSetFilter.bind(this)),this.registerTableFunction("refreshFilter",this.userRefreshFilter.bind(this)),this.registerTableFunction("addFilter",this.userAddFilter.bind(this)),this.registerTableFunction("getFilters",this.getFilters.bind(this)),this.registerTableFunction("setHeaderFilterFocus",this.userSetHeaderFilterFocus.bind(this)),this.registerTableFunction("getHeaderFilterValue",this.userGetHeaderFilterValue.bind(this)),this.registerTableFunction("setHeaderFilterValue",this.userSetHeaderFilterValue.bind(this)),this.registerTableFunction("getHeaderFilters",this.getHeaderFilters.bind(this)),this.registerTableFunction("removeFilter",this.userRemoveFilter.bind(this)),this.registerTableFunction("clearFilter",this.userClearFilter.bind(this)),this.registerTableFunction("clearHeaderFilter",this.userClearHeaderFilter.bind(this)),this.registerComponentFunction("column","headerFilterFocus",this.setHeaderFilterFocus.bind(this)),this.registerComponentFunction("column","reloadHeaderFilter",this.reloadHeaderFilter.bind(this)),this.registerComponentFunction("column","getHeaderFilterValue",this.getHeaderFilterValue.bind(this)),this.registerComponentFunction("column","setHeaderFilterValue",this.setHeaderFilterValue.bind(this))}initialize(){this.subscribe("column-init",this.initializeColumnHeaderFilter.bind(this)),this.subscribe("column-width-fit-before",this.hideHeaderFilterElements.bind(this)),this.subscribe("column-width-fit-after",this.showHeaderFilterElements.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.subscribe("placeholder",this.generatePlaceholder.bind(this)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}tableBuilt(){this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((e=>{var t=this.table.columnManager.findColumn(e.field);if(!t)return console.warn("Column Filter Error - No matching column found:",e.field),!1;this.setHeaderFilterValue(t,e.value)})),this.tableInitialized=!0}remoteFilterParams(e,t,i,s){return s.filter=this.getFilters(!0,!0),s}generatePlaceholder(e){if(this.table.options.placeholderHeaderFilter&&Object.keys(this.headerFilters).length)return this.table.options.placeholderHeaderFilter}userSetFilter(e,t,i,s){this.setFilter(e,t,i,s),this.refreshFilter()}userRefreshFilter(){this.refreshFilter()}userAddFilter(e,t,i,s){this.addFilter(e,t,i,s),this.refreshFilter()}userSetHeaderFilterFocus(e){var t=this.table.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.setHeaderFilterFocus(t)}userGetHeaderFilterValue(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}userSetHeaderFilterValue(e,t){var i=this.table.columnManager.findColumn(e);if(!i)return console.warn("Column Filter Error - No matching column found:",e),!1;this.setHeaderFilterValue(i,t)}userRemoveFilter(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}userClearFilter(e){this.clearFilter(e),this.refreshFilter()}userClearHeaderFilter(){this.clearHeaderFilter(),this.refreshFilter()}searchRows(e,t,i){return this.search("rows",e,t,i)}searchData(e,t,i){return this.search("data",e,t,i)}initializeColumnHeaderFilter(e){e.definition.headerFilter&&this.initializeColumn(e)}initializeColumn(e,t){var i=this,s=e.getField();e.modules.filter={success:function(t){var o,n="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[s];else{switch(e.modules.filter.value=t,typeof e.definition.headerFilterFunc){case"string":oe.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,oe.filters[e.definition.headerFilterFunc](t,o,i,s)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,e.definition.headerFilterFunc(t,o,i,s)}}if(!o)if("partial"===n)o=function(i){var s=e.getFieldValue(i);return null!=s&&String(s).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";else o=function(i){return e.getFieldValue(i)==t},r="=";i.headerFilters[s]={value:t,func:o,type:r}}e.modules.filter.value=t,a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.trackChanges(),i.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)}generateHeaderFilterElement(e,t,i){var s,o,n,r,a,l,h,d,c=this,u=e.modules.filter.success,m=e.getField();if(e.modules.filter.value=t,e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),m){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&0!==e},(s=document.createElement("div")).classList.add("tabulator-header-filter"),typeof e.definition.headerFilter){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(o=c.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&c.table.modules.edit.editors[e.definition.formatter]?(o=c.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=c.table.modules.edit.editors.input}if(o){if(r={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return s},getColumn:function(){return e.getComponent()},getTable:()=>this.table,getType:()=>"header",getRow:function(){return{normalizeHeight:function(){}}}},h="function"==typeof(h=e.definition.headerFilterParams||{})?h.call(c.table,r):h,!(n=o.call(this.table.modules.edit,r,(function(e){d=e}),u,(function(){}),h)))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor returned a value of false");if(!(n instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor should return an instance of Node, the editor returned:",n);c.langBind("headerFilters|columns|"+e.definition.field,(function(t){n.setAttribute("placeholder",void 0!==t&&t?t:e.definition.headerFilterPlaceholder||c.langText("headerFilters|default"))})),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("focus",(e=>{var t=this.table.columnManager.contentsElement.scrollLeft;t!==this.table.rowManager.element.scrollLeft&&(this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))})),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout((function(){u(n.value)}),c.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=n,e.modules.filter.attrType=n.hasAttribute("type")?n.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=n.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(n.addEventListener("keyup",l),n.addEventListener("search",l),"number"==e.modules.filter.attrType&&n.addEventListener("change",(function(e){u(n.value)})),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&n.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||n.addEventListener("mousedown",(function(e){e.stopPropagation()}))),s.appendChild(n),e.contentElement.appendChild(s),i||c.headerFilterColumns.push(e),d&&d()}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)}hideHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}showHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}setHeaderFilterFocus(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())}getHeaderFilterValue(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}setHeaderFilterValue(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}reloadHeaderFilter(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}refreshFilter(){this.tableInitialized&&("remote"===this.table.options.filterMode?this.reloadData(null,!1,!1):this.refreshData(!0))}trackChanges(){this.changed=!0,this.dispatch("filter-changed")}hasChanged(){var e=this.changed;return this.changed=!1,e}setFilter(e,t,i,s){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),this.addFilter(e)}addFilter(e,t,i,s){var o=!1;Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),e.forEach((e=>{(e=this.findFilter(e))&&(this.filterList.push(e),o=!0)})),o&&this.trackChanges()}findFilter(e){var t;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:oe.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return oe.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return oe.filters[e.type](e.value,t[e.field],t,e.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e}findSubFilters(e){var t=[];return e.forEach((e=>{(e=this.findFilter(e))&&t.push(e)})),!!t.length&&t}getFilters(e,t){var i=[];return e&&(i=this.getHeaderFilters()),t&&i.forEach((function(e){"function"==typeof e.type&&(e.type="function")})),i=i.concat(this.filtersToArray(this.filterList,t))}filtersToArray(e,t){var i=[];return e.forEach((e=>{var s;Array.isArray(e)?i.push(this.filtersToArray(e,t)):(s={field:e.field,type:e.type,value:e.value},t&&"function"==typeof s.type&&(s.type="function"),i.push(s))})),i}getHeaderFilters(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}removeFilter(e,t,i){Array.isArray(e)||(e=[{field:e,type:t,value:i}]),e.forEach((e=>{var t=-1;(t="object"==typeof e.field?this.filterList.findIndex((t=>e===t)):this.filterList.findIndex((t=>e.field===t.field&&e.type===t.type&&e.value===t.value)))>-1?this.filterList.splice(t,1):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)})),this.trackChanges()}clearFilter(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}clearHeaderFilter(){this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((e=>{void 0!==e.modules.filter.value&&delete e.modules.filter.value,e.modules.filter.prevSuccess=void 0,this.reloadHeaderFilter(e)})),this.trackChanges()}search(e,t,i,s){var o=[],n=[];return Array.isArray(t)||(t=[{field:t,type:i,value:s}]),t.forEach((e=>{(e=this.findFilter(e))&&n.push(e)})),this.table.rowManager.rows.forEach((t=>{var i=!0;n.forEach((e=>{this.filterRecurse(e,t.getData())||(i=!1)})),i&&o.push("data"===e?t.getData("data"):t.getComponent())})),o}filter(e,t){var i=[],s=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters(!0)),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((e=>{this.filterRow(e)&&i.push(e)})):i=e.slice(0),this.subscribedExternal("dataFiltered")&&(i.forEach((e=>{s.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(!0),s)),i}filterRow(e,t){var i=!0,s=e.getData();for(var o in this.filterList.forEach((e=>{this.filterRecurse(e,s)||(i=!1)})),this.headerFilters)this.headerFilters[o].func(s)||(i=!1);return i}filterRecurse(e,t){var i=!1;return Array.isArray(e)?e.forEach((e=>{this.filterRecurse(e,t)&&(i=!0)})):i=e.func(t),i}}oe.moduleName="filter",oe.filters=se;var ne={plaintext:function(e,t,i){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,i){return e.getValue()},textarea:function(e,t,i){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,i){var s,o,n,r,a,l=parseFloat(e.getValue()),h="",d=t.decimal||".",c=t.thousand||",",u=t.negativeSign||"-",m=t.symbol||"",p=!!t.symbolAfter,g=void 0!==t.precision?t.precision:2;if(isNaN(l))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));if(l<0&&(l=Math.abs(l),h=u),s=!1!==g?l.toFixed(g):l,o=(s=String(s).split("."))[0],n=s.length>1?d+s[1]:"",!1!==t.thousand)for(r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+c+"$2");return a=o+n,!0===h?(a="("+a+")",p?a+m:m+a):p?h+a+m:h+m+a},link:function(e,t,i){var s,o=e.getValue(),n=t.urlPrefix||"",a=t.download,l=o,h=document.createElement("a");if(t.labelField&&(s=e.getData(),l=function e(t,i){var s=i[t.shift()];return t.length&&"object"==typeof s?e(t,s):s}(t.labelField.split(this.table.options.nestedFieldSeparator),s)),t.label)switch(typeof t.label){case"string":l=t.label;break;case"function":l=t.label(e)}if(l){if(t.urlField&&(s=e.getData(),o=r.retrieveNestedData(this.table.options.nestedFieldSeparator,t.urlField,s)),t.url)switch(typeof t.url){case"string":o=t.url;break;case"function":o=t.url(e)}return h.setAttribute("href",n+o),t.target&&h.setAttribute("target",t.target),t.download&&(a="function"==typeof a?a(e):!0===a?"":a,h.setAttribute("download",a)),h.innerHTML=this.emptyToSpace(this.sanitizeHTML(l)),h}return" "},image:function(e,t,i){var s=document.createElement("img"),o=e.getValue();switch(t.urlPrefix&&(o=t.urlPrefix+e.getValue()),t.urlSuffix&&(o+=t.urlSuffix),s.setAttribute("src",o),typeof t.height){case"number":s.style.height=t.height+"px";break;case"string":s.style.height=t.height}switch(typeof t.width){case"number":s.style.width=t.width+"px";break;case"string":s.style.width=t.width}return s.addEventListener("load",(function(){e.getRow().normalizeHeight()})),s},tickCross:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t.allowEmpty,r=t.allowTruthy,a=Object.keys(t).includes("trueValue"),l=void 0!==t.tickElement?t.tickElement:'',h=void 0!==t.crossElement?t.crossElement:'';return a&&s===t.trueValue||!a&&(r&&s||!0===s||"true"===s||"True"===s||1===s||"1"===s)?(o.setAttribute("aria-checked",!0),l||""):!n||"null"!==s&&""!==s&&null!=s?(o.setAttribute("aria-checked",!1),h||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var s,o=window.DateTime||luxon.DateTime,n=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=t.outputFormat||"dd/MM/yyyy HH:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=e.getValue();if(void 0!==o)return(s=o.isDateTime(l)?l:"iso"===n?o.fromISO(String(l)):o.fromFormat(String(l),n)).isValid?(t.timezone&&(s=s.setZone(t.timezone)),s.toFormat(r)):!0!==a&&l?"function"==typeof a?a(l):a:l;console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var s,o=window.DateTime||luxon.DateTime,n=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=void 0!==t.suffix&&t.suffix,l=void 0!==t.unit?t.unit:"days",h=void 0!==t.humanize&&t.humanize,d=void 0!==t.date?t.date:o.now(),c=e.getValue();if(void 0!==o)return(s=o.isDateTime(c)?c:"iso"===n?o.fromISO(String(c)):o.fromFormat(String(c),n)).isValid?h?s.diff(d,l).toHuman()+(a?" "+a:""):parseInt(s.diff(d,l)[l])+(a?" "+a:""):!0===r?c:"function"==typeof r?r(c):r;console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var s=e.getValue();return void 0===t[s]?(console.warn("Missing display value for "+s),s):t[s]},star:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",s=s&&!isNaN(s)?parseInt(s):0,s=Math.max(0,Math.min(s,n));for(var l=1;l<=n;l++){var h=a.cloneNode(!0);h.innerHTML=l<=s?'':'',r.appendChild(h)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",s),r},traffic:function(e,t,i){var s,o,n=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,h=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),o=parseFloat(n)<=a?parseFloat(n):a,o=parseFloat(o)>=l?parseFloat(o):l,s=(a-l)/100,o=Math.round((o-l)/s),typeof h){case"string":d=h;break;case"function":d=h(n);break;case"object":if(Array.isArray(h)){var c=100/h.length,u=Math.floor(o/c);u=Math.min(u,h.length-1),d=h[u=Math.max(u,0)];break}}return r.style.backgroundColor=d,r}},progress:function(e,t={},i){var o,n,r,a,l,h=this.sanitizeHTML(e.getValue())||0,d=e.getElement(),c=t.max?t.max:100,u=t.min?t.min:0,m=t.legendAlign?t.legendAlign:"center";switch(n=parseFloat(h)<=c?parseFloat(h):c,n=parseFloat(n)>=u?parseFloat(n):u,o=(c-u)/100,n=Math.round((n-u)/o),typeof t.color){case"string":r=t.color;break;case"function":r=t.color(h);break;case"object":if(Array.isArray(t.color)){let e=100/t.color.length,i=Math.floor(n/e);i=Math.min(i,t.color.length-1),i=Math.max(i,0),r=t.color[i];break}default:r="#2DC214"}switch(typeof t.legend){case"string":a=t.legend;break;case"function":a=t.legend(h);break;case"boolean":a=h;break;default:a=!1}switch(typeof t.legendColor){case"string":l=t.legendColor;break;case"function":l=t.legendColor(h);break;case"object":if(Array.isArray(t.legendColor)){let e=100/t.legendColor.length,i=Math.floor(n/e);i=Math.min(i,t.legendColor.length-1),i=Math.max(i,0),l=t.legendColor[i]}break;default:l="#000"}d.style.minWidth="30px",d.style.position="relative",d.setAttribute("aria-label",n);var p=document.createElement("div");p.style.display="inline-block",p.style.width=n+"%",p.style.backgroundColor=r,p.style.height="100%",p.setAttribute("data-max",c),p.setAttribute("data-min",u);var g=document.createElement("div");if(g.style.position="relative",g.style.width="100%",g.style.height="100%",a){var b=document.createElement("div");b.style.position="absolute",b.style.top=0,b.style.left=0,b.style.textAlign=m,b.style.width="100%",b.style.color=l,b.innerHTML=a}return i((function(){if(!(e instanceof s)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",d.appendChild(t),d=t}d.appendChild(g),g.appendChild(p),a&&g.appendChild(b)})),""},color:function(e,t,i){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,i){return''},buttonCross:function(e,t,i){return''},rownum:function(e,t,i){var s=document.createElement("span"),o=e.getRow(),n=e.getTable();return o.watchPosition((e=>{t.relativeToPage&&(e+=n.modules.page.getPageSize()*(n.modules.page.getPage()-1)),s.innerText=e})),s},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
        "},responsiveCollapse:function(e,t,i){var s=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function n(e){var t=o.element;o.open=e,t&&(o.open?(s.classList.add("open"),t.style.display=""):(s.classList.remove("open"),t.style.display="none"))}return s.classList.add("tabulator-responsive-collapse-toggle"),s.innerHTML='\n \n \n\n\n\n \n',e.getElement().classList.add("tabulator-row-handle"),s.addEventListener("click",(function(t){t.stopImmediatePropagation(),n(!o.open),e.getTable().rowManager.adjustTableSize()})),n(o.open),s},rowSelection:function(e,t,i){var s=document.createElement("input"),o=!1;if(s.type="checkbox",s.setAttribute("aria-label","Select Row"),this.table.modExists("selectRow",!0))if(s.addEventListener("click",(e=>{e.stopPropagation()})),"function"==typeof e.getRow){var n=e.getRow();n instanceof u?(s.addEventListener("change",(e=>{"click"===this.table.options.selectableRowsRangeMode&&o?o=!1:n.toggleSelect()})),"click"===this.table.options.selectableRowsRangeMode&&s.addEventListener("click",(e=>{o=!0,this.table.modules.selectRow.handleComplexRowClick(n._row,e)})),s.checked=n.isSelected&&n.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(n,s)):s=""}else s.addEventListener("change",(e=>{this.table.modules.selectRow.selectedRows.length?this.table.deselectRow():this.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(s);return s}};class re extends k{constructor(e){super(e),this.registerColumnOption("formatter"),this.registerColumnOption("formatterParams"),this.registerColumnOption("formatterPrint"),this.registerColumnOption("formatterPrintParams"),this.registerColumnOption("formatterClipboard"),this.registerColumnOption("formatterClipboardParams"),this.registerColumnOption("formatterHtmlOutput"),this.registerColumnOption("formatterHtmlOutputParams"),this.registerColumnOption("titleFormatter"),this.registerColumnOption("titleFormatterParams")}initialize(){this.subscribe("cell-format",this.formatValue.bind(this)),this.subscribe("cell-rendered",this.cellRendered.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-format",this.formatHeader.bind(this))}initializeColumn(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))}lookupFormatter(e,t){var i={params:e.definition["formatter"+t+"Params"]||{}},s=e.definition["formatter"+t];switch(typeof s){case"string":re.formatters[s]?i.formatter=re.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=re.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=re.formatters.plaintext}return i}cellRendered(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}formatHeader(e,t,i){var s,o,n,r;return e.definition.titleFormatter?(s=this.getFormatter(e.definition.titleFormatter),n=t=>{e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i},getType:function(){return"header"},getColumn:function(){return e.getComponent()},getTable:()=>this.table},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,s.call(this,r,o,n)):t}formatValue(e){var t=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}formatExportValue(e,t){var i,s=e.column.modules.format[t];if(s){function o(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}return i="function"==typeof s.params?s.params(e.getComponent()):s.params,s.formatter.call(this,e.getComponent(),i,o)}return this.formatValue(e)}sanitizeHTML(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=/]/g,(function(e){return t[e]}))}return e}emptyToSpace(e){return null==e||""===e?" ":e}getFormatter(e){switch(typeof e){case"string":re.formatters[e]?e=re.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=re.formatters.plaintext);break;case"function":break;default:e=re.formatters.plaintext}return e}}re.moduleName="format",re.formatters=ne;class ae extends k{constructor(e){super(e),this.leftColumns=[],this.rightColumns=[],this.initializationMode="left",this.active=!1,this.blocked=!0,this.registerColumnOption("frozen")}reset(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.active=!1}initialize(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-width",this.layout.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("table-layout",this.layout.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("column-add",this.reinitializeColumns.bind(this)),this.subscribe("column-deleted",this.reinitializeColumns.bind(this)),this.subscribe("column-hide",this.reinitializeColumns.bind(this)),this.subscribe("column-show",this.reinitializeColumns.bind(this)),this.subscribe("columns-loaded",this.reinitializeColumns.bind(this)),this.subscribe("table-redraw",this.layout.bind(this)),this.subscribe("layout-refreshing",this.blockLayout.bind(this)),this.subscribe("layout-refreshed",this.unblockLayout.bind(this)),this.subscribe("scrollbar-vertical",this.adjustForScrollbar.bind(this))}blockLayout(){this.blocked=!0}unblockLayout(){this.blocked=!1}layoutCell(e){this.layoutElement(e.element,e.column)}reinitializeColumns(){this.reset(),this.table.columnManager.columnsByIndex.forEach((e=>{this.initializeColumn(e)})),this.layout()}initializeColumn(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")}frozenCheck(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen}layoutCalcRows(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow),this.table.modExists("groupRows")&&this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()))}layoutGroupCalcs(e){e.forEach((e=>{e.calcs.top&&this.layoutRow(e.calcs.top),e.calcs.bottom&&this.layoutRow(e.calcs.bottom),e.groupList&&e.groupList.length&&this.layoutGroupCalcs(e.groupList)}))}layoutColumnPosition(e){var t=[],i=0,s=0;this.leftColumns.forEach(((s,o)=>{if(s.modules.frozen.marginValue=i,s.modules.frozen.margin=s.modules.frozen.marginValue+"px",s.visible&&(i+=s.getWidth()),o==this.leftColumns.length-1?s.modules.frozen.edge=!0:s.modules.frozen.edge=!1,s.parent.isGroup){var n=this.getColGroupParentElement(s);t.includes(n)||(this.layoutElement(n,s),t.push(n)),n.classList.toggle("tabulator-frozen-left",s.modules.frozen.edge&&"left"===s.modules.frozen.position),n.classList.toggle("tabulator-frozen-right",s.modules.frozen.edge&&"right"===s.modules.frozen.position)}else this.layoutElement(s.getElement(),s);e&&s.cells.forEach((e=>{this.layoutElement(e.getElement(!0),s)}))})),this.rightColumns.forEach(((t,i)=>{t.modules.frozen.marginValue=s,t.modules.frozen.margin=t.modules.frozen.marginValue+"px",t.visible&&(s+=t.getWidth()),i==this.rightColumns.length-1?t.modules.frozen.edge=!0:t.modules.frozen.edge=!1,t.parent.isGroup?this.layoutElement(this.getColGroupParentElement(t),t):this.layoutElement(t.getElement(),t),e&&t.cells.forEach((e=>{this.layoutElement(e.getElement(!0),t)}))}))}getColGroupParentElement(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}layout(){this.active&&!this.blocked&&(this.layoutColumnPosition(),this.reinitializeRows(),this.layoutCalcRows())}reinitializeRows(){var e=this.table.rowManager.getVisibleRows(!0);this.table.rowManager.getRows().filter((t=>!e.includes(t))).forEach((e=>{e.deinitialize()})),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)}))}layoutRow(e){"fitDataFill"===this.table.options.layout&&this.rightColumns.length&&(this.table.rowManager.getTableElement().style.minWidth="calc(100% - "+this.rightMargin+")"),this.leftColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)})),this.rightColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)}))}layoutElement(e,t){var i;t.modules.frozen&&e&&(e.style.position="sticky",i=this.table.rtl?"left"===t.modules.frozen.position?"right":"left":t.modules.frozen.position,e.style[i]=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),e.classList.toggle("tabulator-frozen-left",t.modules.frozen.edge&&"left"===t.modules.frozen.position),e.classList.toggle("tabulator-frozen-right",t.modules.frozen.edge&&"right"===t.modules.frozen.position))}adjustForScrollbar(e){this.rightColumns.length&&(this.table.columnManager.getContentsElement().style.width="calc(100% - "+e+"px)")}_calcSpace(e,t){var i=0;for(let s=0;s{this.initializeRow(e)}))}initializeRow(e){var t=this.table.options.frozenRows,i=typeof t;"number"===i?e.getPosition()&&e.getPosition()+this.rows.length<=t&&this.freezeRow(e):"function"===i?t.call(this.table,e.getComponent())&&this.freezeRow(e):Array.isArray(t)&&t.includes(e.data[this.options("frozenRowsField")])&&this.freezeRow(e)}isRowFrozen(e){return this.rows.indexOf(e)>-1}isFrozen(){return!!this.rows.length}visibleRows(e,t){return this.rows.forEach((e=>{t.push(e)})),t}getRows(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}freezeRow(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.rows.push(e),this.refreshData(!1,"display"),this.table.rowManager.adjustTableSize(),this.styleRows())}unfreezeRow(e){e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.refreshData(!1,"display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")}detachRow(e){var t=this.rows.indexOf(e);if(t>-1){var i=e.getElement();i.parentNode&&i.parentNode.removeChild(i),this.rows.splice(t,1)}}styleRows(e){this.rows.forEach(((e,t)=>{this.table.rowManager.styleRow(e,t)}))}}le.moduleName="frozenRows";class he{constructor(e){return this._group=e,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.groupManager.table.componentFunctionBinder.handle("group",e._group,t)}})}getKey(){return this._group.key}getField(){return this._group.field}getElement(){return this._group.element}getRows(){return this._group.getRows(!0)}getSubGroups(){return this._group.getSubGroups(!0)}getParentGroup(){return!!this._group.parent&&this._group.parent.getComponent()}isVisible(){return this._group.visible}show(){this._group.show()}hide(){this._group.hide()}toggle(){this._group.toggleVisibility()}scrollTo(e,t){return this._group.groupManager.table.rowManager.scrollToRow(this._group,e,t)}_getSelf(){return this._group}getTable(){return this._group.groupManager.table}}class de{constructor(e,t,i,s,o,n,r){this.groupManager=e,this.parent=t,this.key=s,this.level=i,this.field=o,this.hasSubGroups=i{e.modules&&delete e.modules.group}))),this.element=!1,this.arrowElement=!1,this.elementContents=!1}createElements(){var e=document.createElement("div");e.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(e),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)}createValueGroups(){var e=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]&&this.groupManager.allowedValues[e].forEach((t=>{this._createGroup(t,e)}))}addBindings(){this.groupManager.table.options.groupToggleElement&&("arrow"==this.groupManager.table.options.groupToggleElement?this.arrowElement:this.element).addEventListener("click",(e=>{"arrow"===this.groupManager.table.options.groupToggleElement&&(e.stopPropagation(),e.stopImmediatePropagation()),setTimeout((()=>{this.toggleVisibility()}))}))}_createGroup(e,t){var i=t+"_"+e,s=new de(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[i]);this.groups[i]=s,this.groupList.push(s)}_addRowToGroup(e){var t=this.level+1;if(this.hasSubGroups){var i=this.groupManager.groupIDLookups[t].func(e.getData()),s=t+"_"+i;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[s]&&this.groups[s].addRow(e):(this.groups[s]||this._createGroup(i,t),this.groups[s].addRow(e))}}_addRow(e){this.rows.push(e),e.modules.group=this}insertRow(e,t,i){var s=this.conformRowData({});e.updateData(s);var o=this.rows.indexOf(t);o>-1?i?this.rows.splice(o+1,0,e):this.rows.splice(o,0,e):i?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}scrollHeader(e){this.arrowElement&&(this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)})))}getRowIndex(e){}conformRowData(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e}removeRow(e){var t=this.rows.indexOf(e),i=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(i.parentNode&&i.parentNode.removeChild(i),this.groupManager.blockRedraw||(this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this))):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))}getHeadersAndRows(){var e=[];return e.push(this),this._visSet(),this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.visible?this.groupList.length?this.groupList.forEach((function(t){e=e.concat(t.getHeadersAndRows())})):("table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),e=e.concat(this.rows),"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))),e}getData(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((e=>{i.push(e.getData(t||"data"))})),i}getRowCount(){var e=0;return this.groupList.length?this.groupList.forEach((t=>{e+=t.getRowCount()})):e=this.rows.length,e}toggleVisibility(){this.visible?this.hide():this.show()}hide(){this.visible=!1,"basic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination||(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((e=>{e.getHeadersAndRows().forEach((e=>{e.detachElement()}))})):this.rows.forEach((e=>{var t=e.getElement();t.parentNode.removeChild(t)}))),this.groupManager.updateGroupRows(!0),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}show(){if(this.visible=!0,"basic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.generateElement();this.groupList.length?this.groupList.forEach((t=>{t.getHeadersAndRows().forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.updateGroupRows(!0)}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}_visSet(){var e=[];"function"==typeof this.visible&&(this.rows.forEach((function(t){e.push(t.getData())})),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))}getRowGroup(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var s=i.getRowGroup(e);s&&(t=s)})):this.rows.find((function(t){return t===e}))&&(t=this),t}getSubGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getRows(e,t){var i=[];return t&&this.groupList.length?this.groupList.forEach((s=>{i=i.concat(s.getRows(e,t))})):this.rows.forEach((function(t){i.push(e?t.getComponent():t)})),i}generateGroupHeaderContents(){var e=[];for(this.getRows(!1,!0).forEach((function(t){e.push(t.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)}getPath(e=[]){return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}getElement(){return this.elementContents?this.element:this.generateElement()}generateElement(){this.addBindings=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;ei.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),this.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],this.langBind("groups|item",((e,t)=>{this.headerGenerator[0]=(i,s,o)=>(void 0===i?"":i)+"("+s+" "+(1===s?e:t.groups.items)+")"})),this.groupIDLookups=[],e)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs)this.table.columnManager.getRealColumns().forEach((e=>{e.definition.topCalc&&this.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&this.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(e)||(e=[e]),e.forEach(((e,t)=>{var i,s;i="function"==typeof e?e:(s=this.table.columnManager.getColumnByField(e))?function(e){return s.getFieldValue(e)}:function(t){return t[e]},this.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!this.allowedValues&&this.allowedValues[t]})})),t&&(Array.isArray(t)||(t=[t]),t.forEach((e=>{})),this.startOpen=t),i&&(this.headerGenerator=Array.isArray(i)?i:[i])}else this.groupList=[],this.groups={}}rowSample(e,t){if(this.table.options.groupBy){var i=this.getGroups(!1)[0];t.push(i.getRows(!1)[0])}return t}virtualRenderFill(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();if(!this.table.options.groupBy)return t;t=t.filter((e=>"group"!==e.type)),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}rowAddingIndex(e,t,i){if(this.table.options.groupBy){this.assignRowToGroup(e);var s=e.modules.group.rows;return s.length>1&&(!t||t&&-1==s.indexOf(t)?i?s[0]!==e&&(t=s[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):s[s.length-1]!==e&&(t=s[s.length-1],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)),t}}trackChanges(){this.dispatch("group-changed")}setGroupBy(e){this.table.options.groupBy=e,this.initialized||this.initialize(),this.configureGroupSetup(),!e&&this.table.modExists("columnCalcs")&&!0===this.table.options.columnCalcs&&this.table.modules.columnCalcs.reinitializeCalcs(),this.refreshData(),this.trackChanges()}setGroupValues(e){this.table.options.groupValues=e,this.configureGroupSetup(),this.refreshData(),this.trackChanges()}setGroupStartOpen(e){this.table.options.groupStartOpen=e,this.configureGroupSetup(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}setGroupHeader(e){this.table.options.groupHeader=e,this.configureGroupSetup(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}userGetGroups(e){return this.getGroups(!0)}userGetGroupedData(){return this.table.options.groupBy?this.getGroupedData():this.getData()}rowGetGroup(e){return!!e.modules.group&&e.modules.group.getComponent()}rowMoving(e,t,i){if(this.table.options.groupBy){!i&&t instanceof de&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof de?t:t.modules.group,o=e instanceof de?e:e.modules.group;s===o?this.table.rowManager.moveRowInArray(s.rows,e,t,i):(o&&o.removeRow(e),s.insertRow(e,t,i))}}rowDeleting(e){this.table.options.groupBy&&e.modules.group&&e.modules.group.removeRow(e)}rowsUpdated(e){this.table.options.groupBy&&this.updateGroupRows(!0)}cellUpdated(e){this.table.options.groupBy&&this.reassignRowToGroup(e.row)}getRows(e){return this.table.options.groupBy&&this.groupIDLookups.length?(this.dispatchExternal("dataGrouping"),this.generateGroups(e),this.subscribedExternal("dataGrouped")&&this.dispatchExternal("dataGrouped",this.getGroups(!0)),this.updateGroupRows()):e.slice(0)}getGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getChildGroups(e){var t=[];return e||(e=this),e.groupList.forEach((e=>{e.groupList.length?t=t.concat(this.getChildGroups(e)):t.push(e)})),t}wipe(){this.table.options.groupBy&&(this.groupList.forEach((function(e){e.wipe()})),this.groupList=[],this.groups={})}pullGroupListData(e){var t=[];return e.forEach((e=>{var i={level:0,rowCount:0,headerContent:""},s=[];e.hasSubGroups?(s=this.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=s.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),t.push(i),t=t.concat(s)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,t.push(i),e.getRows().forEach((e=>{t.push(e.getData("data"))})))})),t}getGroupedData(){return this.pullGroupListData(this.groupList)}getRowGroup(e){var t=!1;return this.options("dataTree")&&(e=this.table.modules.dataTree.getTreeParentRoot(e)),this.groupList.forEach((i=>{var s=i.getRowGroup(e);s&&(t=s)})),t}countGroups(){return this.groupList.length}generateGroups(e){var t=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((e=>{this.createGroup(e,0,t)})),e.forEach((e=>{this.assignRowToExistingGroup(e,t)}))):e.forEach((e=>{this.assignRowToGroup(e,t)})),Object.values(t).forEach((e=>{e.wipe(!0)}))}createGroup(e,t,i){var s,o=t+"_"+e;i=i||[],s=new de(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=s,this.groupList.push(s)}assignRowToExistingGroup(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}assignRowToGroup(e,t){var i=this.groupIDLookups[0].func(e.getData()),s=!this.groups["0_"+i];return s&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!s}reassignRowToGroup(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),s=this.getExpectedPath(e);i.length==s.length&&i.every(((e,t)=>e===s[t]))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}getExpectedPath(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((e=>{t.push(e.func(i))})),t}updateGroupRows(e){var t=[];return this.blockRedraw||(this.groupList.forEach((e=>{t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0)),t}scrollHeaders(e){this.table.options.groupBy&&("virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((t=>{t.scrollHeader(e)})))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))}checkBasicModeGroupHeaderWidth(){var e=this.table.rowManager.tableElement,t=!0;this.table.rowManager.getDisplayRows().forEach(((i,s)=>{this.table.rowManager.styleRow(i,s),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(t=!1)})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}}ce.moduleName="groupRows";class ue extends k{constructor(e){super(e),this.history=[],this.index=-1,this.registerTableOption("history",!1)}initialize(){this.table.options.history&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("cell-delete",this.clearComponentHistory.bind(this)),this.subscribe("row-delete",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clear.bind(this)),this.subscribe("row-added",this.rowAdded.bind(this)),this.subscribe("row-move",this.rowMoved.bind(this))),this.registerTableFunction("undo",this.undo.bind(this)),this.registerTableFunction("redo",this.redo.bind(this)),this.registerTableFunction("getHistoryUndoSize",this.getHistoryUndoSize.bind(this)),this.registerTableFunction("getHistoryRedoSize",this.getHistoryRedoSize.bind(this)),this.registerTableFunction("clearHistory",this.clear.bind(this))}rowMoved(e,t,i){this.action("rowMove",e,{posFrom:e.getPosition(),posTo:t.getPosition(),to:t,after:i})}rowAdded(e,t,i,s){this.action("rowAdd",e,{data:t,pos:i,index:s})}rowDeleted(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup()._getSelf().rows).indexOf(e))&&(t=i[t-1]):(t=e.table.rowManager.getRowIndex(e))&&(t=e.table.rowManager.rows[t-1]),this.action("rowDelete",e,{data:e.getData(),pos:!t,index:t})}cellUpdated(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}clear(){this.history=[],this.index=-1}action(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}getHistoryUndoSize(){return this.index+1}getHistoryRedoSize(){return this.history.length-(this.index+1)}clearComponentHistory(e){var t=this.history.findIndex((function(t){return t.component===e}));t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))}undo(){if(this.index>-1){let e=this.history[this.index];return ue.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn(this.options("history")?"History Undo Error - No more history to undo":"History module not enabled"),!1}redo(){if(this.history.length-1>this.index){this.index++;let e=this.history[this.index];return ue.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn(this.options("history")?"History Redo Error - No more history to redo":"History module not enabled"),!1}_rebindRow(e,t){this.history.forEach((function(i){if(i.component instanceof m)i.component===e&&(i.component=t);else if(i.component instanceof o&&i.component.row===e){var s=i.component.column.getField();s&&(i.component=t.getCell(s))}}))}}ue.moduleName="history",ue.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},rowAdd:function(e){e.component.deleteActual(),this.table.rowManager.checkPlaceholder()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t),this.table.rowManager.checkPlaceholder()},rowMove:function(e){var t=e.data.posFrom-e.data.posTo>0;this.table.rowManager.moveRowActual(e.component,this.table.rowManager.getRowFromPosition(e.data.posFrom),t),this.table.rowManager.regenerateRowPositions(),this.table.rowManager.reRenderInPosition()}},ue.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue),e.component.cellRendered()},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t),this.table.rowManager.checkPlaceholder()},rowDelete:function(e){e.component.deleteActual(),this.table.rowManager.checkPlaceholder()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.getRowFromPosition(e.data.posTo),e.data.after),this.table.rowManager.regenerateRowPositions(),this.table.rowManager.reRenderInPosition()}};class me extends k{constructor(e){super(e),this.fieldIndex=[],this.hasIndex=!1}initialize(){this.tableElementCheck()}tableElementCheck(){this.table.originalElement&&"TABLE"===this.table.originalElement.tagName&&(this.table.originalElement.childNodes.length?this.parseTable():console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."))}parseTable(){var e=this.table.originalElement,t=this.table.options,i=e.getElementsByTagName("th"),s=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),s=s?s.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,s):this._generateBlankHeaders(i,s);for(var n=0;n{n[e.toLowerCase()]=e})),s){var a,l=s[r];l&&"object"==typeof l&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==n[a]&&(t[n[a]]=this._attribValue(l.value)))}}_attribValue(e){return"true"===e||"false"!==e&&e}_findCol(e){return this.table.options.columns.find((t=>t.title===e))||!1}_extractHeaders(e,t){for(var i=0;i(console.error("Import Error:",e||"Unable to import data"),Promise.reject(e))))}lookupImporter(e){var t;return e||(e=this.table.options.importFormat),(t="string"==typeof e?ge.importers[e]:e)||console.error("Import Error - Importer not found:",e),t}importFromFile(e,t){var i=this.lookupImporter(e);if(i)return this.pickFile(t).then(this.importData.bind(this,i)).then(this.structureData.bind(this)).then(this.setData.bind(this)).catch((e=>(console.error("Import Error:",e||"Unable to import file"),Promise.reject(e))))}pickFile(e){return new Promise(((t,i)=>{var s=document.createElement("input");s.type="file",s.accept=e,s.addEventListener("change",(e=>{var o=s.files[0],n=new FileReader;switch(this.table.options.importReader){case"buffer":n.readAsArrayBuffer(o);break;case"binary":n.readAsBinaryString(o);break;case"url":n.readAsDataURL(o);break;default:n.readAsText(o)}n.onload=e=>{t(n.result)},n.onerror=e=>{console.warn("File Load Error - Unable to read file"),i()}})),s.click()}))}importData(e,t){var i=e.call(this.table,t);return i instanceof Promise?i:i?Promise.resolve(i):Promise.reject()}structureData(e){return Array.isArray(e)&&e.length&&Array.isArray(e[0])?this.table.options.autoColumns?this.structureArrayToObject(e):this.structureArrayToColumns(e):e}structureArrayToObject(e){var t=e.shift();return e.map((e=>{var i={};return t.forEach(((t,s)=>{i[t]=e[s]})),i}))}structureArrayToColumns(e){var t=[],i=this.table.getColumns();return i[0]&&e[0][0]&&i[0].getDefinition().title===e[0][0]&&e.shift(),e.forEach((e=>{var s={};e.forEach(((e,t)=>{var o=i[t];o&&(s[o.getField()]=e)})),t.push(s)})),t}setData(e){return this.table.setData(e)}}ge.moduleName="import",ge.importers=pe;class be extends k{constructor(e){super(e),this.eventMap={rowClick:"row-click",rowDblClick:"row-dblclick",rowContext:"row-contextmenu",rowMouseEnter:"row-mouseenter",rowMouseLeave:"row-mouseleave",rowMouseOver:"row-mouseover",rowMouseOut:"row-mouseout",rowMouseMove:"row-mousemove",rowMouseDown:"row-mousedown",rowMouseUp:"row-mouseup",rowTap:"row",rowDblTap:"row",rowTapHold:"row",cellClick:"cell-click",cellDblClick:"cell-dblclick",cellContext:"cell-contextmenu",cellMouseEnter:"cell-mouseenter",cellMouseLeave:"cell-mouseleave",cellMouseOver:"cell-mouseover",cellMouseOut:"cell-mouseout",cellMouseMove:"cell-mousemove",cellMouseDown:"cell-mousedown",cellMouseUp:"cell-mouseup",cellTap:"cell",cellDblTap:"cell",cellTapHold:"cell",headerClick:"column-click",headerDblClick:"column-dblclick",headerContext:"column-contextmenu",headerMouseEnter:"column-mouseenter",headerMouseLeave:"column-mouseleave",headerMouseOver:"column-mouseover",headerMouseOut:"column-mouseout",headerMouseMove:"column-mousemove",headerMouseDown:"column-mousedown",headerMouseUp:"column-mouseup",headerTap:"column",headerDblTap:"column",headerTapHold:"column",groupClick:"group-click",groupDblClick:"group-dblclick",groupContext:"group-contextmenu",groupMouseEnter:"group-mouseenter",groupMouseLeave:"group-mouseleave",groupMouseOver:"group-mouseover",groupMouseOut:"group-mouseout",groupMouseMove:"group-mousemove",groupMouseDown:"group-mousedown",groupMouseUp:"group-mouseup",groupTap:"group",groupDblTap:"group",groupTapHold:"group"},this.subscribers={},this.touchSubscribers={},this.columnSubscribers={},this.touchWatchers={row:{tap:null,tapDbl:null,tapHold:null},cell:{tap:null,tapDbl:null,tapHold:null},column:{tap:null,tapDbl:null,tapHold:null},group:{tap:null,tapDbl:null,tapHold:null}},this.registerColumnOption("headerClick"),this.registerColumnOption("headerDblClick"),this.registerColumnOption("headerContext"),this.registerColumnOption("headerMouseEnter"),this.registerColumnOption("headerMouseLeave"),this.registerColumnOption("headerMouseOver"),this.registerColumnOption("headerMouseOut"),this.registerColumnOption("headerMouseMove"),this.registerColumnOption("headerMouseDown"),this.registerColumnOption("headerMouseUp"),this.registerColumnOption("headerTap"),this.registerColumnOption("headerDblTap"),this.registerColumnOption("headerTapHold"),this.registerColumnOption("cellClick"),this.registerColumnOption("cellDblClick"),this.registerColumnOption("cellContext"),this.registerColumnOption("cellMouseEnter"),this.registerColumnOption("cellMouseLeave"),this.registerColumnOption("cellMouseOver"),this.registerColumnOption("cellMouseOut"),this.registerColumnOption("cellMouseMove"),this.registerColumnOption("cellMouseDown"),this.registerColumnOption("cellMouseUp"),this.registerColumnOption("cellTap"),this.registerColumnOption("cellDblTap"),this.registerColumnOption("cellTapHold")}initialize(){this.initializeExternalEvents(),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("cell-dblclick",this.cellContentsSelectionFixer.bind(this)),this.subscribe("scroll-horizontal",this.clearTouchWatchers.bind(this)),this.subscribe("scroll-vertical",this.clearTouchWatchers.bind(this))}clearTouchWatchers(){Object.values(this.touchWatchers).forEach((e=>{for(let t in e)e[t]=null}))}cellContentsSelectionFixer(e,t){var i;if(!this.table.modExists("edit")||this.table.modules.edit.currentCell!==t){e.preventDefault();try{document.selection?((i=document.body.createTextRange()).moveToElementText(t.getElement()),i.select()):window.getSelection&&((i=document.createRange()).selectNode(t.getElement()),window.getSelection().removeAllRanges(),window.getSelection().addRange(i))}catch(e){}}}initializeExternalEvents(){for(let e in this.eventMap)this.subscriptionChangeExternal(e,this.subscriptionChanged.bind(this,e))}subscriptionChanged(e,t){t?this.subscribers[e]||(this.eventMap[e].includes("-")?(this.subscribers[e]=this.handle.bind(this,e),this.subscribe(this.eventMap[e],this.subscribers[e])):this.subscribeTouchEvents(e)):this.eventMap[e].includes("-")?!this.subscribers[e]||this.columnSubscribers[e]||this.subscribedExternal(e)||(this.unsubscribe(this.eventMap[e],this.subscribers[e]),delete this.subscribers[e]):this.unsubscribeTouchEvents(e)}subscribeTouchEvents(e){var t=this.eventMap[e];this.touchSubscribers[t+"-touchstart"]||(this.touchSubscribers[t+"-touchstart"]=this.handleTouch.bind(this,t,"start"),this.touchSubscribers[t+"-touchend"]=this.handleTouch.bind(this,t,"end"),this.subscribe(t+"-touchstart",this.touchSubscribers[t+"-touchstart"]),this.subscribe(t+"-touchend",this.touchSubscribers[t+"-touchend"])),this.subscribers[e]=!0}unsubscribeTouchEvents(e){var t=!0,i=this.eventMap[e];if(this.subscribers[e]&&!this.subscribedExternal(e)){delete this.subscribers[e];for(let e in this.eventMap)this.eventMap[e]===i&&this.subscribers[e]&&(t=!1);t&&(this.unsubscribe(i+"-touchstart",this.touchSubscribers[i+"-touchstart"]),this.unsubscribe(i+"-touchend",this.touchSubscribers[i+"-touchend"]),delete this.touchSubscribers[i+"-touchstart"],delete this.touchSubscribers[i+"-touchend"])}}initializeColumn(e){var t=e.definition;for(let i in this.eventMap)t[i]&&(this.subscriptionChanged(i,!0),this.columnSubscribers[i]||(this.columnSubscribers[i]=[]),this.columnSubscribers[i].push(e))}handle(e,t,i){this.dispatchEvent(e,t,i)}handleTouch(e,t,i,s){var o=this.touchWatchers[e];switch("column"===e&&(e="header"),t){case"start":o.tap=!0,clearTimeout(o.tapHold),o.tapHold=setTimeout((()=>{clearTimeout(o.tapHold),o.tapHold=null,o.tap=null,clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"TapHold",i,s)}),1e3);break;case"end":o.tap&&(o.tap=null,this.dispatchEvent(e+"Tap",i,s)),o.tapDbl?(clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"DblTap",i,s)):o.tapDbl=setTimeout((()=>{clearTimeout(o.tapDbl),o.tapDbl=null}),300),clearTimeout(o.tapHold),o.tapHold=null}}dispatchEvent(e,t,i){var s,r=i.getComponent();this.columnSubscribers[e]&&(i instanceof o?s=i.column.definition[e]:i instanceof n&&(s=i.definition[e]),s&&s(t,r)),this.dispatchExternal(e,t,r)}}be.moduleName="interaction";class fe extends k{constructor(e){super(e),this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1,this.registerTableOption("keybindings",{}),this.registerTableOption("tabEndNewRow",!1)}initialize(){var e=this.table.options.keybindings,t={};this.watchKeys={},this.pressedKeys=[],!1!==e&&(Object.assign(t,fe.bindings),Object.assign(t,e),this.mapBindings(t),this.bindEvents()),this.subscribe("table-destroy",this.clearBindings.bind(this))}mapBindings(e){for(let t in e)fe.actions[t]?e[t]&&("object"!=typeof e[t]&&(e[t]=[e[t]]),e[t].forEach((e=>{(Array.isArray(e)?e:[e]).forEach((e=>{this.mapBinding(t,e)}))}))):console.warn("Key Binding Error - no such action:",t)}mapBinding(e,t){var i={action:fe.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach((e=>{switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=isNaN(e)?e.toUpperCase().charCodeAt(0):parseInt(e),i.keys.push(e),this.watchKeys[e]||(this.watchKeys[e]=[]),this.watchKeys[e].push(i)}}))}bindEvents(){var e=this;this.keyupBinding=function(t){var i=t.keyCode,s=e.watchKeys[i];s&&(e.pressedKeys.push(i),s.forEach((function(i){e.checkBinding(t,i)})))},this.keydownBinding=function(t){var i=t.keyCode;if(e.watchKeys[i]){var s=e.pressedKeys.indexOf(i);s>-1&&e.pressedKeys.splice(s,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}clearBindings(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}checkBinding(e,t){var i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((e=>{-1==this.pressedKeys.indexOf(e)&&(i=!1)})),i&&t.action.call(this,e),!0)}}fe.moduleName="keybindings",fe.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,navLeft:37,navRight:39,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:["ctrl + 90","meta + 90"],redo:["ctrl + 89","meta + 89"],copyToClipboard:["ctrl + 67","meta + 67"],rangeJumpUp:["ctrl + 38","meta + 38"],rangeJumpDown:["ctrl + 40","meta + 40"],rangeJumpLeft:["ctrl + 37","meta + 37"],rangeJumpRight:["ctrl + 39","meta + 39"],rangeExpandUp:"shift + 38",rangeExpandDown:"shift + 40",rangeExpandLeft:"shift + 37",rangeExpandRight:"shift + 39",rangeExpandJumpUp:["ctrl + shift + 38","meta + shift + 38"],rangeExpandJumpDown:["ctrl + shift + 40","meta + shift + 40"],rangeExpandJumpLeft:["ctrl + shift + 37","meta + shift + 37"],rangeExpandJumpRight:["ctrl + shift + 39","meta + shift + 39"]},fe.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;e.preventDefault(),t.displayRowsCount&&(i>=0?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,i=t.scrollTop+t.element.clientHeight,s=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=s?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){this.dispatch("keybinding-nav-prev",e)},navNext:function(e){this.dispatch("keybinding-nav-next",e)},navLeft:function(e){this.dispatch("keybinding-nav-left",e)},navRight:function(e){this.dispatch("keybinding-nav-right",e)},navUp:function(e){this.dispatch("keybinding-nav-up",e)},navDown:function(e){this.dispatch("keybinding-nav-down",e)},rangeJumpLeft:function(e){this.dispatch("keybinding-nav-range",e,"left",!0,!1)},rangeJumpRight:function(e){this.dispatch("keybinding-nav-range",e,"right",!0,!1)},rangeJumpUp:function(e){this.dispatch("keybinding-nav-range",e,"up",!0,!1)},rangeJumpDown:function(e){this.dispatch("keybinding-nav-range",e,"down",!0,!1)},rangeExpandLeft:function(e){this.dispatch("keybinding-nav-range",e,"left",!1,!0)},rangeExpandRight:function(e){this.dispatch("keybinding-nav-range",e,"right",!1,!0)},rangeExpandUp:function(e){this.dispatch("keybinding-nav-range",e,"up",!1,!0)},rangeExpandDown:function(e){this.dispatch("keybinding-nav-range",e,"down",!1,!0)},rangeExpandJumpLeft:function(e){this.dispatch("keybinding-nav-range",e,"left",!0,!0)},rangeExpandJumpRight:function(e){this.dispatch("keybinding-nav-range",e,"right",!0,!0)},rangeExpandJumpUp:function(e){this.dispatch("keybinding-nav-range",e,"up",!0,!0)},rangeExpandJumpDown:function(e){this.dispatch("keybinding-nav-range",e,"down",!0,!0)},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}};class ve extends k{constructor(e){super(e),this.menuContainer=null,this.nestedMenuBlock=!1,this.currentComponent=null,this.rootPopup=null,this.columnSubscribers={},this.registerTableOption("menuContainer",void 0),this.registerTableOption("rowContextMenu",!1),this.registerTableOption("rowClickMenu",!1),this.registerTableOption("rowDblClickMenu",!1),this.registerTableOption("groupContextMenu",!1),this.registerTableOption("groupClickMenu",!1),this.registerTableOption("groupDblClickMenu",!1),this.registerColumnOption("headerContextMenu"),this.registerColumnOption("headerClickMenu"),this.registerColumnOption("headerDblClickMenu"),this.registerColumnOption("headerMenu"),this.registerColumnOption("headerMenuIcon"),this.registerColumnOption("contextMenu"),this.registerColumnOption("clickMenu"),this.registerColumnOption("dblClickMenu")}initialize(){this.deprecatedOptionsCheck(),this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecatedOptionsCheck(){this.deprecationCheck("menuContainer","popupContainer")||(this.table.options.popupContainer=this.table.options.menuContainer)}initializeRowWatchers(){this.table.options.rowContextMenu&&(this.subscribe("row-contextmenu",this.loadMenuEvent.bind(this,this.table.options.rowContextMenu)),this.table.on("rowTapHold",this.loadMenuEvent.bind(this,this.table.options.rowContextMenu))),this.table.options.rowClickMenu&&this.subscribe("row-click",this.loadMenuEvent.bind(this,this.table.options.rowClickMenu)),this.table.options.rowDblClickMenu&&this.subscribe("row-dblclick",this.loadMenuEvent.bind(this,this.table.options.rowDblClickMenu))}initializeGroupWatchers(){this.table.options.groupContextMenu&&(this.subscribe("group-contextmenu",this.loadMenuEvent.bind(this,this.table.options.groupContextMenu)),this.table.on("groupTapHold",this.loadMenuEvent.bind(this,this.table.options.groupContextMenu))),this.table.options.groupClickMenu&&this.subscribe("group-click",this.loadMenuEvent.bind(this,this.table.options.groupClickMenu)),this.table.options.groupDblClickMenu&&this.subscribe("group-dblclick",this.loadMenuEvent.bind(this,this.table.options.groupDblClickMenu))}initializeColumn(e){var t=e.definition;t.headerContextMenu&&!this.columnSubscribers.headerContextMenu&&(this.columnSubscribers.headerContextMenu=this.loadMenuTableColumnEvent.bind(this,"headerContextMenu"),this.subscribe("column-contextmenu",this.columnSubscribers.headerContextMenu),this.table.on("headerTapHold",this.loadMenuTableColumnEvent.bind(this,"headerContextMenu"))),t.headerClickMenu&&!this.columnSubscribers.headerClickMenu&&(this.columnSubscribers.headerClickMenu=this.loadMenuTableColumnEvent.bind(this,"headerClickMenu"),this.subscribe("column-click",this.columnSubscribers.headerClickMenu)),t.headerDblClickMenu&&!this.columnSubscribers.headerDblClickMenu&&(this.columnSubscribers.headerDblClickMenu=this.loadMenuTableColumnEvent.bind(this,"headerDblClickMenu"),this.subscribe("column-dblclick",this.columnSubscribers.headerDblClickMenu)),t.headerMenu&&this.initializeColumnHeaderMenu(e),t.contextMenu&&!this.columnSubscribers.contextMenu&&(this.columnSubscribers.contextMenu=this.loadMenuTableCellEvent.bind(this,"contextMenu"),this.subscribe("cell-contextmenu",this.columnSubscribers.contextMenu),this.table.on("cellTapHold",this.loadMenuTableCellEvent.bind(this,"contextMenu"))),t.clickMenu&&!this.columnSubscribers.clickMenu&&(this.columnSubscribers.clickMenu=this.loadMenuTableCellEvent.bind(this,"clickMenu"),this.subscribe("cell-click",this.columnSubscribers.clickMenu)),t.dblClickMenu&&!this.columnSubscribers.dblClickMenu&&(this.columnSubscribers.dblClickMenu=this.loadMenuTableCellEvent.bind(this,"dblClickMenu"),this.subscribe("cell-dblclick",this.columnSubscribers.dblClickMenu))}initializeColumnHeaderMenu(e){var t,i=e.definition.headerMenuIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),i?("function"==typeof i&&(i=i(e.getComponent())),i instanceof HTMLElement?t.appendChild(i):t.innerHTML=i):t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.loadMenuEvent(e.definition.headerMenu,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}loadMenuTableCellEvent(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadMenuEvent(i.column.definition[e],t,i)}loadMenuTableColumnEvent(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadMenuEvent(i.definition[e],t,i)}loadMenuEvent(e,t,i){i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent()):e,this.loadMenu(t,i,e)}loadMenu(e,t,i,s,o){var n,r=!(e instanceof MouseEvent),a=document.createElement("div");if(a.classList.add("tabulator-menu"),r||e.preventDefault(),i&&i.length){if(s)n=o.child(a);else{if(this.nestedMenuBlock){if(this.rootPopup)return}else this.nestedMenuBlock=setTimeout((()=>{this.nestedMenuBlock=!1}),100);this.rootPopup&&this.rootPopup.hide(),this.rootPopup=n=this.popup(a)}i.forEach((e=>{var i=document.createElement("div"),s=e.label,o=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof s&&(s=s.call(this.table,t.getComponent())),s instanceof Node?i.appendChild(s):i.innerHTML=s,"function"==typeof o&&(o=o.call(this.table,t.getComponent())),o?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(e=>{e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(s=>{s.stopPropagation(),this.loadMenu(s,t,e.menu,i,n)})):e.action&&i.addEventListener("click",(i=>{e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),a.appendChild(i)})),a.addEventListener("click",(e=>{this.rootPopup&&this.rootPopup.hide()})),n.show(s||e),n===this.rootPopup&&(this.rootPopup.hideOnBlur((()=>{this.rootPopup=null,this.currentComponent&&(this.dispatch("menu-closed",i,n),this.dispatchExternal("menuClosed",this.currentComponent.getComponent()),this.currentComponent=null)})),this.currentComponent=t,this.dispatch("menu-opened",i,n),this.dispatchExternal("menuOpened",t.getComponent()))}}}ve.moduleName="menu";class we extends k{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.registerTableOption("movableColumns",!1)}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}initialize(){this.table.options.movableColumns&&(this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("alert-show",this.abortMove.bind(this)))}abortMove(){clearTimeout(this.checkTimeout)}initializeColumn(e){var t,i=this,s={};e.modules.frozen||e.isGroup||(t=e.getElement(),s.mousemove=function(s){e.parent===i.moving.parent&&((i.touchMove?s.touches[0].pageX:s.pageX)-r.elOffset(t).left+i.table.columnManager.contentsElement.scrollLeft>e.getWidth()/2?i.toCol===e&&i.toColAfter||(t.parentNode.insertBefore(i.placeholderElement,t.nextSibling),i.moveColumn(e,!0)):(i.toCol!==e||i.toColAfter)&&(t.parentNode.insertBefore(i.placeholderElement,t),i.moveColumn(e,!1)))}.bind(i),t.addEventListener("mousedown",(function(t){i.touchMove=!1,1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),i.bindTouchEvents(e)),e.modules.moveColumn=s}bindTouchEvents(e){var t,i,s,o,n,r,a=e.getElement(),l=!1;a.addEventListener("touchstart",(a=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,t=e.nextColumn(),s=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,n=0,r=0,l=!1,this.startMove(a,e)}),this.checkPeriod)}),{passive:!0}),a.addEventListener("touchmove",(a=>{var h,d;this.moving&&(this.moveHover(a),l||(l=a.touches[0].pageX),(h=a.touches[0].pageX-l)>0?t&&h-n>s&&(d=t)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveColumn(d,!0)):i&&-h-r>o&&(d=i)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveColumn(d,!1)),d&&(t=d.nextColumn(),n=s,s=t?t.getWidth()/2:0,i=d.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),a.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&this.endMove(e)}))}startMove(e,t){var i=t.getElement(),s=this.table.columnManager.getContentsElement(),o=this.table.columnManager.getHeadersElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-r.elOffset(i).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),s.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom=s.clientHeight-o.offsetHeight+"px",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}_bindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}_unbindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}moveColumn(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&i[t]&&s.parentNode.insertBefore(i[t].getElement(),s.nextSibling)})):e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&i[t]&&s.parentNode.insertBefore(i[t].getElement(),s)}))}endMove(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))}moveHover(e){var t,i=this.table.columnManager.getContentsElement(),s=i.scrollLeft,o=(this.touchMove?e.touches[0].pageX:e.pageX)-r.elOffset(i).left+s;this.hoverElement.style.left=o-this.startX+"px",o-s{t=Math.max(0,s-5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1))),s+i.clientWidth-o{t=Math.min(i.clientWidth,s+5),this.table.rowManager.getElement().scrollLeft=t,this.autoScrollTimeout=!1}),1)))}}we.moduleName="moveColumn";class Ce extends k{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1,this.registerTableOption("movableRows",!1),this.registerTableOption("movableRowsConnectedTables",!1),this.registerTableOption("movableRowsConnectedElements",!1),this.registerTableOption("movableRowsSender",!1),this.registerTableOption("movableRowsReceiver","insert"),this.registerColumnOption("rowHandle")}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e}initialize(){this.table.options.movableRows&&(this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements,this.subscribe("cell-init",this.initializeCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)))}initializeGroupHeader(e){var t=this,i={};i.mouseup=function(i){t.tableRowDrop(i,e)}.bind(t),i.mousemove=function(i){var s;i.pageY-r.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2?t.toRow===e&&t.toRowAfter||((s=e.getElement()).parentNode.insertBefore(t.placeholderElement,s.nextSibling),t.moveRow(e,!0)):(t.toRow!==e||t.toRowAfter)&&(s=e.getElement()).previousSibling&&(s.parentNode.insertBefore(t.placeholderElement,s),t.moveRow(e,!1))}.bind(t),e.modules.moveRow=i}initializeRow(e){var t,i=this,s={};s.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),s.mousemove=function(t){var s=e.getElement();t.pageY-r.elOffset(s).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||(s.parentNode.insertBefore(i.placeholderElement,s.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(s.parentNode.insertBefore(i.placeholderElement,s),i.moveRow(e,!1))}.bind(i),this.hasHandle||((t=e.getElement()).addEventListener("mousedown",(function(t){1===t.which&&(i.checkTimeout=setTimeout((function(){i.startMove(t,e)}),i.checkPeriod))})),t.addEventListener("mouseup",(function(e){1===e.which&&i.checkTimeout&&clearTimeout(i.checkTimeout)})),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=s}initializeColumn(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}initializeCell(e){if(e.column.definition.rowHandle&&!1!==this.table.options.movableRows){var t=this,i=e.getElement(!0);i.addEventListener("mousedown",(function(i){1===i.which&&(t.checkTimeout=setTimeout((function(){t.startMove(i,e.row)}),t.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)})),this.bindTouchEvents(e.row,i)}}bindTouchEvents(e,t){var i,s,o,n,r,a,l=!1;t.addEventListener("touchstart",(t=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,s=e.prevRow(),n=s?s.getHeight()/2:0,r=0,a=0,l=!1,this.startMove(t,e)}),this.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(t=>{var h,d;this.moving&&(t.preventDefault(),this.moveHover(t),l||(l=t.touches[0].pageY),(h=t.touches[0].pageY-l)>0?i&&h-r>o&&(d=i)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveRow(d,!0)):s&&-h-a>n&&(d=s)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveRow(d,!1)),d&&(i=d.nextRow(),r=o,o=i?i.getHeight()/2:0,s=d.prevRow(),a=n,n=s?s.getHeight()/2:0))})),t.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&(this.endMove(e),this.touchMove=!1)}))}_bindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}_unbindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}startMove(e,t){var i=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i)),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.dispatchExternal("rowMoving",t.getComponent()),this.moveHover(e)}setStartPosition(e,t){var i,s,o=this.touchMove?e.touches[0].pageX:e.pageX,n=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(s=i.getBoundingClientRect(),this.startX=s.left-o+window.pageXOffset,this.startY=s.top-n+window.pageYOffset):this.startY=n-i.getBoundingClientRect().top}endMove(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow?this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter):this.dispatchExternal("rowMoveCancelled",this.moving.getComponent()),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))}moveRow(e,t){this.toRow=e,this.toRowAfter=t}moveHover(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}moveHoverTable(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,s=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=Math.min(s-this.startY,this.table.rowManager.element.scrollHeight-this.hoverElement.offsetHeight)+"px"}moveHoverConnections(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"}elementRowDrop(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}connectToTables(e){var t;this.connectionSelectorsTables&&(t=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStart",t),this.commsSend(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((e=>{"string"==typeof e?this.connectionElements=this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):this.connectionElements.push(e)})),this.connectionElements.forEach((e=>{var t=t=>{this.elementRowDrop(t,e,this.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}disconnectFromTables(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((e=>{e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}connect(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStart",t,e),!0)}disconnect(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStop",e)):console.warn("Move Row Error - trying to disconnect from non connected table")}dropComplete(e,t,i){var s=!1;if(i){switch(typeof this.table.options.movableRowsSender){case"string":s=this.senders[this.table.options.movableRowsSender];break;case"function":s=this.table.options.movableRowsSender}s?s.call(this,this.moving?this.moving.getComponent():void 0,t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()}tableRowDrop(e,t){var i=!1,s=!1;switch(e.stopImmediatePropagation(),typeof this.table.options.movableRowsReceiver){case"string":i=this.receivers[this.table.options.movableRowsReceiver];break;case"function":i=this.table.options.movableRowsReceiver}i?s=i.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),s?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:t,success:s})}commsReceived(e,t,i){switch(t){case"connect":return this.connect(e,i.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,i.row,i.success)}}}Ce.prototype.receivers={insert:function(e,t,i){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,i){return this.table.addRow(e.getData()),!0},update:function(e,t,i){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,i){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},Ce.prototype.senders={delete:function(e,t,i){e.delete()}},Ce.moduleName="moveRow";class Ee extends k{constructor(e){super(e),this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0,this.registerColumnOption("mutator"),this.registerColumnOption("mutatorParams"),this.registerColumnOption("mutatorData"),this.registerColumnOption("mutatorDataParams"),this.registerColumnOption("mutatorEdit"),this.registerColumnOption("mutatorEditParams"),this.registerColumnOption("mutatorClipboard"),this.registerColumnOption("mutatorClipboardParams"),this.registerColumnOption("mutateLink")}initialize(){this.subscribe("cell-value-changing",this.transformCell.bind(this)),this.subscribe("cell-value-changed",this.mutateLink.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-init-before",this.rowDataChanged.bind(this)),this.subscribe("row-data-changing",this.rowDataChanged.bind(this))}rowDataChanged(e,t,i){return this.transformRow(t,"data",i)}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="mutator"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupMutator(e.definition[n]))&&(t=!0,i[n]={mutator:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.mutate=i)}lookupMutator(e){var t=!1;switch(typeof e){case"string":Ee.mutators[e]?t=Ee.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t,i){var s,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((n=>{var r,a,l;n.modules.mutate&&(r=n.modules.mutate[o]||n.modules.mutate.mutator||!1)&&(s=n.getFieldValue(void 0!==i?i:e),("data"==t&&!i||void 0!==s)&&(l=n.getComponent(),a="function"==typeof r.params?r.params(s,e,t,l):r.params,n.setFieldValue(e,r.mutator(s,e,t,a,l))))})),e}transformCell(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,s={};if(i)return s=Object.assign(s,e.row.getData()),e.column.setFieldValue(s,t),i.mutator(t,s,"edit",i.params,e.getComponent())}return t}mutateLink(e){var t=e.column.definition.mutateLink;t&&(Array.isArray(t)||(t=[t]),t.forEach((t=>{var i=e.row.getCell(t);i&&i.setValue(i.getValue(),!0,!0)})))}enable(){this.enabled=!0}disable(){this.enabled=!1}}Ee.moduleName="mutator",Ee.mutators={};var ye={rows:function(e,t,i,s,o){var n=document.createElement("span"),r=document.createElement("span"),a=document.createElement("span"),l=document.createElement("span"),h=document.createElement("span"),d=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(e=>{r.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|of",(e=>{l.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|rows",(e=>{d.innerHTML=e})),s?(a.innerHTML=" "+t+"-"+Math.min(t+e-1,s)+" ",h.innerHTML=" "+s+" ",n.appendChild(r),n.appendChild(a),n.appendChild(l),n.appendChild(h),n.appendChild(d)):(a.innerHTML=" 0 ",n.appendChild(r),n.appendChild(a),n.appendChild(d)),n},pages:function(e,t,i,s,o){var n=document.createElement("span"),r=document.createElement("span"),a=document.createElement("span"),l=document.createElement("span"),h=document.createElement("span"),d=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(e=>{r.innerHTML=e})),a.innerHTML=" "+i+" ",this.table.modules.localize.langBind("pagination|counter|of",(e=>{l.innerHTML=e})),h.innerHTML=" "+o+" ",this.table.modules.localize.langBind("pagination|counter|pages",(e=>{d.innerHTML=e})),n.appendChild(r),n.appendChild(a),n.appendChild(l),n.appendChild(h),n.appendChild(d),n}};class Re extends k{constructor(e){super(e),this.mode="local",this.progressiveLoad=!1,this.element=null,this.pageCounterElement=null,this.pageCounter=null,this.size=0,this.page=1,this.count=5,this.max=1,this.remoteRowCountEstimate=null,this.initialLoad=!0,this.dataChanging=!1,this.pageSizes=[],this.registerTableOption("pagination",!1),this.registerTableOption("paginationMode","local"),this.registerTableOption("paginationSize",!1),this.registerTableOption("paginationInitialPage",1),this.registerTableOption("paginationCounter",!1),this.registerTableOption("paginationCounterElement",!1),this.registerTableOption("paginationButtonCount",5),this.registerTableOption("paginationSizeSelector",!1),this.registerTableOption("paginationElement",!1),this.registerTableOption("paginationAddRow","page"),this.registerTableOption("progressiveLoad",!1),this.registerTableOption("progressiveLoadDelay",0),this.registerTableOption("progressiveLoadScrollMargin",0),this.registerTableFunction("setMaxPage",this.setMaxPage.bind(this)),this.registerTableFunction("setPage",this.setPage.bind(this)),this.registerTableFunction("setPageToRow",this.userSetPageToRow.bind(this)),this.registerTableFunction("setPageSize",this.userSetPageSize.bind(this)),this.registerTableFunction("getPageSize",this.getPageSize.bind(this)),this.registerTableFunction("previousPage",this.previousPage.bind(this)),this.registerTableFunction("nextPage",this.nextPage.bind(this)),this.registerTableFunction("getPage",this.getPage.bind(this)),this.registerTableFunction("getPageMax",this.getPageMax.bind(this)),this.registerComponentFunction("row","pageTo",this.setPageToRow.bind(this))}initialize(){this.table.options.pagination?(this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.subscribe("footer-redraw",this.footerRedraw.bind(this)),"page"==this.table.options.paginationAddRow&&this.subscribe("row-adding-position",this.rowAddingPosition.bind(this)),"remote"===this.table.options.paginationMode&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this))),this.table.options.progressiveLoad&&console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"),this.registerDisplayHandler(this.restOnRenderBefore.bind(this),40),this.registerDisplayHandler(this.getRows.bind(this),50),this.createElements(),this.initializePageCounter(),this.initializePaginator()):this.table.options.progressiveLoad&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.initializeProgressive(this.table.options.progressiveLoad),"scroll"===this.table.options.progressiveLoad&&this.subscribe("scroll-vertical",this.scrollVertical.bind(this)))}rowAddingPosition(e,t){var i,s=this.table.rowManager,o=s.getDisplayRows();return t?o.length?i=o[0]:s.activeRows.length&&(i=s.activeRows[s.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.length{}))}restOnRenderBefore(e,t){return t||"local"===this.mode&&this.reset(),e}rowsUpdated(){this.refreshData(!0,"all")}createElements(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),(e=document.createElement("button")).classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))}generatePageSizeSelectList(){var e=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))e=this.table.options.paginationSizeSelector,this.pageSizes=e,-1==this.pageSizes.indexOf(this.size)&&e.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){e=[];for(let t=1;t<5;t++)e.push(this.size*t);this.pageSizes=e}else e=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);e.forEach((e=>{var t=document.createElement("option");t.value=e,!0===e?this.langBind("pagination|all",(function(e){t.innerHTML=e})):t.innerHTML=e,this.pageSizeSelect.appendChild(t)})),this.pageSizeSelect.value=this.size}}initializePageCounter(){var e=this.table.options.paginationCounter,t=null;e&&((t="function"==typeof e?e:Re.pageCounters[e])?(this.pageCounter=t,this.pageCounterElement=document.createElement("span"),this.pageCounterElement.classList.add("tabulator-page-counter")):console.warn("Pagination Error - No such page counter found: ",e))}initializePaginator(e){var t,i;e||(this.langBind("pagination|first",(e=>{this.firstBut.innerHTML=e})),this.langBind("pagination|first_title",(e=>{this.firstBut.setAttribute("aria-label",e),this.firstBut.setAttribute("title",e)})),this.langBind("pagination|prev",(e=>{this.prevBut.innerHTML=e})),this.langBind("pagination|prev_title",(e=>{this.prevBut.setAttribute("aria-label",e),this.prevBut.setAttribute("title",e)})),this.langBind("pagination|next",(e=>{this.nextBut.innerHTML=e})),this.langBind("pagination|next_title",(e=>{this.nextBut.setAttribute("aria-label",e),this.nextBut.setAttribute("title",e)})),this.langBind("pagination|last",(e=>{this.lastBut.innerHTML=e})),this.langBind("pagination|last_title",(e=>{this.lastBut.setAttribute("aria-label",e),this.lastBut.setAttribute("title",e)})),this.firstBut.addEventListener("click",(()=>{this.setPage(1)})),this.prevBut.addEventListener("click",(()=>{this.previousPage()})),this.nextBut.addEventListener("click",(()=>{this.nextPage()})),this.lastBut.addEventListener("click",(()=>{this.setPage(this.max)})),this.table.options.paginationElement&&(this.element=this.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),this.langBind("pagination|page_size",(e=>{this.pageSizeSelect.setAttribute("aria-label",e),this.pageSizeSelect.setAttribute("title",e),t.innerHTML=e})),this.element.appendChild(t),this.element.appendChild(this.pageSizeSelect),this.pageSizeSelect.addEventListener("change",(e=>{this.setPageSize("true"==this.pageSizeSelect.value||this.pageSizeSelect.value),this.setPage(1)}))),this.element.appendChild(this.firstBut),this.element.appendChild(this.prevBut),this.element.appendChild(this.pagesElement),this.element.appendChild(this.nextBut),this.element.appendChild(this.lastBut),this.table.options.paginationElement||(this.table.options.paginationCounter&&(this.table.options.paginationCounterElement?this.table.options.paginationCounterElement instanceof HTMLElement?this.table.options.paginationCounterElement.appendChild(this.pageCounterElement):"string"==typeof this.table.options.paginationCounterElement&&((i=document.querySelector(this.table.options.paginationCounterElement))?i.appendChild(this.pageCounterElement):console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:",this.table.options.paginationCounterElement)):this.footerAppend(this.pageCounterElement)),this.footerAppend(this.element)),this.page=this.table.options.paginationInitialPage,this.count=this.table.options.paginationButtonCount),this.mode=this.table.options.paginationMode}initializeProgressive(e){this.initializePaginator(!0),this.mode="progressive_"+e,this.progressiveLoad=!0}trackChanges(){this.dispatch("page-changed")}setMaxRows(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)}reset(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1,this.trackChanges())}setMaxPage(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}setPage(e){switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return(e=parseInt(e))>0&&e<=this.max||"local"!==this.mode?(this.page=e,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Requested page is out of range of 1 - "+this.max+":",e),Promise.reject())}setPageToRow(e){var t=this.displayRows(-1).indexOf(e);if(t>-1){var i=!0===this.size?1:Math.ceil((t+1)/this.size);return this.setPage(i)}return console.warn("Pagination Error - Requested row is not visible"),Promise.reject()}setPageSize(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e,this.dispatchExternal("pageSizeChanged",e)),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}_setPageCounter(e,t,i){var s;if(this.pageCounter)switch("remote"===this.mode&&(t=this.size,i=(this.page-1)*this.size+1,e=this.remoteRowCountEstimate),typeof(s=this.pageCounter.call(this,t,i,this.page,e,this.max))){case"object":if(s instanceof Node){for(;this.pageCounterElement.firstChild;)this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);this.pageCounterElement.appendChild(s)}else this.pageCounterElement.innerHTML="",null!=s&&console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:",s);break;case"undefined":this.pageCounterElement.innerHTML="";break;default:this.pageCounterElement.innerHTML=s}}_setPageButtons(){let e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&e<=this.max&&this.pagesElement.appendChild(this._generatePageButton(e));this.footerRedraw()}_generatePageButton(e){var t=document.createElement("button");return t.classList.add("tabulator-page"),e==this.page&&t.classList.add("active"),t.setAttribute("type","button"),t.setAttribute("role","button"),this.langBind("pagination|page_title",(i=>{t.setAttribute("aria-label",i+" "+e),t.setAttribute("title",i+" "+e)})),t.setAttribute("data-page",e),t.textContent=e,t.addEventListener("click",(t=>{this.setPage(e)})),t}previousPage(){return this.page>1?(this.page--,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Previous page would be less than page 1:",0),Promise.reject())}nextPage(){return this.page"row"===e.type));if("local"==this.mode){t=[],this.setMaxRows(e.length),!0===this.size?(i=0,s=e.length):s=(i=this.size*(this.page-1))+parseInt(this.size),this._setPageButtons();for(let r=i;r{this.dataChanging=!1}));case"progressive_load":case"progressive_scroll":return this.reloadData(null,!0);default:return console.warn("Pagination Error - no such pagination mode:",this.mode),Promise.reject()}}_parseRemoteData(e){var t;if(void 0===e.last_page&&console.warn("Remote Pagination Error - Server response missing '"+(this.options("dataReceiveParams").last_page||"last_page")+"' property"),e.data){if(this.max=parseInt(e.last_page)||1,this.remoteRowCountEstimate=void 0!==e.last_row?e.last_row:e.last_page*this.size-(this.page==e.last_page?this.size-e.data.length:0),this.progressiveLoad){switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e.data,!1,1==this.page):this.table.rowManager.addRows(e.data),this.page{this.nextPage()}),this.table.options.progressiveLoadDelay);break;case"progressive_scroll":e=1===this.page?e.data:this.table.rowManager.getData().concat(e.data),this.table.rowManager.setData(e,1!==this.page,1==this.page),t=this.table.options.progressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,this.table.rowManager.element.scrollHeight<=this.table.rowManager.element.clientHeight+t&&this.page{this.nextPage()}))}return!1}this.dispatchExternal("pageLoaded",this.getPage())}else console.warn("Remote Pagination Error - Server response missing '"+(this.options("dataReceiveParams").data||"data")+"' property");return e.data}footerRedraw(){var e=this.table.footerManager.containerElement;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))}}Re.moduleName="page",Re.pageCounters=ye;var xe={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&((i=(o=o.slice(r)).indexOf(";"))>-1&&(o=o.slice(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},Te={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}};class ke extends k{constructor(e){super(e),this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1,this.registerTableOption("persistence",!1),this.registerTableOption("persistenceID",""),this.registerTableOption("persistenceMode",!0),this.registerTableOption("persistenceReaderFunc",!1),this.registerTableOption("persistenceWriterFunc",!1)}localStorageTest(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}initialize(){if(this.table.options.persistence){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:ke.readers[this.table.options.persistenceReaderFunc]?this.readFunc=ke.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):ke.readers[this.mode]?this.readFunc=ke.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:ke.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=ke.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):ke.writers[this.mode]?this.writeFunc=ke.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,headerFilter:!0===this.table.options.persistence||this.table.options.persistence.headerFilter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retrieveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retrieveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader)),this.config.columns&&(this.table.options.columns=this.load("columns",this.table.options.columns),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-show",this.save.bind(this,"columns")),this.subscribe("column-hide",this.save.bind(this,"columns")),this.subscribe("column-moved",this.save.bind(this,"columns"))),this.subscribe("table-built",this.tableBuilt.bind(this),0),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("filter-changed",this.eventSave.bind(this,"filter")),this.subscribe("filter-changed",this.eventSave.bind(this,"headerFilter")),this.subscribe("sort-changed",this.eventSave.bind(this,"sort")),this.subscribe("group-changed",this.eventSave.bind(this,"group")),this.subscribe("page-changed",this.eventSave.bind(this,"page")),this.subscribe("column-resized",this.eventSave.bind(this,"columns")),this.subscribe("column-width",this.eventSave.bind(this,"columns")),this.subscribe("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}eventSave(e){this.config[e]&&this.save(e)}tableBuilt(){var e,t,i;this.config.sort&&!1==!(e=this.load("sort"))&&(this.table.options.initialSort=e),this.config.filter&&!1==!(t=this.load("filter"))&&(this.table.options.initialFilter=t),this.config.headerFilter&&!1==!(i=this.load("headerFilter"))&&(this.table.options.initialHeaderFilter=i)}tableRedraw(e){e&&this.config.columns&&this.save("columns")}getColumnLayout(){return this.parseColumns(this.table.columnManager.getColumns())}setColumnLayout(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e,!0)),!0}initializeColumn(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((e=>{var i=Object.getOwnPropertyDescriptor(t,e),s=t[e];i&&Object.defineProperty(t,e,{set:e=>{s=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:()=>(i.get&&i.get(),s)})})),this.defWatcherBlock=!1)}load(e,t){var i=this.retrieveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}retrieveData(e){return!!this.readFunc&&this.readFunc(this.id,e)}mergeDefinition(e,t,i){var s=[];return(t=t||[]).forEach(((t,o)=>{var n,r=this._findColumn(e,t);r&&(i?n=Object.keys(t):!0===this.config.columns||null==this.config.columns?(n=Object.keys(r)).push("width"):n=this.config.columns,n.forEach((e=>{"columns"!==e&&void 0!==t[e]&&(r[e]=t[e])})),r.columns&&(r.columns=this.mergeDefinition(r.columns,t.columns)),s.push(r))})),e.forEach(((e,i)=>{this._findColumn(t,e)||(s.length>i?s.splice(i,0,e):s.push(e))})),s}_findColumn(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find((function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}}))}save(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"headerFilter":t=this.table.modules.filter.getHeaderFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)}validateSorters(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}getGroupConfig(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e}getPageConfig(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e}parseColumns(e){var t=[],i=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((e=>{var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=this.parseColumns(e.getColumns())):(o.field=e.getField(),!0===this.config.columns||null==this.config.columns?((s=Object.keys(n)).push("width"),s.push("visible")):s=this.config.columns,s.forEach((t=>{switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:"function"!=typeof n[t]&&-1===i.indexOf(t)&&(o[t]=n[t])}}))),t.push(o)})),t}}ke.moduleName="persistence",ke.moduleInitOrder=-10,ke.readers=xe,ke.writers=Te;class Me extends k{constructor(e){super(e),this.columnSubscribers={},this.registerTableOption("rowContextPopup",!1),this.registerTableOption("rowClickPopup",!1),this.registerTableOption("rowDblClickPopup",!1),this.registerTableOption("groupContextPopup",!1),this.registerTableOption("groupClickPopup",!1),this.registerTableOption("groupDblClickPopup",!1),this.registerColumnOption("headerContextPopup"),this.registerColumnOption("headerClickPopup"),this.registerColumnOption("headerDblClickPopup"),this.registerColumnOption("headerPopup"),this.registerColumnOption("headerPopupIcon"),this.registerColumnOption("contextPopup"),this.registerColumnOption("clickPopup"),this.registerColumnOption("dblClickPopup"),this.registerComponentFunction("cell","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("column","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("row","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("group","popup",this._componentPopupCall.bind(this))}initialize(){this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}_componentPopupCall(e,t,i){this.loadPopupEvent(t,null,e,i)}initializeRowWatchers(){this.table.options.rowContextPopup&&(this.subscribe("row-contextmenu",this.loadPopupEvent.bind(this,this.table.options.rowContextPopup)),this.table.on("rowTapHold",this.loadPopupEvent.bind(this,this.table.options.rowContextPopup))),this.table.options.rowClickPopup&&this.subscribe("row-click",this.loadPopupEvent.bind(this,this.table.options.rowClickPopup)),this.table.options.rowDblClickPopup&&this.subscribe("row-dblclick",this.loadPopupEvent.bind(this,this.table.options.rowDblClickPopup))}initializeGroupWatchers(){this.table.options.groupContextPopup&&(this.subscribe("group-contextmenu",this.loadPopupEvent.bind(this,this.table.options.groupContextPopup)),this.table.on("groupTapHold",this.loadPopupEvent.bind(this,this.table.options.groupContextPopup))),this.table.options.groupClickPopup&&this.subscribe("group-click",this.loadPopupEvent.bind(this,this.table.options.groupClickPopup)),this.table.options.groupDblClickPopup&&this.subscribe("group-dblclick",this.loadPopupEvent.bind(this,this.table.options.groupDblClickPopup))}initializeColumn(e){var t=e.definition;t.headerContextPopup&&!this.columnSubscribers.headerContextPopup&&(this.columnSubscribers.headerContextPopup=this.loadPopupTableColumnEvent.bind(this,"headerContextPopup"),this.subscribe("column-contextmenu",this.columnSubscribers.headerContextPopup),this.table.on("headerTapHold",this.loadPopupTableColumnEvent.bind(this,"headerContextPopup"))),t.headerClickPopup&&!this.columnSubscribers.headerClickPopup&&(this.columnSubscribers.headerClickPopup=this.loadPopupTableColumnEvent.bind(this,"headerClickPopup"),this.subscribe("column-click",this.columnSubscribers.headerClickPopup)),t.headerDblClickPopup&&!this.columnSubscribers.headerDblClickPopup&&(this.columnSubscribers.headerDblClickPopup=this.loadPopupTableColumnEvent.bind(this,"headerDblClickPopup"),this.subscribe("column-dblclick",this.columnSubscribers.headerDblClickPopup)),t.headerPopup&&this.initializeColumnHeaderPopup(e),t.contextPopup&&!this.columnSubscribers.contextPopup&&(this.columnSubscribers.contextPopup=this.loadPopupTableCellEvent.bind(this,"contextPopup"),this.subscribe("cell-contextmenu",this.columnSubscribers.contextPopup),this.table.on("cellTapHold",this.loadPopupTableCellEvent.bind(this,"contextPopup"))),t.clickPopup&&!this.columnSubscribers.clickPopup&&(this.columnSubscribers.clickPopup=this.loadPopupTableCellEvent.bind(this,"clickPopup"),this.subscribe("cell-click",this.columnSubscribers.clickPopup)),t.dblClickPopup&&!this.columnSubscribers.dblClickPopup&&(this.columnSubscribers.dblClickPopup=this.loadPopupTableCellEvent.bind(this,"dblClickPopup"),this.subscribe("cell-click",this.columnSubscribers.dblClickPopup))}initializeColumnHeaderPopup(e){var t,i=e.definition.headerPopupIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),i?("function"==typeof i&&(i=i(e.getComponent())),i instanceof HTMLElement?t.appendChild(i):t.innerHTML=i):t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.loadPopupEvent(e.definition.headerPopup,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}loadPopupTableCellEvent(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadPopupEvent(i.column.definition[e],t,i)}loadPopupTableColumnEvent(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadPopupEvent(i.definition[e],t,i)}loadPopupEvent(e,t,i,s){var o;i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent(),(function(e){o=e})):e,this.loadPopup(t,i,e,o,s)}loadPopup(e,t,i,s,o){var n,r,a=!(e instanceof MouseEvent);i instanceof HTMLElement?n=i:(n=document.createElement("div")).innerHTML=i,n.classList.add("tabulator-popup"),n.addEventListener("click",(e=>{e.stopPropagation()})),a||e.preventDefault(),r=this.popup(n),"function"==typeof s&&r.renderCallback(s),e?r.show(e):r.show(t.getElement(),o||"center"),r.hideOnBlur((()=>{this.dispatchExternal("popupClosed",t.getComponent())})),this.dispatchExternal("popupOpened",t.getComponent())}}Me.moduleName="popup";class Le extends k{constructor(e){super(e),this.element=!1,this.manualBlock=!1,this.beforeprintEventHandler=null,this.afterprintEventHandler=null,this.registerTableOption("printAsHtml",!1),this.registerTableOption("printFormatter",!1),this.registerTableOption("printHeader",!1),this.registerTableOption("printFooter",!1),this.registerTableOption("printStyled",!0),this.registerTableOption("printRowRange","visible"),this.registerTableOption("printConfig",{}),this.registerColumnOption("print"),this.registerColumnOption("titlePrint")}initialize(){this.table.options.printAsHtml&&(this.beforeprintEventHandler=this.replaceTable.bind(this),this.afterprintEventHandler=this.cleanup.bind(this),window.addEventListener("beforeprint",this.beforeprintEventHandler),window.addEventListener("afterprint",this.afterprintEventHandler),this.subscribe("table-destroy",this.destroy.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}destroy(){this.table.options.printAsHtml&&(window.removeEventListener("beforeprint",this.beforeprintEventHandler),window.removeEventListener("afterprint",this.afterprintEventHandler))}replaceTable(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))}cleanup(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}printFullscreen(e,t,i){var s,o,n=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),h=this.table.modules.export.generateTable(void 0!==i?i:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e||this.table.options.printRowRange,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),"string"==typeof(s="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?a.innerHTML=s:a.appendChild(s),this.element.appendChild(a)),this.element.appendChild(h),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(o="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=o:l.appendChild(o),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,h),window.print(),this.cleanup(),window.scrollTo(n,r),this.manualBlock=!1}}Le.moduleName="print";class Se extends k{constructor(e){super(e),this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0,this.registerTableOption("reactiveData",!1)}initialize(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this,"cellsave")),this.subscribe("cell-value-save-after",this.unblock.bind(this,"cellsave")),this.subscribe("row-data-save-before",this.block.bind(this,"rowsave")),this.subscribe("row-data-save-after",this.unblock.bind(this,"rowsave")),this.subscribe("row-data-init-after",this.watchRow.bind(this)),this.subscribe("data-processing",this.watchData.bind(this)),this.subscribe("table-destroy",this.unwatchData.bind(this)))}watchData(e){var t,i=this;this.currentVersion++,t=this.currentVersion,this.unwatchData(),this.data=e,this.origFuncs.push=e.push,Object.defineProperty(this.data,"push",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments);return i.blocked||t!==i.currentVersion||(i.block("data-push"),o.forEach((e=>{i.table.rowManager.addRowActual(e,!1)})),s=i.origFuncs.push.apply(e,arguments),i.unblock("data-push")),s}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments);return i.blocked||t!==i.currentVersion||(i.block("data-unshift"),o.forEach((e=>{i.table.rowManager.addRowActual(e,!0)})),s=i.origFuncs.unshift.apply(e,arguments),i.unblock("data-unshift")),s}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var s,o;return i.blocked||t!==i.currentVersion||(i.block("data-shift"),i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[0]))&&s.deleteActual(),o=i.origFuncs.shift.call(e),i.unblock("data-shift")),o}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var s,o;return i.blocked||t!==i.currentVersion||(i.block("data-pop"),i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&s.deleteActual(),o=i.origFuncs.pop.call(e),i.unblock("data-pop")),o}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var s,o,n=Array.from(arguments),r=n[0]<0?e.length+n[0]:n[0],a=n[1],l=!!n[2]&&n.slice(2);if(!i.blocked&&t===i.currentVersion){if(i.block("data-splice"),l&&((s=!!e[r]&&i.table.rowManager.getRowFromDataObject(e[r]))?l.forEach((e=>{i.table.rowManager.addRowActual(e,!0,s,!0)})):(l=l.slice().reverse()).forEach((e=>{i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==a){var h=e.slice(r,void 0===n[1]?n[1]:r+a);h.forEach(((e,t)=>{var s=i.table.rowManager.getRowFromDataObject(e);s&&s.deleteActual(t!==h.length-1)}))}(l||0!==a)&&i.table.rowManager.reRenderInPosition(),o=i.origFuncs.splice.apply(e,arguments),i.unblock("data-splice")}return o}})}unwatchData(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})}watchRow(e){var t=e.getData();for(var i in t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e)}watchTreeChildren(e){var t=this,i=e.getData()[this.table.options.dataTreeChildField],s={};i&&(s.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-push");var o=s.push.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-push")}return o}}),s.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-unshift");var o=s.unshift.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-unshift")}return o}}),s.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-shift");var o=s.shift.call(i);this.rebuildTree(e),t.unblock("tree-shift")}return o}}),s.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-pop");var o=s.pop.call(i);this.rebuildTree(e),t.unblock("tree-pop")}return o}}),s.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-splice");var o=s.splice.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-splice")}return o}}))}rebuildTree(e){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}watchKey(e,t,i){var s=this,o=Object.getOwnPropertyDescriptor(t,i),n=t[i],r=this.currentVersion;Object.defineProperty(t,i,{set:t=>{if(n=t,!s.blocked&&r===s.currentVersion){s.block("key");var a={};a[i]=t,e.updateData(a),s.unblock("key")}o.set&&o.set(t)},get:()=>(o.get&&o.get(),n)})}unwatchRow(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}block(e){this.blocked||(this.blocked=e)}unblock(e){this.blocked===e&&(this.blocked=!1)}}Se.moduleName="reactiveData";class De extends k{constructor(e){super(e),this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.latestX=!1,this.handle=null,this.initialNextColumn=null,this.nextColumn=null,this.initialized=!1,this.registerColumnOption("resizable",!0),this.registerTableOption("resizableColumnFit",!1)}initialize(){this.subscribe("column-rendered",this.layoutColumnHeader.bind(this))}initializeEventWatchers(){this.initialized||(this.subscribe("cell-rendered",this.layoutCellHandles.bind(this)),this.subscribe("cell-delete",this.deInitializeComponent.bind(this)),this.subscribe("cell-height",this.resizeHandle.bind(this)),this.subscribe("column-moved",this.columnLayoutUpdated.bind(this)),this.subscribe("column-hide",this.deInitializeColumn.bind(this)),this.subscribe("column-show",this.columnLayoutUpdated.bind(this)),this.subscribe("column-width",this.columnWidthUpdated.bind(this)),this.subscribe("column-delete",this.deInitializeComponent.bind(this)),this.subscribe("column-height",this.resizeHandle.bind(this)),this.initialized=!0)}layoutCellHandles(e){"row"===e.row.type&&(this.deInitializeComponent(e),this.initializeColumn("cell",e,e.column,e.element))}layoutColumnHeader(e){e.definition.resizable&&(this.initializeEventWatchers(),this.deInitializeComponent(e),this.initializeColumn("header",e,e,e.element))}columnLayoutUpdated(e){var t=e.prevColumn();this.reinitializeColumn(e),t&&this.reinitializeColumn(t)}columnWidthUpdated(e){e.modules.frozen&&(this.table.modules.frozenColumns.leftColumns.includes(e)?this.table.modules.frozenColumns.leftColumns.forEach((e=>{this.reinitializeColumn(e)})):this.table.modules.frozenColumns.rightColumns.includes(e)&&this.table.modules.frozenColumns.rightColumns.forEach((e=>{this.reinitializeColumn(e)})))}frozenColumnOffset(e){var t=!1;return e.modules.frozen&&(t=e.modules.frozen.marginValue,"left"===e.modules.frozen.position?t+=e.getWidth()-3:t&&(t-=3)),!1!==t&&t+"px"}reinitializeColumn(e){var t=this.frozenColumnOffset(e);e.cells.forEach((i=>{i.modules.resize&&i.modules.resize.handleEl&&(t&&(i.modules.resize.handleEl.style[e.modules.frozen.position]=t,i.modules.resize.handleEl.style["z-index"]=11),i.element.after(i.modules.resize.handleEl))})),e.modules.resize&&e.modules.resize.handleEl&&(t&&(e.modules.resize.handleEl.style[e.modules.frozen.position]=t),e.element.after(e.modules.resize.handleEl))}initializeColumn(e,t,i,s){var o=this,n=i.definition.resizable,r={},a=i.getLastColumn();if("header"===e&&(r={variableHeight:"textarea"==i.definition.formatter||i.definition.variableHeight}),(!0===n||n==e)&&this._checkResizability(a)){var l=document.createElement("span");l.className="tabulator-col-resize-handle",l.addEventListener("click",(function(e){e.stopPropagation()}));var h=function(e){o.startColumn=i,o.initialNextColumn=o.nextColumn=a.nextColumn(),o._mouseDown(e,a,l)};l.addEventListener("mousedown",h),l.addEventListener("touchstart",h,{passive:!0}),l.addEventListener("dblclick",(e=>{var t=a.getWidth();e.stopPropagation(),a.reinitializeWidth(!0),t!==a.getWidth()&&(o.dispatch("column-resized",a),o.table.externalEvents.dispatch("columnResized",a.getComponent()))})),i.modules.frozen&&(l.style.position="sticky",l.style[i.modules.frozen.position]=this.frozenColumnOffset(i)),r.handleEl=l,s.parentNode&&i.visible&&s.after(l)}t.modules.resize=r}deInitializeColumn(e){this.deInitializeComponent(e),e.cells.forEach((e=>{this.deInitializeComponent(e)}))}deInitializeComponent(e){var t;e.modules.resize&&(t=e.modules.resize.handleEl)&&t.parentElement&&t.parentElement.removeChild(t)}resizeHandle(e,t){e.modules.resize&&e.modules.resize.handleEl&&(e.modules.resize.handleEl.style.height=t)}_checkResizability(e){return e.definition.resizable}_mouseDown(e,t,i){var s=this;function o(e){var i,o,n=void 0===e.screenX?e.touches[0].screenX:e.screenX,r=n-s.startX,a=n-s.latestX;if(s.latestX=n,s.table.rtl&&(r=-r,a=-a),i=t.width==t.minWidth||t.width==t.maxWidth,t.setWidth(s.startWidth+r),o=t.width==t.minWidth||t.width==t.maxWidth,a<0&&(s.nextColumn=s.initialNextColumn),s.table.options.resizableColumnFit&&s.nextColumn&&(!i||!o)){let e=s.nextColumn.getWidth();a>0&&e<=s.nextColumn.minWidth&&(s.nextColumn=s.nextColumn.nextColumn()),s.nextColumn&&s.nextColumn.setWidth(s.nextColumn.getWidth()-a)}s.table.columnManager.rerenderColumns(!0),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.startWidth!==t.getWidth()&&(s.table.columnManager.verticalAlignHeaders(),s.dispatch("column-resized",t),s.table.externalEvents.dispatch("columnResized",t.getComponent()))}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.latestX=s.startX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}De.moduleName="resizeColumns";class Pe extends k{constructor(e){super(e),this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null,this.registerTableOption("resizableRows",!1)}initialize(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}initializeRow(e){var t=this,i=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",s.addEventListener("click",(function(e){e.stopPropagation()}));var n=function(i){t.startRow=e,t._mouseDown(i,e,s)};s.addEventListener("mousedown",n),s.addEventListener("touchstart",n,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(i,s,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(s),i.appendChild(o)}_mouseDown(e,t,i){var s=this;function o(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.dispatchExternal("rowResized",t.getComponent())}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}Pe.moduleName="resizeRows";class ze extends k{constructor(e){super(e),this.binding=!1,this.visibilityObserver=!1,this.resizeObserver=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1,this.visible=!1,this.initialized=!1,this.initialRedraw=!1,this.registerTableOption("autoResize",!0)}initialize(){if(this.table.options.autoResize){var e,t=this.table;this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),"undefined"!=typeof IntersectionObserver&&"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.initializeVisibilityObserver(),this.autoResize=!0,this.resizeObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&(!t.modules.edit||t.modules.edit&&!t.modules.edit.currentCell)){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.tableHeight==i&&this.tableWidth==s||(this.tableHeight=i,this.tableWidth=s,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),this.redrawTable())}})),this.resizeObserver.observe(t.element),e=window.getComputedStyle(t.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(e.getPropertyValue("max-height")||e.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&(!t.modules.edit||t.modules.edit&&!t.modules.edit.currentCell)){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.containerHeight==i&&this.containerWidth==s||(this.containerHeight=i,this.containerWidth=s,this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth),this.redrawTable()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!t.browserMobile||t.browserMobile&&(!t.modules.edit||t.modules.edit&&!t.modules.edit.currentCell))&&(t.columnManager.rerenderColumns(!0),t.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((e=>{this.visible=e[0].isIntersecting,this.initialized?this.visible&&(this.redrawTable(this.initialRedraw),this.initialRedraw=!1):(this.initialized=!0,this.initialRedraw=!this.visible)})),this.visibilityObserver.observe(this.table.element)}redrawTable(e){this.initialized&&this.visible&&(this.table.columnManager.rerenderColumns(!0),this.table.redraw(e))}tableResized(){this.table.rowManager.redraw()}clearBindings(){this.binding&&window.removeEventListener("resize",this.binding),this.resizeObserver&&this.resizeObserver.unobserve(this.table.element),this.visibilityObserver&&this.visibilityObserver.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}ze.moduleName="resizeTable";class He extends k{constructor(e){super(e),this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1,this.registerTableOption("responsiveLayout",!1),this.registerTableOption("responsiveLayoutCollapseStartOpen",!0),this.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),this.registerTableOption("responsiveLayoutCollapseFormatter",!1),this.registerColumnOption("responsive")}initialize(){this.table.options.responsiveLayout&&(this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-show",this.updateColumnVisibility.bind(this)),this.subscribe("column-hide",this.updateColumnVisibility.bind(this)),this.subscribe("columns-loaded",this.initializeResponsivity.bind(this)),this.subscribe("column-moved",this.initializeResponsivity.bind(this)),this.subscribe("column-add",this.initializeResponsivity.bind(this)),this.subscribe("column-delete",this.initializeResponsivity.bind(this)),this.subscribe("table-redrawing",this.tableRedraw.bind(this)),"collapse"===this.table.options.responsiveLayout&&(this.subscribe("row-data-changed",this.generateCollapsedRowContent.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}tableRedraw(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}initializeResponsivity(){var e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(((t,i)=>{t.modules.responsive&&t.modules.responsive.order&&t.modules.responsive.visible&&(t.modules.responsive.index=i,e.push(t),t.visible||"collapse"!==this.mode||this.hiddenColumns.push(t))})),e=(e=e.reverse()).sort(((e,t)=>t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index)),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();for(let e of this.table.columnManager.columnsByIndex)if("responsiveCollapse"==e.definition.formatter){this.collapseHandleColumn=e;break}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}initializeColumn(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}initializeRow(e){var t;"calc"!==e.type&&((t=document.createElement("div")).classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))}layoutRow(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}updateColumnVisibility(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initializeResponsivity())}hideColumn(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())}showColumn(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())}update(){for(var e=!0;e;){let t="fitColumns"==this.table.modules.layout.getMode()?this.table.columnManager.getFlexBaseWidth():this.table.columnManager.getWidth(),i=(this.table.options.headerVisible?this.table.columnManager.element.clientWidth:this.table.element.clientWidth)-t;if(i<0){let t=this.columns[this.index];t?(this.hideColumn(t),this.index++):e=!1}else{let t=this.columns[this.index-1];t&&i>0&&i>=t.getWidth()?(this.showColumn(t),this.index--):e=!1}this.table.rowManager.activeRowsCount||this.table.rowManager.renderEmptyScroll()}}generateCollapsedContent(){this.table.rowManager.getDisplayRows().forEach((e=>{this.generateCollapsedRowContent(e)}))}generateCollapsedRowContent(e){var t,i;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(i=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(i)}}generateCollapsedRowData(e){var t,i=e.getData(),s=[];return this.hiddenColumns.forEach((o=>{var n=o.getFieldValue(i);if(o.definition.title&&o.field)if(o.modules.format&&this.table.options.responsiveLayoutCollapseUseFormatters){function r(e){e()}t={value:!1,data:{},getValue:function(){return n},getData:function(){return i},getType:function(){return"cell"},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return o.getComponent()},getTable:()=>this.table},s.push({field:o.field,title:o.definition.title,value:o.modules.format.formatter.call(this.table.modules.format,t,o.modules.format.params,r)})}else s.push({field:o.field,title:o.definition.title,value:n})})),s}formatCollapsedData(e){var t=document.createElement("table");return e.forEach((function(e){var i,s=document.createElement("tr"),o=document.createElement("td"),n=document.createElement("td"),r=document.createElement("strong");o.appendChild(r),this.langBind("columns|"+e.field,(function(t){r.innerHTML=t||e.title})),e.value instanceof Node?((i=document.createElement("div")).appendChild(e.value),n.appendChild(i)):n.innerHTML=e.value,s.appendChild(o),s.appendChild(n),t.appendChild(s)}),this),Object.keys(e).length?t:""}}He.moduleName="responsiveLayout";class Fe extends k{constructor(e){super(e),this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null,this.registerTableOption("selectableRows","highlight"),this.registerTableOption("selectableRowsRangeMode","drag"),this.registerTableOption("selectableRowsRollingSelection",!0),this.registerTableOption("selectableRowsPersistence",!0),this.registerTableOption("selectableRowsCheck",(function(e,t){return!0})),this.registerTableFunction("selectRow",this.selectRows.bind(this)),this.registerTableFunction("deselectRow",this.deselectRows.bind(this)),this.registerTableFunction("toggleSelectRow",this.toggleRow.bind(this)),this.registerTableFunction("getSelectedRows",this.getSelectedRows.bind(this)),this.registerTableFunction("getSelectedData",this.getSelectedData.bind(this)),this.registerComponentFunction("row","select",this.selectRows.bind(this)),this.registerComponentFunction("row","deselect",this.deselectRows.bind(this)),this.registerComponentFunction("row","toggleSelect",this.toggleRow.bind(this)),this.registerComponentFunction("row","isSelected",this.isRowSelected.bind(this))}initialize(){this.deprecatedOptionsCheck(),"highlight"===this.table.options.selectableRows&&this.table.options.selectableRange&&(this.table.options.selectableRows=!1),!1!==this.table.options.selectableRows&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-deleting",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clearSelectionData.bind(this)),this.subscribe("rows-retrieve",this.rowRetrieve.bind(this)),this.table.options.selectableRows&&!this.table.options.selectableRowsPersistence&&this.subscribe("data-refreshing",this.deselectRows.bind(this)))}deprecatedOptionsCheck(){this.deprecationCheck("selectable","selectableRows",!0),this.deprecationCheck("selectableRollingSelection","selectableRowsRollingSelection",!0),this.deprecationCheck("selectableRangeMode","selectableRowsRangeMode",!0),this.deprecationCheck("selectablePersistence","selectableRowsPersistence",!0),this.deprecationCheck("selectableCheck","selectableRowsCheck",!0)}rowRetrieve(e,t){return"selected"===e?this.selectedRows:t}rowDeleted(e){this._deselectRow(e,!0)}clearSelectionData(e){var t=this.selectedRows.length;this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],t&&!0!==e&&this._rowSelectionChanged()}initializeRow(e){var t=this,i=t.checkRowSelectability(e),s=e.getElement(),o=function(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",o)};e.modules.select={selected:!1},s.classList.toggle("tabulator-selectable",i),s.classList.toggle("tabulator-unselectable",!i),t.checkRowSelectability(e)&&t.table.options.selectableRows&&"highlight"!=t.table.options.selectableRows&&("click"===t.table.options.selectableRowsRangeMode?s.addEventListener("click",this.handleComplexRowClick.bind(this,e)):(s.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),s.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",o),document.body.addEventListener("keyup",o),t.toggleRow(e),!1})),s.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),s.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))}handleComplexRowClick(e,t){if(t.shiftKey){this.table._clearSelection(),this.lastClickedRow=this.lastClickedRow||e;var i=this.table.rowManager.getDisplayRowIndex(this.lastClickedRow),s=this.table.rowManager.getDisplayRowIndex(e),o=i<=s?i:s,n=i>=s?i:s,r=this.table.rowManager.getDisplayRows().slice(0).splice(o,n-o+1);t.ctrlKey||t.metaKey?(r.forEach((t=>{t!==this.lastClickedRow&&(!0===this.table.options.selectableRows||this.isRowSelected(e)||this.selectedRows.lengththis.table.options.selectableRows&&(r=r.slice(0,this.table.options.selectableRows)),this.selectRows(r)),this.table._clearSelection()}else t.ctrlKey||t.metaKey?(this.toggleRow(e),this.lastClickedRow=e):(this.deselectRows(void 0,!0),this.selectRows(e),this.lastClickedRow=e)}checkRowSelectability(e){return!(!e||"row"!==e.type)&&this.table.options.selectableRowsCheck.call(this.table,e.getComponent())}toggleRow(e){this.checkRowSelectability(e)&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}selectRows(e){var t,i,s=[];switch(typeof e){case"undefined":t=this.table.rowManager.rows;break;case"number":t=this.table.rowManager.findRow(e);break;case"string":(t=this.table.rowManager.findRow(e))||(t=this.table.rowManager.getRows(e));break;default:t=e}Array.isArray(t)?t.length&&(t.forEach((e=>{(i=this._selectRow(e,!0,!0))&&s.push(i)})),this._rowSelectionChanged(!1,s)):t&&this._selectRow(t,!1,!0)}_selectRow(e,t,i){if(!isNaN(this.table.options.selectableRows)&&!0!==this.table.options.selectableRows&&!i&&this.selectedRows.length>=this.table.options.selectableRows){if(!this.table.options.selectableRowsRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var s=this.table.rowManager.findRow(e);if(s){if(-1==this.selectedRows.indexOf(s))return s.getElement().classList.add("tabulator-selected"),s.modules.select||(s.modules.select={}),s.modules.select.selected=!0,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!0),this.selectedRows.push(s),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!0),this.dispatchExternal("rowSelected",s.getComponent()),this._rowSelectionChanged(t,s),s}else t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}isRowSelected(e){return-1!==this.selectedRows.indexOf(e)}deselectRows(e,t){var i,s,o=[];switch(typeof e){case"undefined":i=Object.assign([],this.selectedRows);break;case"number":i=this.table.rowManager.findRow(e);break;case"string":(i=this.table.rowManager.findRow(e))||(i=this.table.rowManager.getRows(e));break;default:i=e}Array.isArray(i)?i.length&&(i.forEach((e=>{(s=this._deselectRow(e,!0,!0))&&o.push(s)})),this._rowSelectionChanged(t,[],o)):i&&this._deselectRow(i,t,!0)}_deselectRow(e,t){var i,s,o=this,n=o.table.rowManager.findRow(e);if(n){if((i=o.selectedRows.findIndex((function(e){return e==n})))>-1)return(s=n.getElement())&&s.classList.remove("tabulator-selected"),n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),o.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),this.dispatchExternal("rowDeselected",n.getComponent()),o._rowSelectionChanged(t,void 0,n),n}else t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}getSelectedData(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}getSelectedRows(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}_rowSelectionChanged(e,t=[],i=[]){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||(Array.isArray(t)||(t=[t]),t=t.map((e=>e.getComponent())),Array.isArray(i)||(i=[i]),i=i.map((e=>e.getComponent())),this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows(),t,i))}registerRowSelectCheckbox(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}registerHeaderSelectCheckbox(e){this.headerCheckboxElement=e}childRowSelection(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t)for(let e of i)this._selectRow(e,!0);else for(let e of i)this._deselectRow(e,!0)}}function _e(e,t,i,s,o,n,r){var a=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",h=r.alignEmptyValues,d=0;if(void 0!==a){if(a.isDateTime(e)||(e="iso"===l?a.fromISO(String(e)):a.fromFormat(String(e),l)),a.isDateTime(t)||(t="iso"===l?a.fromISO(String(t)):a.fromFormat(String(t),l)),e.isValid){if(t.isValid)return e-t;d=1}else d=t.isValid?-1:0;return("top"===h&&"desc"===n||"bottom"===h&&"asc"===n)&&(d*=-1),d}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}Fe.moduleName="selectRow";var Oe={number:function(e,t,i,s,o,n,r){var a=r.alignEmptyValues,l=r.decimalSeparator,h=r.thousandSeparator,d=0;if(e=String(e),t=String(t),h&&(e=e.split(h).join(""),t=t.split(h).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))d=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;d=1}return("top"===a&&"desc"===n||"bottom"===a&&"asc"===n)&&(d*=-1),d},string:function(e,t,i,s,o,n,r){var a,l=r.alignEmptyValues,h=0;if(e){if(t){switch(typeof r.locale){case"boolean":r.locale&&(a=this.langLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}h=1}else h=t?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},date:function(e,t,i,s,o,n,r){return r.format||(r.format="dd/MM/yyyy"),_e.call(this,e,t,i,s,o,n,r)},time:function(e,t,i,s,o,n,r){return r.format||(r.format="HH:mm"),_e.call(this,e,t,i,s,o,n,r)},datetime:_e,boolean:function(e,t,i,s,o,n,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,i,s,o,n,r){var a=r.type||"length",l=r.alignEmptyValues,h=0;function d(e){var t;switch(a){case"length":t=e.length;break;case"sum":t=e.reduce((function(e,t){return e+t}));break;case"max":t=Math.max.apply(null,e);break;case"min":t=Math.min.apply(null,e);break;case"avg":t=e.reduce((function(e,t){return e+t}))/e.length}return t}if(Array.isArray(e)){if(Array.isArray(t))return d(t)-d(e);h=1}else h=Array.isArray(t)?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},exists:function(e,t,i,s,o,n,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,s,o,n,r){var a,l,h,d,c,u=0,m=/(\d+)|(\D+)/g,p=/\d/,g=r.alignEmptyValues,b=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((a=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(m),l=l.match(m),c=a.length>l.length?l.length:a.length;ud?1:-1;return a.length>l.length}b=1}else b=t||0===t?-1:0;return("top"===g&&"desc"===n||"bottom"===g&&"asc"===n)&&(b*=-1),b}};class Ae extends k{constructor(e){super(e),this.sortList=[],this.changed=!1,this.registerTableOption("sortMode","local"),this.registerTableOption("initialSort",!1),this.registerTableOption("columnHeaderSortMulti",!0),this.registerTableOption("sortOrderReverse",!1),this.registerTableOption("headerSortElement","
        "),this.registerTableOption("headerSortClickElement","header"),this.registerColumnOption("sorter"),this.registerColumnOption("sorterParams"),this.registerColumnOption("headerSort",!0),this.registerColumnOption("headerSortStartingDir"),this.registerColumnOption("headerSortTristate")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.registerDataHandler(this.sort.bind(this),20),this.registerTableFunction("setSort",this.userSetSort.bind(this)),this.registerTableFunction("getSorters",this.getSort.bind(this)),this.registerTableFunction("clearSort",this.clearSort.bind(this)),"remote"===this.table.options.sortMode&&this.subscribe("data-params",this.remoteSortParams.bind(this))}tableBuilt(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}remoteSortParams(e,t,i,s){var o=this.getSort();return o.forEach((e=>{delete e.column})),s.sort=o,s}userSetSort(e,t){this.setSort(e,t),this.refreshSort()}clearSort(){this.clear(),this.refreshSort()}initializeColumn(e){var t,i,s=!1;switch(typeof e.definition.sorter){case"string":Ae.sorters[e.definition.sorter]?s=Ae.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}if(e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort){if((t=e.getElement()).classList.add("tabulator-sortable"),(i=document.createElement("div")).classList.add("tabulator-col-sorter"),"icon"===this.table.options.headerSortClickElement)i.classList.add("tabulator-col-sorter-element");else t.classList.add("tabulator-col-sorter-element");switch(this.table.options.headerSortElement){case"function":break;case"object":i.appendChild(this.table.options.headerSortElement);break;default:i.innerHTML=this.table.options.headerSortElement}e.titleHolderElement.appendChild(i),e.modules.sort.element=i,this.setColumnHeaderSortIcon(e,"none"),"icon"===this.table.options.headerSortClickElement&&i.addEventListener("mousedown",(e=>{e.stopPropagation()})),("icon"===this.table.options.headerSortClickElement?i:t).addEventListener("click",(t=>{var i="",s=[],o=!1;if(e.modules.sort){if(e.modules.sort.tristate)i="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=e.modules.sort.startingDir}this.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(o=(s=this.getSort()).findIndex((t=>t.field===e.getField())),o>-1?(s[o].dir=i,o=s.splice(o,1)[0],"none"!=i&&s.push(o)):"none"!=i&&s.push({column:e,dir:i}),this.setSort(s)):"none"==i?this.clear():this.setSort(e,i),this.refreshSort()}}))}}refreshSort(){"remote"===this.table.options.sortMode?this.reloadData(null,!1,!1):this.refreshData(!0)}hasChanged(){var e=this.changed;return this.changed=!1,e}getSort(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}setSort(e,t){var i=this,s=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,s.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=s,this.dispatch("sort-changed")}clear(){this.setSort([])}findSorter(e){var t,i=this.table.rowManager.activeRows[0],s="string";if(i&&(i=i.getData(),e.getField()))switch(typeof(t=e.getFieldValue(i))){case"undefined":s="string";break;case"boolean":s="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(s="alphanum"):s="number"}return Ae.sorters[s]}sort(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,s=[],o=[];return this.subscribedExternal("dataSorting")&&this.dispatchExternal("dataSorting",t.getSort()),t.clearColumnHeaders(),"remote"!==this.table.options.sortMode?(i.forEach((function(e,i){var o;e.column&&((o=e.column.modules.sort)&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,s.push(e)),t.setColumnHeader(e.column,e.dir))})),s.length&&t._sortItems(e,s)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((e=>{o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}clearColumnHeaders(){this.table.columnManager.getRealColumns().forEach((e=>{e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"),this.setColumnHeaderSortIcon(e,"none"))}))}setColumnHeader(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort","asc"===t?"ascending":"descending"),this.setColumnHeaderSortIcon(e,t)}setColumnHeaderSortIcon(e,t){var i,s=e.modules.sort.element;if(e.definition.headerSort&&"function"==typeof this.table.options.headerSortElement){for(;s.firstChild;)s.removeChild(s.firstChild);"object"==typeof(i=this.table.options.headerSortElement.call(this.table,e.getComponent(),t))?s.appendChild(i):s.innerHTML=i}}_sortItems(e,t){var i=t.length-1;e.sort(((e,s)=>{for(var o,n=i;n>=0;n--){let i=t[n];if(0!==(o=this._sortRow(e,s,i.column,i.dir,i.params)))break}return o}))}_sortRow(e,t,i,s,o){var n,r,a="asc"==s?e:t,l="asc"==s?t:e;return e=void 0!==(e=i.getFieldValue(a.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",n=a.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,n,r,i.getComponent(),s,o)}}Ae.moduleName="sort",Ae.sorters=Oe;class Be{constructor(e){return this._range=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._range.table.componentFunctionBinder.handle("range",e._range,t)}})}getElement(){return this._range.element}getData(){return this._range.getData()}getCells(){return this._range.getCells(!0)}getStructuredCells(){return this._range.getStructuredCells()}getRows(){return this._range.getRows().map((e=>e.getComponent()))}getColumns(){return this._range.getColumns().map((e=>e.getComponent()))}getBounds(){return this._range.getBounds()}getTopEdge(){return this._range.top}getBottomEdge(){return this._range.bottom}getLeftEdge(){return this._range.left}getRightEdge(){return this._range.right}setBounds(e,t){this._range.destroyedGuard("setBounds")&&this._range.setBounds(e?e._cell:e,t?t._cell:t)}setStartBound(e){this._range.destroyedGuard("setStartBound")&&(this._range.setEndBound(e?e._cell:e),this._range.rangeManager.layoutElement())}setEndBound(e){this._range.destroyedGuard("setEndBound")&&(this._range.setEndBound(e?e._cell:e),this._range.rangeManager.layoutElement())}clearValues(){this._range.destroyedGuard("clearValues")&&this._range.clearValues()}remove(){this._range.destroyedGuard("remove")&&this._range.destroy(!0)}}class Ve extends e{constructor(e,t,i,s){super(e),this.rangeManager=t,this.element=null,this.initialized=!1,this.initializing={start:!1,end:!1},this.destroyed=!1,this.top=0,this.bottom=0,this.left=0,this.right=0,this.table=e,this.start={row:0,col:0},this.end={row:0,col:0},this.rangeManager.rowHeader&&(this.left=1,this.right=1,this.start.col=1,this.end.col=1),this.initElement(),setTimeout((()=>{this.initBounds(i,s)}))}initElement(){this.element=document.createElement("div"),this.element.classList.add("tabulator-range")}initBounds(e,t){this._updateMinMax(),e&&this.setBounds(e,t||e)}setStart(e,t){this.start.row===e&&this.start.col===t||(this.start.row=e,this.start.col=t,this.initializing.start=!0,this._updateMinMax())}setEnd(e,t){this.end.row===e&&this.end.col===t||(this.end.row=e,this.end.col=t,this.initializing.end=!0,this._updateMinMax())}setBounds(e,t,i){e&&this.setStartBound(e),this.setEndBound(t||e),this.rangeManager.layoutElement(i)}setStartBound(e){var t,i;"column"===e.type?this.rangeManager.columnSelection&&this.setStart(0,e.getPosition()-1):(t=e.row.position-1,i=e.column.getPosition()-1,e.column===this.rangeManager.rowHeader?this.setStart(t,1):this.setStart(t,i))}setEndBound(e){var t,i,s,o=this._getTableRows().length;"column"===e.type?this.rangeManager.columnSelection&&("column"===this.rangeManager.selecting?this.setEnd(o-1,e.getPosition()-1):"cell"===this.rangeManager.selecting&&this.setEnd(0,e.getPosition()-1)):(t=e.row.position-1,i=e.column.getPosition()-1,s=e.column===this.rangeManager.rowHeader,"row"===this.rangeManager.selecting?this.setEnd(t,this._getTableColumns().length-1):"row"!==this.rangeManager.selecting&&s?this.setEnd(t,0):"column"===this.rangeManager.selecting?this.setEnd(o-1,i):this.setEnd(t,i))}_updateMinMax(){this.top=Math.min(this.start.row,this.end.row),this.bottom=Math.max(this.start.row,this.end.row),this.left=Math.min(this.start.col,this.end.col),this.right=Math.max(this.start.col,this.end.col),this.initialized?this.dispatchExternal("rangeChanged",this.getComponent()):this.initializing.start&&this.initializing.end&&(this.initialized=!0,this.dispatchExternal("rangeAdded",this.getComponent()))}_getTableColumns(){return this.table.columnManager.getVisibleColumnsByIndex()}_getTableRows(){return this.table.rowManager.getDisplayRows()}layout(){var e,t,i,s,o,n,r=this.table.rowManager.renderer.vDomTop,a=this.table.rowManager.renderer.vDomBottom,l=this.table.columnManager.renderer.leftCol,h=this.table.columnManager.renderer.rightCol;null==r&&(r=0),null==a&&(a=1/0),null==l&&(l=0),null==h&&(h=1/0),this.overlaps(l,r,h,a)&&(e=Math.max(this.top,r),t=Math.min(this.bottom,a),i=Math.max(this.left,l),s=Math.min(this.right,h),o=this.rangeManager.getCell(e,i),n=this.rangeManager.getCell(t,s),this.element.classList.add("tabulator-range-active"),this.element.style.left=o.row.getElement().offsetLeft+o.getElement().offsetLeft+"px",this.element.style.top=o.row.getElement().offsetTop+"px",this.element.style.width=n.getElement().offsetLeft+n.getElement().offsetWidth-o.getElement().offsetLeft+"px",this.element.style.height=n.row.getElement().offsetTop+n.row.getElement().offsetHeight-o.row.getElement().offsetTop+"px")}atTopLeft(e){return e.row.position-1===this.top&&e.column.getPosition()-1===this.left}atBottomRight(e){return e.row.position-1===this.bottom&&e.column.getPosition()-1===this.right}occupies(e){return this.occupiesRow(e.row)&&this.occupiesColumn(e.column)}occupiesRow(e){return this.top<=e.position-1&&e.position-1<=this.bottom}occupiesColumn(e){return this.left<=e.getPosition()-1&&e.getPosition()-1<=this.right}overlaps(e,t,i,s){return!(this.left>i||e>this.right||this.top>s||t>this.bottom)}getData(){var e=[],t=this.getRows(),i=this.getColumns();return t.forEach((t=>{var s=t.getData(),o={};i.forEach((e=>{o[e.field]=s[e.field]})),e.push(o)})),e}getCells(e,t){var i=[],s=this.getRows(),o=this.getColumns();return e?i=s.map((e=>{var i=[];return e.getCells().forEach((e=>{o.includes(e.column)&&i.push(t?e.getComponent():e)})),i})):s.forEach((e=>{e.getCells().forEach((e=>{o.includes(e.column)&&i.push(t?e.getComponent():e)}))})),i}getStructuredCells(){return this.getCells(!0,!0)}getRows(){return this._getTableRows().slice(this.top,this.bottom+1)}getColumns(){return this._getTableColumns().slice(this.left,this.right+1)}clearValues(){var e=this.getCells(),t=this.table.options.selectableRangeClearCellsValue;this.table.blockRedraw(),e.forEach((e=>{e.setValue(t)})),this.table.restoreRedraw()}getBounds(e){var t=this.getCells(!1,e),i={start:null,end:null};return t.length?(i.start=t[0],i.end=t[t.length-1]):console.warn("No bounds defined on range"),i}getComponent(){return this.component||(this.component=new Be(this)),this.component}destroy(e){this.destroyed=!0,this.element.remove(),e&&this.rangeManager.rangeRemoved(this),this.initialized&&this.dispatchExternal("rangeRemoved",this.getComponent())}destroyedGuard(e){return this.destroyed&&console.warn("You cannot call the "+e+" function on a destroyed range"),!this.destroyed}}class Ie extends k{constructor(e){super(e),this.selecting="cell",this.mousedown=!1,this.ranges=[],this.overlay=null,this.rowHeader=null,this.layoutChangeTimeout=null,this.columnSelection=!1,this.rowSelection=!1,this.maxRanges=0,this.activeRange=!1,this.blockKeydown=!1,this.keyDownEvent=this._handleKeyDown.bind(this),this.mouseUpEvent=this._handleMouseUp.bind(this),this.registerTableOption("selectableRange",!1),this.registerTableOption("selectableRangeColumns",!1),this.registerTableOption("selectableRangeRows",!1),this.registerTableOption("selectableRangeClearCells",!1),this.registerTableOption("selectableRangeClearCellsValue",void 0),this.registerTableFunction("getRangesData",this.getRangesData.bind(this)),this.registerTableFunction("getRanges",this.getRanges.bind(this)),this.registerTableFunction("addRange",this.addRangeFromComponent.bind(this)),this.registerComponentFunction("cell","getRanges",this.cellGetRanges.bind(this)),this.registerComponentFunction("row","getRanges",this.rowGetRanges.bind(this)),this.registerComponentFunction("column","getRanges",this.colGetRanges.bind(this))}initialize(){this.options("selectableRange")&&(this.options("selectableRows")?console.warn("SelectRange functionality cannot be used in conjunction with row selection"):(this.maxRanges=this.options("selectableRange"),this.initializeTable(),this.initializeWatchers()))}initializeTable(){this.overlay=document.createElement("div"),this.overlay.classList.add("tabulator-range-overlay"),this.rangeContainer=document.createElement("div"),this.rangeContainer.classList.add("tabulator-range-container"),this.activeRangeCellElement=document.createElement("div"),this.activeRangeCellElement.classList.add("tabulator-range-cell-active"),this.overlay.appendChild(this.rangeContainer),this.overlay.appendChild(this.activeRangeCellElement),this.table.rowManager.element.addEventListener("keydown",this.keyDownEvent),this.resetRanges(),this.table.rowManager.element.appendChild(this.overlay),this.table.columnManager.element.setAttribute("tabindex",0),this.table.element.classList.add("tabulator-ranges")}initializeWatchers(){this.columnSelection=this.options("selectableRangeColumns"),this.rowSelection=this.options("selectableRangeRows"),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-mousedown",this.handleColumnMouseDown.bind(this)),this.subscribe("column-mousemove",this.handleColumnMouseMove.bind(this)),this.subscribe("column-resized",this.handleColumnResized.bind(this)),this.subscribe("column-width",this.layoutChange.bind(this)),this.subscribe("column-height",this.layoutChange.bind(this)),this.subscribe("column-resized",this.layoutChange.bind(this)),this.subscribe("columns-loaded",this.updateHeaderColumn.bind(this)),this.subscribe("cell-height",this.layoutChange.bind(this)),this.subscribe("cell-rendered",this.renderCell.bind(this)),this.subscribe("cell-mousedown",this.handleCellMouseDown.bind(this)),this.subscribe("cell-mousemove",this.handleCellMouseMove.bind(this)),this.subscribe("cell-click",this.handleCellClick.bind(this)),this.subscribe("cell-editing",this.handleEditingCell.bind(this)),this.subscribe("page-changed",this.redraw.bind(this)),this.subscribe("scroll-vertical",this.layoutChange.bind(this)),this.subscribe("scroll-horizontal",this.layoutChange.bind(this)),this.subscribe("data-destroy",this.tableDestroyed.bind(this)),this.subscribe("data-processed",this.resetRanges.bind(this)),this.subscribe("table-layout",this.layoutElement.bind(this)),this.subscribe("table-redraw",this.redraw.bind(this)),this.subscribe("table-destroy",this.tableDestroyed.bind(this)),this.subscribe("edit-editor-clear",this.finishEditingCell.bind(this)),this.subscribe("edit-blur",this.restoreFocus.bind(this)),this.subscribe("keybinding-nav-prev",this.keyNavigate.bind(this,"left")),this.subscribe("keybinding-nav-next",this.keyNavigate.bind(this,"right")),this.subscribe("keybinding-nav-left",this.keyNavigate.bind(this,"left")),this.subscribe("keybinding-nav-right",this.keyNavigate.bind(this,"right")),this.subscribe("keybinding-nav-up",this.keyNavigate.bind(this,"up")),this.subscribe("keybinding-nav-down",this.keyNavigate.bind(this,"down")),this.subscribe("keybinding-nav-range",this.keyNavigateRange.bind(this))}initializeColumn(e){this.columnSelection&&e.definition.headerSort&&"icon"!==this.options("headerSortClickElement")&&console.warn("Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'."),e.modules.edit}updateHeaderColumn(){this.rowSelection&&(this.rowHeader=this.table.columnManager.getVisibleColumnsByIndex()[0],this.rowHeader&&(this.rowHeader.definition.cssClass=this.rowHeader.definition.cssClass+" tabulator-range-row-header",this.rowHeader.definition.headerSort&&console.warn("Using column headerSort with selectableRangeRows option may result in unpredictable behavior"),this.rowHeader.definition.editor&&console.warn("Using column editor with selectableRangeRows option may result in unpredictable behavior")))}getRanges(){return this.ranges.map((e=>e.getComponent()))}getRangesData(){return this.ranges.map((e=>e.getData()))}addRangeFromComponent(e,t){return e=e?e._cell:null,t=t?t._cell:null,this.addRange(e,t)}cellGetRanges(e){var t=[];return t=e.column===this.rowHeader?this.ranges.filter((t=>t.occupiesRow(e.row))):this.ranges.filter((t=>t.occupies(e))),t.map((e=>e.getComponent()))}rowGetRanges(e){var t=this.ranges.filter((t=>t.occupiesRow(e)));return t.map((e=>e.getComponent()))}colGetRanges(e){var t=this.ranges.filter((t=>t.occupiesColumn(e)));return t.map((e=>e.getComponent()))}_handleMouseUp(e){this.mousedown=!1,document.removeEventListener("mouseup",this.mouseUpEvent)}_handleKeyDown(e){if(!this.blockKeydown&&(!this.table.modules.edit||this.table.modules.edit&&!this.table.modules.edit.currentCell)){if("Enter"===e.key){if(this.table.modules.edit&&this.table.modules.edit.currentCell)return;this.table.modules.edit.editCell(this.getActiveCell()),e.preventDefault()}"Backspace"!==e.key&&"Delete"!==e.key||!this.options("selectableRangeClearCells")||this.activeRange&&this.activeRange.clearValues()}}initializeFocus(e){var t;try{document.selection?((t=document.body.createTextRange()).moveToElementText(e.getElement()),t.select()):window.getSelection&&((t=document.createRange()).selectNode(e.getElement()),window.getSelection().removeAllRanges(),window.getSelection().addRange(t))}catch(e){}}restoreFocus(e){return this.table.rowManager.element.focus(),!0}handleColumnResized(e){var t;"column"!==this.selecting&&"all"!==this.selecting||(t=this.ranges.some((t=>t.occupiesColumn(e))),t&&this.ranges.forEach((t=>{t.getColumns(!0).forEach((t=>{t!==e&&t.setWidth(e.width)}))})))}handleColumnMouseDown(e,t){(2!==e.button||"column"!==this.selecting&&"all"!==this.selecting||!this.activeRange.occupiesColumn(t))&&(this.mousedown=!0,document.addEventListener("mouseup",this.mouseUpEvent),this.newSelection(e,t))}handleColumnMouseMove(e,t){t!==this.rowHeader&&this.mousedown&&"all"!==this.selecting&&this.activeRange.setBounds(!1,t,!0)}renderCell(e){var t=e.getElement(),i=this.ranges.findIndex((t=>t.occupies(e)));t.classList.toggle("tabulator-range-selected",-1!==i),t.classList.toggle("tabulator-range-only-cell-selected",1===this.ranges.length&&this.ranges[0].atTopLeft(e)&&this.ranges[0].atBottomRight(e)),t.dataset.range=i}handleCellMouseDown(e,t){2===e.button&&(this.activeRange.occupies(t)||("row"===this.selecting||"all"===this.selecting)&&this.activeRange.occupiesRow(t.row))||(this.mousedown=!0,document.addEventListener("mouseup",this.mouseUpEvent),this.newSelection(e,t))}handleCellMouseMove(e,t){this.mousedown&&"all"!==this.selecting&&this.activeRange.setBounds(!1,t,!0)}handleCellClick(e,t){this.initializeFocus(t)}handleEditingCell(e){this.activeRange&&this.activeRange.setBounds(e)}finishEditingCell(){this.blockKeydown=!0,this.table.rowManager.element.focus(),setTimeout((()=>{this.blockKeydown=!1}),10)}keyNavigate(e,t){this.navigate(!1,!1,e)&&t.preventDefault()}keyNavigateRange(e,t,i,s){this.navigate(i,s,t)&&e.preventDefault()}navigate(e,t,i){var s,o,n,r,a,l,h;if(this.table.modules.edit&&this.table.modules.edit.currentCell)return!1;if(this.ranges.length>1&&(this.ranges=this.ranges.filter((e=>e===this.activeRange?(e.setEnd(e.start.row,e.start.col),!0):(e.destroy(),!1)))),o=this.activeRange,r=(n=t?o.end:o.start).row,a=n.col,e)switch(i){case"left":a=this.findJumpCellLeft(o.start.row,n.col);break;case"right":a=this.findJumpCellRight(o.start.row,n.col);break;case"up":r=this.findJumpCellUp(n.row,o.start.col);break;case"down":r=this.findJumpCellDown(n.row,o.start.col)}else{if(t&&("row"===this.selecting&&("left"===i||"right"===i)||"column"===this.selecting&&("up"===i||"down"===i)))return;switch(i){case"left":a=Math.max(a-1,0);break;case"right":a=Math.min(a+1,this.getTableColumns().length-1);break;case"up":r=Math.max(r-1,0);break;case"down":r=Math.min(r+1,this.getTableRows().length-1)}}return s=a!==n.col||r!==n.row,t||o.setStart(r,a),o.setEnd(r,a),t||(this.selecting="cell"),s?(l=this.getRowByRangePos(o.end.row),h=this.getColumnByRangePos(o.end.col),"left"!==i&&"right"!==i||null!==h.getElement().parentNode?"up"!==i&&"down"!==i||null!==l.getElement().parentNode?this.autoScroll(o,l.getElement(),h.getElement()):l.getComponent().scrollTo(void 0,!1):h.getComponent().scrollTo(void 0,!1),this.layoutElement(),!0):void 0}rangeRemoved(e){this.ranges=this.ranges.filter((t=>t!==e)),this.activeRange===e&&(this.ranges.length?this.activeRange=this.ranges[this.ranges.length-1]:this.addRange()),this.layoutElement()}findJumpCell(e,t,i,s){var o;t&&(e=e.reverse());for(let t of e){let e=t.getValue();if(i){if(o=t,e)break}else if(s){if(o=t,e)break}else{if(!e)break;o=t}}return o}findJumpCellLeft(e,t){var i=this.getRowByRangePos(e).cells.filter((e=>e.column.visible)),s=!i[t].getValue(),o=!!i[t]&&!i[t].getValue(),n=t,r=this.rowHeader?i.slice(1,t):i.slice(0,t),a=this.findJumpCell(r,!0,s,o);return a&&(n=a.column.getPosition()-1),n}findJumpCellRight(e,t){var i=this.getRowByRangePos(e).cells.filter((e=>e.column.visible)),s=!i[t].getValue(),o=!!i[t+1]&&!i[t+1].getValue(),n=t,r=this.findJumpCell(i.slice(t+1,i.length),!1,s,o);return r&&(n=r.column.getPosition()-1),n}findJumpCellUp(e,t){var i=this.getColumnByRangePos(t).cells.filter((e=>this.table.rowManager.activeRows.includes(e.row))),s=!i[e].getValue(),o=!!i[e-1]&&!i[e-1].getValue(),n=e,r=this.findJumpCell(i.slice(0,n),!0,s,o);return r&&(n=r.row.position-1),n}findJumpCellDown(e,t){var i=this.getColumnByRangePos(t).cells.filter((e=>this.table.rowManager.activeRows.includes(e.row))),s=!i[e].getValue(),o=!!i[e+1]&&!i[e+1].getValue(),n=e,r=this.findJumpCell(i.slice(n+1,i.length),!1,s,o);return r&&(n=r.row.position-1),n}newSelection(e,t){var i;if("column"===t.type){if(!this.columnSelection)return;if(t===this.rowHeader){i=this.resetRanges(),this.selecting="all";var s,o=this.getCell(-1,-1);return s=this.rowHeader?this.getCell(0,1):this.getCell(0,0),void i.setBounds(s,o)}this.selecting="column"}else t.column===this.rowHeader?this.selecting="row":this.selecting="cell";e.shiftKey?this.activeRange.setBounds(!1,t):e.ctrlKey?this.addRange().setBounds(t):this.resetRanges().setBounds(t)}autoScroll(e,t,i){var s,o,n,r,a,l=this.table.rowManager.element;void 0===t&&(t=this.getRowByRangePos(e.end.row).getElement()),void 0===i&&(i=this.getColumnByRangePos(e.end.col).getElement()),this.rowHeader&&(s=this.rowHeader.getElement()),o={left:i.offsetLeft,right:i.offsetLeft+i.offsetWidth,top:t.offsetTop,bottom:t.offsetTop+t.offsetHeight},n={left:l.scrollLeft,right:Math.ceil(l.scrollLeft+l.clientWidth),top:l.scrollTop,bottom:l.scrollTop+l.offsetHeight-this.table.rowManager.scrollbarWidth},s&&(n.left+=s.offsetWidth),r=n.leftn.right&&(l.scrollLeft=o.right-l.clientWidth)),a||(o.topn.bottom&&(l.scrollTop=o.bottom-l.clientHeight))}layoutChange(){this.overlay.style.visibility="hidden",clearTimeout(this.layoutChangeTimeout),this.layoutChangeTimeout=setTimeout(this.layoutRanges.bind(this),200)}redraw(e){e&&(this.selecting="cell",this.resetRanges(),this.layoutElement())}layoutElement(e){(e?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getRows()).forEach((e=>{"row"===e.type&&(this.layoutRow(e),e.cells.forEach((e=>this.renderCell(e))))})),this.getTableColumns().forEach((e=>{this.layoutColumn(e)})),this.layoutRanges()}layoutRow(e){var t=e.getElement(),i=!1,s=this.ranges.some((t=>t.occupiesRow(e)));"row"===this.selecting?i=s:"all"===this.selecting&&(i=!0),t.classList.toggle("tabulator-range-selected",i),t.classList.toggle("tabulator-range-highlight",s)}layoutColumn(e){var t=e.getElement(),i=!1,s=this.ranges.some((t=>t.occupiesColumn(e)));"column"===this.selecting?i=s:"all"===this.selecting&&(i=!0),t.classList.toggle("tabulator-range-selected",i),t.classList.toggle("tabulator-range-highlight",s)}layoutRanges(){var e;this.table.initialized&&(e=this.getActiveCell())&&(this.activeRangeCellElement.style.left=e.row.getElement().offsetLeft+e.getElement().offsetLeft+"px",this.activeRangeCellElement.style.top=e.row.getElement().offsetTop+"px",this.activeRangeCellElement.style.width=e.getElement().offsetLeft+e.getElement().offsetWidth-e.getElement().offsetLeft+"px",this.activeRangeCellElement.style.height=e.row.getElement().offsetTop+e.row.getElement().offsetHeight-e.row.getElement().offsetTop+"px",this.ranges.forEach((e=>e.layout())),this.overlay.style.visibility="visible")}getCell(e,t){var i;return t<0&&(t=this.getTableColumns().length+t)<0?null:(e<0&&(e=this.getTableRows().length+e),(i=this.table.rowManager.getRowFromPosition(e+1))?i.getCells(!1,!0).filter((e=>e.column.visible))[t]:null)}getActiveCell(){return this.getCell(this.activeRange.start.row,this.activeRange.start.col)}getRowByRangePos(e){return this.getTableRows()[e]}getColumnByRangePos(e){return this.getTableColumns()[e]}getTableRows(){return this.table.rowManager.getDisplayRows()}getTableColumns(){return this.table.columnManager.getVisibleColumnsByIndex()}addRange(e,t){var i;return!0!==this.maxRanges&&this.ranges.length>=this.maxRanges&&this.ranges.shift().destroy(),i=new Ve(this.table,this,e,t),this.activeRange=i,this.ranges.push(i),this.rangeContainer.appendChild(i.element),i}resetRanges(){var e,t;return this.ranges.forEach((e=>e.destroy())),this.ranges=[],e=this.addRange(),this.table.rowManager.activeRows.length&&(t=this.table.rowManager.activeRows[0].cells[this.rowHeader?1:0])&&(e.setBounds(t),this.initializeFocus(t)),e}tableDestroyed(){document.removeEventListener("mouseup",this.mouseUpEvent),this.table.rowManager.element.removeEventListener("keydown",this.keyDownEvent)}selectedRows(e){return e?this.activeRange.getRows().map((e=>e.getComponent())):this.activeRange.getRows()}selectedColumns(e){return e?this.activeRange.getColumns().map((e=>e.getComponent())):this.activeRange.getColumns()}}Ie.moduleName="selectRange";class Ne extends k{constructor(e){super(e),this.tooltipSubscriber=null,this.headerSubscriber=null,this.timeout=null,this.popupInstance=null,this.registerTableOption("tooltipGenerationMode",void 0),this.registerTableOption("tooltipDelay",300),this.registerColumnOption("tooltip"),this.registerColumnOption("headerTooltip")}initialize(){this.deprecatedOptionsCheck(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecatedOptionsCheck(){this.deprecationCheckMsg("tooltipGenerationMode","This option is no longer needed as tooltips are always generated on hover now")}initializeColumn(e){e.definition.headerTooltip&&!this.headerSubscriber&&(this.headerSubscriber=!0,this.subscribe("column-mousemove",this.mousemoveCheck.bind(this,"headerTooltip")),this.subscribe("column-mouseout",this.mouseoutCheck.bind(this,"headerTooltip"))),e.definition.tooltip&&!this.tooltipSubscriber&&(this.tooltipSubscriber=!0,this.subscribe("cell-mousemove",this.mousemoveCheck.bind(this,"tooltip")),this.subscribe("cell-mouseout",this.mouseoutCheck.bind(this,"tooltip")))}mousemoveCheck(e,t,i){var s="tooltip"===e?i.column.definition.tooltip:i.definition.headerTooltip;s&&(this.clearPopup(),this.timeout=setTimeout(this.loadTooltip.bind(this,t,i,s),this.table.options.tooltipDelay))}mouseoutCheck(e,t,i){this.popupInstance||this.clearPopup()}clearPopup(e,t,i){clearTimeout(this.timeout),this.timeout=null,this.popupInstance&&this.popupInstance.hide()}loadTooltip(e,t,i){var s,n,r;"function"==typeof i&&(i=i(e,t.getComponent(),(function(e){n=e}))),i instanceof HTMLElement?s=i:(s=document.createElement("div"),!0===i&&(t instanceof o?i=t.value:t.definition.field?this.langBind("columns|"+t.definition.field,(e=>{s.innerHTML=i=e||t.definition.title})):i=t.definition.title),s.innerHTML=i),(i||0===i||!1===i)&&(s.classList.add("tabulator-tooltip"),s.addEventListener("mousemove",(e=>e.preventDefault())),this.popupInstance=this.popup(s),"function"==typeof n&&this.popupInstance.renderCallback(n),r=this.popupInstance.containerEventCoords(e),this.popupInstance.show(r.x+15,r.y+15).hideOnBlur((()=>{this.dispatchExternal("TooltipClosed",t.getComponent()),this.popupInstance=null})),this.dispatchExternal("TooltipOpened",t.getComponent()))}}Ne.moduleName="tooltip";var We={integer:function(e,t,i){return""===t||null==t||(t=Number(t),!isNaN(t)&&isFinite(t)&&Math.floor(t)===t)},float:function(e,t,i){return""===t||null==t||(t=Number(t),!isNaN(t)&&isFinite(t)&&t%1!=0)},numeric:function(e,t,i){return""===t||null==t||!isNaN(t)},string:function(e,t,i){return""===t||null==t||isNaN(t)},alphanumeric:function(e,t,i){return""===t||null==t||new RegExp(/^[a-z0-9]+$/i).test(t)},max:function(e,t,i){return""===t||null==t||parseFloat(t)<=i},min:function(e,t,i){return""===t||null==t||parseFloat(t)>=i},starts:function(e,t,i){return""===t||null==t||String(t).toLowerCase().startsWith(String(i).toLowerCase())},ends:function(e,t,i){return""===t||null==t||String(t).toLowerCase().endsWith(String(i).toLowerCase())},minLength:function(e,t,i){return""===t||null==t||String(t).length>=i},maxLength:function(e,t,i){return""===t||null==t||String(t).length<=i},in:function(e,t,i){return""===t||null==t||("string"==typeof i&&(i=i.split("|")),i.indexOf(t)>-1)},regex:function(e,t,i){return""===t||null==t||new RegExp(i).test(t)},unique:function(e,t,i){if(""===t||null==t)return!0;var s=!0,o=e.getData(),n=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==n.getFieldValue(i)&&(s=!1)})),s},required:function(e,t,i){return""!==t&&null!=t}};class je extends k{constructor(e){super(e),this.invalidCells=[],this.registerTableOption("validationMode","blocking"),this.registerColumnOption("validator"),this.registerTableFunction("getInvalidCells",this.getInvalidCells.bind(this)),this.registerTableFunction("clearCellValidation",this.userClearCellValidation.bind(this)),this.registerTableFunction("validate",this.userValidate.bind(this)),this.registerComponentFunction("cell","isValid",this.cellIsValid.bind(this)),this.registerComponentFunction("cell","clearValidation",this.clearValidation.bind(this)),this.registerComponentFunction("cell","validate",this.cellValidate.bind(this)),this.registerComponentFunction("column","validate",this.columnValidate.bind(this)),this.registerComponentFunction("row","validate",this.rowValidate.bind(this))}initialize(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("edit-success",this.editValidate.bind(this)),this.subscribe("edit-editor-clear",this.editorClear.bind(this)),this.subscribe("edit-edited-clear",this.editedClear.bind(this))}editValidate(e,t,i){var s="manual"===this.table.options.validationMode||this.validate(e.column.modules.validate,e,t);return!0!==s&&setTimeout((()=>{e.getElement().classList.add("tabulator-validation-fail"),this.dispatchExternal("validationFailed",e.getComponent(),t,s)})),s}editorClear(e,t){t&&e.column.modules.validate&&this.cellValidate(e),e.getElement().classList.remove("tabulator-validation-fail")}editedClear(e){e.modules.validate&&(e.modules.validate.invalid=!1)}cellIsValid(e){return e.modules.validate&&e.modules.validate.invalid||!0}cellValidate(e){return this.validate(e.column.modules.validate,e,e.getValue())}columnValidate(e){var t=[];return e.cells.forEach((e=>{!0!==this.cellValidate(e)&&t.push(e.getComponent())})),!t.length||t}rowValidate(e){var t=[];return e.cells.forEach((e=>{!0!==this.cellValidate(e)&&t.push(e.getComponent())})),!t.length||t}userClearCellValidation(e){e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.clearValidation(e._getSelf())}))}userValidate(e){var t=[];return this.table.rowManager.rows.forEach((e=>{var i=(e=e.getComponent()).validate();!0!==i&&(t=t.concat(i))})),!t.length||t}initializeColumnCheck(e){void 0!==e.definition.validator&&this.initializeColumn(e)}initializeColumn(e){var t,i=this,s=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((e=>{(t=i._extractValidator(e))&&s.push(t)})):(t=this._extractValidator(e.definition.validator))&&s.push(t),e.modules.validate=!!s.length&&s)}_extractValidator(e){var t,i,s;switch(typeof e){case"string":return(s=e.indexOf(":"))>-1?(t=e.substring(0,s),i=e.substring(s+1)):t=e,this._buildValidator(t,i);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}}_buildValidator(e,t){var i="function"==typeof e?e:je.validators[e];return i?{type:"function"==typeof e?"function":e,func:i,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)}validate(e,t,i){var s=this,o=[],n=this.invalidCells.indexOf(t);return e&&e.forEach((e=>{e.func.call(s,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),t.modules.validate||(t.modules.validate={}),o.length?(t.modules.validate.invalid=o,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==n&&this.invalidCells.push(t)):(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),n>-1&&this.invalidCells.splice(n,1)),!o.length||o}getInvalidCells(){var e=[];return this.invalidCells.forEach((t=>{e.push(t.getComponent())})),e}clearValidation(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))}}je.moduleName="validate",je.validators=We;var Ge=Object.freeze({__proto__:null,AccessorModule:O,AjaxModule:W,ClipboardModule:j,ColumnCalcsModule:J,DataTreeModule:X,DownloadModule:K,EditModule:Q,ExportModule:ie,FilterModule:oe,FormatModule:re,FrozenColumnsModule:ae,FrozenRowsModule:le,GroupRowsModule:ce,HistoryModule:ue,HtmlTableImportModule:me,ImportModule:ge,InteractionModule:be,KeybindingsModule:fe,MenuModule:ve,MoveColumnsModule:we,MoveRowsModule:Ce,MutatorModule:Ee,PageModule:Re,PersistenceModule:ke,PopupModule:Me,PrintModule:Le,ReactiveDataModule:Se,ResizeColumnsModule:De,ResizeRowsModule:Pe,ResizeTableModule:ze,ResponsiveLayoutModule:He,SelectRowModule:Fe,SortModule:Ae,SelectRangeModule:Ie,TooltipModule:Ne,ValidateModule:je});class Ue extends _{}return new H(Ue,Ge),Ue})); -//# sourceMappingURL=tabulator.min.js.map diff --git a/tmp/tabulator-5.6.1/dist/js/tabulator.min.js.map b/tmp/tabulator-5.6.1/dist/js/tabulator.min.js.map deleted file mode 100644 index c4cf20f..0000000 --- a/tmp/tabulator-5.6.1/dist/js/tabulator.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tabulator.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/Column.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFunctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/DeprecationAdvisor.js","../../src/js/core/tools/TableRegistry.js","../../src/js/core/tools/Popup.js","../../src/js/core/Module.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/tools/Alert.js","../../src/js/core/Tabulator.js","../../src/js/core/defaults/options.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/jsonLines.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/List.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/date.js","../../src/js/modules/Edit/defaults/editors/time.js","../../src/js/modules/Edit/defaults/editors/datetime.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/list.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/History.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Import/defaults/importers.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Import/defaults/importers/array.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Page/defaults/pageCounters/rows.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Popup/Popup.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/SelectRange/RangeComponent.js","../../src/js/modules/SelectRange/Range.js","../../src/js/modules/SelectRange/SelectRange.js","../../src/js/modules/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/TabulatorFull.js"],"sourcesContent":["export default class CoreFeature{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\t}\n\n\t//////////////////////////////////////////\n\t/////////////// DataLoad /////////////////\n\t//////////////////////////////////////////\n\n\treloadData(data, silent, columnsChanged){\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);\n\t}\n\n\t//////////////////////////////////////////\n\t///////////// Localization ///////////////\n\t//////////////////////////////////////////\n\n\tlangText(){\n\t\treturn this.table.modules.localize.getText(...arguments);\n\t}\n\n\tlangBind(){\n\t\treturn this.table.modules.localize.bind(...arguments);\n\t}\n\n\tlangLocale(){\n\t\treturn this.table.modules.localize.getLocale(...arguments);\n\t}\n\n\n\t//////////////////////////////////////////\n\t////////// Inter Table Comms /////////////\n\t//////////////////////////////////////////\n\n\tcommsConnections(){\n\t\treturn this.table.modules.comms.getConnections(...arguments);\n\t}\n\n\tcommsSend(){\n\t\treturn this.table.modules.comms.send(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Layout /////////////////\n\t//////////////////////////////////////////\n\n\tlayoutMode(){\n\t\treturn this.table.modules.layout.getMode();\n\t}\n\n\tlayoutRefresh(force){\n\t\treturn this.table.modules.layout.layout(force);\n\t}\n\n\n\t//////////////////////////////////////////\n\t/////////////// Event Bus ////////////////\n\t//////////////////////////////////////////\n\n\tsubscribe(){\n\t\treturn this.table.eventBus.subscribe(...arguments);\n\t}\n\n\tunsubscribe(){\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.table.eventBus.subscribed(key);\n\t}\n\n\tsubscriptionChange(){\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\n\t}\n\n\tdispatch(){\n\t\treturn this.table.eventBus.dispatch(...arguments);\n\t}\n\n\tchain(){\n\t\treturn this.table.eventBus.chain(...arguments);\n\t}\n\n\tconfirm(){\n\t\treturn this.table.eventBus.confirm(...arguments);\n\t}\n\n\tdispatchExternal(){\n\t\treturn this.table.externalEvents.dispatch(...arguments);\n\t}\n\n\tsubscribedExternal(key){\n\t\treturn this.table.externalEvents.subscribed(key);\n\t}\n\n\tsubscriptionChangeExternal(){\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Options /////////////////\n\t//////////////////////////////////////////\n\n\toptions(key){\n\t\treturn this.table.options[key];\n\t}\n\n\tsetOption(key, value){\n\t\tif(typeof value !== \"undefined\"){\n\t\t\tthis.table.options[key] = value;\n\t\t}\n\n\t\treturn this.table.options[key];\n\t}\n\n\t//////////////////////////////////////////\n\t/////////// Deprecation Checks ///////////\n\t//////////////////////////////////////////\n\n\tdeprecationCheck(oldOption, newOption, convert){\n\t\treturn this.table.deprecationAdvisor.check(oldOption, newOption, convert);\n\t}\n\n\tdeprecationCheckMsg(oldOption, msg){\n\t\treturn this.table.deprecationAdvisor.checkMsg(oldOption, msg);\n\t}\n\n\tdeprecationMsg(msg){\n\t\treturn this.table.deprecationAdvisor.msg(msg);\n\t}\n\t//////////////////////////////////////////\n\t//////////////// Modules /////////////////\n\t//////////////////////////////////////////\n\n\tmodule(key){\n\t\treturn this.table.module(key);\n\t}\n}","import Column from './Column.js';\n\n//public column object\nexport default class ColumnComponent {\n\tconstructor (column){\n\t\tthis._column = column;\n\t\tthis.type = \"ColumnComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetElement(){\n\t\treturn this._column.getElement();\n\t}\n\n\tgetDefinition(){\n\t\treturn this._column.getDefinition();\n\t}\n\n\tgetField(){\n\t\treturn this._column.getField();\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this._column.getTitleDownload();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tisVisible(){\n\t\treturn this._column.visible;\n\t}\n\n\tshow(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.show();\n\t\t}\n\t}\n\n\thide(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.hide();\n\t\t}\n\t}\n\n\ttoggle(){\n\t\tif(this._column.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tdelete(){\n\t\treturn this._column.delete();\n\t}\n\n\tgetSubColumns(){\n\t\tvar output = [];\n\n\t\tif(this._column.columns.length){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetParentColumn(){\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._column;\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);\n\t}\n\n\tgetTable(){\n\t\treturn this._column.table;\n\t}\n\n\tmove(to, after){\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\t\tif(toColumn){\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t}\n\n\tgetNextColumn(){\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t}\n\n\tgetPrevColumn(){\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t}\n\n\tupdateDefinition(updates){\n\t\treturn this._column.updateDefinition(updates);\n\t}\n\n\tgetWidth(){\n\t\treturn this._column.getWidth();\n\t}\n\n\tsetWidth(width){\n\t\tvar result;\n\n\t\tif(width === true){\n\t\t\tresult = this._column.reinitializeWidth(true);\n\t\t}else{\n\t\t\tresult = this._column.setWidth(width);\n\t\t}\n\n\t\tthis._column.table.columnManager.rerenderColumns(true);\n\n\t\treturn result;\n\t}\n}","export default {\n\t\"title\": undefined,\n\t\"field\": undefined,\n\t\"columns\": undefined,\n\t\"visible\": undefined,\n\t\"hozAlign\": undefined,\n\t\"vertAlign\": undefined,\n\t\"width\": undefined,\n\t\"minWidth\": 40,\n\t\"maxWidth\": undefined,\n\t\"maxInitialWidth\": undefined,\n\t\"cssClass\": undefined,\n\t\"variableHeight\": undefined,\n\t\"headerVertical\": undefined,\n\t\"headerHozAlign\": undefined,\n\t\"headerWordWrap\": false,\n\t\"editableTitle\": undefined,\n};","//public cell object\nexport default class CellComponent {\n\n\tconstructor (cell){\n\t\tthis._cell = cell;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue(){\n\t\treturn this._cell.getValue();\n\t}\n\n\tgetOldValue(){\n\t\treturn this._cell.getOldValue();\n\t}\n\n\tgetInitialValue(){\n\t\treturn this._cell.initialValue;\n\t}\n\n\tgetElement(){\n\t\treturn this._cell.getElement();\n\t}\n\n\tgetRow(){\n\t\treturn this._cell.row.getComponent();\n\t}\n\n\tgetData(transform){\n\t\treturn this._cell.row.getData(transform);\n\t}\n\tgetType(){\n\t\treturn \"cell\";\n\t}\n\tgetField(){\n\t\treturn this._cell.column.getField();\n\t}\n\n\tgetColumn(){\n\t\treturn this._cell.column.getComponent();\n\t}\n\n\tsetValue(value, mutate){\n\t\tif(typeof mutate == \"undefined\"){\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t}\n\n\trestoreOldValue(){\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t}\n\n\trestoreInitialValue(){\n\t\tthis._cell.setValueActual(this._cell.initialValue);\n\t}\n\n\tcheckHeight(){\n\t\tthis._cell.checkHeight();\n\t}\n\n\tgetTable(){\n\t\treturn this._cell.table;\n\t}\n\n\t_getSelf(){\n\t\treturn this._cell;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport CellComponent from './CellComponent.js';\n\nexport default class Cell extends CoreFeature{\n\tconstructor(column, row){\n\t\tsuper(column.table);\n\n\t\tthis.table = column.table;\n\t\tthis.column = column;\n\t\tthis.row = row;\n\t\tthis.element = null;\n\t\tthis.value = null;\n\t\tthis.initialValue;\n\t\tthis.oldValue = null;\n\t\tthis.modules = {};\n\n\t\tthis.height = null;\n\t\tthis.width = null;\n\t\tthis.minWidth = null;\n\n\t\tthis.component = null;\n\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\t\tthis.build();\n\t}\n\n\t//////////////// Setup Functions /////////////////\n\t//generate element\n\tbuild(){\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\t\tthis.initialValue = this.value;\n\t}\n\n\tgenerateElement(){\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = \"tabulator-cell\";\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\t}\n\n\t_configureCell(){\n\t\tvar element = this.element,\n\t\tfield = this.column.getField(),\n\t\tvertAligns = {\n\t\t\ttop:\"flex-start\",\n\t\t\tbottom:\"flex-end\",\n\t\t\tmiddle:\"center\",\n\t\t},\n\t\thozAligns = {\n\t\t\tleft:\"flex-start\",\n\t\t\tright:\"flex-end\",\n\t\t\tcenter:\"center\",\n\t\t};\n\n\t\t//set text alignment\n\t\telement.style.textAlign = this.column.hozAlign;\n\n\t\tif(this.column.vertAlign){\n\t\t\telement.style.display = \"inline-flex\";\n\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\n\n\t\t\tif(this.column.hozAlign){\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif(field){\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\t\tif(this.column.definition.cssClass){\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatch(\"cell-init\", this);\n\n\t\t//hide cell if not visible\n\t\tif(!this.column.visible){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//generate cell contents\n\t_generateContents(){\n\t\tvar val;\n\n\t\tval = this.chain(\"cell-format\", this, null, () => {\n\t\t\treturn this.element.innerHTML = this.value;\n\t\t});\n\n\t\tswitch(typeof val){\n\t\t\tcase \"object\":\n\t\t\t\tif(val instanceof Node){\n\n\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\t\t\t\tthis.element.appendChild(val);\n\t\t\t\t}else{\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif(val != null){\n\t\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\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tthis.element.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element.innerHTML = val;\n\t\t}\n\t}\n\n\tcellRendered(){\n\t\tthis.dispatch(\"cell-rendered\", this);\n\t}\n\n\t//////////////////// Getters ////////////////////\n\tgetElement(containerOnly){\n\t\tif(!this.loaded){\n\t\t\tthis.loaded = true;\n\t\t\tif(!containerOnly){\n\t\t\t\tthis.layoutElement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.element;\n\t}\n\n\tgetValue(){\n\t\treturn this.value;\n\t}\n\n\tgetOldValue(){\n\t\treturn this.oldValue;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tsetValue(value, mutate, force){\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\n\n\t\t\tthis.cellRendered();\n\n\t\t\tif(this.column.definition.cellEdited){\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\n\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValueProcessData(value, mutate, force){\n\t\tvar changed = false;\n\n\t\tif(this.value !== value || force){\n\n\t\t\tchanged = true;\n\n\t\t\tif(mutate){\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\tsetValueActual(value){\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tthis.dispatch(\"cell-value-save-before\", this);\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tthis.dispatch(\"cell-value-save-after\", this);\n\n\t\tif(this.loaded){\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\tlayoutElement(){\n\t\tthis._generateContents();\n\n\t\tthis.dispatch(\"cell-layout\", this);\n\t}\n\n\tsetWidth(){\n\t\tthis.width = this.column.width;\n\t\tthis.element.style.width = this.column.widthStyled;\n\t}\n\n\tclearWidth(){\n\t\tthis.width = \"\";\n\t\tthis.element.style.width = \"\";\n\t}\n\n\tgetWidth(){\n\t\treturn this.width || this.element.offsetWidth;\n\t}\n\n\tsetMinWidth(){\n\t\tthis.minWidth = this.column.minWidth;\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t}\n\n\tsetMaxWidth(){\n\t\tthis.maxWidth = this.column.maxWidth;\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n\t}\n\n\tcheckHeight(){\n\t\t// var height = this.element.css(\"height\");\n\t\tthis.row.reinitializeHeight();\n\t}\n\n\tclearHeight(){\n\t\tthis.element.style.height = \"\";\n\t\tthis.height = null;\n\n\t\tthis.dispatch(\"cell-height\", this, \"\");\n\t}\n\n\tsetHeight(){\n\t\tthis.height = this.row.height;\n\t\tthis.element.style.height = this.row.heightStyled;\n\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\n\t}\n\n\tgetHeight(){\n\t\treturn this.height || this.element.offsetHeight;\n\t}\n\n\tshow(){\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n\t}\n\n\thide(){\n\t\tthis.element.style.display = \"none\";\n\t}\n\n\tdelete(){\n\t\tthis.dispatch(\"cell-delete\", this);\n\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.element = false;\n\t\tthis.column.deleteCell(this);\n\t\tthis.row.deleteCell(this);\n\t\tthis.calcs = {};\n\t}\n\n\tgetIndex(){\n\t\treturn this.row.getCellIndex(this);\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new CellComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\nimport ColumnComponent from './ColumnComponent.js';\nimport defaultOptions from './defaults/options.js';\n\nimport Cell from '../cell/Cell.js';\n\nclass Column extends CoreFeature{\n\n\tconstructor(def, parent){\n\t\tsuper(parent.table);\n\n\t\tthis.definition = def; //column definition\n\t\tthis.parent = parent; //hold parent object\n\t\tthis.type = \"column\"; //type of element\n\t\tthis.columns = []; //child columns\n\t\tthis.cells = []; //cells bound to this column\n\t\tthis.element = this.createElement(); //column header element\n\t\tthis.contentElement = false;\n\t\tthis.titleHolderElement = false;\n\t\tthis.titleElement = false;\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\t\tthis.isGroup = false;\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\t\tthis.vertAlign = \"\"; //vert text alignment\n\n\t\t//multi dimensional filed handling\n\t\tthis.field =\"\";\n\t\tthis.fieldStructure = \"\";\n\t\tthis.getFieldValue = \"\";\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.titleDownload = null;\n\t\tthis.titleFormatterRendered = false;\n\n\t\tthis.mapDefinitions();\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.width = null; //column width\n\t\tthis.widthStyled = \"\"; //column width pre-styled to improve render efficiency\n\t\tthis.maxWidth = null; //column maximum width\n\t\tthis.maxWidthStyled = \"\"; //column maximum pre-styled to improve render efficiency\n\t\tthis.maxInitialWidth = null;\n\t\tthis.minWidth = null; //column minimum width\n\t\tthis.minWidthStyled = \"\"; //column minimum pre-styled to improve render efficiency\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\t\tthis.visible = true; //default visible state\n\n\t\tthis.component = null;\n\n\t\t//initialize column\n\t\tif(this.definition.columns){\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tthis.definition.columns.forEach((def, i) => {\n\t\t\t\tvar newCol = new Column(def, this);\n\t\t\t\tthis.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tthis.checkColumnVisibility();\n\t\t}else{\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tthis._initialize();\n\t}\n\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\tswitch(this.table.options.columnHeaderVertAlign){\n\t\t\tcase \"middle\":\n\t\t\t\tel.style.justifyContent = \"center\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tel.style.justifyContent = \"flex-end\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tcreateGroupElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t}\n\n\tmapDefinitions(){\n\t\tvar defaults = this.table.options.columnDefaults;\n\n\t\t//map columnDefaults onto column definitions\n\t\tif(defaults){\n\t\t\tfor(let key in defaults){\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\n\t\t\t\t\tthis.definition[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);\n\t}\n\n\tcheckDefinition(){\n\t\tObject.keys(this.definition).forEach((key) => {\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetField(field){\n\t\tthis.field = field;\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n\t}\n\n\t//register column position with column manager\n\tregisterColumnPosition(column){\n\t\tthis.parent.registerColumnPosition(column);\n\t}\n\n\t//register column position with column manager\n\tregisterColumnField(column){\n\t\tthis.parent.registerColumnField(column);\n\t}\n\n\t//trigger position registration\n\treRegisterPosition(){\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t}else{\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t}\n\n\t//build header element\n\t_initialize(){\n\t\tvar def = this.definition;\n\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\tif(def.headerVertical){\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif(def.headerVertical === \"flip\"){\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tthis.contentElement = this._buildColumnHeaderContent();\n\n\t\tthis.element.appendChild(this.contentElement);\n\n\t\tif(this.isGroup){\n\t\t\tthis._buildGroupHeader();\n\t\t}else{\n\t\t\tthis._buildColumnHeader();\n\t\t}\n\n\t\tthis.dispatch(\"column-init\", this);\n\t}\n\n\t//build header element for header\n\t_buildColumnHeader(){\n\t\tvar def = this.definition;\n\n\t\tthis.dispatch(\"column-layout\", this);\n\n\t\t//set column visibility\n\t\tif(typeof def.visible != \"undefined\"){\n\t\t\tif(def.visible){\n\t\t\t\tthis.show(true);\n\t\t\t}else{\n\t\t\t\tthis.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//assign additional css classes to column header\n\t\tif(def.cssClass){\n\t\t\tvar classNames = def.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif(def.field){\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\t\tthis.setMinWidth(parseInt(def.minWidth));\n\n\t\tif (def.maxInitialWidth) {\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\n\t\t}\n\t\t\n\t\tif(def.maxWidth){\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\n\t\t}\n\n\t\tthis.reinitializeWidth();\n\n\t\t//set horizontal text alignment\n\t\tthis.hozAlign = this.definition.hozAlign;\n\t\tthis.vertAlign = this.definition.vertAlign;\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\t}\n\n\t_buildColumnHeaderContent(){\n\t\tvar contentElement = document.createElement(\"div\");\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tthis.titleHolderElement = document.createElement(\"div\");\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\t\tcontentElement.appendChild(this.titleHolderElement);\n\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\t\treturn contentElement;\n\t}\n\n\t//build title element of column\n\t_buildColumnHeaderTitle(){\n\t\tvar def = this.definition;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\t\t\n\t\tif(def.headerWordWrap){\n\t\t\ttitleHolderElement.classList.add(\"tabulator-col-title-wrap\");\n\t\t}\n\n\t\tif(def.editableTitle){\n\t\t\tvar titleElement = document.createElement(\"input\");\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", () => {\n\t\t\t\tdef.title = titleElement.value;\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\n\t\t}else{\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t}\n\n\t_formatColumnHeaderTitle(el, title){\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\n\t\t\treturn title;\n\t\t});\n\n\t\tswitch(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\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t}\n\n\t//build header element for column group\n\t_buildGroupHeader(){\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\t//asign additional css classes to column header\n\t\tif(this.definition.cssClass){\n\t\t\tvar classNames = this.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\n\t\tthis.element.appendChild(this.groupElement);\n\t}\n\n\t//flat field lookup\n\t_getFlatData(data){\n\t\treturn data[this.field];\n\t}\n\n\t//nested field lookup\n\t_getNestedData(data){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif(!dataObj){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//flat field set\n\t_setFlatData(data, value){\n\t\tif(this.field){\n\t\t\tdata[this.field] = value;\n\t\t}\n\t}\n\n\t//nested field set\n\t_setNestedData(data, value){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tif(i == length -1){\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t}else{\n\t\t\t\tif(!dataObj[structure[i]]){\n\t\t\t\t\tif(typeof value !== \"undefined\"){\n\t\t\t\t\t\tdataObj[structure[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\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t//attach column to this group\n\tattachColumn(column){\n\t\tif(this.groupElement){\n\t\t\tthis.columns.push(column);\n\t\t\tthis.groupElement.appendChild(column.getElement());\n\n\t\t\tcolumn.columnRendered();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t}\n\n\t//vertically align header in column\n\tverticalAlign(alignment, height){\n\n\t\t//calculate height of column header and group holder element\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\n\n\t\tif(this.isGroup){\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\t\t// if(!this.isGroup && alignment !== \"top\"){\n\t\t// \tif(alignment === \"bottom\"){\n\t\t// \t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t// \t}else{\n\t\t// \t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\n\t\t// \t}\n\t\t// }\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t}\n\n\t//clear vertical alignment\n\tclearVerticalAlign(){\n\t\tthis.element.style.paddingTop = \"\";\n\t\tthis.element.style.height = \"\";\n\t\tthis.element.style.minHeight = \"\";\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\n\t\tthis.dispatch(\"column-height\", this, \"\");\n\t}\n\n\t//// Retrieve Column Information ////\n\t//return column header element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return column group element\n\tgetGroupElement(){\n\t\treturn this.groupElement;\n\t}\n\n\t//return field name\n\tgetField(){\n\t\treturn this.field;\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this.titleDownload;\n\t}\n\n\t//return the first column in a group\n\tgetFirstColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return the last column in a group\n\tgetLastColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return all columns in a group\n\tgetColumns(traverse){\n\t\tvar columns = [];\n\n\t\tif(traverse){\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumns.push(column);\n\t\t\t\t\t\n\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t});\n\t\t}else{\n\t\t\tcolumns = this.columns;\n\t\t}\n\t\t\n\t\treturn columns;\n\t}\n\n\t//return all columns in a group\n\tgetCells(){\n\t\treturn this.cells;\n\t}\n\n\t//retrieve the top column in a group of columns\n\tgetTopColumn(){\n\t\tif(this.parent.isGroup){\n\t\t\treturn this.parent.getTopColumn();\n\t\t}else{\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t//return column definition object\n\tgetDefinition(updateBranches){\n\t\tvar colDefs = [];\n\n\t\tif(this.isGroup && updateBranches){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tcheckColumnVisibility(){\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tif(column.visible){\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif(visible){\n\t\t\tthis.show();\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t}else{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//show column\n\tshow(silent, responsiveToggle){\n\t\tif(!this.visible){\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif(!this.isGroup && this.width === null){\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\t//hide column\n\thide(silent, responsiveToggle){\n\t\tif(this.visible){\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\tmatchChildWidths(){\n\t\tvar childWidth = 0;\n\n\t\tif(this.contentElement && this.columns.length){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveChild(child){\n\t\tvar index = this.columns.indexOf(child);\n\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif(!this.columns.length){\n\t\t\tthis.delete();\n\t\t}\n\t}\n\n\tsetWidth(width){\n\t\tthis.widthFixed = true;\n\t\tthis.setWidthActual(width);\n\t}\n\n\tsetWidthActual(width){\n\t\tif(isNaN(width)){\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tif(this.maxWidth){\n\t\t\twidth = Math.min(this.maxWidth, width);\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif(!this.isGroup){\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif(this.parent.isGroup){\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tthis.dispatch(\"column-width\", this);\n\t}\n\n\tcheckCellHeights(){\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tif(cell.row.heightInitialized){\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\n\t\t\t\t\trows.push(cell.row);\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t}else{\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.setCellHeight();\n\t\t});\n\t}\n\n\tgetWidth(){\n\t\tvar width = 0;\n\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\twidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\twidth = this.width;\n\t\t}\n\n\t\treturn width;\n\t}\n\n\tgetLeftOffset(){\n\t\tvar offset = this.element.offsetLeft;\n\n\t\tif(this.parent.isGroup){\n\t\t\toffset += this.parent.getLeftOffset();\n\t\t}\n\n\t\treturn offset;\n\t}\n\n\tgetHeight(){\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\n\t}\n\n\tsetMinWidth(minWidth){\n\t\tif(this.maxWidth && minWidth > this.maxWidth){\n\t\t\tminWidth = this.maxWidth;\n\n\t\t\tconsole.warn(\"the minWidth (\"+ minWidth + \"px) for column '\" + this.field + \"' cannot be bigger that its maxWidth (\"+ this.maxWidthStyled + \")\");\n\t\t}\n\n\t\tthis.minWidth = minWidth;\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMinWidth();\n\t\t});\n\t}\n\n\tsetMaxWidth(maxWidth){\n\t\tif(this.minWidth && maxWidth < this.minWidth){\n\t\t\tmaxWidth = this.minWidth;\n\n\t\t\tconsole.warn(\"the maxWidth (\"+ maxWidth + \"px) for column '\" + this.field + \"' cannot be smaller that its minWidth (\"+ this.minWidthStyled + \")\");\n\t\t}\n\n\t\tthis.maxWidth = maxWidth;\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMaxWidth();\n\t\t});\n\t}\n\n\tdelete(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(this.isGroup){\n\t\t\t\tthis.columns.forEach(function(column){\n\t\t\t\t\tcolumn.delete();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dispatch(\"column-delete\", this);\n\n\t\t\tvar cellCount = this.cells.length;\n\n\t\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\t\tthis.cells[0].delete();\n\t\t\t}\n\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.element = false;\n\t\t\tthis.contentElement = false;\n\t\t\tthis.titleElement = false;\n\t\t\tthis.groupElement = false;\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.removeChild(this);\n\t\t\t}\n\n\t\t\tthis.table.columnManager.deregisterColumn(this);\n\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\n\t\t\tthis.dispatch(\"column-deleted\", this);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\tcolumnRendered(){\n\t\tif(this.titleFormatterRendered){\n\t\t\tthis.titleFormatterRendered();\n\t\t}\n\n\t\tthis.dispatch(\"column-rendered\", this);\n\t}\n\n\t//////////////// Cell Management /////////////////\n\t//generate cell for this column\n\tgenerateCell(row){\n\t\tvar cell = new Cell(this, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t}\n\n\tnextColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n\t}\n\n\t_nextVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n\t}\n\n\tprevColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n\t}\n\n\t_prevVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n\t}\n\n\treinitializeWidth(force){\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\n\t\t\t// maxInitialWidth ignored here as width specified\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\tthis.dispatch(\"column-width-fit-before\", this);\n\n\t\tthis.fitToData(force);\n\n\t\tthis.dispatch(\"column-width-fit-after\", this);\n\t}\n\n\t//set column width to maximum cell width for non group columns\n\tfitToData(force){\n\t\tif(this.isGroup){\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.widthFixed){\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif(!this.width || !this.widthFixed){\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif(width > maxWidth){\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(maxWidth){\n\t\t\t\tvar setTo = maxWidth + 1;\n\t\t\t\tif (this.maxInitialWidth && !force) {\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\n\t\t\t\t}\n\t\t\t\tthis.setWidthActual(setTo);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateDefinition(updates){\n\t\tvar definition;\n\n\t\tif(!this.isGroup){\n\t\t\tif(!this.parent.isGroup){\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\n\t\t\t\t\t.then((column) => {\n\n\t\t\t\t\t\tif(definition.field == this.field){\n\t\t\t\t\t\t\tthis.field = false; //clear field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.delete()\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treturn Promise.reject(\"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.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t}\n\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new ColumnComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n\n\tgetPosition(){\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex().indexOf(this) + 1;\n\t}\n}\n\nColumn.defaultOptionList = defaultOptions;\n\nexport default Column;\n","export default class Helpers{\n\n\tstatic elVisible(el){\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t}\n\n\tstatic 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\tstatic retrieveNestedData(separator, field, data){\n\t\tvar structure = separator ? field.split(separator) : [field],\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdata = data[structure[i]];\n\n\t\t\toutput = data;\n\n\t\t\tif(!data){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tstatic deepClone(obj, clone, list = []){\n\t\tvar objectProto = {}.__proto__,\n\t\tarrayProto = [].__proto__;\n\n\t\tif (!clone){\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\t\t}\n\n\t\tfor(var i in obj) {\n\t\t\tlet subject = obj[i],\n\t\t\tmatch, copy;\n\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\n\t\t\t\tmatch = list.findIndex((item) => {\n\t\t\t\t\treturn item.subject === subject;\n\t\t\t\t});\n\n\t\t\t\tif(match > -1){\n\t\t\t\t\tclone[i] = list[match].copy;\n\t\t\t\t}else{\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\n\n\t\t\t\t\tlist.unshift({subject, copy});\n\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn clone;\n\t}\n}\n","export default class OptionsList {\n\tconstructor(table, msgType, defaults = {}){\n\t\tthis.table = table;\n\t\tthis.msgType = msgType;\n\t\tthis.registeredDefaults = Object.assign({}, defaults);\n\t}\n\t\n\tregister(option, value){\n\t\tthis.registeredDefaults[option] = value;\n\t}\n\t\n\tgenerate(defaultOptions, userOptions = {}){\n\t\tvar output = Object.assign({}, this.registeredDefaults),\n\t\twarn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true;\n\t\t\n\t\tObject.assign(output, defaultOptions);\n\t\t\n\t\tfor (let key in userOptions){\n\t\t\tif(!output.hasOwnProperty(key)){\n\t\t\t\tif(warn){\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key);\n\t\t\t\t}\n\n\t\t\t\toutput[key] = userOptions.key;\n\t\t\t}\n\t\t}\n\t\n\t\t\n\t\tfor (let key in output){\n\t\t\tif(key in userOptions){\n\t\t\t\toutput[key] = userOptions[key];\n\t\t\t}else{\n\t\t\t\tif(Array.isArray(output[key])){\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\n\t\t\t\t\tdelete output[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Renderer extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.elementVertical = table.rowManager.element;\n\t\tthis.elementHorizontal = table.columnManager.element;\n\t\tthis.tableElement = table.rowManager.tableElement;\n\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determine how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the container without resizing it)\n\t}\n\n\n\t///////////////////////////////////\n\t/////// Internal Bindings /////////\n\t///////////////////////////////////\n\n\tinitialize(){\n\t\t//initialize core functionality\n\t}\n\n\tclearRows(){\n\t\t//clear down existing rows layout\n\t}\n\n\tclearColumns(){\n\t\t//clear down existing columns layout\n\t}\n\n\n\treinitializeColumnWidths(columns){\n\t\t//resize columns to fit data\n\t}\n\n\n\trenderRows(){\n\t\t//render rows from a clean slate\n\t}\n\n\trenderColumns(){\n\t\t//render columns from a clean slate\n\t}\n\n\trerenderRows(callback){\n\t\t// rerender rows and keep position\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t}\n\n\trerenderColumns(update, blockRedraw){\n\t\t//rerender columns\n\t}\n\n\trenderRowCells(row){\n\t\t//render the cells in a row\n\t}\n\n\trerenderRowCells(row, force){\n\t\t//rerender the cells in a row\n\t}\n\n\tscrollColumns(left, dir){\n\t\t//handle horizontal scrolling\n\t}\n\n\tscrollRows(top, dir){\n\t\t//handle vertical scrolling\n\t}\n\n\tresize(){\n\t\t//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\n\t}\n\n\tscrollToRow(row){\n\t\t//scroll to a specific row\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\t//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\t//return the visible rows\n\t\treturn [];\n\t}\n\n\t///////////////////////////////////\n\t//////// Helper Functions /////////\n\t///////////////////////////////////\n\n\trows(){\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t/////// External Triggers /////////\n\t/////// (DO NOT OVERRIDE) /////////\n\t///////////////////////////////////\n\n\tclear(){\n\t\t//clear down existing layout\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t}\n\n\trender(){\n\t\t//render from a clean slate\n\t\tthis.renderRows();\n\t\tthis.renderColumns();\n\t}\n\n\trerender(callback){\n\t\t// rerender and keep position\n\t\tthis.rerenderRows();\n\t\tthis.rerenderColumns();\n\t}\n\n\tscrollToRowPosition(row, position, ifVisible){\n\t\tvar rowIndex = this.rows().indexOf(row),\n\t\trowEl = row.getElement(),\n\t\toffset = 0;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(rowIndex > -1){\n\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif(position === \"nearest\"){\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\";\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\t\t\t\tthis.scrollToRow(row);\n\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"top\":\n\t\t\t\t\t\tthis.elementVertical.scrollTop = rowEl.offsetTop;\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class BasicHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\trenderRowCells(row, inFragment) {\n\t\tconst rowFrag = document.createDocumentFragment();\n\t\trow.cells.forEach((cell) => {\n\t\t\trowFrag.appendChild(cell.getElement());\n\t\t});\n\t\trow.element.appendChild(rowFrag);\n\t\t\n\t\tif(!inFragment){\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tcolumns.forEach(function(column){\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class VirtualDomHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftCol = 0;\n\t\tthis.rightCol = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\t\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t\t\n\t\tthis.fitDataColAvg = 0;\n\t\t\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\n\t\t\n\t\tthis.visibleRows = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.isFitData = false;\n\t\t\n\t\tthis.columns = [];\n\t}\n\t\n\tinitialize(){\n\t\tthis.compatibilityCheck();\n\t\tthis.layoutCheck();\n\t\tthis.vertScrollListen();\n\t}\n\t\n\tcompatibilityCheck(){\t\t\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\n\t\t}\n\t\t\n\t\tif(this.options(\"responsiveLayout\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\n\t\t}\n\t\t\n\t\tif(this.options(\"rtl\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\n\t\t}\n\t}\n\t\n\tlayoutCheck(){\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\n\t}\n\t\n\tvertScrollListen(){\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\n\t}\n\t\n\tclearVisRowCache(){\n\t\tthis.visibleRows = null;\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\t\n\trenderColumns(row, force){\n\t\tthis.dataChange();\n\t}\n\t\n\t\n\tscrollColumns(left, dir){\n\t\tif(this.scrollLeft != left){\n\t\t\tthis.scrollLeft = left;\n\t\t\t\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\n\t\t}\n\t}\n\t\n\tcalcWindowBuffer(){\n\t\tvar buffer = this.elementVertical.clientWidth;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\tvar width = column.getWidth();\n\t\t\t\t\n\t\t\t\tif(width > buffer){\n\t\t\t\t\tbuffer = width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.windowBuffer = buffer * 2;\n\t}\n\t\n\trerenderColumns(update, blockRedraw){\t\t\n\t\tvar old = {\n\t\t\tcols:this.columns,\n\t\t\tleftCol:this.leftCol,\n\t\t\trightCol:this.rightCol,\n\t\t},\n\t\tcolPos = 0;\n\t\t\n\t\tif(update && !this.initialized){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.clear();\n\t\t\n\t\tthis.calcWindowBuffer();\n\t\t\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\n\t\t\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tvar config = {},\n\t\t\twidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tif(!column.modules.frozen){\t\t\t\n\t\t\t\t\twidth = column.getWidth();\n\n\t\t\t\t\tconfig.leftPos = colPos;\n\t\t\t\t\tconfig.rightPos = colPos + width;\n\t\t\t\t\t\n\t\t\t\t\tconfig.width = width;\n\t\t\t\t\t\n\t\t\t\t\tif (this.isFitData) {\n\t\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\n\t\t\t\t\t\t//column is visible\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.leftCol == -1){\n\t\t\t\t\t\t\tthis.leftCol = this.columns.length;\n\t\t\t\t\t\t\tthis.vDomPadLeft = colPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.rightCol = this.columns.length;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// column is hidden\n\t\t\t\t\t\tif(this.leftCol !== -1){\n\t\t\t\t\t\t\tthis.vDomPadRight += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.columns.push(column);\n\t\t\t\t\t\n\t\t\t\t\tcolumn.modules.vdomHoz = config;\n\t\t\t\t\t\n\t\t\t\t\tcolPos += width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tif(!update || this.reinitChanged(old)){\n\t\t\t\tthis.reinitializeRows();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\n\t}\n\t\n\trenderRowCells(row){\n\t\tif(this.initialized){\n\t\t\tthis.initializeRow(row);\n\t\t}else{\n\t\t\tconst rowFrag = document.createDocumentFragment();\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\trowFrag.appendChild(cell.getElement());\n\t\t\t});\n\t\t\trow.element.appendChild(rowFrag);\n\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\trerenderRowCells(row, force){\n\t\tthis.reinitializeRow(row, force);\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\tthis.columns[i].reinitializeWidth();\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\t\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tclear(){\n\t\tthis.columns = [];\n\t\t\n\t\tthis.leftCol = -1;\n\t\tthis.rightCol = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t}\n\t\n\tdataChange(){\n\t\tvar change = false,\n\t\trow, rowEl;\n\t\t\n\t\tif(this.isFitData){\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif(!column.definition.width && column.visible){\n\t\t\t\t\tchange = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\t\t\n\t\t\t\trow = this.chain(\"rows-sample\", [1], [], () => {\n\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\n\t\t\t\t})[0];\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trowEl = row.getElement();\n\t\t\t\t\t\n\t\t\t\t\trow.generateCells();\n\t\t\t\t\t\n\t\t\t\t\tthis.tableElement.appendChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tfor(let colEnd = 0; colEnd < row.cells.length; colEnd++){\n\t\t\t\t\t\tlet cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\t\t\t\t\t\t\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\n\t\t\t\tthis.layoutRefresh();\n\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treinitChanged(old){\n\t\tvar match = true;\n\t\t\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\told.cols.forEach((col, i) => {\n\t\t\tif(col !== this.columns[i]){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn !match;\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.getVisibleRows(),\n\t\totherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\n\t\tvisibleRows.forEach((row) => {\n\t\t\tthis.reinitializeRow(row, true);\n\t\t});\n\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t}\n\t\n\tgetVisibleRows(){\n\t\tif (!this.visibleRows){\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\n\t\t}\n\t\t\n\t\treturn this.visibleRows;\t\n\t}\n\t\n\tscroll(diff){\n\t\tthis.vDomScrollPosLeft += diff;\n\t\tthis.vDomScrollPosRight += diff;\n\t\t\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\n\t\t\tthis.rerenderColumns();\n\t\t}else{\n\t\t\tif(diff > 0){\n\t\t\t\t//scroll right\n\t\t\t\tthis.addColRight();\n\t\t\t\tthis.removeColLeft();\n\t\t\t}else{\n\t\t\t\t//scroll left\n\t\t\t\tthis.addColLeft();\n\t\t\t\tthis.removeColRight();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcolPositionAdjust (start, end, diff){\n\t\tfor(let i = start; i < end; i++){\n\t\t\tlet column = this.columns[i];\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\n\t\t}\n\t}\n\t\n\taddColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\n\t\t\tlet column = this.columns[this.rightCol + 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);\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\t\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\n\t\t\t\t\t\tthis.vDomPadRight = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\taddColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol - 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());\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\t\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tif(diff){\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\n\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.rightCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message);\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\t\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\n\t\t\t\t\tthis.rightCol --;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message);\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\t\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\n\t\t\t\t\tthis.leftCol ++;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tfitDataColActualWidthCheck(column){\n\t\tvar newWidth, widthDiff;\n\t\t\n\t\tif(column.modules.vdomHoz.fitDataCheck){\n\t\t\tcolumn.reinitializeWidth();\n\t\t\t\n\t\t\tnewWidth = column.getWidth();\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\n\t\t\t\n\t\t\tif(widthDiff){\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\n\t\t}\n\t\t\n\t\treturn widthDiff;\n\t}\n\t\n\tinitializeRow(row){\n\t\tif(row.type !== \"group\"){\n\t\t\trow.modules.vdomHoz = {\n\t\t\t\tleftCol:this.leftCol,\n\t\t\t\trightCol:this.rightCol,\n\t\t\t};\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\t\tthis.appendCell(row, this.columns[i]);\n\t\t\t}\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tappendCell(row, column){\n\t\tif(column && column.visible){\n\t\t\tlet cell = row.getCell(column);\n\t\t\t\n\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\tcell.cellRendered();\n\t\t}\n\t}\n\t\n\treinitializeRow(row, force){\n\t\tif(row.type !== \"group\"){\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\n\t\t\t\t\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\n\n\t\t\t\tthis.initializeRow(row);\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Column from './column/Column.js';\nimport ColumnComponent from './column/ColumnComponent.js';\nimport Helpers from './tools/Helpers.js';\nimport OptionsList from './tools/OptionsList.js';\n\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\n\nimport defaultColumnOptions from './column/defaults/options.js';\n\nexport default class ColumnManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.blockHozScrollEvent = false;\n\t\tthis.headersElement = null;\n\t\tthis.contentsElement = null;\n\t\tthis.element = null ; //containing element\n\t\tthis.columns = []; // column definition object\n\t\tthis.columnsByIndex = []; //columns by index\n\t\tthis.columnsByField = {}; //columns by field\n\t\tthis.scrollLeft = 0;\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockUpdate = null; //store latest redraw update only status\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t////////////// Setup Functions /////////////////\n\t\n\tinitialize(){\n\t\tthis.initializeRenderer();\n\t\t\n\t\tthis.headersElement = this.createHeadersElement();\n\t\tthis.contentsElement = this.createHeaderContentsElement();\n\t\tthis.element = this.createHeaderElement();\n\t\t\n\t\tthis.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);\n\t\tthis.element.insertBefore(this.contentsElement, this.element.firstChild);\n\n\t\tthis.initializeScrollWheelWatcher();\n\t\t\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.padVerticalScrollbar.bind(this));\n\t}\n\n\tpadVerticalScrollbar(width){\n\t\tif(this.table.rtl){\n\t\t\tthis.headersElement.style.marginLeft = width + \"px\";\n\t\t}else{\n\t\t\tthis.headersElement.style.marginRight = width + \"px\";\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\n\t\t\t\"basic\": RendererBasicHorizontal,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderHorizontal;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderHorizontal);\n\t\t}\n\t}\n\t\n\t\n\tcreateHeadersElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-headers\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\treturn el;\n\t}\n\n\tcreateHeaderContentsElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header-contents\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateHeaderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tif(!this.table.options.headerVisible){\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\t\t\n\t\treturn el;\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return containing contents element\n\tgetContentsElement(){\n\t\treturn this.contentsElement;\n\t}\n\t\n\t\n\t//return header containing element\n\tgetHeadersElement(){\n\t\treturn this.headersElement;\n\t}\n\t\n\t//scroll horizontally to match table body\n\tscrollHorizontal(left){\n\t\tthis.contentsElement.scrollLeft = left;\n\n\t\tthis.scrollLeft = left;\n\t\t\n\t\tthis.renderer.scrollColumns(left);\n\t}\n\n\tinitializeScrollWheelWatcher(){\n\t\tthis.contentsElement.addEventListener(\"wheel\", (e) => {\n\t\t\tvar left;\n\n\t\t\tif(e.deltaX){\n\t\t\t\tleft = this.contentsElement.scrollLeft + e.deltaX;\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t///////////// Column Setup Functions /////////////\n\tgenerateColumnsFromRowData(data){\n\t\tvar cols = [],\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\n\t\trow, sorter;\n\t\t\n\t\tif(data && data.length){\n\t\t\t\n\t\t\trow = data[0];\n\t\t\t\n\t\t\tfor(var key in row){\n\t\t\t\tlet col = {\n\t\t\t\t\tfield:key,\n\t\t\t\t\ttitle:key,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tlet value = row[key];\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(value)){\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcol.sorter = sorter;\n\t\t\t\t\n\t\t\t\tcols.push(col);\n\t\t\t}\n\t\t\t\n\t\t\tif(definitions){\n\t\t\t\t\n\t\t\t\tswitch(typeof definitions){\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(definitions)){\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tvar match = definitions.find((def) => {\n\t\t\t\t\t\t\t\t\treturn def.field === col.field;\n\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\tif(match){\n\t\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tif(definitions[col.field]){\n\t\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.table.options.columns = cols;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.table.options.columns = cols;\n\t\t\t}\n\t\t\t\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t}\n\t\n\tsetColumns(cols, row){\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\n\t\t\n\t\tthis.columns = [];\n\t\tthis.columnsByIndex = [];\n\t\tthis.columnsByField = {};\n\t\t\n\t\tthis.dispatch(\"columns-loading\");\n\t\t\n\t\tcols.forEach((def, i) => {\n\t\t\tthis._addColumn(def);\n\t\t});\n\t\t\n\t\tthis._reIndexColumns();\n\t\t\n\t\tthis.dispatch(\"columns-loaded\");\n\t\t\n\t\tthis.rerenderColumns(false, true);\n\t\t\n\t\tthis.redraw(true);\n\t}\n\t\n\t_addColumn(definition, before, nextToColumn){\n\t\tvar column = new Column(definition, this),\n\t\tcolEl = column.getElement(),\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\t\t\n\t\tif(nextToColumn && index > -1){\n\t\t\tvar topColumn = nextToColumn.getTopColumn();\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\n\t\t\tvar nextEl = topColumn.getElement();\n\t\t\t\n\t\t\tif(before){\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t}else{\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t}else{\n\t\t\tif(before){\n\t\t\t\tthis.columns.unshift(column);\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t}else{\n\t\t\t\tthis.columns.push(column);\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\t\t\n\t\tcolumn.columnRendered();\n\t\t\n\t\treturn column;\n\t}\n\t\n\tregisterColumnField(col){\n\t\tif(col.definition.field){\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t}\n\t\n\tregisterColumnPosition(col){\n\t\tthis.columnsByIndex.push(col);\n\t}\n\t\n\t_reIndexColumns(){\n\t\tthis.columnsByIndex = [];\n\t\t\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t}\n\t\n\t//ensure column headers take up the correct amount of space in column groups\n\tverticalAlignHeaders(){\n\t\tvar minHeight = 0;\n\t\t\n\t\tif(!this.redrawBlock){\n\n\t\t\tthis.headersElement.style.height=\"\";\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.clearVerticalAlign();\n\t\t\t});\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tvar height = column.getHeight();\n\t\t\t\t\n\t\t\t\tif(height > minHeight){\n\t\t\t\t\tminHeight = height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.headersElement.style.height = minHeight + \"px\";\n\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\n\t\t\t});\n\t\t\t\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\t//////////////// Column Details /////////////////\n\tfindColumn(subject){\n\t\tvar columns;\n\n\t\tif(typeof subject == \"object\"){\n\t\t\t\n\t\t\tif(subject instanceof Column){\n\t\t\t\t//subject is column element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof ColumnComponent){\n\t\t\t\t//subject is public column component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\n\t\t\t\tcolumns = [];\n\n\t\t\t\tthis.columns.forEach((column) => {\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t\t});\n\n\t\t\t\t//subject is a HTML element of the column header\n\t\t\t\tlet match = columns.find((column) => {\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\t//subject should be treated as the field name of the column\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetColumnByField(field){\n\t\treturn this.columnsByField[field];\n\t}\n\t\n\tgetColumnsByFieldRoot(root){\n\t\tvar matches = [];\n\t\t\n\t\tObject.keys(this.columnsByField).forEach((field) => {\n\t\t\tvar fieldRoot = this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator)[0] : field;\n\t\t\tif(fieldRoot === root){\n\t\t\t\tmatches.push(this.columnsByField[field]);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn matches;\n\t}\n\t\n\tgetColumnByIndex(index){\n\t\treturn this.columnsByIndex[index];\n\t}\n\t\n\tgetFirstVisibleColumn(){\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\n\t\t\treturn col.visible;\n\t\t});\n\t\t\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t}\n\n\tgetVisibleColumnsByIndex() {\n\t\treturn this.columnsByIndex.filter((col) => col.visible);\n\t}\n\t\n\tgetColumns(){\n\t\treturn this.columns;\n\t}\n\t\n\tfindColumnIndex(column){\n\t\treturn this.columnsByIndex.findIndex((col) => {\n\t\t\treturn column === col;\n\t\t});\n\t}\n\t\n\t//return all columns that are not groups\n\tgetRealColumns(){\n\t\treturn this.columnsByIndex;\n\t}\n\t\n\t//traverse across columns and call action\n\ttraverse(callback){\n\t\tthis.columnsByIndex.forEach((column,i) =>{\n\t\t\tcallback(column, i);\n\t\t});\n\t}\n\t\n\t//get definitions of actual columns\n\tgetDefinitions(active){\n\t\tvar output = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(!active || (active && column.visible)){\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\t//get full nested definition tree\n\tgetDefinitionTree(){\n\t\tvar output = [];\n\t\t\n\t\tthis.columns.forEach((column) => {\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(structured){\n\t\tvar output = [],\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetWidth(){\n\t\tvar width = 0;\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn width;\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\n\t\t\n\t\tif(after){\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t\t}\n\t\t\n\t\tthis.moveColumnActual(from, to, after);\n\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\t\n\tmoveColumnActual(from, to, after){\n\t\tif(from.parent.isGroup){\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t\t}else{\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t\t}\n\t\t\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\t\t\n\t\tthis.rerenderColumns(true);\n\t\t\n\t\tthis.dispatch(\"column-moved\", from, to, after);\n\t\t\n\t\tif(this.subscribedExternal(\"columnMoved\")){\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\t}\n\t\n\t_moveColumnInArray(columns, from, to, after, updateRows){\n\t\tvar\tfromIndex = columns.indexOf(from),\n\t\ttoIndex, rows = [];\n\t\t\n\t\tif (fromIndex > -1) {\n\t\t\t\n\t\t\tcolumns.splice(fromIndex, 1);\n\t\t\t\n\t\t\ttoIndex = columns.indexOf(to);\n\t\t\t\n\t\t\tif (toIndex > -1) {\n\t\t\t\t\n\t\t\t\tif(after){\n\t\t\t\t\ttoIndex = toIndex+1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\t\t\t\n\t\t\tcolumns.splice(toIndex, 0, from);\n\t\t\t\n\t\t\tif(updateRows){\n\t\t\t\t\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\n\t\t\t\t\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\n\t\t\t\t\n\t\t\t\trows.forEach(function(row){\n\t\t\t\t\tif(row.cells.length){\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\t\n\tscrollToColumn(column, position, ifVisible){\n\t\tvar left = 0,\n\t\toffset = column.getLeftOffset(),\n\t\tadjust = 0,\n\t\tcolEl = column.getElement();\n\t\t\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\tadjust = -this.element.clientWidth / 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//check column visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//calculate scroll position\n\t\t\t\tleft = offset + adjust;\n\t\t\t\t\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t\t\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tgenerateCells(row){\n\t\tvar cells = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\t\t\n\t\treturn cells;\n\t}\n\t\n\t//////////////// Column Management /////////////////\n\tgetFlexBaseWidth(){\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\n\t\tfixedWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar if present\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\t\t\n\t\tthis.columnsByIndex.forEach(function(column){\n\t\t\tvar width, minWidth, colWidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\twidth = column.definition.width || 0;\n\t\t\t\t\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\t\t\t\t\n\t\t\t\tif(typeof(width) == \"string\"){\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn fixedWidth;\n\t}\n\t\n\taddColumn(definition, before, nextToColumn){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\t\t\t\n\t\t\tthis._reIndexColumns();\n\t\t\t\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\n\t\t\t\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\t\t\t\n\t\t\tthis.redraw(true);\n\t\t\t\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t\t\n\t\t\tthis.rerenderColumns();\n\t\t\t\n\t\t\tresolve(column);\n\t\t});\n\t}\n\t\n\t//remove column from system\n\tderegisterColumn(column){\n\t\tvar field = column.getField(),\n\t\tindex;\n\t\t\n\t\t//remove from field list\n\t\tif(field){\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\t\t\n\t\t//remove from index list\n\t\tindex = this.columnsByIndex.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\t\t\n\t\t//remove from column list\n\t\tindex = this.columns.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\t\t\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.redraw();\n\t}\n\t\n\trerenderColumns(update, silent){\n\t\tif(!this.redrawBlock){\n\t\t\tthis.renderer.rerenderColumns(update, silent);\n\t\t}else{\n\t\t\tif(update === false || (update === true && this.redrawBlockUpdate === null)){\n\t\t\t\tthis.redrawBlockUpdate = update;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockUpdate = null;\n\t}\n\t\n\trestoreRedraw(){\n\t\tthis.redrawBlock = false;\n\t\tthis.verticalAlignHeaders();\n\t\tthis.renderer.rerenderColumns(this.redrawBlockUpdate);\n\t\t\n\t}\n\t\n\t//redraw columns\n\tredraw(force){\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.verticalAlignHeaders();\n\t\t}\n\t\t\n\t\tif(force){\n\t\t\tthis.table.rowManager.resetScroll();\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\t\t\n\t\tif(!this.confirm(\"table-redrawing\", force)){\n\t\t\tthis.layoutRefresh(force);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-redraw\", force);\n\t\t\n\t\tthis.table.footerManager.redraw();\n\t}\n}","//public row object\nexport default class RowComponent {\n\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\tgetIndex(){\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t}\n\n\tgetPosition(){\n\t\treturn this._row.getPosition();\n\t}\n\n\twatchPosition(callback){\n\t\treturn this._row.watchPosition(callback);\n\t}\n\n\tdelete(){\n\t\treturn this._row.delete();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._row.table.rowManager.scrollToRow(this._row, position, ifVisible);\n\t}\n\n\tmove(to, after){\n\t\tthis._row.moveToRow(to, after);\n\t}\n\n\tupdate(data){\n\t\treturn this._row.updateData(data);\n\t}\n\n\tnormalizeHeight(){\n\t\tthis._row.normalizeHeight(true);\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n\n\treformat(){\n\t\treturn this._row.reinitialize();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetNextRow(){\n\t\tvar row = this._row.nextRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n\n\tgetPrevRow(){\n\t\tvar row = this._row.prevRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport RowComponent from './RowComponent.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Row extends CoreFeature{\n\tconstructor (data, parent, type = \"row\"){\n\t\tsuper(parent.table);\n\t\t\n\t\tthis.parent = parent;\n\t\tthis.data = {};\n\t\tthis.type = type; //type of element\n\t\tthis.element = false;\n\t\tthis.modules = {}; //hold module variables;\n\t\tthis.cells = [];\n\t\tthis.height = 0; //hold element height\n\t\tthis.heightStyled = \"\"; //hold element height pre-styled to improve render efficiency\n\t\tthis.manualHeight = false; //user has manually set row height\n\t\tthis.outerHeight = 0; //hold elements outer height\n\t\tthis.initialized = false; //element has been rendered\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\t\tthis.position = 0; //store position of element in row list\n\t\tthis.positionWatchers = [];\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.created = false;\n\t\t\n\t\tthis.setData(data);\n\t}\n\t\n\tcreate(){\n\t\tif(!this.created){\n\t\t\tthis.created = true;\n\t\t\tthis.generateElement();\n\t\t}\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\tthis.element = el;\n\t}\n\t\n\tgetElement(){\n\t\tthis.create();\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.createElement();\n\t\tthis.dispatch(\"row-init\", this);\n\t}\n\t\n\tgenerateCells(){\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t}\n\t\n\t//functions to setup on first render\n\tinitialize(force, inFragment){\n\t\tthis.create();\n\t\t\n\t\tif(!this.initialized || force){\n\t\t\t\n\t\t\tthis.deleteCells();\n\t\t\t\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-before\", this);\n\t\t\t\n\t\t\tthis.generateCells();\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t\t\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this, inFragment);\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.normalizeHeight();\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout\", this);\n\t\t\t\n\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-after\", this);\n\t\t}else{\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this, inFragment);\n\t\t}\n\t}\n\n\trendered(){\n\t\tthis.cells.forEach((cell) => {\n\t\t\tcell.cellRendered();\n\t\t});\n\t}\n\t\n\treinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t}\n\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tdeinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t}\n\t\n\treinitialize(children){\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(!this.manualHeight){\n\t\t\tthis.height = 0;\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.initialize(true);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"row-relayout\", this);\n\t}\n\t\n\t//get heights when doing bulk row style calcs in virtual DOM\n\tcalcHeight(force){\n\t\tvar maxHeight = 0,\n\t\tminHeight;\n\t\t\n\t\tif(this.table.options.rowHeight){\n\t\t\tthis.height = this.table.options.rowHeight;\n\t\t}else{\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\t\t\t\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tvar height = cell.getHeight();\n\t\t\t\tif(height > maxHeight){\n\t\t\t\t\tmaxHeight = height;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t\t}else{\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n\t\n\t//set of cells\n\tsetCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setHeight();\n\t\t});\n\t\t\n\t\tthis.heightInitialized = true;\n\t}\n\t\n\tclearCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.clearHeight();\n\t\t});\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(force){\n\t\tif(force && !this.table.options.rowHeight){\n\t\t\tthis.clearCellHeight();\n\t\t}\n\t\t\n\t\tthis.calcHeight(force);\n\t\t\n\t\tthis.setCellHeight();\n\t}\n\t\n\t//set height of rows\n\tsetHeight(height, force){\n\t\tif(this.height != height || force){\n\t\t\t\n\t\t\tthis.manualHeight = true;\n\t\t\t\n\t\t\tthis.height = height;\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\t\t\t\n\t\t\tthis.setCellHeight();\n\t\t\t\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\t//return rows outer Width\n\tgetWidth(){\n\t\treturn this.element.offsetWidth;\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\t\n\t//////////////// Data Management /////////////////\n\tsetData(data){\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\n\t\t\n\t\tthis.dispatch(\"row-data-init-after\", this);\n\t}\n\t\n\t//update the rows data\n\tupdateData(updatedData){\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\n\t\ttempData = {},\n\t\tnewRowData;\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof updatedData === \"string\"){\n\t\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\n\t\t\t\n\t\t\tif(this.subscribed(\"row-data-changing\")){\n\t\t\t\ttempData = Object.assign(tempData, this.data);\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\n\t\t\t\n\t\t\t//set data\n\t\t\tfor (let attrname in newRowData) {\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\n\t\t\t\n\t\t\t//update affected cells only\n\t\t\tfor (let attrname in updatedData) {\n\t\t\t\t\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\n\t\t\t\t\n\t\t\t\tcolumns.forEach((column) => {\n\t\t\t\t\tlet cell = this.getCell(column.getField());\n\t\t\t\t\t\n\t\t\t\t\tif(cell){\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\n\t\t\t\t\t\tif(cell.getValue() !== value){\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(visible){\n\t\t\t\t\t\t\t\tcell.cellRendered();\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\t\n\t\t\t//Partial reinitialization if visible\n\t\t\tif(visible){\n\t\t\t\tthis.normalizeHeight(true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.heightStyled = \"\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\n\t\t\t\n\t\t\t//this.reinitialize();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\tgetData(transform){\n\t\tif(transform){\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\tgetCell(column){\n\t\tvar match = false;\n\t\t\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\t\t\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\tmatch = this.cells.find(function(cell){\n\t\t\treturn cell.column === column;\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetCellIndex(findCell){\n\t\treturn this.cells.findIndex(function(cell){\n\t\t\treturn cell === findCell;\n\t\t});\n\t}\n\t\n\tfindCell(subject){\n\t\treturn this.cells.find((cell) => {\n\t\t\treturn cell.element === subject;\n\t\t});\n\t}\n\t\n\tgetCells(){\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\treturn this.cells;\n\t}\n\t\n\tnextRow(){\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tprevRow(){\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tmoveToRow(to, before){\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\t\t\n\t\tif(toRow){\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t}\n\t\n\t///////////////////// Actions /////////////////////\n\tdelete(){\n\t\tthis.dispatch(\"row-delete\", this);\n\t\t\n\t\tthis.deleteActual();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\tdeleteActual(blockRedraw){\n\t\tthis.detachModules();\n\t\t\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\t\t\n\t\tthis.deleteCells();\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\tthis.element = false;\n\t\t\n\t\tthis.dispatch(\"row-deleted\", this);\n\t}\n\t\n\tdetachModules(){\n\t\tthis.dispatch(\"row-deleting\", this);\n\t}\n\t\n\tdeleteCells(){\n\t\tvar cellCount = this.cells.length;\n\t\t\n\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t}\n\t\n\twipe(){\n\t\tthis.detachModules();\n\t\tthis.deleteCells();\n\t\t\n\t\tif(this.element){\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.modules = {};\n\t}\n\n\tisDisplayed(){\n\t\treturn this.table.rowManager.getDisplayRows().includes(this);\n\t}\n\n\tgetPosition(){\n\t\treturn this.isDisplayed() ? this.position : false;\n\t}\n\n\tsetPosition(position){\n\t\tif(position != this.position){\n\t\t\tthis.position = position;\n\n\t\t\tthis.positionWatchers.forEach((callback) => {\n\t\t\t\tcallback(this.position);\n\t\t\t});\n\t\t}\n\t}\n\n\twatchPosition(callback){\n\t\tthis.positionWatchers.push(callback);\n\n\t\tcallback(this.position);\n\t}\n\t\n\tgetGroup(){\n\t\treturn this.modules.group || false;\n\t}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new RowComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class BasicVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.verticalFillMode = \"fill\";\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\t\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\t\t\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\t\n\t\telement.style.minWidth = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\t}\n\t\n\trenderRows() {\n\t\tvar element = this.tableElement,\n\t\tonlyGroupHeaders = true,\n\t\ttableFrag = document.createDocumentFragment(),\n\t\trows = this.rows();\n\t\t\n\t\trows.forEach((row, index) => {\n\t\t\tthis.styleRow(row, index);\n\t\t\trow.initialize(false, true);\n\t\t\t\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t\t\n\t\t\ttableFrag.appendChild(row.getElement());\n\t\t});\n\t\t\n\t\telement.appendChild(tableFrag);\n\t\t\n\t\trows.forEach((row) => {\n\t\t\trow.rendered();\n\t\t\t\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.calcHeight(true);\n\t\t\t}\n\t\t});\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.setCellHeight();\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n\t\n\trerenderRows(callback){\t\n\t\tthis.clearRows();\n\t\t\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t\t\n\t\tthis.renderRows();\n\n\t\tif(!this.rows().length){\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\t}\n\t\n\tscrollToRowNearestTop(row){\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\n\t\t\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\n\t}\n\t\n\tscrollToRow(row){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\n\t}\n\t\n\tvisibleRows(includingBuffer){\n\t\treturn this.rows();\n\t}\n\t\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class VirtualDomVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.verticalFillMode = \"fill\";\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\t\tthis.vDomBottom = 0; //hold position for last rendered row in the virtual DOM\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t}\n\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\telement.style.paddingTop = \"\";\n\t\telement.style.paddingBottom = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\n\t\tthis.elementVertical.scrollTop = 0;\n\t\tthis.elementVertical.scrollLeft = 0;\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\t\tthis.vDomBottom = 0;\n\t\tthis.vDomTopPad = 0;\n\t\tthis.vDomBottomPad = 0;\n\t\tthis.vDomScrollPosTop = 0;\n\t\tthis.vDomScrollPosBottom = 0;\n\t}\n\n\trenderRows(){\n\t\tthis._virtualRenderFill();\n\t}\n\n\trerenderRows(callback){\n\t\tvar scrollTop = this.elementVertical.scrollTop;\n\t\tvar topRow = false;\n\t\tvar topOffset = false;\n\n\t\tvar left = this.table.rowManager.scrollLeft;\n\n\t\tvar rows = this.rows();\n\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\n\t\t\tif(rows[i]){\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\n\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\ttopRow = i;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trows.forEach((row) => {\n\t\t\trow.deinitializeHeight();\n\t\t});\n\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\n\t\tif(this.rows().length){\n\t\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\n\t\t}else{\n\t\t\tthis.clear();\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\n\t\tthis.scrollColumns(left);\n\t}\n\n\tscrollColumns(left){\n\t\tthis.table.rowManager.scrollHorizontal(left);\n\t}\n\n\tscrollRows(top, dir){\n\t\tvar topDiff = top - this.vDomScrollPosTop;\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\t\tvar rows = this.rows();\n\n\t\tthis.scrollTop = top;\n\n\t\tif(-topDiff > margin || bottomDiff > margin){\n\t\t\t//if big scroll redraw table;\n\t\t\tvar left = this.table.rowManager.scrollLeft;\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\n\t\t\tthis.scrollColumns(left);\n\t\t}else{\n\n\t\t\tif(dir){\n\t\t\t\t//scrolling up\n\t\t\t\tif(topDiff < 0){\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\n\t\t\t\t}\n\n\t\t\t\tif(bottomDiff < 0){\n\t\t\t\t\t//hide bottom row if needed\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(bottomDiff >= 0){\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\n\t\t\t\t}\n\n\t\t\t\t//scrolling down\n\t\t\t\tif(topDiff >= 0){\n\t\t\t\t\t//hide top row if needed\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresize(){\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\tvar rowIndex = this.rows().indexOf(row);\n\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\n\t}\n\n\tscrollToRow(row){\n\t\tvar index = this.rows().indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tthis._virtualRenderFill(index, true);\n\t\t}\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\tvar topEdge = this.elementVertical.scrollTop,\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\n\t\ttopFound = false,\n\t\ttopRow = 0,\n\t\tbottomRow = 0,\n\t\trows = this.rows();\n\n\t\tif(includingBuffer){\n\t\t\ttopRow = this.vDomTop;\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}else{\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\t\t\t\tif(rows[i]){\n\t\t\t\t\tif(!topFound){\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tbreak;\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(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}\n\t\t\t}\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t}\n\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\n\t//full virtual render\n\t_virtualRenderFill(position, forceMove, offset) {\n\t\tvar\telement = this.tableElement,\n\t\tholder = this.elementVertical,\n\t\ttopPad = 0,\n\t\trowsHeight = 0,\n\t\trowHeight = 0,\n\t\theightOccupied = 0,\n\t\ttopPadHeight = 0,\n\t\ti = 0,\n\t\trows = this.rows(),\n\t\trowsCount = rows.length,\n\t\tindex = 0,\n\t\trow,\n\t\trowFragment,\n\t\trenderedRows = [],\n\t\ttotalRowsRendered = 0,\n\t\trowsToRender = 0,\n\t\tfixedHeight = this.table.rowManager.fixedHeight,\n\t\tcontainerHeight = this.elementVertical.clientHeight, \n\t\tavgRowHeight = this.table.options.rowHeight, \n\t\tresized = true;\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif(!position){\n\t\t\tthis.clear();\n\t\t}else {\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\t\t//check if position is too close to bottom of table\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\n\n\t\t\tif(heightOccupied < containerHeight){\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\n\t\t\t\tif(position < 0){\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\n\t\t\tthis.vDomTop = position;\n\t\t\tthis.vDomBottom = position -1;\n\n\t\t\tif(fixedHeight || this.table.options.maxHeight) {\n\t\t\t\tif(avgRowHeight) {\n\t\t\t\t\trowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight);\n\t\t\t\t}\n\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender));\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowsToRender = rowsCount;\n\t\t\t}\n\n\t\t\twhile(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) {\n\t\t\t\trenderedRows = [];\n\t\t\t\trowFragment = document.createDocumentFragment();\n\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {\t\n\t\t\t\t\tindex = this.vDomBottom + 1,\n\t\t\t\t\trow = rows[index];\n\n\t\t\t\t\tthis.styleRow(row, index);\n\n\t\t\t\t\trow.initialize(false, true);\n\t\t\t\t\tif(!row.heightInitialized && !this.table.options.rowHeight){\n\t\t\t\t\t\trow.clearCellHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\trowFragment.appendChild(row.getElement());\n\t\t\t\t\trenderedRows.push(row);\n\t\t\t\t\tthis.vDomBottom ++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif(!renderedRows.length){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telement.appendChild(rowFragment);\n\t\t\t\t\n\t\t\t\t// NOTE: The next 3 loops are separate on purpose\n\t\t\t\t// This is to batch up the dom writes and reads which drastically improves performance \n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trow.rendered();\n\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.calcHeight(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.setCellHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trowHeight = row.getHeight();\n\t\t\t\t\t\n\t\t\t\t\tif(totalRowsRendered < topPad){\n\t\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t\t}else {\n\t\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t}\n\t\t\t\t\ttotalRowsRendered++;\n\t\t\t\t});\n\n\t\t\t\tresized = this.table.rowManager.adjustTableSize();\n\t\t\t\tcontainerHeight = this.elementVertical.clientHeight;\n\t\t\t\tif(resized && (fixedHeight || this.table.options.maxHeight))\n\t\t\t\t{\n\t\t\t\t\tavgRowHeight = rowsHeight / totalRowsRendered;\n\t\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!position){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t//adjust row height to match average of rendered elements\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered);\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\n\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\n\t\t\t}else {\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\t\t\t\n\t\t\telement.style.paddingTop = this.vDomTopPad+\"px\";\n\t\t\telement.style.paddingBottom = this.vDomBottomPad+\"px\";\n\n\t\t\tif(forceMove){\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\tthis.dispatch(\"render-virtual-fill\");\n\t\t}\n\t}\n\n\t_addTopRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomTop -1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tif(this.vDomTop){\n\t\t\t\tlet row = rows[index],\n\t\t\t\trowHeight, initialized;\n\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\n\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.initialize();\n\n\t\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\t\tthis.vDomTop--;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t\ti++;\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad -= paddingAdjust;\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 < 1){\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 -= paddingAdjust;\n\t\t}\n\t}\n\n\t_removeTopRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomTop],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomTop++;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\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\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad += paddingAdjust;\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\n\t\t}\n\t}\n\n\t_addBottomRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomBottom + 1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[index],\n\t\t\trowHeight, initialized;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\ttable.appendChild(row.getElement());\n\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.initialize();\n\n\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tthis.vDomBottom++;\n\t\t\t\t\tindex++;\n\t\t\t\t\ti++;\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\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -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 += paddingAdjust;\n\t\t}\n\t}\n\n\t_removeBottomRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomBottom],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomBottom --;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\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\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad += paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\n\t\t}\n\t}\n\n\t_quickNormalizeRowHeight(rows){\n\t\tfor(let row of rows){\n\t\t\trow.calcHeight();\n\t\t}\n\n\t\tfor(let row of rows){\n\t\t\trow.setCellHeight();\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Row from './row/Row.js';\nimport RowComponent from './row/RowComponent.js';\nimport Helpers from './tools/Helpers.js';\n\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\n\nexport default class RowManager extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = this.createHolderElement(); //containing element\n\t\tthis.tableElement = this.createTableElement(); //table element\n\t\tthis.heightFixer = this.createTableElement(); //table element\n\t\tthis.placeholder = null; //placeholder element\n\t\tthis.placeholderContents = null; //placeholder element\n\t\t\n\t\tthis.firstRender = false; //handle first render\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\n\t\tthis.fixedHeight = false; //current rendering mode\n\t\t\n\t\tthis.rows = []; //hold row data objects\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\t\tthis.activeRowsCount = 0; //count of active rows\n\t\t\n\t\tthis.displayRows = []; //rows currently on display in the table\n\t\tthis.displayRowsCount = 0; //count of display rows\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\n\t\t\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\n\t\t\n\t\tthis.scrollbarWidth = 0;\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t//////////////// Setup Functions /////////////////\n\t\n\tcreateHolderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-tableholder\");\n\t\tel.setAttribute(\"tabindex\", 0);\n\t\t// el.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateTableElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-table\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitializePlaceholder(){\n\t\tvar placeholder = this.table.options.placeholder;\n\t\t\n\t\tif(typeof placeholder === \"function\"){\n\t\t\tplaceholder = placeholder.call(this.table);\n\t\t}\n\t\t\n\t\tplaceholder = this.chain(\"placeholder\", [placeholder], placeholder, placeholder) || placeholder;\n\t\t\n\t\t//configure placeholder element\n\t\tif(placeholder){\t\n\t\t\tlet el = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\t\t\t\n\t\t\tif(typeof placeholder == \"string\"){\n\t\t\t\tlet contents = document.createElement(\"div\");\n\t\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\n\t\t\t\tcontents.innerHTML = placeholder;\n\t\t\t\t\n\t\t\t\tel.appendChild(contents);\n\t\t\t\t\n\t\t\t\tthis.placeholderContents = contents;\n\t\t\t\t\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && placeholder instanceof HTMLElement){\n\t\t\t\t\n\t\t\t\tel.appendChild(placeholder);\n\t\t\t\tthis.placeholderContents = placeholder;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Invalid placeholder provided, must be string or HTML Element\", placeholder);\n\t\t\t\t\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.placeholder = el;\n\t\t}\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\t\n\t//return table element\n\tgetTableElement(){\n\t\treturn this.tableElement;\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializePlaceholder();\n\t\tthis.initializeRenderer();\n\t\t\n\t\t//initialize manager\n\t\tthis.element.appendChild(this.tableElement);\n\t\t\n\t\tthis.firstRender = true;\n\t\t\n\t\t//scroll header along with table body\n\t\tthis.element.addEventListener(\"scroll\", () => {\n\t\t\tvar left = this.element.scrollLeft,\n\t\t\tleftDir = this.scrollLeft > left,\n\t\t\ttop = this.element.scrollTop,\n\t\t\ttopDir = this.scrollTop > top;\n\t\t\t\n\t\t\t//handle horizontal scrolling\n\t\t\tif(this.scrollLeft != left){\n\t\t\t\tthis.scrollLeft = left;\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\n\t\t\t\t\n\t\t\t\tthis._positionPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\t//handle vertical scrolling\n\t\t\tif(this.scrollTop != top){\n\t\t\t\tthis.scrollTop = top;\n\t\t\t\t\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t////////////////// Row Manipulation //////////////////\n\tfindRow(subject){\n\t\tif(typeof subject == \"object\"){\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\t//subject is a HTML element of the row\n\t\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\t\treturn row.getElement() === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}else if(subject === null){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\treturn false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t\t\n\t\t\treturn match || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetRowFromDataObject(data){\n\t\tvar match = this.rows.find((row) => {\n\t\t\treturn row.data === data;\n\t\t});\n\t\t\n\t\treturn match || false;\n\t}\n\t\n\tgetRowFromPosition(position){\n\t\treturn this.getDisplayRows().find((row) => {\n\t\t\treturn row.getPosition() === position && row.isDisplayed();\n\t\t});\n\t}\n\t\n\tscrollToRow(row, position, ifVisible){\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\tsetData(data, renderInPosition, columnsChanged){\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\n\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\tthis._setDataActual(data, true);\n\t\t\t\t}else{\n\t\t\t\t\tthis.reRenderInPosition(() => {\n\t\t\t\t\t\tthis._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\t\t\t\tthis.resetScroll();\n\t\t\t\t\n\t\t\t\tthis._setDataActual(data);\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\t_setDataActual(data, renderInPosition){\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\n\t\t\n\t\tthis._wipeElements();\n\t\t\n\t\tif(Array.isArray(data)){\n\t\t\tthis.dispatch(\"data-processing\", data);\n\t\t\t\n\t\t\tdata.forEach((def, i) => {\n\t\t\t\tif(def && typeof def === \"object\"){\n\t\t\t\t\tvar row = new Row(def, this);\n\t\t\t\t\tthis.rows.push(row);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\n\t\t\t\n\t\t\tthis.dispatch(\"data-processed\", data);\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\n\t\t}else{\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\n\t\t}\n\t}\n\t\n\t_wipeElements(){\n\t\tthis.dispatch(\"rows-wipe\");\n\t\t\n\t\tthis.destroy();\n\t\t\n\t\tthis.adjustTableSize();\n\t\t\n\t\tthis.dispatch(\"rows-wiped\");\n\t}\n\t\n\tdestroy(){\n\t\tthis.rows.forEach((row) => {\n\t\t\trow.wipe();\n\t\t});\n\t\t\n\t\tthis.rows = [];\n\t\tthis.activeRows = [];\n\t\tthis.activeRowsPipeline = [];\n\t\tthis.activeRowsCount = 0;\n\t\tthis.displayRows = [];\n\t\tthis.displayRowsCount = 0;\n\t}\n\t\n\tdeleteRow(row, blockRedraw){\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\tactiveIndex = this.activeRows.indexOf(row);\n\t\t\n\t\tif(activeIndex > -1){\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\t\t\n\t\tif(allIndex > -1){\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tvar displayIndex = rows.indexOf(row);\n\t\t\t\n\t\t\tif(displayIndex > -1){\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis.tableEmpty();\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\n\t\t}\n\t}\n\t\n\taddRow(data, pos, index, blockRedraw){\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\t\treturn row;\n\t}\n\t\n\t//add multiple rows\n\taddRows(data, pos, index, refreshDisplayOnly){\n\t\tvar rows = [];\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tpos = this.findAddRowPos(pos);\n\t\t\t\n\t\t\tif(!Array.isArray(data)){\n\t\t\t\tdata = [data];\n\t\t\t}\n\t\t\t\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\n\t\t\t\tdata.reverse();\n\t\t\t}\n\t\t\t\n\t\t\tdata.forEach((item, i) => {\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\n\t\t\t\trows.push(row);\n\t\t\t\tthis.dispatch(\"row-added\", row, item, pos, index);\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(refreshDisplayOnly ? \"displayPipeline\" : false, false, true);\n\t\t\t\n\t\t\tthis.regenerateRowPositions();\n\t\t\t\n\t\t\tif(this.displayRowsCount){\n\t\t\t\tthis._clearPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\tresolve(rows);\n\t\t});\n\t}\n\t\n\tfindAddRowPos(pos){\n\t\tif(typeof pos === \"undefined\"){\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\t\t\n\t\tif(pos === \"pos\"){\n\t\t\tpos = true;\n\t\t}\n\t\t\n\t\tif(pos === \"bottom\"){\n\t\t\tpos = false;\n\t\t}\n\t\t\n\t\treturn pos;\n\t}\n\t\n\taddRowActual(data, pos, index, blockRedraw){\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\ttop = this.findAddRowPos(pos),\n\t\tallIndex = -1,\n\t\tactiveIndex, chainResult;\n\t\t\n\t\tif(!index){\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\n\t\t\t\n\t\t\tindex = chainResult.index;\n\t\t\ttop = chainResult.top;\n\t\t}\n\t\t\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tindex = this.findRow(index);\n\t\t}\n\t\t\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\n\t\t\n\t\tif(index){\n\t\t\tallIndex = this.rows.indexOf(index);\n\t\t}\n\t\t\n\t\tif(index && allIndex > -1){\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\n\t\t\t\n\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\t\t\t\t\n\t\t\t\tif(displayIndex > -1){\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(activeIndex > -1){\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\n\t\t\t}\n\t\t\t\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(top){\n\t\t\t\t\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.unshift(row);\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}else{\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.push(row);\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t}\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\treturn row;\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tthis.dispatch(\"row-move\", from, to, after);\n\t\t\n\t\tthis.moveRowActual(from, to, after);\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatch(\"row-moved\", from, to, after);\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\n\t}\n\t\n\tmoveRowActual(from, to, after){\n\t\tthis.moveRowInArray(this.rows, from, to, after);\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tthis.moveRowInArray(rows, from, to, after);\n\t\t});\n\t\t\n\t\tthis.dispatch(\"row-moving\", from, to, after);\n\t}\n\t\n\tmoveRowInArray(rows, from, to, after){\n\t\tvar\tfromIndex, toIndex, start, end;\n\t\t\n\t\tif(from !== to){\n\t\t\t\n\t\t\tfromIndex = rows.indexOf(from);\n\t\t\t\n\t\t\tif (fromIndex > -1) {\n\t\t\t\t\n\t\t\t\trows.splice(fromIndex, 1);\n\t\t\t\t\n\t\t\t\ttoIndex = rows.indexOf(to);\n\t\t\t\t\n\t\t\t\tif (toIndex > -1) {\n\t\t\t\t\t\n\t\t\t\t\tif(after){\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//restyle rows\n\t\t\tif(rows === this.getDisplayRows()){\n\t\t\t\t\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\n\t\t\t\t\n\t\t\t\tfor(let i = start; i <= end; i++){\n\t\t\t\t\tif(rows[i]){\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearData(){\n\t\tthis.setData([]);\n\t}\n\t\n\tgetRowIndex(row){\n\t\treturn this.findRowIndex(row, this.rows);\n\t}\n\t\n\tgetDisplayRowIndex(row){\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\t\treturn index > -1 ? index : false;\n\t}\n\t\n\tnextDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tnextRow = false;\n\t\t\n\t\t\n\t\tif(index !== false && index < this.displayRowsCount -1){\n\t\t\tnextRow = this.getDisplayRows()[index+1];\n\t\t}\n\t\t\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn nextRow;\n\t}\n\t\n\tprevDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tprevRow = false;\n\t\t\n\t\tif(index){\n\t\t\tprevRow = this.getDisplayRows()[index-1];\n\t\t}\n\t\t\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn prevRow;\n\t}\n\t\n\tfindRowIndex(row, list){\n\t\tvar rowIndex;\n\t\t\n\t\trow = this.findRow(row);\n\t\t\n\t\tif(row){\n\t\t\trowIndex = list.indexOf(row);\n\t\t\t\n\t\t\tif(rowIndex > -1){\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tgetData(active, transform){\n\t\tvar output = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tif(row.type == \"row\"){\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(active){\n\t\tvar\toutput = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetDataCount(active){\n\t\tvar rows = this.getRows(active);\n\t\t\n\t\treturn rows.length;\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tthis.scrollLeft = left;\n\t\tthis.element.scrollLeft = left;\n\t\t\n\t\tthis.dispatch(\"scroll-horizontal\", left);\n\t}\n\t\n\tregisterDataPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.dataPipeline.push({handler, priority});\n\t\t\tthis.dataPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\tregisterDisplayPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.displayPipeline.push({handler, priority});\n\t\t\tthis.displayPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\t//set active data set\n\trefreshActiveData(handler, skipStage, renderInPosition){\n\t\tvar table = this.table,\n\t\tstage = \"\",\n\t\tindex = 0,\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"];\n\t\t\n\t\tif(!this.table.destroyed){\n\t\t\tif(typeof handler === \"function\"){\n\t\t\t\tindex = this.dataPipeline.findIndex((item) => {\n\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(index > -1){\n\t\t\t\t\tstage = \"dataPipeline\";\n\t\t\t\t\t\n\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\tif(index == this.dataPipeline.length - 1){\n\t\t\t\t\t\t\tstage = \"display\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\n\t\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\tstage = \"displayPipeline\";\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\n\t\t\t\t\t\t\t\tstage = \"end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tindex++;\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\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstage = handler || \"all\";\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.redrawBlock){\n\t\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\n\t\t\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tskipStage: skipStage,\n\t\t\t\t\t\trenderInPosition: renderInPosition,\n\t\t\t\t\t\tstage:stage,\n\t\t\t\t\t\tindex:index,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\tif(Helpers.elVisible(this.element)){\n\t\t\t\t\tif(renderInPosition){\n\t\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!handler){\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.renderTable();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\n\t\t\t\t\t\t\tthis.table.columnManager.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"data-refreshed\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\trefreshPipelines(handler, stage, index, renderInPosition){\n\t\tthis.dispatch(\"data-refreshing\");\n\t\t\n\t\tif(!handler || !this.activeRowsPipeline[0]){\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\n\t\t}\n\t\t\n\t\t//cascade through data refresh stages\n\t\tswitch(stage){\n\t\t\tcase \"all\":\n\t\t\t//handle case where all data needs refreshing\n\t\t\t\n\t\t\tcase \"dataPipeline\":\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\n\t\t\t\t\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\tindex = 0;\n\t\t\t\tthis.resetDisplayRows();\n\t\t\t\n\t\t\tcase \"displayPipeline\":\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\n\t\t\t\t\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"end\":\n\t\t\t//case to handle scenario when trying to skip past end stage\n\t\t\t\tthis.regenerateRowPositions();\n\t\t}\n\t\t\n\t\tif(this.getDisplayRows().length){\n\t\t\tthis._clearPlaceholder();\n\t\t}\n\t}\n\t\n\t//regenerate row positions\n\tregenerateRowPositions(){\n\t\tvar rows = this.getDisplayRows();\n\t\tvar index = 1;\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\"){\n\t\t\t\trow.setPosition(index);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tsetActiveRows(activeRows){\n\t\tthis.activeRows = this.activeRows = Object.assign([], activeRows);\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t}\n\t\n\t//reset display rows array\n\tresetDisplayRows(){\n\t\tthis.displayRows = [];\n\t\t\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\t}\n\t\n\t//set display row pipeline data\n\tsetDisplayRows(displayRows, index){\n\t\tthis.displayRows[index] = displayRows;\n\t\t\n\t\tif(index == this.displayRows.length -1){\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t\t}\n\t}\n\t\n\tgetDisplayRows(index){\n\t\tif(typeof index == \"undefined\"){\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\n\t\t}else{\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t}\n\t\n\tgetVisibleRows(chain, viewable){\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\n\t\t\n\t\tif(chain){\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t//repeat action across display rows\n\tdisplayRowIterator(callback){\n\t\tthis.activeRowsPipeline.forEach(callback);\n\t\tthis.displayRows.forEach(callback);\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t}\n\t\n\t//return only actual rows (not group headers etc)\n\tgetRows(type){\n\t\tvar rows = [];\n\t\t\n\t\tswitch(type){\n\t\t\tcase \"active\":\n\t\t\t\trows = this.activeRows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.getVisibleRows(false, true);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t///////////////// Table Rendering /////////////////\n\t//trigger rerender of table in current position\n\treRenderInPosition(callback){\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.redrawBlockRenderInPosition = true;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\t\n\t\t\tthis.renderer.rerenderRows(callback);\n\t\t\t\n\t\t\tif(!this.fixedHeight){\n\t\t\t\tthis.adjustTableSize();\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"renderComplete\");\n\t\t}\n\t}\n\t\n\tscrollBarCheck(){\n\t\tvar scrollbarWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar moving table when present\n\t\tif(this.element.scrollHeight > this.element.clientHeight){\n\t\t\tscrollbarWidth = this.element.offsetWidth - this.element.clientWidth;\n\t\t}\n\t\t\n\t\tif(scrollbarWidth !== this.scrollbarWidth){\n\t\t\tthis.scrollbarWidth = scrollbarWidth;\n\t\t\tthis.dispatch(\"scrollbar-vertical\", scrollbarWidth);\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomVertical,\n\t\t\t\"basic\": RendererBasicVertical,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderVertical;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderMode = this.table.options.renderVertical;\n\t\t\t\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t\t\n\t\t\tif((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){\n\t\t\t\tthis.fixedHeight = true;\n\t\t\t}else{\n\t\t\t\tthis.fixedHeight = false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderVertical);\n\t\t}\n\t}\n\t\n\tgetRenderMode(){\n\t\treturn this.renderMode;\n\t}\n\t\n\trenderTable(){\n\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tthis._clearTable();\n\t\t\n\t\tif(this.displayRowsCount){\n\t\t\tthis.renderer.renderRows();\n\t\t\t\n\t\t\tif(this.firstRender){\n\t\t\t\tthis.firstRender = false;\n\t\t\t\t\n\t\t\t\tif(!this.fixedHeight){\n\t\t\t\t\tthis.adjustTableSize();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.layoutRefresh(true);\n\t\t\t}\n\t\t}else{\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t\t\n\t\tif(!this.fixedHeight){\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-layout\");\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis._showPlaceholder();\n\t\t}\n\t\t\n\t\tthis.scrollBarCheck();\n\t\t\n\t\tthis.dispatchExternal(\"renderComplete\");\n\t}\n\t\n\t//show scrollbars on empty table div\n\trenderEmptyScroll(){\n\t\tif(this.placeholder){\n\t\t\tthis.tableElement.style.display = \"none\";\n\t\t}else{\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\n\t\t}\n\t}\n\t\n\t_clearTable(){\t\n\t\tthis._clearPlaceholder();\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.renderer.clearRows();\n\t}\n\t\n\ttableEmpty(){\n\t\tthis.renderEmptyScroll();\n\t\tthis._showPlaceholder();\n\t}\n\n\tcheckPlaceholder(){\n\t\tif(this.displayRowsCount){\n\t\t\tthis._clearPlaceholder();\n\t\t}else{\n\t\t\tthis.tableEmpty();\n\t\t}\n\t}\n\t\n\t_showPlaceholder(){\n\t\tif(this.placeholder){\n\t\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t\t}\n\t\t\t\n\t\t\tthis.initializePlaceholder();\n\t\t\t\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\n\t\t\tthis.getElement().appendChild(this.placeholder);\n\t\t\tthis._positionPlaceholder();\n\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t}\n\t\n\t_clearPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t}\n\t\t\n\t\t// clear empty table placeholder min\n\t\tthis.tableElement.style.minWidth = \"\";\n\t\tthis.tableElement.style.display = \"\";\n\t}\n\t\n\t_positionPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\n\t\t}\n\t}\n\t\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\t\n\t//normalize height of active rows\n\tnormalizeHeight(){\n\t\tthis.activeRows.forEach(function(row){\n\t\t\trow.normalizeHeight();\n\t\t});\n\t}\n\t\n\t//adjust the height of the table holder to fit in the Tabulator element\n\tadjustTableSize(){\n\t\tlet initialHeight = this.element.clientHeight, minHeight;\n\t\tlet resized = false;\n\t\t\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\t\t\t\n\t\t\tif(this.fixedHeight){\n\t\t\t\tminHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + \"px\";\n\t\t\t\t\n\t\t\t\tconst height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.minHeight = minHeight || \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.height = height;\n\t\t\t\tthis.element.style.maxHeight = height;\n\t\t\t} else {\n\t\t\t\tthis.element.style.height = \"\";\n\t\t\t\tthis.element.style.height =\n\t\t\t\tthis.table.element.clientHeight - otherHeight + \"px\";\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t\t}\n\t\t\t\n\t\t\tthis.renderer.resize();\n\t\t\t\n\t\t\t//check if the table has changed size when dealing with variable height tables\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\n\t\t\t\tresized = true;\n\t\t\t\tif(this.subscribed(\"table-resize\")){\n\t\t\t\t\tthis.dispatch(\"table-resize\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t}\n\t\t\n\t\tthis._positionPlaceholder();\n\t\treturn resized;\n\t}\n\t\n\t//reinitialize all rows\n\treinitialize(){\n\t\tthis.rows.forEach(function(row){\n\t\t\trow.reinitialize(true);\n\t\t});\n\t}\n\t\n\t//prevent table from being redrawn\n\tblockRedraw (){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockRestoreConfig = false;\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw (){\n\t\tthis.redrawBlock = false;\n\t\t\n\t\tif(this.redrawBlockRestoreConfig){\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\t\t\t\n\t\t\tthis.redrawBlockRestoreConfig = false;\n\t\t}else{\n\t\t\tif(this.redrawBlockRenderInPosition){\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.redrawBlockRenderInPosition = false;\n\t}\n\t\n\t//redraw table\n\tredraw (force){\n\t\tthis.adjustTableSize();\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\t\t\n\t\tif(!force){\t\n\t\t\tthis.reRenderInPosition();\n\t\t\tthis.scrollHorizontal(this.scrollLeft);\n\t\t}else{\n\t\t\tthis.renderTable();\n\t\t}\n\t}\n\t\n\tresetScroll(){\n\t\tthis.element.scrollLeft = 0;\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tif(this.table.browser === \"ie\"){\n\t\t\tvar event = document.createEvent(\"Event\");\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\t\t\tthis.element.dispatchEvent(event);\n\t\t}else{\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\n\nexport default class FooterManager extends CoreFeature{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.active = false;\n\t\tthis.element = this.createElement(); //containing element\n\t\tthis.containerElement = this.createContainerElement(); //containing element\n\t\tthis.external = false;\n\t}\n\n\tinitialize(){\n\t\tthis.initializeElement();\n\t}\n\n\tcreateElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t}\n\n\t\n\tcreateContainerElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer-contents\");\n\n\t\tthis.element.appendChild(el);\n\n\t\treturn el;\n\t}\n\n\tinitializeElement(){\n\t\tif(this.table.options.footerElement){\n\n\t\t\tswitch(typeof this.table.options.footerElement){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\n\t\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.external = true;\n\t\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tappend(element){\n\t\tthis.activate();\n\n\t\tthis.containerElement.appendChild(element);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tprepend(element){\n\t\tthis.activate();\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tremove(element){\n\t\telement.parentNode.removeChild(element);\n\t\tthis.deactivate();\n\t}\n\n\tdeactivate(force){\n\t\tif(!this.element.firstChild || force){\n\t\t\tif(!this.external){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\tthis.active = false;\n\t\t}\n\t}\n\n\tactivate(){\n\t\tif(!this.active){\n\t\t\tthis.active = true;\n\t\t\tif(!this.external){\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tredraw(){\n\t\tthis.dispatch(\"footer-redraw\");\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Row from '../row/Row.js';\n\nexport default class InteractionManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.el = null;\n\t\t\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\n\t\t\n\t\tthis.previousTargets = {};\n\t\t\n\t\tthis.listeners = [\n\t\t\t\"click\",\n\t\t\t\"dblclick\",\n\t\t\t\"contextmenu\",\n\t\t\t\"mouseenter\",\n\t\t\t\"mouseleave\",\n\t\t\t\"mouseover\",\n\t\t\t\"mouseout\",\n\t\t\t\"mousemove\",\n\t\t\t\"mouseup\",\n\t\t\t\"mousedown\",\n\t\t\t\"touchstart\",\n\t\t\t\"touchend\",\n\t\t];\n\t\t\n\t\tthis.componentMap = {\n\t\t\t\"tabulator-cell\":\"cell\",\n\t\t\t\"tabulator-row\":\"row\",\n\t\t\t\"tabulator-group\":\"group\",\n\t\t\t\"tabulator-col\":\"column\",\n\t\t};\n\t\t\n\t\tthis.pseudoTrackers = {\n\t\t\t\"row\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"cell\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"group\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"column\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t};\n\t\t\n\t\tthis.pseudoTracking = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.el = this.table.element;\n\t\t\n\t\tthis.buildListenerMap();\n\t\tthis.bindSubscriptionWatchers();\n\t}\n\t\n\tbuildListenerMap(){\n\t\tvar listenerMap = {};\n\t\t\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistenerMap[listener] = {\n\t\t\t\thandler:null,\n\t\t\t\tcomponents:[],\n\t\t\t};\n\t\t});\n\t\t\n\t\tthis.listeners = listenerMap;\n\t}\n\t\n\tbindPseudoEvents(){\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\n\t\t});\n\t\t\n\t\tthis.pseudoTracking = true;\n\t}\n\t\n\tpseudoMouseEnter(key, e, target){\n\t\tif(this.pseudoTrackers[key].target !== target){\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\n\t\t\t}\n\t\t\t\n\t\t\tthis.pseudoMouseLeave(key, e);\n\t\t\t\n\t\t\tthis.pseudoTrackers[key].target = target;\n\t\t\t\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\n\t\t}\n\t}\n\t\n\tpseudoMouseLeave(key, e){\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\n\t\tlinkedKeys = {\n\t\t\t\"row\":[\"cell\"],\n\t\t\t\"cell\":[\"row\"],\n\t\t};\n\t\t\n\t\tleaveList = leaveList.filter((item) => {\n\t\t\tvar links = linkedKeys[key];\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\n\t\t});\n\t\t\n\t\t\n\t\tleaveList.forEach((key) => {\n\t\t\tvar target = this.pseudoTrackers[key].target;\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\n\t\t\t\t\n\t\t\t\tthis.pseudoTrackers[key].target = null;\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\tbindSubscriptionWatchers(){\n\t\tvar listeners = Object.keys(this.listeners),\n\t\tcomponents = Object.values(this.componentMap);\n\t\t\n\t\tfor(let comp of components){\n\t\t\tfor(let listener of listeners){\n\t\t\t\tlet key = comp + \"-\" + listener;\n\t\t\t\t\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this));\n\t}\n\t\n\tsubscriptionChanged(component, key, added){\n\t\tvar listener = this.listeners[key].components,\n\t\tindex = listener.indexOf(component),\n\t\tchanged = false;\n\t\t\n\t\tif(added){\n\t\t\tif(index === -1){\n\t\t\t\tlistener.push(component);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\n\t\t\t\tif(index > -1){\n\t\t\t\t\tlistener.splice(index, 1);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\n\t\t\tthis.bindPseudoEvents();\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.updateEventListeners();\n\t\t}\n\t}\n\t\n\tupdateEventListeners(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.components.length){\n\t\t\t\tif(!listener.handler){\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler);\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(listener.handler){\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\t\tlistener.handler = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\ttrack(type, e){\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\n\t\t\n\t\tvar targets = this.findTargets(path);\n\t\ttargets = this.bindComponents(type, targets);\n\t\t\n\t\tthis.triggerEvents(type, e, targets);\n\t\t\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\n\t\t}\n\t}\n\t\n\tfindTargets(path){\n\t\tvar targets = {};\n\t\t\n\t\tlet componentMap = Object.keys(this.componentMap);\n\t\t\n\t\tfor (let el of path) {\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\n\t\t\t\n\t\t\tlet abort = classList.filter((item) => {\n\t\t\t\treturn this.abortClasses.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tif(abort.length){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tlet elTargets = classList.filter((item) => {\n\t\t\t\treturn componentMap.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tfor (let target of elTargets) {\n\t\t\t\tif(!targets[this.componentMap[target]]){\n\t\t\t\t\ttargets[this.componentMap[target]] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(targets.group && targets.group === targets.row){\n\t\t\tdelete targets.row;\n\t\t}\n\n\t\treturn targets;\n\t}\n\t\n\tbindComponents(type, targets){\n\t\t//ensure row component is looked up before cell\n\t\tvar keys = Object.keys(targets).reverse(),\n\t\tlistener = this.listeners[type],\n\t\tmatches = {},\n\t\ttargetMatches = {};\n\t\t\n\t\tfor(let key of keys){\n\t\t\tlet component,\n\t\t\ttarget = targets[key],\n\t\t\tpreviousTarget = this.previousTargets[key];\n\t\t\t\n\t\t\tif(previousTarget && previousTarget.target === target){\n\t\t\t\tcomponent = previousTarget.component;\n\t\t\t}else{\n\t\t\t\tswitch(key){\n\t\t\t\t\tcase \"row\":\n\t\t\t\t\tcase \"group\":\n\t\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\n\t\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tcomponent = rows.find((row) => {\n\t\t\t\t\t\t\t\treturn row.getElement() === target;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\n\t\t\t\t\t\t\t\ttargets[key] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"column\":\n\t\t\t\t\t\tif(listener.components.includes(\"column\")){\n\t\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"cell\":\n\t\t\t\t\t\tif(listener.components.includes(\"cell\")){\n\t\t\t\t\t\t\tif(matches[\"row\"] instanceof Row){\n\t\t\t\t\t\t\t\tcomponent = matches[\"row\"].findCell(target);\n\t\t\t\t\t\t\t}else{\t\n\t\t\t\t\t\t\t\tif(targets[\"row\"]){\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(component){\n\t\t\t\tmatches[key] = component;\n\t\t\t\ttargetMatches[key] = {\n\t\t\t\t\ttarget:target,\n\t\t\t\t\tcomponent:component,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.previousTargets = targetMatches;\n\t\t\n\t\treturn matches;\n\t}\n\t\n\ttriggerEvents(type, e, targets){\n\t\tvar listener = this.listeners[type];\n\n\t\tfor(let key in targets){\n\t\t\tif(targets[key] && listener.components.includes(key)){\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearWatchers(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.handler){\n\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\tlistener.handler = null;\n\t\t\t}\n\t\t}\n\t}\n}\n","export default class ComponentFunctionBinder{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\n\t\tthis.bindings = {};\n\t}\n\n\tbind(type, funcName, handler){\n\t\tif(!this.bindings[type]){\n\t\t\tthis.bindings[type] = {};\n\t\t}\n\n\t\tif(this.bindings[type][funcName]){\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler);\n\t\t}else{\n\t\t\tthis.bindings[type][funcName] = handler;\n\t\t}\n\t}\n\n\thandle(type, component, name){\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\n\t\t\treturn this.bindings[type][name].bind(null, component);\n\t\t}else{\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\n\t\t\t\tif(this.table.options.debugInvalidComponentFuncs){\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\n\nexport default class DataLoader extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\n\t\tthis.loading = false;\n\t}\n\t\n\tinitialize(){}\n\t\n\tload(data, params, config, replace, silent, columnsChanged){\n\t\tvar requestNo = ++this.requestOrder;\n\n\t\tif(this.table.destroyed){\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\t\n\t\tthis.dispatchExternal(\"dataLoading\", data);\n\t\t\n\t\t//parse json data to array\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\n\t\t\tthis.loading = true;\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis.alertLoader();\n\t\t\t}\n\t\t\t\n\t\t\t//get params for request\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\n\t\t\t\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\n\t\t\t\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\n\t\t\t\n\t\t\treturn result.then((response) => {\n\t\t\t\tif(!this.table.destroyed){\n\t\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\n\t\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\n\t\t\t\t\t\n\t\t\t\t\tif(requestNo == this.requestOrder){\n\t\t\t\t\t\tthis.clearAlert();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(rowData !== false){\n\t\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\n\t\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - Table has been destroyed\");\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\n\t\t\t\t\n\t\t\t\tif(!silent){\n\t\t\t\t\tthis.alertError();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clearAlert();\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\n\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\n\t\t\t\n\t\t\tif(!data){\n\t\t\t\tdata = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.table.rowManager.setData(data, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\t\n\tmapParams(params, map){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in params){\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tobjectInvert(obj){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in obj){\n\t\t\toutput[obj[key]] = key;\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tblockActiveLoad(){\n\t\tthis.requestOrder++;\n\t}\n\t\n\talertLoader(){\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\n\t\t\n\t\tif(shouldLoad){\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\n\t\t}\n\t}\n\t\n\talertError(){\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\n\t}\n\t\n\tclearAlert(){\n\t\tthis.table.alertManager.clear();\n\t}\n}","export default class ExternalEventBus {\n\n\tconstructor(table, optionsList, debug){\n\t\tthis.table = table;\n\t\tthis.events = {};\n\t\tthis.optionsList = optionsList || {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push(callback);\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tdelete this.events[key];\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift(),\n\t\tresult;\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((callback, i) => {\n\t\t\t\tlet callResult = callback.apply(this.table, args);\n\n\t\t\t\tif(!i){\n\t\t\t\t\tresult = callResult;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"ExternalEvent:\" + args[0];\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n}","export default class InternalEventBus {\n\n\tconstructor(debug){\n\t\tthis.events = {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback, priority = 10000){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push({callback, priority});\n\n\t\tthis.events[key].sort((a, b) => {\n\t\t\treturn a.priority - b.priority;\n\t\t});\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item.callback === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_chain(key, args, initialValue, fallback){\n\t\tvar value = initialValue;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\n\t\t\t});\n\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\n\t\t}\n\t}\n\n\t_confirm(key, args){\n\t\tvar confirmed = false;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tif(subscriber.callback.apply(this, args)){\n\t\t\t\t\tconfirmed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn confirmed;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift();\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((subscriber) => {\n\t\t\t\tsubscriber.callback.apply(this, args);\n\t\t\t});\n\t\t}\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n\n\t_debugChain(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._chain(...arguments);\n\t}\n\n\t_debugConfirm(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._confirm(...arguments);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class DeprecationAdvisor extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\t_warnUser(){\n\t\tif(this.options(\"debugDeprecation\")){\n\t\t\tconsole.warn(...arguments);\n\t\t}\n\t}\n\t\n\tcheck(oldOption, newOption, convert){\n\t\tvar msg = \"\";\n\t\t\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tmsg = \"Deprecated Setup Option - Use of the %c\" + oldOption + \"%c option is now deprecated\";\n\t\t\t\n\t\t\tif(newOption){\n\t\t\t\tmsg = msg + \", Please use the %c\" + newOption + \"%c option instead\";\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\n\t\t\t\tif(convert){\n\t\t\t\t\tthis.table.options[newOption] = this.table.options[oldOption];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tcheckMsg(oldOption, msg){\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tthis._warnUser(\"%cDeprecated Setup Option - Use of the %c\" + oldOption + \" %c option is now deprecated, \" + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tmsg(msg){\n\t\tthis._warnUser(msg);\n\t}\n}","import Tabulator from '../Tabulator.js';\n\nclass TableRegistry {\n\n\tstatic register(table){\n\t\tTableRegistry.tables.push(table);\n\t}\n\n\tstatic deregister(table){\n\t\tvar index = TableRegistry.tables.indexOf(table);\n\n\t\tif(index > -1){\n\t\t\tTableRegistry.tables.splice(index, 1);\n\t\t}\n\t}\n\n\tstatic lookupTable(query, silent){\n\t\tvar results = [],\n\t\tmatches, 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 = TableRegistry.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\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\n\t\t\tmatch = TableRegistry.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(TableRegistry.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\n\tstatic matchElement(element){\n\t\treturn TableRegistry.tables.find(function(table){\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n}\n\nTableRegistry.tables = [];\n\nexport default TableRegistry;","import CoreFeature from '../CoreFeature.js';\nimport Helpers from './Helpers.js';\n\nexport default class Popup extends CoreFeature{\n\tconstructor(table, element, parent){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = element;\n\t\tthis.container = this._lookupContainer();\n\t\t\n\t\tthis.parent = parent;\n\t\t\n\t\tthis.reversedX = false;\n\t\tthis.childPopup = null;\n\t\tthis.blurable = false;\n\t\tthis.blurCallback = null;\n\t\tthis.blurEventsBound = false;\n\t\tthis.renderedCallback = null;\n\t\t\n\t\tthis.visible = false;\n\t\tthis.hideable = true;\n\t\t\n\t\tthis.element.classList.add(\"tabulator-popup-container\");\n\t\t\n\t\tthis.blurEvent = this.hide.bind(this, false);\n\t\tthis.escEvent = this._escapeCheck.bind(this);\n\t\t\n\t\tthis.destroyBinding = this.tableDestroyed.bind(this);\n\t\tthis.destroyed = false;\n\t}\n\t\n\ttableDestroyed(){\n\t\tthis.destroyed = true;\n\t\tthis.hide(true);\n\t}\n\t\n\t_lookupContainer(){\n\t\tvar container = this.table.options.popupContainer;\n\t\t\n\t\tif(typeof container === \"string\"){\n\t\t\tcontainer = document.querySelector(container);\n\t\t\t\n\t\t\tif(!container){\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t\t}\n\t\t}else if (container === true){\n\t\t\tcontainer = this.table.element;\n\t\t}\n\t\t\n\t\tif(container && !this._checkContainerIsParent(container)){\n\t\t\tcontainer = false;\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t}\n\t\t\n\t\tif(!container){\n\t\t\tcontainer = document.body;\n\t\t}\n\t\t\n\t\treturn container;\n\t}\n\t\n\t_checkContainerIsParent(container, element = this.table.element){\n\t\tif(container === element){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\n\t\t}\n\t}\n\t\n\trenderCallback(callback){\n\t\tthis.renderedCallback = callback;\n\t}\n\t\n\tcontainerEventCoords(e){\n\t\tvar touch = !(e instanceof MouseEvent);\n\t\t\n\t\tvar x = touch ? e.touches[0].pageX : e.pageX;\n\t\tvar y = touch ? e.touches[0].pageY : e.pageY;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tlet parentOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\tx -= parentOffset.left;\n\t\t\ty -= parentOffset.top;\n\t\t}\n\t\t\n\t\treturn {x, y};\n\t}\n\t\n\telementPositionCoords(element, position = \"right\"){\n\t\tvar offset = Helpers.elOffset(element),\n\t\tcontainerOffset, x, y;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tcontainerOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\toffset.left -= containerOffset.left;\n\t\t\toffset.top -= containerOffset.top;\n\t\t}\n\t\t\n\t\tswitch(position){\n\t\t\tcase \"right\":\n\t\t\t\tx = offset.left + element.offsetWidth;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"bottom\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top + element.offsetHeight;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"left\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"top\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"center\":\n\t\t\t\tx = offset.left + (element.offsetWidth / 2);\n\t\t\t\ty = offset.top + (element.offsetHeight / 2);\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\treturn {x, y, offset};\n\t}\n\t\n\tshow(origin, position){\n\t\tvar x, y, parentEl, parentOffset, coords;\n\t\t\n\t\tif(this.destroyed || this.table.destroyed){\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif(origin instanceof HTMLElement){\n\t\t\tparentEl = origin;\n\t\t\tcoords = this.elementPositionCoords(origin, position);\n\t\t\t\n\t\t\tparentOffset = coords.offset;\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t}else if(typeof origin === \"number\"){\n\t\t\tparentOffset = {top:0, left:0};\n\t\t\tx = origin;\n\t\t\ty = position;\n\t\t}else{\n\t\t\tcoords = this.containerEventCoords(origin);\n\t\t\t\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t\tthis.reversedX = false;\n\t\t}\n\t\t\n\t\tthis.element.style.top = y + \"px\";\n\t\tthis.element.style.left = x + \"px\";\n\t\t\n\t\tthis.container.appendChild(this.element);\n\t\t\n\t\tif(typeof this.renderedCallback === \"function\"){\n\t\t\tthis.renderedCallback();\n\t\t}\n\t\t\n\t\tthis._fitToScreen(x, y, parentEl, parentOffset, position);\n\t\t\n\t\tthis.visible = true;\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.destroyBinding);\n\t\t\n\t\tthis.element.addEventListener(\"mousedown\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_fitToScreen(x, y, parentEl, parentOffset, position){\n\t\tvar scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\n\t\t\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\n\t\tif((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\n\t\t\tthis.element.style.left = \"\";\n\t\t\t\n\t\t\tif(parentEl){\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - x) + \"px\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.reversedX = true;\n\t\t}\n\t\t\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\t\tif((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\n\t\t\tif(parentEl){\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"bottom\":\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisVisible(){\n\t\treturn this.visible;\n\t}\n\t\n\thideOnBlur(callback){\n\t\tthis.blurable = true;\n\t\t\n\t\tif(this.visible){\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\n\t\t\t\t\tthis.subscribe(\"cell-editing\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\n\n\t\t\t\t\tthis.blurEventsBound = true;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\t\n\t\t\tthis.blurCallback = callback;\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_escapeCheck(e){\n\t\tif(e.keyCode == 27){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\t\n\tblockHide(){\n\t\tthis.hideable = false;\n\t}\n\t\n\trestoreHide(){\n\t\tthis.hideable = true;\n\t}\n\t\n\thide(silent = false){\n\t\tif(this.visible && this.hideable){\n\t\t\tif(this.blurable && this.blurEventsBound){\n\t\t\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\t\t\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\twindow.removeEventListener(\"resize\", this.blurEvent);\n\t\t\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n\t\t\t\tthis.unsubscribe(\"cell-editing\", this.blurEvent);\n\n\t\t\t\tthis.blurEventsBound = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.childPopup){\n\t\t\t\tthis.childPopup.hide();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.childPopup = null;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.visible = false;\n\t\t\t\n\t\t\tif(this.blurCallback && !silent){\n\t\t\t\tthis.blurCallback();\n\t\t\t}\n\t\t\t\n\t\t\tthis.unsubscribe(\"table-destroy\", this.destroyBinding);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\tchild(element){\n\t\tif(this.childPopup){\n\t\t\tthis.childPopup.hide();\n\t\t}\n\t\t\n\t\tthis.childPopup = new Popup(this.table, element, this);\n\t\t\n\t\treturn this.childPopup;\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Popup from './tools/Popup.js';\n\nclass Module extends CoreFeature{\n\t\n\tconstructor(table, name){\n\t\tsuper(table);\n\t\t\n\t\tthis._handler = null;\n\t}\n\t\n\tinitialize(){\n\t\t// setup module when table is initialized, to be overridden in module\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Options Registration ///////\n\t///////////////////////////////////\n\t\n\tregisterTableOption(key, value){\n\t\tthis.table.optionsList.register(key, value);\n\t}\n\t\n\tregisterColumnOption(key, value){\n\t\tthis.table.columnManager.optionsList.register(key, value);\n\t}\n\t\n\t///////////////////////////////////\n\t/// Public Function Registration ///\n\t///////////////////////////////////\n\t\n\tregisterTableFunction(name, func){\n\t\tif(typeof this.table[name] === \"undefined\"){\n\t\t\tthis.table[name] = (...args) => {\n\t\t\t\tthis.table.initGuard(name);\n\t\t\t\t\n\t\t\t\treturn func(...args);\n\t\t\t};\n\t\t}else{\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name);\n\t\t}\n\t}\n\t\n\tregisterComponentFunction(component, func, handler){\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Data Pipeline //////////\n\t///////////////////////////////////\n\t\n\tregisterDataHandler(handler, priority){\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tregisterDisplayHandler(handler, priority){\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tdisplayRows(adjust){\n\t\tvar index = this.table.rowManager.displayRows.length - 1, \n\t\tlookupIndex;\n\t\t\n\t\tif(this._handler){\n\t\t\tlookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => {\n\t\t\t\treturn item.handler === this._handler;\n\t\t\t});\n\n\t\t\tif(lookupIndex > -1){\n\t\t\t\tindex = lookupIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(adjust){\n\t\t\tindex = index + adjust;\n\t\t}\n\n\t\tif(this._handler){\n\t\t\tif(index > -1){\n\t\t\t\treturn this.table.rowManager.getDisplayRows(index);\n\t\t\t}else{\n\t\t\t\treturn this.activeRows();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tactiveRows(){\n\t\treturn this.table.rowManager.activeRows;\n\t}\n\t\n\trefreshData(renderInPosition, handler){\n\t\tif(!handler){\n\t\t\thandler = this._handler;\n\t\t}\n\t\t\n\t\tif(handler){\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Footer Management ////////\n\t///////////////////////////////////\n\t\n\tfooterAppend(element){\n\t\treturn this.table.footerManager.append(element);\n\t}\n\t\n\tfooterPrepend(element){\n\t\treturn this.table.footerManager.prepend(element);\n\t}\n\t\n\tfooterRemove(element){\n\t\treturn this.table.footerManager.remove(element);\n\t} \n\t\n\t///////////////////////////////////\n\t//////// Popups Management ////////\n\t///////////////////////////////////\n\t\n\tpopup(menuEl, menuContainer){\n\t\treturn new Popup(this.table, menuEl, menuContainer);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Alert Management ////////\n\t///////////////////////////////////\n\t\n\talert(content, type){\n\t\treturn this.table.alertManager.alert(content, type);\n\t}\n\t\n\tclearAlert(){\n\t\treturn this.table.alertManager.clear();\n\t}\n\t\n}\n\nexport default Module;","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\nexport default function(columns, forced){\n\tcolumns.forEach(function(column){\n\t\tcolumn.reinitializeWidth();\n\t});\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","import fitData from './modes/fitData.js';\nimport fitDataGeneral from './modes/fitDataGeneral.js';\nimport fitDataStretch from './modes/fitDataStretch.js';\nimport fitColumns from './modes/fitColumns.js';\n\nexport default {\n\tfitData:fitData,\n\tfitDataFill:fitDataGeneral,\n\tfitDataTable:fitDataGeneral,\n\tfitDataStretch:fitDataStretch,\n\tfitColumns:fitColumns ,\n};","//resize columns to fit data they contain\nexport default function(columns, forced){\n\tif(forced){\n\t\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\n\t}\n\t\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data the contain and stretch last column to fill table\nexport default function(columns, forced){\n\tvar colsWidth = 0,\n\ttableWidth = this.table.rowManager.element.clientWidth,\n\tgap = 0,\n\tlastCol = false;\n\n\tcolumns.forEach((column, i) => {\n\t\tif(!column.widthFixed){\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\n\t\t\tlastCol = column;\n\t\t}\n\n\t\tif(column.visible){\n\t\t\tcolsWidth += column.getWidth();\n\t\t}\n\t});\n\n\tif(lastCol){\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tlastCol.setWidth(0);\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\tif(gap > 0){\n\t\t\tlastCol.setWidth(gap);\n\t\t}else{\n\t\t\tlastCol.reinitializeWidth();\n\t\t}\n\t}else{\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t}\n}","//resize columns to fit\nexport default function(columns, forced){\n\tvar totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width\n\tvar fixedWidth = 0; //total width of columns with a defined width\n\tvar flexWidth = 0; //total width available to flexible columns\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks across all columns\n\tvar flexColWidth = 0; //desired width of flexible columns\n\tvar flexColumns = []; //array of flexible width columns\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks across all columns\n\tvar overflowWidth = 0; //horizontal overflow width\n\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\tfunction calcWidth(width){\n\t\tvar colWidth;\n\n\t\tif(typeof(width) == \"string\"){\n\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\n\t\t\t}else{\n\t\t\t\tcolWidth = parseInt(width);\n\t\t\t}\n\t\t}else{\n\t\t\tcolWidth = width;\n\t\t}\n\n\t\treturn colWidth;\n\t}\n\n\t//ensure columns resize to take up the correct amount of space\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\n\t\tvar oversizeCols = [],\n\t\toversizeSpace = 0,\n\t\tremainingSpace = 0,\n\t\tnextColWidth = 0,\n\t\tremainingFlexGrowUnits = flexGrowUnits,\n\t\tgap = 0,\n\t\tchangeUnits = 0,\n\t\tundersizeCols = [];\n\n\t\tfunction calcGrow(col){\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\n\t\t}\n\n\t\tfunction calcShrink(col){\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));\n\t\t}\n\n\t\tcolumns.forEach(function(col, i){\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\t\t\tif(col.column.minWidth >= width){\n\t\t\t\toversizeCols.push(col);\n\t\t\t}else{\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\n\t\t\t\t\tcol.width = col.column.maxWidth;\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\n\t\t\t\t\tif(remainingFlexGrowUnits){\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tundersizeCols.push(col);\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(oversizeCols.length){\n\t\t\toversizeCols.forEach(function(col){\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t});\n\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\n\n\t\t\tgap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t}else{\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\n\n\t\t\tundersizeCols.forEach(function(column){\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t});\n\t\t}\n\n\t\treturn gap;\n\t}\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n\n\t//adjust for vertical scrollbar if present\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t}\n\n\tcolumns.forEach(function(column){\n\t\tvar width, minWidth, colWidth;\n\n\t\tif(column.visible){\n\n\t\t\twidth = column.definition.width;\n\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\tif(width){\n\n\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\tif(column.definition.widthShrink){\n\t\t\t\t\tfixedShrinkColumns.push({\n\t\t\t\t\t\tcolumn:column,\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\n\t\t\t\t\t});\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tflexColumns.push({\n\t\t\t\t\tcolumn:column,\n\t\t\t\t\twidth:0,\n\t\t\t\t});\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t//calculate available space\n\tflexWidth = totalWidth - fixedWidth;\n\n\t//calculate correct column size\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t//generate column widths\n\tgapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t//increase width of last column to account for rounding errors\n\tif(flexColumns.length && gapFill > 0){\n\t\tflexColumns[flexColumns.length-1].width += gapFill;\n\t}\n\n\t//calculate space for columns to be shrunk into\n\tflexColumns.forEach(function(col){\n\t\tflexWidth -= col.width;\n\t});\n\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t//shrink oversize columns if there is no available space\n\tif(overflowWidth > 0 && flexShrinkUnits){\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t}\n\n\t//decrease width of last column to account for rounding errors\n\tif(gapFill && fixedShrinkColumns.length){\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\n\t}\n\n\tflexColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n\n\tfixedShrinkColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n}\n","import Module from '../../core/Module.js';\n\nimport defaultModes from './defaults/modes.js';\n\nclass Layout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table, \"layout\");\n\n\t\tthis.mode = null;\n\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\n\n\t\tthis.registerColumnOption(\"widthGrow\");\n\t\tthis.registerColumnOption(\"widthShrink\");\n\t}\n\n\t//initialize layout system\n\tinitialize(){\n\t\tvar layout = this.table.options.layout;\n\n\t\tif(Layout.modes[layout]){\n\t\t\tthis.mode = layout;\n\t\t}else{\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.widthGrow){\n\t\t\tcolumn.definition.widthGrow = Number(column.definition.widthGrow);\n\t\t}\n\t\tif(column.definition.widthShrink){\n\t\t\tcolumn.definition.widthShrink = Number(column.definition.widthShrink);\n\t\t}\n\t}\n\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\n\t//trigger table layout\n\tlayout(dataChanged){\n\t\tthis.dispatch(\"layout-refreshing\");\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);\n\t\tthis.dispatch(\"layout-refreshed\");\n\t}\n}\n\nLayout.moduleName = \"layout\";\n\n//load defaults\nLayout.modes = defaultModes;\n\nexport default Layout;","import Module from '../../core/Module.js';\n\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultLangs from './defaults/langs.js';\n\nclass Localize extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.locale = \"default\"; //current locale\n\t\tthis.lang = false; //current language\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t\tthis.langList = {};\n\n\t\tthis.registerTableOption(\"locale\", false); //current system language\n\t\tthis.registerTableOption(\"langs\", {});\n\t}\n\n\tinitialize(){\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\n\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor(let locale in this.table.options.langs){\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\n\t\t}\n\n\t\tthis.setLocale(this.table.options.locale);\n\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\n\t}\n\n\t//set header placeholder\n\tsetHeaderFilterPlaceholder(placeholder){\n\t\tthis.langList.default.headerFilters.default = placeholder;\n\t}\n\n\t//setup a lang description object\n\tinstallLang(locale, lang){\n\t\tif(this.langList[locale]){\n\t\t\tthis._setLangProp(this.langList[locale], lang);\n\t\t}else{\n\t\t\tthis.langList[locale] = lang;\n\t\t}\n\t}\n\n\t_setLangProp(lang, values){\n\t\tfor(let key in values){\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t}else{\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t//set current locale\n\tsetLocale(desiredLocale){\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching language values\n\t\tfunction traverseLang(trans, path){\n\t\t\tfor(var prop in trans){\n\t\t\t\tif(typeof trans[prop] == \"object\"){\n\t\t\t\t\tif(!path[prop]){\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t}else{\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determining correct locale to load\n\t\tif(desiredLocale === true && navigator.language){\n\t\t\t//get local from system\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif(desiredLocale){\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\t\t\tif(!this.langList[desiredLocale]){\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif(this.langList[prefix]){\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.locale = desiredLocale;\n\n\t\t//load default lang template\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\n\n\t\tif(desiredLocale != \"default\"){\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\n\t\t}\n\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\n\n\t\tthis._executeBindings();\n\t}\n\n\t//get current locale\n\tgetLocale(locale){\n\t\treturn this.locale;\n\t}\n\n\t//get lang object for given local or current if none provided\n\tgetLang(locale){\n\t\treturn locale ? this.langList[locale] : this.lang;\n\t}\n\n\t//get text for current locale\n\tgetText(path, value){\n\t\tvar fillPath = value ? path + \"|\" + value : path,\n\t\tpathArray = fillPath.split(\"|\"),\n\t\ttext = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t\t// }\n\n\t\treturn text || \"\";\n\t}\n\n\t//traverse langs object and find localized copy\n\t_getLangElement(path, locale){\n\t\tvar root = this.lang;\n\n\t\tpath.forEach(function(level){\n\t\t\tvar rootPath;\n\n\t\t\tif(root){\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif(typeof rootPath != \"undefined\"){\n\t\t\t\t\troot = rootPath;\n\t\t\t\t}else{\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t}\n\n\t//set update binding\n\tbind(path, callback){\n\t\tif(!this.bindings[path]){\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t}\n\n\t//iterate through bindings and trigger updates\n\t_executeBindings(){\n\t\tfor(let path in this.bindings){\n\t\t\tthis.bindings[path].forEach((binding) => {\n\t\t\t\tbinding(this.getText(path), this.lang);\n\t\t\t});\n\t\t}\n\t}\n}\n\nLocalize.moduleName = \"localize\";\n\n//load defaults\nLocalize.langs = defaultLangs;\n\nexport default Localize;","export default {\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},\n\t\t\"data\":{\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\t\"counter\":{\n\t\t\t\t\"showing\": \"Showing\",\n\t\t\t\t\"of\": \"of\",\n\t\t\t\t\"rows\": \"rows\",\n\t\t\t\t\"pages\": \"pages\",\n\t\t\t}\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};","import Module from '../../core/Module.js';\nimport TableRegistry from '../../core/tools/TableRegistry.js';\n\nclass Comms extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\n\tinitialize(){\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\n\t}\n\n\tgetConnections(selectors){\n\t\tvar connections = [],\n\t\tconnection;\n\n\t\tconnection = TableRegistry.lookupTable(selectors);\n\n\t\tconnection.forEach((con) =>{\n\t\t\tif(this.table !== con){\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsend(selectors, module, action, data){\n\t\tvar connections = this.getConnections(selectors);\n\n\t\tconnections.forEach((connection) => {\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\n\t\t});\n\n\t\tif(!connections.length && selectors){\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t}\n\n\treceive(table, module, action, data){\n\t\tif(this.table.modExists(module)){\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t}else{\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t}\n}\n\nComms.moduleName = \"comms\";\n\nexport default Comms;","import * as coreModules from '../modules/core.js';\nimport TableRegistry from './TableRegistry.js';\n\nexport default class ModuleBinder {\n\t\n\tconstructor(tabulator, modules){\n\t\tthis.bindStaticFunctionality(tabulator);\n\t\tthis.bindModules(tabulator, coreModules, true);\n\t\t\n\t\tif(modules){\n\t\t\tthis.bindModules(tabulator, modules);\n\t\t}\n\t}\n\t\n\tbindStaticFunctionality(tabulator){\n\t\ttabulator.moduleBindings = {};\n\t\t\n\t\ttabulator.extendModule = function(name, property, values){\n\t\t\tif(tabulator.moduleBindings[name]){\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\n\t\t\t\t\n\t\t\t\tif(source){\n\t\t\t\t\tif(typeof values == \"object\"){\n\t\t\t\t\t\tfor(let key in values){\n\t\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t\t}\n\t\t};\n\t\t\n\t\ttabulator.registerModule = function(modules){\n\t\t\tif(!Array.isArray(modules)){\n\t\t\t\tmodules = [modules];\n\t\t\t}\n\t\t\t\n\t\t\tmodules.forEach((mod) => {\n\t\t\t\ttabulator.registerModuleBinding(mod);\n\t\t\t});\n\t\t};\n\t\t\n\t\ttabulator.registerModuleBinding = function(mod){\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\n\t\t};\n\t\t\n\t\ttabulator.findTable = function(query){\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\n\t\t};\n\t\t\n\t\t//ensure that module are bound to instantiated function\n\t\ttabulator.prototype.bindModules = function(){\n\t\t\tvar orderedStartMods = [],\n\t\t\torderedEndMods = [],\n\t\t\tunOrderedMods = [];\n\t\t\t\n\t\t\tthis.modules = {};\n\t\t\t\n\t\t\tfor(var name in tabulator.moduleBindings){\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\n\t\t\t\tlet module = new mod(this);\n\t\t\t\t\n\t\t\t\tthis.modules[name] = module;\n\t\t\t\t\n\t\t\t\tif(mod.prototype.moduleCore){\n\t\t\t\t\tthis.modulesCore.push(module);\n\t\t\t\t}else{\n\t\t\t\t\tif(mod.moduleInitOrder){\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\n\t\t\t\t\t\t\torderedStartMods.push(module);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\torderedEndMods.push(module);\n\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\tunOrderedMods.push(module);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\t\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\n\t\t};\n\t}\n\t\n\tbindModules(tabulator, modules, core){\n\t\tvar mods = Object.values(modules);\n\t\t\n\t\tif(core){\n\t\t\tmods.forEach((mod) => {\n\t\t\t\tmod.prototype.moduleCore = true;\n\t\t\t});\n\t\t}\n\t\t\n\t\ttabulator.registerModule(mods);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class Alert extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.element = this._createAlertElement();\n\t\tthis.msgElement = this._createMsgElement();\n\t\tthis.type = null;\n \n\t\tthis.element.appendChild(this.msgElement);\n\t}\n \n\t_createAlertElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert\");\n\t\treturn el;\n\t}\n \n\t_createMsgElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\t\treturn el;\n\t}\n \n\t_typeClass(){\n\t\treturn \"tabulator-alert-state-\" + this.type;\n\t}\n \n\talert(content, type = \"msg\"){\n\t\tif(content){\n\t\t\tthis.clear();\n\n\t\t\tthis.dispatch(\"alert-show\", type);\n \n\t\t\tthis.type = type;\n \n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\n \n\t\t\tthis.msgElement.classList.add(this._typeClass());\n \n\t\t\tif(typeof content === \"function\"){\n\t\t\t\tcontent = content();\n\t\t\t}\n \n\t\t\tif(content instanceof HTMLElement){\n\t\t\t\tthis.msgElement.appendChild(content);\n\t\t\t}else{\n\t\t\t\tthis.msgElement.innerHTML = content;\n\t\t\t}\n \n\t\t\tthis.table.element.appendChild(this.element);\n\t\t}\n\t}\n \n\tclear(){\n\t\tthis.dispatch(\"alert-hide\", this.type);\n\n\t\tif(this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n \n\t\tthis.msgElement.classList.remove(this._typeClass());\n\t}\n}","'use strict';\n\nimport defaultOptions from './defaults/options.js';\n\nimport ColumnManager from './ColumnManager.js';\nimport RowManager from './RowManager.js';\nimport FooterManager from './FooterManager.js';\n\nimport InteractionMonitor from './tools/InteractionMonitor.js';\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\nimport DataLoader from './tools/DataLoader.js';\n\nimport ExternalEventBus from './tools/ExternalEventBus.js';\nimport InternalEventBus from './tools/InternalEventBus.js';\n\nimport DeprecationAdvisor from './tools/DeprecationAdvisor.js';\n\nimport TableRegistry from './tools/TableRegistry.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nimport OptionsList from './tools/OptionsList.js';\n\nimport Alert from './tools/Alert.js';\n\nclass Tabulator {\n\t\n\tconstructor(element, options){\n\t\t\n\t\tthis.options = {};\n\t\t\n\t\tthis.columnManager = null; // hold Column Manager\n\t\tthis.rowManager = null; //hold Row Manager\n\t\tthis.footerManager = null; //holder Footer Manager\n\t\tthis.alertManager = null; //hold Alert Manager\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\n\t\tthis.externalEvents = null; //handle external event messaging\n\t\tthis.eventBus = null; //handle internal event messaging\n\t\tthis.interactionMonitor = false; //track user interaction\n\t\tthis.browser = \"\"; //hold current browser type\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\n\t\tthis.rtl = false; //check if the table is in RTL mode\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\n\t\t\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\n\t\tthis.dataLoader = false; //bind component functions\n\t\t\n\t\tthis.modules = {}; //hold all modules bound to this table\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\n\t\t\n\t\tthis.deprecationAdvisor = new DeprecationAdvisor(this);\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.destroyed = false;\n\t\t\n\t\tif(this.initializeElement(element)){\n\t\t\t\n\t\t\tthis.initializeCoreSystems(options);\n\t\t\t\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._create();\n\t\t\t});\n\t\t}\n\t\t\n\t\tTableRegistry.register(this); //register table for inter-device communication\n\t}\n\t\n\tinitializeElement(element){\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\n\t\t\tthis.element = element;\n\t\t\treturn true;\n\t\t}else if(typeof element === \"string\"){\n\t\t\tthis.element = document.querySelector(element);\n\t\t\t\n\t\t\tif(this.element){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tinitializeCoreSystems(options){\n\t\tthis.columnManager = new ColumnManager(this);\n\t\tthis.rowManager = new RowManager(this);\n\t\tthis.footerManager = new FooterManager(this);\n\t\tthis.dataLoader = new DataLoader(this);\n\t\tthis.alertManager = new Alert(this);\n\t\t\n\t\tthis.bindModules();\n\t\t\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options);\n\t\t\n\t\tthis._clearObjectPointers();\n\t\t\n\t\tthis._mapDeprecatedFunctionality();\n\t\t\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\n\t\t\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\n\t\t\n\t\tthis.dataLoader.initialize();\n\t\t// this.columnManager.initialize();\n\t\t// this.rowManager.initialize();\n\t\tthis.footerManager.initialize();\n\t}\n\t\n\t//convert deprecated functionality to new functions\n\t_mapDeprecatedFunctionality(){\n\t\t//all previously deprecated functionality removed in the 5.0 release\n\t}\n\t\n\t_clearSelection(){\n\t\t\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tif (window.getSelection) {\n\t\t\tif (window.getSelection().empty) { // Chrome\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) { // IE?\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\t\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t}\n\t\n\t//create table\n\t_create(){\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\n\t\tthis.eventBus.dispatch(\"table-building\");\n\t\t\n\t\tthis._rtlCheck();\n\t\t\n\t\tthis._buildElement();\n\t\t\n\t\tthis._initializeTable();\n\t\t\n\t\tthis._loadInitialData();\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\n\t}\n\t\n\t_rtlCheck(){\n\t\tvar style = window.getComputedStyle(this.element);\n\t\t\n\t\tswitch(this.options.textDirection){\n\t\t\tcase\"auto\":\n\t\t\t\tif(style.direction !== \"rtl\"){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"rtl\":\n\t\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\t\tthis.rtl = true;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"ltr\":\n\t\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis.rtl = false;\n\t\t}\n\t}\n\t\n\t//clear pointers to objects in default config object\n\t_clearObjectPointers(){\n\t\tthis.options.columns = this.options.columns.slice(0);\n\t\t\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t}\n\t\n\t//build tabulator element\n\t_buildElement(){\n\t\tvar element = this.element,\n\t\toptions = this.options,\n\t\tnewElement;\n\t\t\n\t\tif(element.tagName === \"TABLE\"){\n\t\t\tthis.originalElement = this.element;\n\t\t\tnewElement = document.createElement(\"div\");\n\t\t\t\n\t\t\t//transfer attributes to new element\n\t\t\tvar attributes = element.attributes;\n\t\t\t\n\t\t\t// loop through attributes and apply them on div\n\t\t\tfor(var i in attributes){\n\t\t\t\tif(typeof attributes[i] == \"object\"){\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// replace table with div element\n\t\t\telement.parentNode.replaceChild(newElement, element);\n\t\t\t\n\t\t\tthis.element = element = newElement;\n\t\t}\n\t\t\n\t\telement.classList.add(\"tabulator\");\n\t\telement.setAttribute(\"role\", \"grid\");\n\t\t\n\t\t//empty element\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\t//set table height\n\t\tif(options.height){\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\t\telement.style.height = options.height;\n\t\t}\n\t\t\n\t\t//set table min height\n\t\tif(options.minHeight !== false){\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\t\telement.style.minHeight = options.minHeight;\n\t\t}\n\t\t\n\t\t//set table maxHeight\n\t\tif(options.maxHeight !== false){\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\t\telement.style.maxHeight = options.maxHeight;\n\t\t}\n\t}\n\t\n\t//initialize core systems and modules\n\t_initializeTable(){\n\t\tvar element = this.element,\n\t\toptions = this.options;\n\t\t\n\t\tthis.interactionMonitor.initialize();\n\t\t\n\t\tthis.columnManager.initialize();\n\t\tthis.rowManager.initialize();\n\t\t\n\t\tthis._detectBrowser();\n\t\t\n\t\t//initialize core modules\n\t\tthis.modulesCore.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\t//build table elements\n\t\telement.appendChild(this.columnManager.getElement());\n\t\telement.appendChild(this.rowManager.getElement());\n\t\t\n\t\tif(options.footerElement){\n\t\t\tthis.footerManager.activate();\n\t\t}\n\t\t\n\t\tif(options.autoColumns && options.data){\n\t\t\t\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\t\t\n\t\t//initialize regular modules\n\t\tthis.modulesRegular.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\tthis.columnManager.setColumns(options.columns);\n\t\t\n\t\tthis.eventBus.dispatch(\"table-built\");\n\t}\n\t\n\t_loadInitialData(){\n\t\tthis.dataLoader.load(this.options.data);\n\t\tthis.columnManager.verticalAlignHeaders();\n\t}\n\t\n\t//deconstructor\n\tdestroy(){\n\t\tvar element = this.element;\n\t\t\n\t\tthis.destroyed = true;\n\t\t\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\n\t\t\n\t\tthis.eventBus.dispatch(\"table-destroy\");\n\t\t\n\t\t//clear row data\n\t\tthis.rowManager.destroy();\n\t\t\n\t\t//clear DOM\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\telement.classList.remove(\"tabulator\");\n\n\t\tthis.externalEvents.dispatch(\"tableDestroyed\");\n\t}\n\t\n\t_detectBrowser(){\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\n\t\t\n\t\tif(ua.indexOf(\"Trident\") > -1){\n\t\t\tthis.browser = \"ie\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\n\t\t\tthis.browser = \"edge\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\n\t\t\tthis.browser = \"firefox\";\n\t\t\tthis.browserSlow = false;\n\t\t}else if(ua.indexOf(\"Mac OS\") > -1){\n\t\t\tthis.browser = \"safari\";\n\t\t\tthis.browserSlow = false;\n\t\t}else{\n\t\t\tthis.browser = \"other\";\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t\t\n\t\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.slice(0,4));\n\t}\n\t\n\tinitGuard(func, msg){\n\t\tvar stack, line;\n\t\t\n\t\tif(this.options.debugInitialization && !this.initialized){\n\t\t\tif(!func){\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\n\t\t\t\t\n\t\t\t\tif(line[0] == \" \"){\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\n\t\t\t\t}else{\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn(\"Table Not Initialized - Calling the \" + func + \" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function.\" + (msg ? \" \" + msg : \"\"));\n\t\t}\n\t\t\n\t\treturn this.initialized;\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\t//block table redrawing\n\tblockRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocking\");\n\t\t\n\t\tthis.rowManager.blockRedraw();\n\t\tthis.columnManager.blockRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocked\");\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-restoring\");\n\n\t\tthis.rowManager.restoreRedraw();\n\t\tthis.columnManager.restoreRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-restored\");\n\t}\n\t\n\t//load data\n\tsetData(data, params, config){\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, false);\n\t}\n\t\n\t//clear data\n\tclearData(){\n\t\tthis.initGuard();\n\t\t\n\t\tthis.dataLoader.blockActiveLoad();\n\t\tthis.rowManager.clearData();\n\t}\n\t\n\t//get table data array\n\tgetData(active){\n\t\treturn this.rowManager.getData(active);\n\t}\n\t\n\t//get table data array count\n\tgetDataCount(active){\n\t\treturn this.rowManager.getDataCount(active);\n\t}\n\t\n\t//replace data, keeping table in position with same sort\n\treplaceData(data, params, config){\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, true, true);\n\t}\n\t\n\t//update table data\n\tupdateData(data){\n\t\tvar responses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\tresponses++;\n\t\t\t\t\t\t\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\t\treject(\"Update Error - Unable to update row\", item, e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treject(\"Update Error - Unable to find row\", item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\taddData(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data){\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\n\t\t\t\t\t.then((rows) => {\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\n\t\t\t\t\t\trows.forEach(function(row){\n\t\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\tresolve(output);\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//update table data\n\tupdateOrAddData(data){\n\t\tvar rows = [],\n\t\tresponses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tresponses++;\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.rowManager.addRows(item)\n\t\t\t\t\t\t\t.then((newRows)=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//get row object\n\tgetRow(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//get row object\n\tgetRowFromPosition(position){\n\t\tvar row = this.rowManager.getRowFromPosition(position);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//delete row from table\n\tdeleteRow(index){\n\t\tvar foundRows = [];\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(!Array.isArray(index)){\n\t\t\tindex = [index];\n\t\t}\n\t\t\n\t\t//find matching rows\n\t\tfor(let item of index){\n\t\t\tlet row = this.rowManager.findRow(item, true);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\tfoundRows.push(row);\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort((a, b) => {\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\t\t\n\t\t//delete rows\n\t\tfoundRows.forEach((row) =>{\n\t\t\trow.delete();\n\t\t});\n\t\t\n\t\tthis.rowManager.reRenderInPosition();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\t//add row to table\n\taddRow(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\treturn this.rowManager.addRows(data, pos, index, true)\n\t\t\t.then((rows)=>{\n\t\t\t\treturn rows[0].getComponent();\n\t\t\t});\n\t}\n\t\n\t//update a row if it exists otherwise create it\n\tupdateOrAddRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn row.getComponent();\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn this.rowManager.addRows(data)\n\t\t\t\t.then((rows)=>{\n\t\t\t\t\treturn rows[0].getComponent();\n\t\t\t\t});\n\t\t}\n\t}\n\t\n\t//update row data\n\tupdateRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn Promise.resolve(row.getComponent());\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\n\t\t}\n\t}\n\t\n\t//scroll to row in DOM\n\tscrollToRow(index, position, ifVisible){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible);\n\t\t}else{\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\n\t\t}\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tvar fromRow = this.rowManager.findRow(from);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromRow){\n\t\t\tfromRow.moveToRow(to, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t}\n\t\n\tgetRows(active){\n\t\treturn this.rowManager.getComponents(active);\t\n\t}\n\t\n\t//get position of row in table\n\tgetRowPosition(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getPosition();\n\t\t}else{\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/////////////// Column Functions ///////////////\n\tsetColumns(definition){\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\n\t\t\n\t\tthis.columnManager.setColumns(definition);\n\t}\n\t\n\tgetColumns(structured){\n\t\treturn this.columnManager.getComponents(structured);\n\t}\n\t\n\tgetColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tif(column){\n\t\t\treturn column.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetColumnDefinitions(){\n\t\treturn this.columnManager.getDefinitionTree();\n\t}\n\t\n\tshowColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.show();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\thideColumn(field){\n\t\tvar column = this.columnManager.findColumn(field); \n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.hide();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\ttoggleColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tif(column.visible){\n\t\t\t\tcolumn.hide();\n\t\t\t}else{\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\taddColumn(definition, before, field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.columnManager.addColumn(definition, before, column)\n\t\t\t.then((column) => {\n\t\t\t\treturn column.getComponent();\n\t\t\t});\n\t}\n\t\n\tdeleteColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.delete();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tupdateColumnDefinition(field, definition){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.updateDefinition(definition);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tvar fromColumn = this.columnManager.findColumn(from),\n\t\ttoColumn = this.columnManager.findColumn(to);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromColumn){\n\t\t\tif(toColumn){\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t\t}\n\t}\n\t\n\t//scroll to column in DOM\n\tscrollToColumn(field, position, ifVisible){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this.columnManager.findColumn(field);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//////////// General Public Functions ////////////\n\t//redraw list without updating data\n\tredraw(force){\n\t\tthis.initGuard();\n\n\t\tthis.columnManager.redraw(force);\n\t\tthis.rowManager.redraw(force);\n\t}\n\t\n\tsetHeight(height){\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.initializeRenderer();\n\t\tthis.rowManager.redraw(true);\n\t}\n\t\n\t//////////////////// Event Bus ///////////////////\n\t\n\ton(key, callback){\n\t\tthis.externalEvents.subscribe(key, callback);\n\t}\n\t\n\toff(key, callback){\n\t\tthis.externalEvents.unsubscribe(key, callback);\n\t}\n\t\n\tdispatchEvent(){\n\t\tvar args = Array.from(arguments);\n\t\targs.shift();\n\t\t\n\t\tthis.externalEvents.dispatch(...arguments);\n\t}\n\n\t//////////////////// Alerts ///////////////////\n\n\talert(contents, type){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.alert(contents, type);\n\t}\n\n\tclearAlert(){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.clear();\n\t}\n\t\n\t////////////// Extension Management //////////////\n\tmodExists(plugin, required){\n\t\tif(this.modules[plugin]){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tif(required){\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule(key){\n\t\tvar mod = this.modules[key];\n\t\t\n\t\tif(!mod){\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\n\t\t}\n\t\t\n\t\treturn mod;\n\t}\n}\n\n//default setup options\nTabulator.defaultOptions = defaultOptions;\n\n//bind modules and static functionality\nnew ModuleBinder(Tabulator);\n\nexport default Tabulator;\n","export default {\n\n\tdebugEventsExternal:false, //flag to console log events\n\tdebugEventsInternal:false, //flag to console log events\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\n\tdebugInvalidComponentFuncs:true, //allow toggling of invalid component warnings\n\tdebugInitialization:true, //allow toggling of pre initialization function call warnings\n\tdebugDeprecation:true, //allow toggling of deprecation warnings\n\n\theight:false, //height of tabulator\n\tminHeight:false, //minimum height of tabulator\n\tmaxHeight:false, //maximum height of tabulator\n\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\n\n\tpopupContainer:false,\n\n\tcolumns:[],//store for colum header info\n\tcolumnDefaults:{}, //store column default props\n\n\tdata:false, //default starting data\n\n\tautoColumns:false, //build columns from data row structure\n\tautoColumnsDefinitions:false,\n\n\tnestedFieldSeparator:\".\", //separator for nested data\n\n\tfooterElement:false, //hold footer element\n\n\tindex:\"id\", //filed for row index\n\n\ttextDirection:\"auto\",\n\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\n\n\theaderVisible:true, //hide header\n\n\trenderVertical:\"virtual\",\n\trenderHorizontal:\"basic\",\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\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\trowHeight:null,\n\n\tplaceholder:false,\n\n\tdataLoader:true,\n\tdataLoaderLoading:false,\n\tdataLoaderError:false,\n\tdataLoaderErrorTimeout:3000,\n\n\tdataSendParams:{},\n\n\tdataReceiveParams:{},\n};\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultAccessors from './defaults/accessors.js';\n\nclass Accessor extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n\n\t\tthis.registerColumnOption(\"accessor\");\n\t\tthis.registerColumnOption(\"accessorParams\");\n\t\tthis.registerColumnOption(\"accessorData\");\n\t\tthis.registerColumnOption(\"accessorDataParams\");\n\t\tthis.registerColumnOption(\"accessorDownload\");\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\n\t\tthis.registerColumnOption(\"accessorClipboard\");\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\n\t\tthis.registerColumnOption(\"accessorPrint\");\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\n\t}\n\n\t//initialize column accessor\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\taccessor;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor:accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}\n\n\tlookupAccessor(value){\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Accessor.accessors[value]){\n\t\t\t\t\taccessor = Accessor.accessors[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t}\n\n\t//apply accessor to row\n\ttransformRow(row, type){\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\trowComponent = row.getComponent();\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Helpers.deepClone(row.data || {});\n\n\t\tthis.table.columnManager.traverse(function(column){\n\t\t\tvar value, accessor, params, colComponent;\n\n\t\t\tif(column.modules.accessor){\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif(value != \"undefined\"){\n\t\t\t\t\t\tcolComponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n//load defaults\nAccessor.moduleName = \"accessor\";\nAccessor.accessors = defaultAccessors;\n\nexport default Accessor;","export default {};","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(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\nfunction serializeParams(params){\n\tvar output = generateParamsList(params),\n\tencoded = [];\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\nexport default function(url, config, params){\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(\"?\") ? \"&\" : \"?\") + serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n}","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(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\nexport default {\n\t\"json\":{\n\t\theaders:{\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tbody:function(url, config, params){\n\t\t\treturn JSON.stringify(params);\n\t\t},\n\t},\n\t\"form\":{\n\t\theaders:{\n\t\t},\n\t\tbody:function(url, config, params){\n\n\t\t\tvar output = generateParamsList(params),\n\t\t\tform = 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};","import Module from '../../core/Module.js';\n\nimport defaultConfig from './defaults/config.js';\nimport defaultURLGenerator from './defaults/urlGenerator.js';\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\n\nclass Ajax extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {}; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\t\t\n\t\tthis.loaderPromise = false;\n\t\t\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\n\t\t\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\n\t\t\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\n\t}\n\t\n\t//initialize setup options\n\tinitialize(){\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\n\t\t\n\t\tif(this.table.options.ajaxURL){\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\n\t\t\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\n\t}\n\t\n\trequestParams(data, config, silent, params){\n\t\tvar ajaxParams = this.table.options.ajaxParams;\n\t\t\n\t\tif(ajaxParams){\n\t\t\tif(typeof ajaxParams === \"function\"){\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\n\t\t\t}\n\t\t\t\n\t\t\tparams = Object.assign(Object.assign({}, ajaxParams), params);\n\t\t}\t\t\n\t\t\n\t\treturn params;\n\t}\n\t\n\trequestDataCheck(data, params, config, silent){\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\n\t}\n\t\n\trequestData(url, params, config, silent, previousData){\n\t\tvar ajaxConfig;\n\t\t\n\t\tif(!previousData && this.requestDataCheck(url)){\n\t\t\tif(url){\n\t\t\t\tthis.setUrl(url);\n\t\t\t}\n\t\t\t\n\t\t\tajaxConfig = this.generateConfig(config);\n\t\t\t\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\n\t\t}else{\n\t\t\treturn previousData;\n\t\t}\n\t}\n\t\n\tsetDefaultConfig(config = {}){\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\n\n\t\tif(typeof config == \"string\"){\n\t\t\tthis.config.method = config;\n\t\t}else{\n\t\t\tObject.assign(this.config, config);\n\t\t}\n\t}\n\t\n\t//load config object\n\tgenerateConfig(config = {}){\n\t\tvar ajaxConfig = Object.assign({}, this.config);\n\t\t\n\t\tif(typeof config == \"string\"){\n\t\t\tajaxConfig.method = config;\n\t\t}else{\n\t\t\tObject.assign(ajaxConfig, config);\n\t\t}\n\t\t\n\t\treturn ajaxConfig;\n\t}\n\t\n\t//set request url\n\tsetUrl(url){\n\t\tthis.url = url;\n\t}\n\t\n\t//get request url\n\tgetUrl(){\n\t\treturn this.url;\n\t}\n\t\n\t//send ajax request\n\tsendRequest(url, params, config){\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\n\t\t\treturn this.loaderPromise(url, config, params)\n\t\t\t\t.then((data)=>{\n\t\t\t\t\tif(this.table.options.ajaxResponse){\n\t\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n}\n\nAjax.moduleName = \"ajax\";\n\n//load defaults\nAjax.defaultConfig = defaultConfig;\nAjax.defaultURLGenerator = defaultURLGenerator;\nAjax.defaultLoaderPromise = defaultLoaderPromise;\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\n\nexport default Ajax;","export default {\n\tmethod: \"GET\",\n};","export default function(url, config, params){\n\tvar contentType;\n\n\treturn new Promise((resolve, reject) => {\n\t\t//set url\n\t\turl = this.urlGenerator.call(this.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 this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.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(this, url, config, params);\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif(url){\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\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\n\t\t\t\t\tconfig.headers[\"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)\n\t\t\t\t.then((response)=>{\n\t\t\t\t\tif(response.ok) {\n\t\t\t\t\t\tresponse.json()\n\t\t\t\t\t\t\t.then((data)=>{\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t}).catch((error)=>{\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error)=>{\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\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}","import Module from '../../core/Module.js';\n\nimport defaultPasteActions from './defaults/pasteActions.js';\nimport defaultPasteParsers from './defaults/pasteParsers.js';\n\nclass Clipboard extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = true;\n\t\tthis.pasteParser = function(){};\n\t\tthis.pasteAction = function(){};\n\t\tthis.customSelection = false;\n\t\tthis.rowRange = false;\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRECATED - REMOVE in 5.0\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\n\n\t\tthis.registerColumnOption(\"clipboard\");\n\t\tthis.registerColumnOption(\"titleClipboard\");\n\t}\n\n\tinitialize(){\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\t\tif(this.mode === true || this.mode === \"copy\"){\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\n\t\t\t\tvar plain, html, list;\n\n\t\t\t\tif(!this.blocked){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif(this.customSelection){\n\t\t\t\t\t\tplain = this.customSelection;\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tlist = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\n\n\t\t\t\t\t\thtml = this.table.modules.export.generateHTMLTable(list);\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\n\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif(this.mode === true || this.mode === \"paste\"){\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\n\t\t\t\tthis.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\n\t}\n\n\treset(){\n\t\tthis.blocked = true;\n\t\tthis.customSelection = false;\n\t}\n\n\tgeneratePlainContent (list) {\n\t\tvar output = [];\n\n\t\tlist.forEach((row) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach((col) => {\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif(col){\n\n\t\t\t\t\tif(row.type === \"group\"){\n\t\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(col.value === null){\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowData.push(value);\n\t\t\t});\n\n\t\t\toutput.push(rowData.join(\"\\t\"));\n\t\t});\n\n\t\treturn output.join(\"\\n\");\n\t}\n\n\tcopy (range, internal) {\n\t\tvar sel, textRange;\n\t\tthis.blocked = false;\n\t\tthis.customSelection = false;\n\t\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t}\n\n\t//PASTE EVENT HANDLING\n\tsetPasteAction(action){\n\n\t\tswitch(typeof action){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\n\n\t\t\t\tif(!this.pasteAction){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetPasteParser(parser){\n\t\tswitch(typeof parser){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\n\n\t\t\t\tif(!this.pasteParser){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpaste(e){\n\t\tvar data, rowData, rows;\n\n\t\tif(this.checkPasteOrigin(e)){\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif(rowData){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif(this.table.modExists(\"mutator\")){\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\n\t\t\t}\n\t\t}\n\t}\n\n\tmutateData(data){\n\t\tvar output = [];\n\n\t\tif(Array.isArray(data)){\n\t\t\tdata.forEach((row) => {\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t}else{\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\n\tcheckPasteOrigin(e){\n\t\tvar valid = true;\n\t\tvar blocked = this.confirm(\"clipboard-paste\", [e]);\n\n\t\tif(blocked || ![\"DIV\", \"SPAN\"].includes(e.target.tagName)){\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t}\n\n\tgetPasteData(e){\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t}\n}\n\nClipboard.moduleName = \"clipboard\";\n\n//load defaults\nClipboard.pasteActions = defaultPasteActions;\nClipboard.pasteParsers = defaultPasteParsers;\n\nexport default Clipboard;","export default {\n\treplace:function(data){\n\t\treturn this.table.setData(data);\n\t},\n\tupdate:function(data){\n\t\treturn this.table.updateOrAddData(data);\n\t},\n\tinsert:function(data){\n\t\treturn this.table.addData(data);\n\t},\n\trange:function(data){\n\t\tvar rows = [],\n\t\trange = this.table.modules.selectRange.activeRange,\n\t\tsingleCell = false,\n\t\tbounds, startCell, startRow, rowWidth, dataLength;\n\n\t\tdataLength = data.length;\n\t\t\n\t\tif(range){\n\t\t\tbounds = range.getBounds();\n\t\t\tstartCell = bounds.start;\n\t\t\t\n\t\t\tif(bounds.start === bounds.end){\n\t\t\t\tsingleCell = true;\n\t\t\t}\n\t\t\t\n\t\t\tif(startCell){\n\t\t\t\trows = this.table.rowManager.activeRows.slice();\n\t\t\t\tstartRow = rows.indexOf(startCell.row);\n\n\t\t\t\tif(singleCell){\n\t\t\t\t\trowWidth = data.length;\n\t\t\t\t}else{\n\t\t\t\t\trowWidth = (rows.indexOf(bounds.end.row) - startRow) + 1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif(startRow >-1){\n\t\t\t\t\tthis.table.blockRedraw();\n\t\t\t\t\t\n\t\t\t\t\trows = rows.slice(startRow, startRow + rowWidth);\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row, i) => {\n\t\t\t\t\t\trow.updateData(data[i % dataLength]);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.table.restoreRedraw();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n};","export default {\n\ttable:function(clipboard){\n\t\tvar data = [],\n\t\theaderFindSuccess = true,\n\t\tcolumns = this.table.columnManager.columns,\n\t\tcolumnMap = [],\n\t\trows = [];\n\t\t\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\t\t\n\t\tclipboard.forEach(function(row){\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\t\t\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\n\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\t\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\t\t\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\n\t\t\tdata.forEach(function(item){\n\t\t\t\tvar row = {};\n\t\t\t\t\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\t\t\t\t\n\t\t\t\trows.push(row);\n\t\t\t});\n\t\t\t\n\t\t\treturn rows;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t},\n\trange:function(clipboard){\n\t\tvar data = [],\n\t\trows = [],\n\t\trange = this.table.modules.selectRange.activeRange,\n\t\tsingleCell = false,\n\t\tbounds, startCell, colWidth, columnMap, startCol;\n\t\t\n\t\tif(range){\n\t\t\tbounds = range.getBounds();\n\t\t\tstartCell = bounds.start;\n\n\t\t\tif(bounds.start === bounds.end){\n\t\t\t\tsingleCell = true;\n\t\t\t}\n\t\t\t\n\t\t\tif(startCell){\n\t\t\t\t//get data from clipboard into array of columns and rows.\n\t\t\t\tclipboard = clipboard.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tclipboard.forEach(function(row){\n\t\t\t\t\tdata.push(row.split(\"\\t\"));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(data.length){\n\t\t\t\t\tcolumnMap = this.table.columnManager.getVisibleColumnsByIndex();\n\t\t\t\t\tstartCol = columnMap.indexOf(startCell.column);\n\n\t\t\t\t\tif(startCol > -1){\n\t\t\t\t\t\tif(singleCell){\n\t\t\t\t\t\t\tcolWidth = data[0].length;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcolWidth = (columnMap.indexOf(bounds.end.column) - startCol) + 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcolumnMap = columnMap.slice(startCol, startCol + colWidth);\n\n\t\t\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\t\t\tvar row = {};\n\t\t\t\t\t\t\tvar itemLength = item.length;\n\n\t\t\t\t\t\t\tcolumnMap.forEach(function(col, i){\n\t\t\t\t\t\t\t\trow[col.field] = item[i % itemLength];\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\trows.push(row);\t\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn rows;\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n};","class CalcComponent{\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n}\n\nexport default CalcComponent;","export default {\n\t\"avg\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = 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(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(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\t\"unique\":function(values, data, calcParams){\n\t\tvar unique = values.filter((value, index) => {\n\t\t\treturn (values || value === 0) && values.indexOf(value) === index;\n\t\t});\n\n\t\treturn unique.length;\n\t},\n};","import Module from '../../core/Module.js';\n\nimport CalcComponent from './CalcComponent.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\nimport Row from '../../core/row/Row.js';\n\nimport defaultCalculations from './defaults/calculations.js';\n\nclass ColumnCalcs extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\t\t\n\t\tthis.blocked = false;\n\t\tthis.recalcAfterBlock = false;\n\t\t\n\t\tthis.registerTableOption(\"columnCalcs\", true);\n\t\t\n\t\tthis.registerColumnOption(\"topCalc\");\n\t\tthis.registerColumnOption(\"topCalcParams\");\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\n\t\tthis.registerColumnOption(\"bottomCalc\");\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\n\t\t\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t\t\n\t\tthis.subscribe(\"redraw-blocked\", this.blockRedraw.bind(this));\n\t\tthis.subscribe(\"redraw-restored\", this.restoreRedraw.bind(this));\n\n\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\n\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\t\n\ttableRedraw(force){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t\n\t\tif(force){\n\t\t\tthis.redraw();\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.blocked = true;\n\t\tthis.recalcAfterBlock = false;\n\t}\n\t\n\t\n\trestoreRedraw(){\n\t\tthis.blocked = false;\n\t\t\n\t\tif(this.recalcAfterBlock){\n\t\t\tthis.recalcAfterBlock = false;\n\t\t\tthis.recalcActiveRowsRefresh();\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tuserRecalc(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tblockCheck(){\n\t\tif(this.blocked){\n\t\t\tthis.recalcAfterBlock = true;\n\t\t}\n\t\t\n\t\treturn this.blocked;\n\t}\n\t\n\tvisibleRows(viewable, rows){\n\t\tif(this.topRow){\n\t\t\trows.unshift(this.topRow);\n\t\t}\n\t\t\n\t\tif(this.botRow){\n\t\t\trows.push(this.botRow);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.recalcRowGroup(row);\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRowsRefresh(){\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\n\t\t\tthis.recalcAll();\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRows(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\tcellValueChanged(cell){\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\n\t\t\tif(this.table.options.groupBy){\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\n\t\t\t\t\tthis.recalcActiveRows();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeColumnCheck(column){\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//initialize column calcs\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\tvar config = {\n\t\t\ttopCalcParams:def.topCalcParams || {},\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\n\t\t};\n\t\t\n\t\tif(def.topCalc){\n\t\t\t\n\t\t\tswitch(typeof def.topCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\n\t\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.topCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif(def.bottomCalc){\n\t\t\tswitch(typeof def.bottomCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\n\t\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.botCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t//dummy functions to handle being mock column manager\n\tregisterColumnField(){}\n\t\n\tremoveCalcs(){\n\t\tvar changed = false;\n\t\t\n\t\tif(this.topInitialized){\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(this.botInitialized){\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.footerRemove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\treinitializeCalcs(){\n\t\tif(this.topCalcs.length){\n\t\t\tthis.initializeTopRow();\n\t\t}\n\n\t\tif(this.botCalcs.length){\n\t\t\tthis.initializeBottomRow();\n\t\t}\n\t}\n\t\n\tinitializeTopRow(){\n\t\tvar\tfragment = document.createDocumentFragment();\n\t\t\n\t\tif(!this.topInitialized){\n\n\t\t\tfragment.appendChild(document.createElement(\"br\"));\n\t\t\tfragment.appendChild(this.topElement);\n\n\t\t\tthis.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t}\n\t\n\tinitializeBottomRow(){\n\t\tif(!this.botInitialized){\n\t\t\tthis.footerPrepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tif(this.botInitialized && this.botRow){\n\t\t\tthis.botElement.scrollLeft = left;\n\t\t}\n\t}\n\t\n\trecalc(rows){\n\t\tvar data, row;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(this.topInitialized || this.botInitialized){\n\t\t\t\tdata = this.rowsToData(rows);\n\t\t\t\t\n\t\t\t\tif(this.topInitialized){\n\t\t\t\t\tif(this.topRow){\n\t\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"top\", data);\n\t\t\t\t\tthis.topRow = row;\n\t\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.botInitialized){\n\t\t\t\t\tif(this.botRow){\n\t\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"bottom\", data);\n\t\t\t\t\tthis.botRow = row;\n\t\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t\tthis.botElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t\t\t\n\t\t\t\t//set resizable handles\n\t\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcRowGroup(row){\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t}\n\t\n\trecalcAll(){\n\t\tif(this.topCalcs.length || this.botCalcs.length){\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\n\t\t\t\t\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\n\t\t\t\t\n\t\t\t\tgroups.forEach((group) => {\n\t\t\t\t\tthis.recalcGroup(group);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcGroup(group){\n\t\tvar data, rowData;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(group){\n\t\t\t\tif(group.calcs){\n\t\t\t\t\tif(group.calcs.bottom){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(group.calcs.top){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//generate top stats row\n\tgenerateTopRow(rows){\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t}\n\t//generate bottom stats row\n\tgenerateBottomRow(rows){\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t}\n\t\n\trowsToData(rows){\n\t\tvar data = [];\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tdata.push(row.getData());\n\t\t\t\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\t\tdata = data.concat(children);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//generate stats row\n\tgenerateRow(pos, data){\n\t\tvar rowData = this.generateRowData(pos, data),\n\t\trow;\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.disable();\n\t\t}\n\t\t\n\t\trow = new Row(rowData, this, \"calc\");\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.enable();\n\t\t}\n\t\t\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\t\n\t\trow.component = false;\n\t\t\n\t\trow.getComponent = () => {\n\t\t\tif(!row.component){\n\t\t\t\trow.component = new CalcComponent(row);\n\t\t\t}\n\t\t\t\n\t\t\treturn row.component;\n\t\t};\n\t\t\n\t\trow.generateCells = () => {\n\t\t\t\n\t\t\tvar cells = [];\n\t\t\t\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\t\n\t\t\t\t//set field name of mock column\n\t\t\t\tthis.genColumn.setField(column.getField());\n\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\n\t\t\t\t\n\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams:{}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//ensure css class definition is replicated to calculation cell\n\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\n\t\t\t\t\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(this.genColumn, row);\n\t\t\t\tcell.getElement();\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\t\t\t\t\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\t\t\t\t\n\t\t\t\tif(!column.visible){\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\trow.cells = cells;\n\t\t};\n\t\t\n\t\treturn row;\n\t}\n\t\n\t//generate stats row\n\tgenerateRowData(pos, data){\n\t\tvar rowData = {},\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\tparams, paramKey;\n\t\t\n\t\tcalcs.forEach(function(column){\n\t\t\tvar values = [];\n\t\t\t\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\n\t\t\t\tdata.forEach(function(item){\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\t\t\t\t\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowData;\n\t}\n\t\n\thasTopCalcs(){\n\t\treturn\t!!(this.topCalcs.length);\n\t}\n\t\n\thasBottomCalcs(){\n\t\treturn\t!!(this.botCalcs.length);\n\t}\n\t\n\t//handle table redraw\n\tredraw(){\n\t\tif(this.topRow){\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif(this.botRow){\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t}\n\t\n\t//return the calculated\n\tgetResults(){\n\t\tvar results = {},\n\t\tgroups;\n\t\t\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\t\t\t\n\t\t\tgroups.forEach((group) => {\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\n\t\t\t});\n\t\t}else{\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn results;\n\t}\n\t\n\t//get results from a group\n\tgetGroupResults(group){\n\t\tvar groupObj = group._getSelf(),\n\t\tsubGroups = group.getSubGroups(),\n\t\tsubGroupResults = {},\n\t\tresults = {};\n\t\t\n\t\tsubGroups.forEach((subgroup) => {\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\n\t\t});\n\t\t\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults,\n\t\t};\n\t\t\n\t\treturn results;\n\t}\n\t\n\tadjustForScrollbar(width){\n\t\tif(this.botRow){\n\t\t\tif(this.table.rtl){\n\t\t\t\tthis.botElement.style.paddingLeft = width + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.botElement.style.paddingRight = width + \"px\";\n\t\t\t}\n\t\t}\n\t}\n}\n\nColumnCalcs.moduleName = \"columnCalcs\";\n\n//load defaults\nColumnCalcs.calculations = defaultCalculations;\n\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\n\nimport Row from '../../core/row/Row.js';\n\nimport RowComponent from '../../core/row/RowComponent.js';\n\nclass DataTree extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function(){};\n\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//selecting a parent row selects its children\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.dataTree){\n\t\t\tvar dummyEl = null,\n\t\t\toptions = this.table.options;\n\n\t\t\tthis.field = options.dataTreeChildField;\n\t\t\tthis.indent = options.dataTreeChildIndent;\n\n\t\t\tif(this.options(\"movableRows\")){\n\t\t\t\tconsole.warn(\"The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeBranchElement){\n\n\t\t\t\tif(options.dataTreeBranchElement === true){\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t\t}else{\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch-empty\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeCollapseElement){\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.collapseEl.tabIndex = 0;\n\t\t\t\tthis.collapseEl.innerHTML = \"
        \";\n\t\t\t}\n\n\t\t\tif(options.dataTreeExpandElement){\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.expandEl.tabIndex = 0;\n\t\t\t\tthis.expandEl.innerHTML = \"
        \";\n\t\t\t}\n\n\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedrawing.bind(this));\n\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\n\t\t}\n\t}\n\n\ttableRedrawing(force){\n\t\tvar rows;\n\n\t\tif(force){\n\t\t\trows = this.table.rowManager.getRows();\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.reinitializeRowChildren(row);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeElementField(){\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\n\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\t}\n\t\n\tgetRowChildren(row){\n\t\treturn this.getTreeChildren(row, true);\n\t}\n\n\tcolumnMoving(){\n\t\tvar rows = [];\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\trowDataChanged(row, visible, updatedData){\n\t\tif(this.redrawNeeded(updatedData)){\n\t\t\tthis.initializeRow(row);\n\n\t\t\tif(visible){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tcellValueChanged(cell){\n\t\tvar field = cell.column.getField();\n\n\t\tif(field === this.elementField){\n\t\t\tthis.layoutRow(cell.row);\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t\t}\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t\t}\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\t\tchildren:children,\n\t\t};\n\t}\n\n\treinitializeRowChildren(row){\n\t\tvar children = this.getTreeChildren(row, false, true);\n\n\t\tchildren.forEach(function(child){\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n\n\tlayoutRow(row){\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\tel = cell.getElement(),\n\t\tconfig = row.modules.dataTree;\n\n\t\tif(config.branchEl){\n\t\t\tif(config.branchEl.parentNode){\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t\t}\n\t\t\tconfig.branchEl = false;\n\t\t}\n\n\t\tif(config.controlEl){\n\t\t\tif(config.controlEl.parentNode){\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t\t}\n\t\t\tconfig.controlEl = false;\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\t\tif(config.index){\n\t\t\tif(this.branchEl){\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\t\tif(this.table.rtl){\n\t\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\t}else{\n\t\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\t}\n\t\t\t}else{\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateControlElement(row, el){\n\t\tvar config = row.modules.dataTree,\n\t\toldControl = config.controlEl;\n\n\t\tel = el || row.getCells()[0].getElement();\n\n\t\tif(config.children !== false){\n\n\t\t\tif(config.open){\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.collapseRow(row);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif(oldControl && oldControl.parentNode === el){\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\n\t\t\t}else{\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetRows(rows){\n\t\tvar output = [];\n\n\t\trows.forEach((row, i) => {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif(row instanceof Row){\n\n\t\t\t\trow.create();\n\n\t\t\t\tconfig = row.modules.dataTree;\n\n\t\t\t\tif(!config.index && config.children !== false){\n\t\t\t\t\tchildren = this.getChildren(row);\n\n\t\t\t\t\tchildren.forEach((child) => {\n\t\t\t\t\t\tchild.create();\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tgetChildren(row, allChildren){\n\t\tvar config = row.modules.dataTree,\n\t\tchildren = [],\n\t\toutput = [];\n\n\t\tif(config.children !== false && (config.open || allChildren)){\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach((child) => {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = this.getChildren(child);\n\n\t\t\t\tsubChildren.forEach((sub) => {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgenerateChildren(row){\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif(!Array.isArray(childArray)){\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach((childData) => {\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\n\n\t\t\tchildRow.create();\n\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\n\t\t\tif(childRow.modules.dataTree.children){\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t}\n\n\texpandRow(row, silent){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\tcollapseRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\ttoggleRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tif(config.open){\n\t\t\t\tthis.collapseRow(row);\n\t\t\t}else{\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowExpanded(row){\n\t\treturn row.modules.dataTree.open;\n\t}\n\n\tgetTreeParent(row){\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t}\n\n\tgetTreeParentRoot(row){\n\t\treturn row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;\n\t}\n\n\tgetFilteredTreeChildren(row){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [], children;\n\n\t\tif(config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tchildren.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(childRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\trowDelete(row){\n\t\tvar parent = row.modules.dataTree.parent,\n\t\tchildIndex;\n\n\t\tif(parent){\n\t\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t\t}\n\n\t\t\tif(!parent.data[this.field].length){\n\t\t\t\tdelete parent.data[this.field];\n\t\t\t}\n\n\t\t\tthis.initializeRow(parent);\n\t\t\tthis.layoutRow(parent);\n\t\t}\n\n\t\tthis.refreshData(true);\n\t}\n\n\taddTreeChildRow(row, data, top, index){\n\t\tvar childIndex = false;\n\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif(!Array.isArray(row.data[this.field])){\n\t\t\trow.data[this.field] = [];\n\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\n\t\t\t}\n\t\t}\n\n\t\tif(childIndex === false){\n\t\t\tif(top){\n\t\t\t\trow.data[this.field].unshift(data);\n\t\t\t}else{\n\t\t\t\trow.data[this.field].push(data);\n\t\t\t}\n\t\t}\n\n\t\tthis.initializeRow(row);\n\t\tthis.layoutRow(row);\n\n\t\tthis.refreshData(true);\n\t}\n\n\tfindChildIndex(subject, parent){\n\t\tvar match = false;\n\n\t\tif(typeof subject == \"object\"){\n\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\tmatch = subject.data;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\tmatch = subject._getSelf().data;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\tif(parent.modules.dataTree){\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tmatch = match.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else if(subject === null){\n\t\t\t\tmatch = false;\n\t\t\t}\n\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\tmatch = false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tmatch = parent.data[this.field].find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t}\n\n\t\tif(match){\n\n\t\t\tif(Array.isArray(parent.data[this.field])){\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t\t}\n\n\t\t\tif(match == -1){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\t\treturn match;\n\t}\n\n\tgetTreeChildren(row, component, recurse){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [];\n\n\t\tif(config && config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\t\tif(recurse){\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetChildField(){\n\t\treturn this.field;\n\t}\n\n\tredrawNeeded(data){\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n\t}\n}\n\nDataTree.moduleName = \"dataTree\";\n\nexport default DataTree;","import csv from './downloaders/csv.js';\nimport json from './downloaders/json.js';\nimport pdf from './downloaders/pdf.js';\nimport xlsx from './downloaders/xlsx.js';\nimport html from './downloaders/html.js';\nimport jsonLines from './downloaders/jsonLines.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tjsonLines:jsonLines,\n\tpdf:pdf,\n\txlsx:xlsx,\n\thtml:html,\n};","export default function(list, options = {}, setFileContents){\n\tvar delimiter = options.delimiter ? options.delimiter : \",\",\n\tfileContents = [],\n\theaders = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = [];\n\n\t\tswitch(row.type){\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"header\":\n\t\t\t\trow.columns.forEach((col, i) => {\n\t\t\t\t\tif(col && col.depth === 1){\n\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}\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\n\t\t\t\t\tif(col){\n\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(headers.length){\n\t\tfileContents.unshift(headers.join(delimiter));\n\t}\n\n\tfileContents = fileContents.join(\"\\n\");\n\n\tif(options.bom){\n\t\tfileContents = \"\\ufeff\" + fileContents;\n\t}\n\n\tsetFileContents(fileContents, \"text/csv\");\n}\n","export default function(list, options, setFileContents){\n\tvar fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = {};\n\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif(col){\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\tsetFileContents(fileContents, \"application/json\");\n}","export default function (list, options, setFileContents) {\n\tconst fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tconst item = {};\n\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(JSON.stringify(item));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\n}","export default function(list, options = {}, setFileContents){\n\tvar header = [],\n\tbody = [],\n\tautoTableParams = {},\n\trowGroupStyles = options.rowGroupStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 12,\n\t\tcellPadding: 6,\n\t\tfillColor: 220,\n\t},\n\trowCalcStyles = options.rowCalcStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 10,\n\t\tcellPadding: 4,\n\t\tfillColor: 232,\n\t},\n\tjsPDFParams = options.jsPDF || {},\n\ttitle = options.title ? options.title : \"\";\n\n\tif(!jsPDFParams.orientation){\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t}\n\n\tif(!jsPDFParams.unit){\n\t\tjsPDFParams.unit = \"pt\";\n\t}\n\n\t//parse row list\n\tlist.forEach((row) => {\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\theader.push(parseRow(row));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tbody.push(parseRow(row));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfunction parseRow(row, styles){\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach((col) =>{\n\t\t\tvar cell;\n\n\t\t\tif(col){\n\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcell = {\n\t\t\t\t\tcontent:col.value,\n\t\t\t\t\tcolSpan:col.width,\n\t\t\t\t\trowSpan:col.height,\n\t\t\t\t};\n\n\t\t\t\tif(styles){\n\t\t\t\t\tcell.styles = styles;\n\t\t\t\t}\n\n\t\t\t\trowData.push(cell);\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t}\n\n\n\t//configure PDF\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\tif(options.autoTable){\n\t\tif(typeof options.autoTable === \"function\"){\n\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t}else{\n\t\t\tautoTableParams = options.autoTable;\n\t\t}\n\t}\n\n\tif(title){\n\t\tautoTableParams.didDrawPage = function(data) {\n\t\t\tdoc.text(title, 40, 30);\n\t\t};\n\t}\n\n\tautoTableParams.head = header;\n\tautoTableParams.body = body;\n\n\tdoc.autoTable(autoTableParams);\n\n\tif(options.documentProcessing){\n\t\toptions.documentProcessing(doc);\n\t}\n\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n}\n","import CoreFeature from '../../../../core/CoreFeature.js';\n\nexport default function(list, options, setFileContents){\n\tvar self = this,\n\tsheetName = options.sheetName || \"Sheet1\",\n\tworkbook = XLSX.utils.book_new(),\n\ttableFeatures = new CoreFeature(this),\n\tcompression = 'compress' in options ? options.compress : true,\n\twriteOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression},\n\toutput;\n\n\twriteOptions.type = 'binary';\n\n\tworkbook.SheetNames = [];\n\tworkbook.Sheets = {};\n\n\tfunction generateSheet(){\n\t\tvar rows = [],\n\t\tmerges = [],\n\t\tworksheet = {},\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\n\n\t\t//parse row list\n\t\tlist.forEach((row, i) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function(col, j){\n\n\t\t\t\tif(col){\n\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\tif(col.width > 1 || col.height > -1){\n\t\t\t\t\t\tif(col.height > 1 || col.width > 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}\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\trows.push(rowData);\n\t\t});\n\n\t\t//convert rows to worksheet\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\tif(merges.length){\n\t\t\tworksheet[\"!merges\"] = merges;\n\t\t}\n\n\t\treturn worksheet;\n\t}\n\n\tif(options.sheetOnly){\n\t\tsetFileContents(generateSheet());\n\t\treturn;\n\t}\n\n\tif(options.sheets){\n\t\tfor(var sheet in options.sheets){\n\n\t\t\tif(options.sheets[sheet] === true){\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t}else{\n\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\n\t\t\t\t\ttype:\"xlsx\",\n\t\t\t\t\toptions:{sheetOnly:true},\n\t\t\t\t\tactive:self.active,\n\t\t\t\t\tintercept:function(data){\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}else{\n\t\tworkbook.SheetNames.push(sheetName);\n\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t}\n\n\tif(options.documentProcessing){\n\t\tworkbook = options.documentProcessing(workbook);\n\t}\n\n\t//convert workbook to binary array\n\tfunction s2ab(s) {\n\t\tvar buf = new ArrayBuffer(s.length);\n\t\tvar view = new Uint8Array(buf);\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\t\treturn buf;\n\t}\n\n\toutput = XLSX.write(workbook, writeOptions);\n\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\n}\n","export default function(list, options, setFileContents){\n\tif(this.modExists(\"export\", true)){\n\t\tsetFileContents(this.modules.export.generateHTMLTable(list), \"text/html\");\n\t}\n}","import Module from '../../core/Module.js';\n\nimport defaultDownloaders from './defaults/downloaders.js';\n\nclass Download extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.registerTableOption(\"downloadEncoder\", function(data, mimeType){\n\t\t\treturn new Blob([data],{type:mimeType});\n\t\t}); //function to manipulate download data\n\t\tthis.registerTableOption(\"downloadReady\", undefined); //warn of function deprecation\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\n\n\t\tthis.registerColumnOption(\"download\");\n\t\tthis.registerColumnOption(\"titleDownload\");\n\t}\n\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"downloadReady\", \"downloadEncoder\");\n\t}\t\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tdownloadToTab(type, filename, options, active){\n\t\tthis.download(type, filename, options, active, true);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//trigger file download\n\tdownload(type, filename, options, range, interceptCallback){\n\t\tvar downloadFunc = false;\n\n\t\tfunction buildLink(data, mime){\n\t\t\tif(interceptCallback){\n\t\t\t\tif(interceptCallback === true){\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t}else{\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif(typeof type == \"function\"){\n\t\t\tdownloadFunc = type;\n\t\t}else{\n\t\t\tif(Download.downloaders[type]){\n\t\t\t\tdownloadFunc = Download.downloaders[type];\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tif(downloadFunc){\n\t\t\tvar list = this.generateExportList(range);\n\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\n\t\t}\n\t}\n\n\tgenerateExportList(range){\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t\t//assign group header formatter\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\n\t\t\tgroupHeader = [groupHeader];\n\t\t}\n\n\t\tlist.forEach((row) => {\n\t\t\tvar group;\n\n\t\t\tif(row.type === \"group\"){\n\t\t\t\tgroup = row.columns[0];\n\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t}\n\n\ttriggerDownload(data, mime, type, filename, newTab){\n\t\tvar element = document.createElement('a'),\n\t\tblob = this.table.options.downloadEncoder(data, mime);\n\n\t\tif(blob){\n\t\t\tif(newTab){\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t}else{\n\t\t\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\t\t\t\t\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t}else{\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\n\t\t}\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nDownload.moduleName = \"download\";\n\n//load defaults\nDownload.downloaders = defaultDownloaders;\n\nexport default Download;","export default function maskInput(el, options){\n\tvar mask = options.mask,\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\";\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\", (e) => {\n\t\tvar index = el.value.length,\n\t\tchar = e.key;\n\n\t\tif(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){\n\t\t\tif(index >= mask.length){\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\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\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\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\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", (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\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}","import maskInput from './inputMask.js';\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\n\nexport default class Edit{\n\tconstructor(editor, cell, onRendered, success, cancel, editorParams){\n\t\tthis.edit = editor;\n\t\tthis.table = editor.table;\n\t\tthis.cell = cell;\n\t\tthis.params = this._initializeParams(editorParams);\n\t\t\n\t\tthis.data = [];\n\t\tthis.displayItems = [];\n\t\tthis.currentItems = [];\n\t\tthis.focusedItem = null;\n\t\t\n\t\tthis.input = this._createInputElement();\n\t\tthis.listEl = this._createListElement();\n\t\t\n\t\tthis.initialValues = null; \n\t\t\n\t\tthis.isFilter = cell.getType() === \"header\";\n\t\t\n\t\tthis.filterTimeout = null;\n\t\tthis.filtered = false;\n\t\tthis.typing = false;\n\t\t\n\t\tthis.values = []; \n\t\tthis.popup = null; \n\t\t\n\t\tthis.listIteration = 0;\n\t\t\n\t\tthis.lastAction=\"\";\n\t\tthis.filterTerm=\"\";\n\t\t\n\t\tthis.blurable = true;\n\t\t\n\t\tthis.actions = {\n\t\t\tsuccess:success,\n\t\t\tcancel:cancel\n\t\t};\n\t\t\n\t\tthis._deprecatedOptionsCheck();\n\t\tthis._initializeValue();\n\t\t\n\t\tonRendered(this._onRendered.bind(this));\n\t}\n\t\n\t_deprecatedOptionsCheck(){\n\t\tif(this.params.listItemFormatter){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.sortValuesList){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchFunc){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchingPlaceholder){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t}\n\t\n\t_initializeValue(){\n\t\tvar initialValue = this.cell.getValue();\n\t\t\n\t\tif(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\n\t\t\tinitialValue = this.params.defaultValue;\n\t\t}\n\t\t\n\t\tthis.initialValues = this.params.multiselect ? initialValue : [initialValue];\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.input.value = this.initialValues ? this.initialValues.join(\",\") : \"\";\n\t\t\tthis.headerFilterInitialListGen(); \n\t\t}\n\t}\n\t\n\t_onRendered(){\n\t\tvar cellEl = this.cell.getElement();\n\t\t\n\t\tfunction clickStop(e){\n\t\t\te.stopPropagation();\n\t\t}\t\n\t\t\n\t\tif(!this.isFilter){\n\t\t\tthis.input.style.height = \"100%\";\n\t\t\tthis.input.focus({preventScroll: true});\n\t\t}\n\t\t\n\t\t\n\t\tcellEl.addEventListener(\"click\", clickStop);\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tcellEl.removeEventListener(\"click\", clickStop);\n\t\t}, 1000);\n\t\t\n\t\tthis.input.addEventListener(\"mousedown\", this._preventPopupBlur.bind(this));\n\t}\n\t\n\t_createListElement(){\n\t\tvar listEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-list\");\n\t\t\n\t\tlistEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\tlistEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\t\n\t\treturn listEl;\n\t}\n\t\n\t_setListWidth(){\n\t\tvar element = this.isFilter ? this.input : this.cell.getElement();\n\t\t\n\t\tthis.listEl.style.minWidth = element.offsetWidth + \"px\";\n\t\t\n\t\tif(this.params.maxWidth){\n\t\t\tif(this.params.maxWidth === true){\n\t\t\t\tthis.listEl.style.maxWidth = element.offsetWidth + \"px\";\n\t\t\t}else if(typeof this.params.maxWidth === \"number\"){\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t_createInputElement(){\n\t\tvar attribs = this.params.elementAttributes;\n\t\tvar input = document.createElement(\"input\");\n\t\t\n\t\tinput.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\n\t\t\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\t\n\t\tif(!this.params.autocomplete){\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.style.caretColor = \"transparent\";\n\t\t\t// input.readOnly = (this.edit.currentCell != false);\n\t\t}\n\t\t\n\t\tif(attribs && typeof attribs == \"object\"){\n\t\t\tfor (let key in attribs){\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) + attribs[\"+\" + key]);\n\t\t\t\t}else{\n\t\t\t\t\tinput.setAttribute(key, attribs[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this.params.mask){\n\t\t\tmaskInput(input, this.params);\n\t\t}\n\t\t\n\t\tthis._bindInputEvents(input);\n\t\t\n\t\treturn input;\n\t}\n\t\n\t_initializeParams(params){\n\t\tvar valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\n\t\tvalueCheck;\n\t\t\n\t\tparams = Object.assign({}, params);\n\t\t\n\t\tparams.verticalNavigation = params.verticalNavigation || \"editor\";\n\t\tparams.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\n\t\tparams.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\n\t\tparams.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\n\t\t\n\t\tparams.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\n\t\t\n\t\tvalueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\n\t\t\n\t\tif(!valueCheck){\n\t\t\tconsole.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\");\n\t\t}else if(valueCheck > 1){\n\t\t\tconsole.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\");\n\t\t}\n\t\t\n\t\tif(params.autocomplete){\n\t\t\tif(params.multiselect){\n\t\t\t\tparams.multiselect = false;\n\t\t\t\tconsole.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\");\n\t\t\t}\n\t\t}else{\n\t\t\tif(params.freetext){\n\t\t\t\tparams.freetext = false;\n\t\t\t\tconsole.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterFunc){\n\t\t\t\tparams.filterFunc = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterRemote){\n\t\t\t\tparams.filterRemote = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.mask){\n\t\t\t\tparams.mask = false;\n\t\t\t\tconsole.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.allowEmpty){\n\t\t\t\tparams.allowEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.listOnEmpty){\n\t\t\t\tparams.listOnEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(params.filterRemote && !(typeof params.valuesLookup === \"function\" || params.valuesURL)){\n\t\t\tparams.filterRemote = false;\n\t\t\tconsole.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\n\t\t}\n\t\treturn params;\n\t}\n\t//////////////////////////////////////\n\t////////// Event Handling ////////////\n\t//////////////////////////////////////\n\t\n\t_bindInputEvents(input){\n\t\tinput.addEventListener(\"focus\", this._inputFocus.bind(this));\n\t\tinput.addEventListener(\"click\", this._inputClick.bind(this));\n\t\tinput.addEventListener(\"blur\", this._inputBlur.bind(this));\n\t\tinput.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\tinput.addEventListener(\"search\", this._inputSearch.bind(this));\n\t\t\n\t\tif(this.params.autocomplete){\n\t\t\tinput.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\t\t}\n\t}\n\t\n\t\n\t_inputFocus(e){\n\t\tthis.rebuildOptionsList();\n\t}\n\t\n\t_filter(){\n\t\tif(this.params.filterRemote){\n\t\t\tclearTimeout(this.filterTimeout);\n\t\t\t\n\t\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\t\tthis.rebuildOptionsList();\n\t\t\t}, this.params.filterDelay);\n\t\t}else{\n\t\t\tthis._filterList();\n\t\t}\n\t}\n\t\n\t_inputClick(e){\n\t\te.stopPropagation();\n\t}\n\t\n\t_inputBlur(e){\n\t\tif(this.blurable){\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.hide();\n\t\t\t}else{\n\t\t\t\tthis._resolveValue(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_inputSearch(){\n\t\tthis._clearChoices();\n\t}\n\t\n\t_inputKeyDown(e){\n\t\tswitch(e.keyCode){\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\t\tthis._keyUp(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: //down arrow\n\t\t\t\tthis._keyDown(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //right arrow\n\t\t\t\tthis._keySide(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 13: //enter\n\t\t\t\tthis._keyEnter();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27: //escape\n\t\t\t\tthis._keyEsc();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 36: //home\n\t\t\tcase 35: //end\n\t\t\t\tthis._keyHomeEnd(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: //tab\n\t\t\t\tthis._keyTab(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keySelectLetter(e);\n\t\t}\n\t}\n\t\n\t_inputKeyUp(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 38: //up arrow\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //up arrow\n\t\t\tcase 40: //right arrow\n\t\t\tcase 13: //enter\n\t\t\tcase 27: //escape\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keyAutoCompLetter(e);\n\t\t}\n\t}\n\t\n\t_preventPopupBlur(){\n\t\tif(this.popup){\n\t\t\tthis.popup.blockHide();\n\t\t}\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.restoreHide();\n\t\t\t}\n\t\t}, 10);\n\t}\n\t\n\t_preventBlur(){\n\t\tthis.blurable = false;\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tthis.blurable = true;\n\t\t}, 10);\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Keyboard Navigation /////////\n\t//////////////////////////////////////\n\t\n\t_keyTab(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyUp(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index > 0){\n\t\t\t\tthis._focusItem(this.displayItems[index - 1]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyDown(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index < this.displayItems.length - 1){\n\t\t\t\tif(index == -1){\n\t\t\t\t\tthis._focusItem(this.displayItems[0]);\n\t\t\t\t}else{\n\t\t\t\t\tthis._focusItem(this.displayItems[index + 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keySide(e){\n\t\tif(!this.params.autocomplete){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\t_keyEnter(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyEsc(e){\n\t\tthis._cancel();\n\t}\n\t\n\t_keyHomeEnd(e){\n\t\tif(this.params.autocomplete){\n\t\t\t//prevent table navigation while using input element\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\t\n\t_keySelectLetter(e){\n\t\tif(!this.params.autocomplete){\n\t\t\t// if(this.edit.currentCell === false){\n\t\t\te.preventDefault();\n\t\t\t// }\n\t\t\t\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\n\t\t\t\tthis._scrollToValue(e.keyCode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyAutoCompLetter(e){\n\t\tthis._filter();\n\t\tthis.lastAction = \"typing\";\n\t\tthis.typing = true;\n\t}\n\t\n\t\n\t_scrollToValue(char){\n\t\tclearTimeout(this.filterTimeout);\n\t\t\n\t\tvar character = String.fromCharCode(char).toLowerCase();\n\t\tthis.filterTerm += character.toLowerCase();\n\t\t\n\t\tvar match = this.displayItems.find((item) => {\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\n\t\t});\n\t\t\n\t\tif(match){\n\t\t\tthis._focusItem(match);\n\t\t}\n\t\t\n\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\tthis.filterTerm = \"\";\n\t\t}, 800);\n\t}\n\t\n\t_focusItem(item){\n\t\tthis.lastAction = \"focus\";\n\t\t\n\t\tif(this.focusedItem && this.focusedItem.element){\n\t\t\tthis.focusedItem.element.classList.remove(\"focused\");\n\t\t}\n\t\t\n\t\tthis.focusedItem = item;\n\t\t\n\t\tif(item && item.element){\n\t\t\titem.element.classList.add(\"focused\");\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\n\t\t}\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t/////// Data List Generation /////////\n\t//////////////////////////////////////\n\theaderFilterInitialListGen(){\n\t\tthis._generateOptions(true);\n\t}\n\t\n\trebuildOptionsList(){\n\t\tthis._generateOptions()\n\t\t\t.then(this._sortOptions.bind(this))\n\t\t\t.then(this._buildList.bind(this))\n\t\t\t.then(this._showList.bind(this))\n\t\t\t.catch((e) => {\n\t\t\t\tif(!Number.isInteger(e)){\n\t\t\t\t\tconsole.error(\"List generation error\", e);\n\t\t\t\t}\n\t\t\t});\n\t}\n\t\n\t_filterList(){\n\t\tthis._buildList(this._filterOptions());\n\t\tthis._showList();\n\t}\n\t\n\t_generateOptions(silent){\n\t\tvar values = [];\n\t\tvar iteration = ++ this.listIteration;\n\t\t\n\t\tthis.filtered = false;\n\t\t\n\t\tif(this.params.values){\n\t\t\tvalues = this.params.values;\n\t\t}else if (this.params.valuesURL){\n\t\t\tvalues = this._ajaxRequest(this.params.valuesURL, this.input.value);\n\t\t}else{\n\t\t\tif(typeof this.params.valuesLookup === \"function\"){\n\t\t\t\tvalues = this.params.valuesLookup(this.cell, this.input.value);\n\t\t\t}else if(this.params.valuesLookup){\n\t\t\t\tvalues = this._uniqueColumnValues(this.params.valuesLookupField);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(values instanceof Promise){\n\t\t\tif(!silent){\n\t\t\t\tthis._addPlaceholder(this.params.placeholderLoading);\n\t\t\t}\n\t\t\t\n\t\t\treturn values.then()\n\t\t\t\t.then((responseValues) => {\n\t\t\t\t\tif(this.listIteration === iteration){\n\t\t\t\t\t\treturn this._parseList(responseValues);\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn Promise.reject(iteration);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.resolve(this._parseList(values));\n\t\t}\n\t}\n\t\n\t_addPlaceholder(contents){\n\t\tvar placeholder = document.createElement(\"div\");\n\t\t\n\t\tif(typeof contents === \"function\"){\n\t\t\tcontents = contents(this.cell.getComponent(), this.listEl);\n\t\t}\n\t\t\n\t\tif(contents){\n\t\t\tthis._clearList();\n\t\t\t\n\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\tplaceholder = contents;\n\t\t\t}else{\n\t\t\t\tplaceholder.classList.add(\"tabulator-edit-list-placeholder\");\n\t\t\t\tplaceholder.innerHTML = contents;\n\t\t\t}\n\t\t\t\n\t\t\tthis.listEl.appendChild(placeholder);\n\t\t\t\n\t\t\tthis._showList();\n\t\t}\n\t}\n\t\n\t_ajaxRequest(url, term){\n\t\tvar params = this.params.filterRemote ? {term:term} : {};\n\t\turl = urlBuilder(url, {}, params);\n\t\t\n\t\treturn fetch(url)\n\t\t\t.then((response)=>{\n\t\t\t\tif(response.ok) {\n\t\t\t\t\treturn response.json()\n\t\t\t\t\t\t.catch((error)=>{\n\t\t\t\t\t\t\tconsole.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error)=>{\n\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \", error);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\t}\n\t\n\t_uniqueColumnValues(field){\n\t\tvar output = {},\n\t\tdata = this.table.getData(this.params.valuesLookup),\n\t\tcolumn;\n\t\t\n\t\tif(field){\n\t\t\tcolumn = this.table.columnManager.getColumnByField(field);\n\t\t}else{\n\t\t\tcolumn = this.cell.getColumn()._getSelf();\n\t\t}\n\t\t\n\t\tif(column){\n\t\t\tdata.forEach((row) => {\n\t\t\t\tvar val = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\n\t\t\t\t\toutput[val] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\toutput = [];\n\t\t}\n\t\t\n\t\treturn Object.keys(output);\n\t}\n\t\n\t\n\t_parseList(inputValues){\n\t\tvar data = [];\n\t\t\n\t\tif(!Array.isArray(inputValues)){\n\t\t\tinputValues = Object.entries(inputValues).map(([key, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:key,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t\n\t\tinputValues.forEach((value) => {\n\t\t\tif(typeof value !== \"object\"){\n\t\t\t\tvalue = {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:value,\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tthis._parseListItem(value, data, 0);\n\t\t});\n\t\t\n\t\tif(!this.currentItems.length && this.params.freetext){\n\t\t\tthis.input.value = this.initialValues;\n\t\t\tthis.typing = true;\n\t\t\tthis.lastAction = \"typing\";\n\t\t}\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\treturn data; \n\t}\n\t\n\t_parseListItem(option, data, level){\n\t\tvar item = {};\n\t\t\n\t\tif(option.options){\n\t\t\titem = this._parseListGroup(option, level + 1);\n\t\t}else{\n\t\t\titem = {\n\t\t\t\tlabel:option.label,\n\t\t\t\tvalue:option.value,\n\t\t\t\titemParams:option.itemParams,\n\t\t\t\telementAttributes: option.elementAttributes,\n\t\t\t\telement:false,\n\t\t\t\tselected:false,\n\t\t\t\tvisible:true,\n\t\t\t\tlevel:level,\n\t\t\t\toriginal:option,\n\t\t\t};\n\t\t\t\n\t\t\tif(this.initialValues && this.initialValues.indexOf(option.value) > -1){\n\t\t\t\tthis._chooseItem(item, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tdata.push(item);\n\t}\n\t\n\t_parseListGroup(option, level){\n\t\tvar item = {\n\t\t\tlabel:option.label,\n\t\t\tgroup:true,\n\t\t\titemParams:option.itemParams,\n\t\t\telementAttributes:option.elementAttributes,\n\t\t\telement:false,\n\t\t\tvisible:true,\n\t\t\tlevel:level,\n\t\t\toptions:[],\n\t\t\toriginal:option,\n\t\t};\n\t\t\n\t\toption.options.forEach((child) => {\n\t\t\tthis._parseListItem(child, item.options, level);\n\t\t});\n\t\t\n\t\treturn item;\n\t}\n\t\n\t_sortOptions(options){\n\t\tvar sorter;\n\t\t\n\t\tif(this.params.sort){\n\t\t\tsorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\n\t\t\t\n\t\t\tthis._sortGroup(sorter, options);\n\t\t}\n\t\t\n\t\treturn options;\n\t}\n\t\n\t_sortGroup(sorter, options){\n\t\toptions.sort((a,b) => {\n\t\t\treturn sorter(a.label, b.label, a.value, b.value, a.original, b.original);\n\t\t});\n\t\t\n\t\toptions.forEach((option) => {\n\t\t\tif(option.group){\n\t\t\t\tthis._sortGroup(sorter, option.options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_defaultSortFunction(as, bs){\n\t\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\t\tvar emptyAlign = 0;\n\t\t\n\t\tif(this.params.sort === \"desc\"){\n\t\t\t[as, bs] = [bs, as];\n\t\t}\n\t\t\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\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}\n\t\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn a.length > b.length;\n\t\t}\n\t\t\n\t\treturn emptyAlign;\n\t}\n\t\n\t_filterOptions(){\n\t\tvar filterFunc = this.params.filterFunc || this._defaultFilterFunc,\n\t\tterm = this.input.value;\n\t\t\n\t\tif(term){\n\t\t\tthis.filtered = true;\n\t\t\t\n\t\t\tthis.data.forEach((item) => {\n\t\t\t\tthis._filterItem(filterFunc, term, item);\n\t\t\t});\n\t\t}else{\n\t\t\tthis.filtered = false;\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\t_filterItem(func, term, item){\n\t\tvar matches = false;\n\t\t\n\t\tif(!item.group){\n\t\t\titem.visible = func(term, item.label, item.value, item.original);\n\t\t}else{\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tif(this._filterItem(func, term, option)){\n\t\t\t\t\tmatches = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\titem.visible = matches;\n\t\t}\n\t\t\n\t\treturn item.visible;\n\t}\n\t\n\t_defaultFilterFunc(term, label, value, item){\n\t\tterm = String(term).toLowerCase();\n\t\t\n\t\tif(label !== null && typeof label !== \"undefined\"){\n\t\t\tif(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t//////////////////////////////////////\n\t/////////// Display List /////////////\n\t//////////////////////////////////////\n\t\n\t_clearList(){\n\t\twhile(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\n\t\t\n\t\tthis.displayItems = [];\n\t}\n\t\n\t_buildList(data){\n\t\tthis._clearList();\n\t\t\n\t\tdata.forEach((option) => {\n\t\t\tthis._buildItem(option);\n\t\t});\n\t\t\n\t\tif(!this.displayItems.length){\n\t\t\tthis._addPlaceholder(this.params.placeholderEmpty);\n\t\t} \n\t}\n\t\n\t_buildItem(item){\n\t\tvar el = item.element,\n\t\tcontents;\n\t\t\n\t\tif(!this.filtered || item.visible){\n\t\t\t\n\t\t\tif(!el){\n\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\n\t\t\t\tcontents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\n\t\t\t\t\n\t\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = contents;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-group\");\n\t\t\t\t}else{\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-item\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\n\t\t\t\t\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\n\t\t\t\t\tfor (let key in item.elementAttributes){\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\tel.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.addEventListener(\"click\", this._groupClick.bind(this, item));\n\t\t\t\t}else{\n\t\t\t\t\tel.addEventListener(\"click\", this._itemClick.bind(this, item));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\t\t\t\n\t\t\t\titem.element = el;\n\t\t\t}\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tthis.listEl.appendChild(el);\n\t\t\t\n\t\t\tif(item.group){\n\t\t\t\titem.options.forEach((option) => {\n\t\t\t\t\tthis._buildItem(option);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.displayItems.push(item);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_showList(){\n\t\tvar startVis = this.popup && this.popup.isVisible();\n\t\t\n\t\tif(this.input.parentNode){\n\t\t\tif(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\n\t\t\t\tif(this.popup){\n\t\t\t\t\tthis.popup.hide(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis._setListWidth();\n\t\t\t\n\t\t\tif(!this.popup){\n\t\t\t\tthis.popup = this.edit.popup(this.listEl);\n\t\t\t}\n\t\t\t\n\t\t\tthis.popup.show(this.cell.getElement(), \"bottom\");\n\t\t\t\n\t\t\tif(!startVis){\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.popup.hideOnBlur(this._resolveValue.bind(this, true));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_styleItem(item){\n\t\tif(item && item.element){\n\t\t\tif(item.selected){\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}else{\n\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// User Interaction ///////////\n\t//////////////////////////////////////\n\t\n\t_itemClick(item, e){\n\t\te.stopPropagation();\n\t\t\n\t\tthis._chooseItem(item);\n\t}\n\t\n\t_groupClick(item, e){\n\t\te.stopPropagation();\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t////// Current Item Management ///////\n\t//////////////////////////////////////\n\t\n\t_cancel(){\n\t\tthis.popup.hide(true);\n\t\tthis.actions.cancel();\n\t}\n\t\n\t_clearChoices(){\n\t\tthis.typing = true;\n\t\t\n\t\tthis.currentItems.forEach((item) => {\n\t\t\titem.selected = false;\n\t\t\tthis._styleItem(item);\n\t\t});\n\t\t\n\t\tthis.currentItems = [];\n\t\t\n\t\tthis.focusedItem = null;\n\t}\n\t\n\t_chooseItem(item, silent){\n\t\tvar index;\n\t\t\n\t\tthis.typing = false;\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\tindex = this.currentItems.indexOf(item);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.currentItems.splice(index, 1);\n\t\t\t\titem.selected = false;\n\t\t\t}else{\n\t\t\t\tthis.currentItems.push(item);\n\t\t\t\titem.selected = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.input.value = this.currentItems.map(item => item.label).join(\",\");\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t}else{\n\t\t\tthis.currentItems = [item];\n\t\t\titem.selected = true;\n\t\t\t\n\t\t\tthis.input.value = item.label;\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis._resolveValue();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis._focusItem(item);\n\t}\n\t\n\t_resolveValue(blur){\n\t\tvar output, initialValue;\n\t\t\n\t\tif(this.popup){\n\t\t\tthis.popup.hide(true);\n\t\t}\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\toutput = this.currentItems.map(item => item.value);\n\t\t}else{\n\t\t\tif(blur && this.params.autocomplete && this.typing){\n\t\t\t\tif(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\n\t\t\t\t\toutput = this.input.value;\n\t\t\t\t}else{\n\t\t\t\t\tthis.actions.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.currentItems[0]){\n\t\t\t\t\toutput = this.currentItems[0].value;\n\t\t\t\t}else{\n\t\t\t\t\tinitialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;\n\t\t\t\t\t\n\t\t\t\t\tif(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\n\t\t\t\t\t\toutput = initialValue;\n\t\t\t\t\t}else{\n\t\t\t\t\t\toutput = this.params.emptyValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(output === \"\"){\n\t\t\toutput = this.params.emptyValue;\n\t\t}\n\t\t\n\t\tthis.actions.success(output);\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.initialValues = output && !Array.isArray(output) ? [output] : output;\n\t\t\tthis.currentItems = [];\n\t\t}\n\t}\n\t\n}\n","import input from './editors/input.js';\nimport textarea from './editors/textarea.js';\nimport number from './editors/number.js';\nimport range from './editors/range.js';\nimport date from './editors/date.js';\nimport time from './editors/time.js';\nimport datetime from './editors/datetime.js';\nimport select from './editors/select.js';\nimport list from './editors/list.js';\nimport autocomplete from './editors/autocomplete.js';\nimport star from './editors/star.js';\nimport progress from './editors/progress.js';\nimport tickCross from './editors/tickCross.js';\n\nexport default {\n\tinput:input,\n\ttextarea:textarea,\n\tnumber:number,\n\trange:range,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tselect:select,\n\tlist:list,\n\tautocomplete:autocomplete,\n\tstar:star,\n\tprogress:progress,\n\ttickCross:tickCross,\n};","import maskInput from '../../inputMask.js';\n\n//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange(e);\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//resizable text area element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"hybrid\",\n\tvalue = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\tinput = document.createElement(\"textarea\"),\n\tscrollHeight = 0;\n\n\t//create and style input\n\tinput.style.display = \"block\";\n\tinput.style.padding = \"2px\";\n\tinput.style.height = \"100%\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\tinput.style.whiteSpace = \"pre-wrap\";\n\tinput.style.resize = \"none\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = value;\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\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\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t},300);\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\tinput.addEventListener(\"keyup\", function(){\n\n\t\tinput.style.height = \"\";\n\n\t\tvar heightNow = input.scrollHeight;\n\n\t\tinput.style.height = heightNow + \"px\";\n\n\t\tif(heightNow != scrollHeight){\n\t\t\tscrollHeight = heightNow;\n\t\t\tcell.getRow().normalizeHeight();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"keydown\", function(e){\n\n\t\tswitch(e.keyCode){\n\n\t\t\tcase 13:\n\t\t\t\tif(e.shiftKey && editorParams.shiftEnterSubmit){\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", \"number\");\n\n\tif(typeof editorParams.max != \"undefined\"){\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\n\tif(typeof editorParams.min != \"undefined\"){\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\n\tif(typeof editorParams.step != \"undefined\"){\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = cellValue;\n\n\tvar blurFunc = function(e){\n\t\tonChange();\n\t};\n\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\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\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(){\n\t\tvar value = input.value;\n\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\n\t\tif(value !== cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.setAttribute(\"type\", \"range\");\n\t\n\tif (typeof editorParams.max != \"undefined\") {\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\t\n\tif (typeof editorParams.min != \"undefined\") {\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\t\n\tif (typeof editorParams.step != \"undefined\") {\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\t\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value;\n\t\t\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\t\t\n\t\tif(value != cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e){\n\t\tonChange();\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tfunction convertDate(value){\n\t\tvar newDatetime;\n\t\t\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\t\t\n\t\treturn newDatetime.toFormat(\"yyyy-MM-dd\");\n\t}\n\t\n\tinput.type = \"date\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.max){\n\t\tinput.setAttribute(\"max\", inputFormat ? convertDate(editorParams.max) : editorParams.max);\n\t}\n\n\tif(editorParams.min){\n\t\tinput.setAttribute(\"min\", inputFormat ? convertDate(editorParams.min) : editorParams.min);\n\t}\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\t\t\n\t\t\tcellValue = convertDate(cellValue);\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDate;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDate = DT.fromFormat(String(value), \"yyyy-MM-dd\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDate;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDate.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDate.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"time\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"HH:mm\");\n\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\n\tconsole.log(\"val\", cellValue);\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() == \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxTime = DT.fromFormat(String(value), \"hh:mm\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"datetime-local\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"yyyy-MM-dd\") + \"T\" + newDatetime.toFormat(\"HH:mm\");\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDateTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDateTime = DT.fromISO(String(value));\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDateTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDateTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDateTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The select editor has been deprecated, please use the new list editor\");\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\n\n\teditorParams.autocomplete = true;\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","//star rating\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar self = this,\n\telement = cell.getElement(),\n\tvalue = cell.getValue(),\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\tstars = [],\n\tstarsHolder = document.createElement(\"div\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\n\t//change star type\n\tfunction starChange(val){\n\t\tstars.forEach(function(star, i){\n\t\t\tif(i < val){\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}else{\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//build stars\n\tfunction buildStar(i){\n\n\t\tvar starHolder = document.createElement(\"span\");\n\t\tvar nextStar = star.cloneNode(true);\n\n\t\tstars.push(nextStar);\n\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tstarChange(i);\n\t\t});\n\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t});\n\n\t\tstarHolder.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tsuccess(i);\n\t\t\telement.blur();\n\t\t});\n\n\t\tstarHolder.appendChild(nextStar);\n\t\tstarsHolder.appendChild(starHolder);\n\n\t}\n\n\t//handle keyboard navigation value change\n\tfunction changeValue(val){\n\t\tvalue = val;\n\t\tstarChange(val);\n\t}\n\n\t//style cell\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\t//style holding element\n\tstarsHolder.style.verticalAlign = \"middle\";\n\tstarsHolder.style.display = \"inline-block\";\n\tstarsHolder.style.padding = \"4px\";\n\n\t//style star\n\tstar.setAttribute(\"width\", size);\n\tstar.setAttribute(\"height\", size);\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//create correct number of stars\n\tfor(var i=1;i<= maxStars;i++){\n\t\tbuildStar(i);\n\t}\n\n\t//ensure value does not exceed number of stars\n\tvalue = Math.min(parseInt(value), maxStars);\n\n\t// set initial styling of stars\n\tstarChange(value);\n\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\n\t\tstarChange(0);\n\t});\n\n\tstarsHolder.addEventListener(\"click\", function(e){\n\t\tsuccess(0);\n\t});\n\n\telement.addEventListener(\"blur\", function(e){\n\t\tcancel();\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\tchangeValue(value + 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\tchangeValue(value - 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 13: //enter\n\t\t\t\tsuccess(value);\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn starsHolder;\n}","//draggable progress bar\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar element = cell.getElement(),\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\n\tpercent = (max - min) / 100,\n\tvalue = cell.getValue() || 0,\n\thandle = document.createElement(\"div\"),\n\tbar = document.createElement(\"div\"),\n\tmouseDrag, mouseDragWidth;\n\n\t//set new value\n\tfunction updateValue(){\n\t\tvar style = window.getComputedStyle(element, null);\n\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\n\t\tsuccess(calcVal);\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\telement.setAttribute(\"aria-label\", value);\n\t}\n\n\t//style handle\n\thandle.style.position = \"absolute\";\n\thandle.style.right = \"0\";\n\thandle.style.top = \"0\";\n\thandle.style.bottom = \"0\";\n\thandle.style.width = \"5px\";\n\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t//style bar\n\tbar.style.display = \"inline-block\";\n\tbar.style.position = \"relative\";\n\t// bar.style.top = \"8px\";\n\t// bar.style.bottom = \"8px\";\n\t// bar.style.left = \"4px\";\n\t// bar.style.marginRight = \"4px\";\n\tbar.style.height = \"100%\";\n\tbar.style.backgroundColor = \"#488CE9\";\n\tbar.style.maxWidth = \"100%\";\n\tbar.style.minWidth = \"0%\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//style cell\n\telement.style.padding = \"4px 4px\";\n\n\t//make sure value is in range\n\tvalue = Math.min(parseFloat(value), max);\n\tvalue = Math.max(parseFloat(value), min);\n\n\t//workout percentage\n\tvalue = Math.round((value - min) / percent);\n\t// bar.style.right = value + \"%\";\n\tbar.style.width = value + \"%\";\n\n\telement.setAttribute(\"aria-valuemin\", min);\n\telement.setAttribute(\"aria-valuemax\", max);\n\n\tbar.appendChild(handle);\n\n\thandle.addEventListener(\"mousedown\", function(e){\n\t\tmouseDrag = e.screenX;\n\t\tmouseDragWidth = bar.offsetWidth;\n\t});\n\n\thandle.addEventListener(\"mouseover\", function(){\n\t\thandle.style.cursor = \"ew-resize\";\n\t});\n\n\telement.addEventListener(\"mousemove\", function(e){\n\t\tif(mouseDrag){\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\n\t\t}\n\t});\n\n\telement.addEventListener(\"mouseup\", function(e){\n\t\tif(mouseDrag){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tmouseDrag = false;\n\t\t\tmouseDragWidth = false;\n\n\t\t\tupdateValue();\n\t\t}\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\tcase 13: //enter\n\t\t\t\tupdateValue();\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t}\n\t});\n\n\telement.addEventListener(\"blur\", function(){\n\t\tcancel();\n\t});\n\n\treturn bar;\n}","//checkbox\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar value = cell.getValue(),\n\tinput = document.createElement(\"input\"),\n\ttristate = editorParams.tristate,\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\tindetermState = false,\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\n\t\n\tinput.setAttribute(\"type\", \"checkbox\");\n\tinput.style.marginTop = \"5px\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = value;\n\t\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\n\t\tindetermState = true;\n\t\tinput.indeterminate = true;\n\t}\n\t\n\tif(this.table.browser != \"firefox\" && this.table.browser != \"safari\"){ //prevent blur issue on mac firefox\n\t\tonRendered(function(){\n\t\t\tif(cell.getType() === \"cell\"){\n\t\t\t\tinput.focus({preventScroll: true});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\n\t\n\tfunction setValue(blur){\n\t\tvar checkedValue = input.checked;\n\t\t\n\t\tif(trueValueSet && checkedValue){\n\t\t\tcheckedValue = editorParams.trueValue;\n\t\t}else if(falseValueSet && !checkedValue){\n\t\t\tcheckedValue = editorParams.falseValue;\n\t\t}\n\t\t\n\t\tif(tristate){\n\t\t\tif(!blur){\n\t\t\t\tif(input.checked && !indetermState){\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\tindetermState = true;\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\tindetermState = false;\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(indetermState){\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\treturn checkedValue;\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"change\", function(e){\n\t\tsuccess(setValue());\n\t});\n\n\tinput.addEventListener(\"blur\", function(e){\n\t\tsuccess(setValue(true));\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tif(e.keyCode == 13){\n\t\t\tsuccess(setValue());\n\t\t}\n\t\tif(e.keyCode == 27){\n\t\t\tcancel();\n\t\t}\n\t});\n\t\n\treturn input;\n}","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultEditors from './defaults/editors.js';\n\nclass Edit extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t\tthis.editedCells = [];\n\t\t\n\t\tthis.editors = Edit.editors;\n\t\t\n\t\tthis.registerColumnOption(\"editable\");\n\t\tthis.registerColumnOption(\"editor\");\n\t\tthis.registerColumnOption(\"editorParams\");\n\t\t\n\t\tthis.registerColumnOption(\"cellEditing\");\n\t\tthis.registerColumnOption(\"cellEdited\");\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\n\t\t\n\t\tthis.registerTableOption(\"editTriggerEvent\", \"focus\");\n\t\t\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellIsEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.updateCellClass.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-layout\", this.rowEditableCheck.bind(this));\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\n\t\tthis.subscribe(\"clipboard-paste\", this.pasteBlocker.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\n\t\t\n\t\t\n\t\t// this.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\n\t\t// this.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Paste Negation //////////\n\t///////////////////////////////////\n\t\n\tpasteBlocker(e){\n\t\tif(this.currentCell){\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Keybinding Functions ///////\n\t///////////////////////////////////\n\t\n\tkeybindingNavigateNext(e){\n\t\tvar cell = this.currentCell,\n\t\tnewRow = this.options(\"tabEndNewRow\");\n\n\t\tif(cell){\n\t\t\tif(!this.navigateNext(cell, e)){\n\t\t\t\tif(newRow){\n\t\t\t\t\tcell.getElement().firstChild.blur();\n\t\t\t\t\t\n\t\t\t\t\tif(!this.invalidEdit){\n\t\t\t\t\t\t\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\t\t\t\t\t\t\n\t\t\t\t\t\tnewRow.then(() => {\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tcell.getComponent().navigateNext();\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\t\n\t///////////////////////////////////\n\t///////// Cell Functions //////////\n\t///////////////////////////////////\n\t\n\tcellIsEdited(cell){\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\n\t}\n\t\n\tcellCancelEdit(cell){\n\t\tif(cell === this.currentCell){\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\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tupdateCellClass(cell){\n\t\tif(this.allowEdit(cell)) {\n\t\t\tcell.getElement().classList.add(\"tabulator-editable\");\n\t\t}\n\t\telse {\n\t\t\tcell.getElement().classList.remove(\"tabulator-editable\");\n\t\t}\n\t}\n\t\n\tclearCellEdited(cells){\n\t\tif(!cells){\n\t\t\tcells = this.table.modules.edit.getEditedCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n\t\n\tnavigatePrev(cell = this.currentCell, e){\n\t\tvar nextCell, prevRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateLeft();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(prevRow){\n\t\t\t\t\tnextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateNext(cell = this.currentCell, e){\n\t\tvar nextCell, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateRight();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(nextRow){\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateLeft(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateRight(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateUp(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateDown(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tfindNextEditableCell(row, index){\n\t\tvar nextCell = false;\n\t\t\n\t\tif(index < row.cells.length-1){\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tnextCell = cell;\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\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindPrevEditableCell(row, index){\n\t\tvar prevCell = false;\n\t\t\n\t\tif(index > 0){\n\t\t\tfor(var i = index-1; i >= 0; i--){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tprevCell = cell;\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\t\n\t\treturn prevCell;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.editor !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\tcolumnDeleteCheck(column){\n\t\tif(this.currentCell && this.currentCell.column === column){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowDeleteCheck(row){\n\t\tif(this.currentCell && this.currentCell.row === row){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowEditableCheck(row){\n\t\trow.getCells().forEach((cell) => {\n\t\t\tif(cell.column.modules.edit && typeof cell.column.modules.edit.check === \"function\"){\n\t\t\t\tthis.updateCellClass(cell);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//initialize column editor\n\tinitializeColumn(column){\n\t\tvar config = {\n\t\t\teditor:false,\n\t\t\tblocked:false,\n\t\t\tcheck:column.definition.editable,\n\t\t\tparams:column.definition.editorParams || {}\n\t\t};\n\t\t\n\t\t//set column editor\n\t\tswitch(typeof column.definition.editor){\n\t\t\tcase \"string\":\n\t\t\t\tif(this.editors[column.definition.editor]){\n\t\t\t\t\tconfig.editor = this.editors[column.definition.editor];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"boolean\":\n\t\t\t\tif(column.definition.editor === true){\n\t\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\n\t\t\t\t\t\tif(this.editors[column.definition.formatter]){\n\t\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(config.editor){\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t}\n\t\n\tgetCurrentCell(){\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t}\n\t\n\tclearEditor(cancel){\n\t\tvar cell = this.currentCell,\n\t\tcellEl;\n\t\t\n\t\tthis.invalidEdit = false;\n\t\t\n\t\tif(cell){\n\t\t\tthis.currentCell = false;\n\t\t\t\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\n\t\t\t\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\n\t\t\t\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\tcell.table.element.classList.remove(\"tabulator-editing\");\n\t\t}\n\t}\n\t\n\tcancelEdit(){\n\t\tif(this.currentCell){\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\t\t\t\n\t\t\tthis.clearEditor(true);\n\t\t\tcell.setValueActual(cell.getValue());\n\t\t\tcell.cellRendered();\n\t\t\t\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\n\t\t\t\tcell.row.normalizeHeight(true);\n\t\t\t}\n\t\t\t\n\t\t\tif(cell.column.definition.cellEditCancelled){\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\n\t\t}\n\t}\n\t\n\t//return a formatted value for a cell\n\tbindEditor(cell){\n\t\tif(cell.column.modules.edit){\n\t\t\tvar self = this,\n\t\t\telement = cell.getElement(true);\n\t\t\t\n\t\t\tthis.updateCellClass(cell);\n\t\t\telement.setAttribute(\"tabindex\", 0);\n\t\t\t\n\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif (e.button === 2) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}else{\n\t\t\t\t\tself.mouseClick = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(this.options(\"editTriggerEvent\") === \"dblclick\"){\n\t\t\t\telement.addEventListener(\"dblclick\", function(e){\n\t\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\tif(this.options(\"editTriggerEvent\") === \"focus\" || this.options(\"editTriggerEvent\") === \"click\"){\n\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif(this.options(\"editTriggerEvent\") === \"focus\"){\n\t\t\t\telement.addEventListener(\"focus\", function(e){\n\t\t\t\t\tif(!self.recursionBlock){\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfocusCellNoEvent(cell, block){\n\t\tthis.recursionBlock = true;\n\t\t\n\t\tif(!(block && this.table.browser === \"ie\")){\n\t\t\tcell.getElement().focus({preventScroll: true});\n\t\t}\n\t\t\n\t\tthis.recursionBlock = false;\n\t}\n\t\n\teditCell(cell, forceEdit){\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t}\n\t\n\tfocusScrollAdjust(cell){\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t\trowEl = cell.row.getElement();\n\t\t\t\n\t\t\tif(rowEl.offsetTop < topEdge){\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\n\t\t\t}else{\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0);\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t}\n\t\t\t\n\t\t\tif(cellEl.offsetLeft < leftEdge){\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\n\t\t\t}else{\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tallowEdit(cell) {\n\t\tvar check = cell.column.modules.edit ? true : false;\n\t\t\n\t\tif(cell.column.modules.edit){\n\t\t\tswitch(typeof cell.column.modules.edit.check){\n\t\t\t\tcase \"function\":\n\t\t\t\t\tif(cell.row.initialized){\n\t\t\t\t\t\tcheck = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcheck = !!cell.row.data[cell.column.modules.edit.check];\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tcheck = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn check;\n\t}\n\t\n\tedit(cell, e, forceEdit){\n\t\tvar self = this,\n\t\tallowEdit = true,\n\t\trendered = function(){},\n\t\telement = cell.getElement(),\n\t\teditFinished = false,\n\t\tcellEditor, component, params;\n\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\t\t\n\t\tif(this.currentCell){\n\t\t\tif(!this.invalidEdit && this.currentCell !== cell){\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t//handle successful value change\n\t\tfunction success(value){\n\t\t\tif(self.currentCell === cell && !editFinished){\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\n\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\n\n\t\t\t\t\teditFinished = true;\n\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\t\n\t\t\t\t\tif(!cell.modules.edit){\n\t\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.modules.edit.edited = true;\n\t\t\t\t\t\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\n\t\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.setValue(value, true);\n\n\t\t\t\t\treturn valid === true;\n\t\t\t\t}else{\n\t\t\t\t\teditFinished = true;\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\t\trendered();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\teditFinished = false;\n\t\t\t\t\t}, 10);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//handle aborted edit\n\t\tfunction cancel(){\n\t\t\t// editFinished = true;\n\n\t\t\tif(self.currentCell === cell && !editFinished){\n\t\t\t\tself.cancelEdit();\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\trendered = callback;\n\t\t}\n\t\t\n\t\tif(!cell.column.modules.edit.blocked){\n\t\t\tif(e){\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\t\n\t\t\tallowEdit = this.allowEdit(cell);\n\t\t\t\n\t\t\tif(allowEdit || forceEdit){\n\t\t\t\tself.cancelEdit();\n\t\t\t\t\n\t\t\t\tself.currentCell = cell;\n\t\t\t\t\n\t\t\t\tthis.focusScrollAdjust(cell);\n\t\t\t\t\n\t\t\t\tcomponent = cell.getComponent();\n\t\t\t\t\n\t\t\t\tif(this.mouseClick){\n\t\t\t\t\tthis.mouseClick = false;\n\t\t\t\t\t\n\t\t\t\t\tif(cell.column.definition.cellClick){\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(cell.column.definition.cellEditing){\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\n\t\t\t\t\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\t\t\t\t\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\t\t\t\t\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif(this.currentCell && cellEditor !== false){\n\t\t\t\t\tif(cellEditor instanceof Node){\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.table.element.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\t\t\t\telement.appendChild(cellEditor);\n\t\t\t\t\t\t\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\t\t\t\t\t\t\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\n\t\t\t\t\t\t\t\te.stopPropagation();\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\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\tthis.blur(element);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.blur(element);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\tthis.blur(element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.mouseClick = false;\n\t\t\tthis.blur(element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tblur(element){\n\t\tif(!this.confirm(\"edit-blur\", [element]) ){\n\t\t\telement.blur();\n\t\t}\n\t}\n\t\n\tgetEditedCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.editedCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearEdited(cell){\n\t\tvar editIndex;\n\t\t\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\n\t\t\tcell.modules.edit.edited = false;\n\t\t\t\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\n\t\t}\n\t\t\n\t\teditIndex = this.editedCells.indexOf(cell);\n\t\t\n\t\tif(editIndex > -1){\n\t\t\tthis.editedCells.splice(editIndex, 1);\n\t\t}\n\t}\n}\n\nEdit.moduleName = \"edit\";\n\n//load defaults\nEdit.editors = defaultEditors;\n\n\nexport default Edit;\n","class ExportRow{\n\tconstructor(type, columns, component, indent){\n\t\tthis.type = type;\n\t\tthis.columns = columns;\n\t\tthis.component = component || false;\n\t\tthis.indent = indent || 0;\n\t}\n}\n\nexport default ExportRow;","class ExportColumn{\n\tconstructor(value, component, width, height, depth){\n\t\tthis.value = value;\n\t\tthis.component = component || false;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\t}\n}\n\nexport default ExportColumn;","import Module from '../../core/Module.js';\n\nimport ExportRow from './ExportRow.js';\nimport ExportColumn from './ExportColumn.js';\n\nclass Export extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t\t\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html output config\n\t\t\n\t\tthis.registerColumnOption(\"htmlOutput\");\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tgenerateExportList(config, style, range, colVisProp){\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\n\t\tvar headers, body;\n\t\t\n\t\tif (range === 'range') {\n\t\t\tvar columns = this.table.modules.selectRange.selectedColumns();\n\t\t\theaders = this.config.columnHeaders !== false\n\t\t\t\t? this.headersToExportRows(this.generateColumnGroupHeaders(columns))\n\t\t\t\t: [];\n\t\t\tbody = this.bodyToExportRows(this.rowLookup(range), this.table.modules.selectRange.selectedColumns(true));\n\t\t} else {\n\t\t\theaders = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\t\t\tbody = this.bodyToExportRows(this.rowLookup(range));\n\t\t}\n\n\t\treturn headers.concat(body);\n\t}\n\t\n\tgenerateTable(config, style, range, colVisProp){\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\n\t\t\n\t\treturn this.generateTableElement(list);\n\t}\n\t\n\trowLookup(range){\n\t\tvar rows = [];\n\t\t\n\t\tif(typeof range == \"function\"){\n\t\t\trange.call(this.table).forEach((row) =>{\n\t\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tswitch(range){\n\t\t\t\tcase true:\n\t\t\t\tcase \"visible\":\n\t\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"all\":\n\t\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"selected\":\n\t\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"range\":\n\t\t\t\t\trows = this.table.modules.selectRange.selectedRows();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"active\":\n\t\t\t\tdefault:\n\t\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Object.assign([], rows);\n\t}\n\t\n\tgenerateColumnGroupHeaders(columns){\n\t\tvar output = [];\n\t\t\n\t\tif (!columns) {\n\t\t\tcolumns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\t\t}\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\tvar colData = this.processColumnGroup(column);\n\t\t\t\n\t\t\tif(colData){\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\t\n\tprocessColumnGroup(column){\n\t\tvar subGroups = column.columns,\n\t\tmaxDepth = 0,\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\t\t\n\t\tvar groupData = {\n\t\t\ttitle:title,\n\t\t\tcolumn:column,\n\t\t\tdepth:1,\n\t\t};\n\t\t\n\t\tif(subGroups.length){\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\t\t\t\n\t\t\tsubGroups.forEach((subGroup) => {\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\n\t\t\t\t\n\t\t\t\tif(subGroupData){\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t\t\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tgroupData.depth += maxDepth;\n\t\t\t\n\t\t\tif(!groupData.width){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.columnVisCheck(column)){\n\t\t\t\tgroupData.width = 1;\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groupData;\n\t}\n\t\n\tcolumnVisCheck(column){\n\t\tvar visProp = column.definition[this.colVisProp];\n\t\t\n\t\tif(typeof visProp === \"function\"){\n\t\t\tvisProp = visProp.call(this.table, column.getComponent());\n\t\t}\n\t\t\n\t\treturn visProp !== false && (column.visible || (!column.visible && visProp));\n\t}\n\t\n\theadersToExportRows(columns){\n\t\tvar headers = [],\n\t\theaderDepth = 0,\n\t\texportRows = [];\n\t\t\n\t\tfunction parseColumnGroup(column, level){\n\t\t\t\n\t\t\tvar depth = headerDepth - level;\n\t\t\t\n\t\t\tif(typeof headers[level] === \"undefined\"){\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\n\t\t\t\n\t\t\theaders[level].push(column);\n\t\t\t\n\t\t\tif(column.height > 1){\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\n\t\t\t\t\t\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\n\t\t\t\t\t\theaders[level + i] = [];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\theaders[level + i].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.width > 1){\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\n\t\t\t\t\theaders[level].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.subGroups){\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\t//calculate maximum header depth\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.depth > headerDepth){\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\t\t\n\t\tcolumns.forEach(function(column){\n\t\t\tparseColumnGroup(column,0);\n\t\t});\n\t\t\n\t\theaders.forEach((header) => {\n\t\t\tvar columns = [];\n\t\t\t\n\t\t\theader.forEach((col) => {\n\t\t\t\tif(col){\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t\t}else{\n\t\t\t\t\tcolumns.push(null);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tbodyToExportRows(rows, columns = []){\n\t\tvar exportRows = [];\n\t\t\n\t\tif (columns.length === 0) {\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif (this.columnVisCheck(column)) {\n\t\t\t\t\tcolumns.push(column.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\n\t\trows = rows.filter((row) => {\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn this.config.rowGroups !== false;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn this.config.columnCalcs !== false;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\trows.forEach((row, i) => {\n\t\t\tvar rowData = row.getData(this.colVisProp);\n\t\t\tvar exportCols = [];\n\t\t\tvar indent = 0;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\tindent = row.level;\n\t\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\" :\n\t\t\t\tcase \"row\" :\n\t\t\t\t\tcolumns.forEach((col) => {\n\t\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tgenerateTableElement(list){\n\t\tvar table = document.createElement(\"table\"),\n\t\theaderEl = document.createElement(\"thead\"),\n\t\tbodyEl = document.createElement(\"tbody\"),\n\t\tstyles = this.lookupTableStyles(),\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t\tsetup = {};\n\t\t\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\t\t\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t\t}\n\t\t\n\t\t//assign group header formatter\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\t\t\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\n\t\t\tsetup.groupHeader = [setup.groupHeader];\n\t\t}\n\t\t\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\t\n\t\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\t\t\n\t\t\n\t\tif(list.length > 1000){\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\t\t\n\t\tlist.forEach((row, i) => {\n\t\t\tlet rowEl;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"header\":\n\t\t\t\t\theaderEl.appendChild(this.generateHeaderElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbodyEl.appendChild(this.generateGroupElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbodyEl.appendChild(this.generateCalcElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\trowEl = this.generateRowElement(row, setup, styles);\n\t\t\t\t\n\t\t\t\t\tthis.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\t\tbodyEl.appendChild(rowEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(headerEl.innerHTML){\n\t\t\ttable.appendChild(headerEl);\n\t\t}\n\t\t\n\t\ttable.appendChild(bodyEl);\n\t\t\n\t\t\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\t\treturn table;\n\t}\n\t\n\tlookupTableStyles(){\n\t\tvar styles = {};\n\t\t\n\t\t//lookup row styles\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\t\t\t\n\t\t\tif(styles.firstRow){\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn styles;\n\t}\n\t\n\tgenerateHeaderElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trow.columns.forEach((column) => {\n\t\t\tif(column){\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\t\t\t\t\n\t\t\t\tcellEl.innerHTML = column.value;\n\t\t\t\t\n\t\t\t\tif(this.cloneTableStyle){\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.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\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\n\t\t\t\tif(column.component._column.visible){\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t\t}else{\n\t\t\t\t\tif(column.component._column.definition.width){\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.component._column.parent){\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateGroupElement(row, setup, styles){\n\t\t\n\t\tvar rowEl = document.createElement(\"tr\"),\n\t\tcellEl = document.createElement(\"td\"),\n\t\tgroup = row.columns[0];\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}else{\n\t\t\tif(setup.groupHeader !== false){\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t\t\n\t\tcellEl.colSpan = group.width;\n\t\tcellEl.innerHTML = group.value;\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\t\t\n\t\tif(group.component.isVisible()){\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\n\t\trowEl.appendChild(cellEl);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateCalcElement(row, setup, styles){\n\t\tvar rowEl = this.generateRowElement(row, setup, styles);\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateRowElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\trow.columns.forEach((col, i) => {\n\t\t\tif(col){\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\tcolumn = col.component._column,\n\t\t\t\ttable = this.table,\n\t\t\t\tindex = table.columnManager.findColumnIndex(column),\n\t\t\t\tvalue = col.value,\n\t\t\t\tcellStyle;\n\t\t\t\t\n\t\t\t\tvar cellWrapper = {\n\t\t\t\t\tmodules:{},\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\treturn row.component.getData();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn row.component;\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:function(){\n\t\t\t\t\t\treturn table;\n\t\t\t\t\t},\n\t\t\t\t\tgetComponent:function(){\n\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t},\n\t\t\t\t\tcolumn:column,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\n\t\t\t\t}else{\n\t\t\t\t\tswitch(typeof value){\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = value !== null ? JSON.stringify(value) : \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\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\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(value instanceof Node){\n\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t}else{\n\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;\n\t\t\t\t\n\t\t\t\tif(cellStyle){\n\t\t\t\t\tthis.mapElementStyles(cellStyle, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\n\t\t\t\t\tif(column.definition.align){\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(setup.rowFormatter && row.type === \"row\" && this.config.formatCells !== false){\n\t\t\tlet formatComponent = Object.assign(row.component);\n\n\t\t\tformatComponent.getElement = function(){return rowEl;};\n\n\t\t\tsetup.rowFormatter(row.component);\n\t\t}\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateHTMLTable(list){\n\t\tvar holder = document.createElement(\"div\");\n\t\t\n\t\tholder.appendChild(this.generateTableElement(list));\n\t\t\n\t\treturn holder.innerHTML;\n\t}\n\t\n\tgetHtml(visible, style, config, colVisProp){\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\t\t\n\t\treturn this.generateHTMLTable(list);\n\t}\n\t\n\tmapElementStyles(from, to, props){\n\t\tif(this.cloneTableStyle && from && to){\n\t\t\t\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\" : \"backgroundColor\",\n\t\t\t\t\"color\" : \"fontColor\",\n\t\t\t\t\"width\" : \"width\",\n\t\t\t\t\"font-weight\" : \"fontWeight\",\n\t\t\t\t\"font-family\" : \"fontFamily\",\n\t\t\t\t\"font-size\" : \"fontSize\",\n\t\t\t\t\"text-align\" : \"textAlign\",\n\t\t\t\t\"border-top\" : \"borderTop\",\n\t\t\t\t\"border-left\" : \"borderLeft\",\n\t\t\t\t\"border-right\" : \"borderRight\",\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\n\t\t\t\t\"padding-top\" : \"paddingTop\",\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\n\t\t\t\t\"padding-right\" : \"paddingRight\",\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\n\t\t\t};\n\t\t\t\n\t\t\tif(window.getComputedStyle){\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\t\t\t\t\n\t\t\t\tprops.forEach(function(prop){\n\t\t\t\t\tif(!to.style[lookup[prop]]){\n\t\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nExport.moduleName = \"export\";\n\nexport default Export;\n","export default {\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(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(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}\n\t\t\telse{\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(filterVal, rowVal, rowData, filterParams){\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\tmatches = [];\n\n\t\tkeywords.forEach((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(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}\n\t\t\telse{\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(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}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\":function(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};","import Module from '../../core/Module.js';\n\nimport defaultFilters from './defaults/filters.js';\n\nclass Filter extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t\tthis.tableInitialized = false;\n\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\n\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\n\t\tthis.registerTableOption(\"placeholderHeaderFilter\", false); //placeholder when header filter is empty\n\n\t\tthis.registerColumnOption(\"headerFilter\");\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\n\t\tthis.registerColumnOption(\"headerFilterParams\");\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\n\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\n\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\n\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.subscribe(\"placeholder\", this.generatePlaceholder.bind(this));\n\n\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\n\t\t}\n\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialFilter){\n\t\t\tthis.setFilter(this.table.options.initialFilter);\n\t\t}\n\n\t\tif(this.table.options.initialHeaderFilter){\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\n\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.tableInitialized = true;\n\t}\n\n\tremoteFilterParams(data, config, silent, params){\n\t\tparams.filter = this.getFilters(true, true);\n\t\treturn params;\n\t}\n\n\tgeneratePlaceholder(text){\n\t\tif(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){\n\t\t\treturn this.table.options.placeholderHeaderFilter;\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t//set standard filters\n\tuserSetFilter(field, type, value, params){\n\t\tthis.setFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\t//set standard filters\n\tuserRefreshFilter(){\n\t\tthis.refreshFilter();\n\t}\n\n\t//add filter to array\n\tuserAddFilter(field, type, value, params){\n\t\tthis.addFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\tuserSetHeaderFilterFocus(field){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.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\tuserGetHeaderFilterValue(field) {\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\treturn this.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\tuserSetHeaderFilterValue(field, value){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.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\t//remove filter from array\n\tuserRemoveFilter(field, type, value){\n\t\tthis.removeFilter(field, type, value);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear filters\n\tuserClearFilter(all){\n\t\tthis.clearFilter(all);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear header filters\n\tuserClearHeaderFilter(){\n\t\tthis.clearHeaderFilter();\n\t\tthis.refreshFilter();\n\t}\n\n\n\t//search for specific row components\n\tsearchRows(field, type, value){\n\t\treturn this.search(\"rows\", field, type, value);\n\t}\n\n\t//search for specific data\n\tsearchData(field, type, value){\n\t\treturn this.search(\"data\", field, type, value);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumnHeaderFilter(column){\n\t\tvar def = column.definition;\n\n\t\tif(def.headerFilter){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\n\t//initialize column header filter\n\tinitializeColumn(column, value){\n\t\tvar self = this,\n\t\tfield = column.getField();\n\n\t\t//handle successfully value change\n\t\tfunction success(value){\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\ttype = \"\",\n\t\t\tfilterChangeCheck = \"\",\n\t\t\tfilterFunc;\n\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\n\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\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\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}else{\n\t\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\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function(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 column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!filterFunc){\n\t\t\t\t\t\tswitch(filterType){\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\n\t\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\t}else{\n\t\t\t\t\t\t\t\t\t\treturn false;\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\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type};\n\t\t\t\t}else{\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\t\tself.trackChanges();\n\t\t\t\t\tself.refreshFilter();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess:success,\n\t\t\tattrType:false,\n\t\t\ttagType:false,\n\t\t\temptyFunc:false,\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t}\n\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\n\t\tvar self = this,\n\t\tsuccess = column.modules.filter.success,\n\t\tfield = column.getField(),\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;\n\n\t\tcolumn.modules.filter.value = initialValue;\n\n\t\t//handle aborted edit\n\t\tfunction cancel(){}\n\n\t\tfunction onRendered(callback){\n\t\t\tonRenderedCallback = callback;\n\t\t}\n\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t\t}\n\n\t\tif(field){\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\n\t\t\t\treturn !value && value !== 0;\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch(typeof column.definition.headerFilter){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"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\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== 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}else{\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(editor){\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:() => {\n\t\t\t\t\t\treturn \"header\";\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight:function(){\n\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\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);\n\n\t\t\t\tif(!editorElement){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(editorElement instanceof Node)){\n\t\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\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : (column.definition.headerFilterPlaceholder || self.langText(\"headerFilters|default\")));\n\t\t\t\t});\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\n\t\t\t\t\tvar left = this.table.columnManager.contentsElement.scrollLeft;\n\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft;\n\n\t\t\t\t\tif(left !== headerPos){\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function(e){\n\t\t\t\t\tif(typingTimer){\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function(){\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\n\t\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\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propagating click to column sorters etc\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",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}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tif(!reinitialize){\n\t\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t\t}\n\n\t\t\t\tif(onRenderedCallback){\n\t\t\t\t\tonRenderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t}\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\thideHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tshowHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//programmatically set focus of header filter\n\tsetHeaderFilterFocus(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically get value of header filter\n\tgetHeaderFilterValue(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\treturn column.modules.filter.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\t//programmatically set value of header filter\n\tsetHeaderFilterValue(column, value){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\treloadHeaderFilter(column){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshFilter(){\n\t\tif(this.tableInitialized){\n\t\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\t\tthis.reloadData(null, false, false);\n\t\t\t}else{\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the filters has changed since last use\n\ttrackChanges(){\n\t\tthis.changed = true;\n\t\tthis.dispatch(\"filter-changed\");\n\t}\n\n\t//check if the filters has changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//set standard filters\n\tsetFilter(field, type, value, params){\n\t\tthis.filterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tthis.addFilter(field);\n\t}\n\n\t//add filter to array\n\taddFilter(field, type, value, params){\n\t\tvar changed = false;\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tthis.filterList.push(filter);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\n\t\tif(changed){\n\t\t\tthis.trackChanges();\n\t\t}\n\t}\n\n\tfindFilter(filter){\n\t\tvar column;\n\n\t\tif(Array.isArray(filter)){\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif(typeof filter.field == \"function\"){\n\t\t\tfilterFunc = function(data){\n\t\t\t\treturn filter.field(data, filter.type || {});// pass params to custom filter function\n\t\t\t};\n\t\t}else{\n\n\t\t\tif(Filter.filters[filter.type]){\n\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}\n\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t}\n\n\tfindSubFilters(filters){\n\t\tvar output = [];\n\n\t\tfilters.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t}\n\n\t//get all filters\n\tgetFilters(all, ajax){\n\t\tvar output = [];\n\n\t\tif(all){\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif(ajax){\n\t\t\toutput.forEach(function(item){\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\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t}\n\n\t//filter to Object\n\tfiltersToArray(filterList, ajax){\n\t\tvar output = [];\n\n\t\tfilterList.forEach((filter) => {\n\t\t\tvar item;\n\n\t\t\tif(Array.isArray(filter)){\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\n\t\t\t}else{\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value};\n\n\t\t\t\tif(ajax){\n\t\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//get all filters\n\tgetHeaderFilters(){\n\t\tvar output = [];\n\n\t\tfor(var key in this.headerFilters){\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//remove filter from array\n\tremoveFilter(field, type, value){\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tvar index = -1;\n\n\t\t\tif(typeof filter.field == \"object\"){\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.filterList.splice(index, 1);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear filters\n\tclearFilter(all){\n\t\tthis.filterList = [];\n\n\t\tif(all){\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear header filters\n\tclearHeaderFilter(){\n\t\tthis.headerFilters = {};\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.headerFilterColumns.forEach((column) => {\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\n\t\t\t\tdelete column.modules.filter.value;\n\t\t\t}\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\t\tthis.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//search data and return matching rows\n\tsearch (searchType, field, type, value){\n\t\tvar activeRows = [],\n\t\tfilterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach((filter) => {\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\n\t\t});\n\n\t\treturn activeRows;\n\t}\n\n\t//filter row array\n\tfilter(rowList, filters){\n\t\tvar activeRows = [],\n\t\tactiveRowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\n\t\t}\n\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\n\n\t\t\trowList.forEach((row) => {\n\t\t\t\tif(this.filterRow(row)){\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}else{\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\n\n\t\t\tactiveRows.forEach((row) => {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t}\n\n\t//filter individual row\n\tfilterRow(row, filters){\n\t\tvar match = true,\n\t\tdata = row.getData();\n\n\t\tthis.filterList.forEach((filter) => {\n\t\t\tif(!this.filterRecurse(filter, data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\n\t\tfor(var field in this.headerFilters){\n\t\t\tif(!this.headerFilters[field].func(data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t}\n\n\tfilterRecurse(filter, data){\n\t\tvar match = false;\n\n\t\tif(Array.isArray(filter)){\n\t\t\tfilter.forEach((subFilter) => {\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t}\n}\n\nFilter.moduleName = \"filter\";\n\n//load defaults\nFilter.filters = defaultFilters;\n\nexport default Filter;","import plaintext from './formatters/plaintext.js';\nimport html from './formatters/html.js';\nimport textarea from './formatters/textarea.js';\nimport money from './formatters/money.js';\nimport link from './formatters/link.js';\nimport image from './formatters/image.js';\nimport tickCross from './formatters/tickCross.js';\nimport datetime from './formatters/datetime.js';\nimport datetimediff from './formatters/datetimediff.js';\nimport lookup from './formatters/lookup.js';\nimport star from './formatters/star.js';\nimport traffic from './formatters/traffic.js';\nimport progress from './formatters/progress.js';\nimport color from './formatters/color.js';\nimport buttonTick from './formatters/buttonTick.js';\nimport buttonCross from './formatters/buttonCross.js';\nimport rownum from './formatters/rownum.js';\nimport handle from './formatters/handle.js';\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\nimport rowSelection from './formatters/rowSelection.js';\n\nexport default {\n\tplaintext:plaintext,\n\thtml:html,\n\ttextarea:textarea,\n\tmoney:money,\n\tlink:link,\n\timage:image,\n\ttickCross:tickCross,\n\tdatetime:datetime,\n\tdatetimediff:datetimediff,\n\tlookup:lookup,\n\tstar:star,\n\ttraffic:traffic,\n\tprogress:progress,\n\tcolor:color,\n\tbuttonTick:buttonTick,\n\tbuttonCross:buttonCross,\n\trownum:rownum,\n\thandle:handle,\n\tresponsiveCollapse:responsiveCollapse,\n\trowSelection:rowSelection,\n};","export default function(cell, formatterParams, onRendered){\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\treturn cell.getValue();\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\tvar floatVal = parseFloat(cell.getValue()),\n\tsign = \"\",\n\tnumber, integer, decimal, rgx, value;\n\n\tvar decimalSym = formatterParams.decimal || \".\";\n\tvar thousandSym = formatterParams.thousand || \",\";\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\n\tvar symbol = formatterParams.symbol || \"\";\n\tvar after = !!formatterParams.symbolAfter;\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\tif(isNaN(floatVal)){\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t}\n\n\tif(floatVal < 0){\n\t\tfloatVal = Math.abs(floatVal);\n\t\tsign = negativeSign;\n\t}\n\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\tnumber = String(number).split(\".\");\n\n\tinteger = number[0];\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\tif (formatterParams.thousand !== false) {\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\t}\n\n\tvalue = integer + decimal;\n\t\n\tif(sign === true){\n\t\tvalue = \"(\" + value + \")\";\n\t\treturn after ? value + symbol : symbol + value;\n\t}else{\n\t\treturn after ? sign + value + symbol : sign + symbol + value;\n\t}\n}","import Helpers from '../../../../core/tools/Helpers.js';\n\n\nexport default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\turlPrefix = formatterParams.urlPrefix || \"\",\n\tdownload = formatterParams.download,\n\tlabel = value,\n\tel = document.createElement(\"a\"),\n\tdata;\n\n\tfunction labelTraverse(path, data){\n\t\tvar item = path.shift(),\n\t\tvalue = data[item];\n\t\t\n\t\tif(path.length && typeof value === \"object\"){\n\t\t\treturn labelTraverse(path, value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tif(formatterParams.labelField){\n\t\tdata = cell.getData();\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\n\t}\n\n\tif(formatterParams.label){\n\t\tswitch(typeof formatterParams.label){\n\t\t\tcase \"string\":\n\t\t\t\tlabel = formatterParams.label;\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(label){\n\t\tif(formatterParams.urlField){\n\t\t\tdata = cell.getData();\n\n\t\t\tvalue = Helpers.retrieveNestedData(this.table.options.nestedFieldSeparator, formatterParams.urlField, data);\n\t\t}\n\n\t\tif(formatterParams.url){\n\t\t\tswitch(typeof formatterParams.url){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\tif(formatterParams.target){\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t}\n\n\t\tif(formatterParams.download){\n\n\t\t\tif(typeof download == \"function\"){\n\t\t\t\tdownload = download(cell);\n\t\t\t}else{\n\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t}\n\n\t\t\tel.setAttribute(\"download\", download);\n\t\t}\n\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\treturn el;\n\t}else{\n\t\treturn \" \";\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"img\"),\n\tsrc = cell.getValue();\n\n\tif(formatterParams.urlPrefix){\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t}\n\n\tif(formatterParams.urlSuffix){\n\t\tsrc = src + formatterParams.urlSuffix;\n\t}\n\n\tel.setAttribute(\"src\", src);\n\n\tswitch(typeof formatterParams.height){\n\t\tcase \"number\":\n\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.height = formatterParams.height;\n\t\t\tbreak;\n\t}\n\n\tswitch(typeof formatterParams.width){\n\t\tcase \"number\":\n\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.width = formatterParams.width;\n\t\t\tbreak;\n\t}\n\n\tel.addEventListener(\"load\", function(){\n\t\tcell.getRow().normalizeHeight();\n\t});\n\n\treturn el;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tempty = formatterParams.allowEmpty,\n\ttruthy = formatterParams.allowTruthy,\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\n\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\n\t\telement.setAttribute(\"aria-checked\", true);\n\t\treturn tick || \"\";\n\t}else{\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\treturn \"\";\n\t\t}else{\n\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\treturn cross || \"\";\n\t\t}\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif(newDatetime.isValid){\n\t\t\tif(formatterParams.timezone){\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\n\t\t\t}\n\n\t\t\treturn newDatetime.toFormat(outputFormat);\n\t\t}else{\n\t\t\tif(invalid === true || !value){\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}else{\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif (newDatetime.isValid){\n\t\t\tif(humanize){\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\n\t\t\t}else{\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[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}else{\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar value = cell.getValue();\n\n\tif (typeof formatterParams[value] === \"undefined\") {\n\t\tconsole.warn('Missing display value for ' + value);\n\t\treturn value;\n\t}\n\n\treturn formatterParams[value];\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\tstars = document.createElement(\"span\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\tstarActive = '',\n\tstarInactive = '';\n\n\t//style stars holder\n\tstars.style.verticalAlign = \"middle\";\n\n\t//style star\n\tstar.setAttribute(\"width\", \"14\");\n\tstar.setAttribute(\"height\", \"14\");\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\tfor(var i=1;i<= maxStars;i++){\n\t\tvar nextStar = star.cloneNode(true);\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\tstars.appendChild(nextStar);\n\t}\n\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\telement.setAttribute(\"aria-label\", value);\n\n\treturn stars;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\tel = document.createElement(\"span\"),\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\tcolor = \"#666666\",\n\tpercent, percentValue;\n\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\n\t\treturn;\n\t}\n\n\tel.classList.add(\"tabulator-traffic-light\");\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set color\n\tswitch(typeof colors){\n\t\tcase \"string\":\n\t\t\tcolor = colors;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = colors(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(colors)){\n\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = colors[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\tel.style.backgroundColor = color;\n\n\treturn el;\n}","import CellComponent from '../../../../core/cell/CellComponent.js';\n\nexport default function(cell, formatterParams = {}, onRendered){ //progress bar\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\telement = cell.getElement(),\n\tmax = formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams.min ? formatterParams.min : 0,\n\tlegendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\tpercent, percentValue, color, legend, legendColor;\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set bar color\n\tswitch(typeof formatterParams.color){\n\t\tcase \"string\":\n\t\t\tcolor = formatterParams.color;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = formatterParams.color(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.color)){\n\t\t\t\tlet unit = 100 / formatterParams.color.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tcolor = \"#2DC214\";\n\t}\n\n\t//generate legend\n\tswitch(typeof formatterParams.legend){\n\t\tcase \"string\":\n\t\t\tlegend = formatterParams.legend;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegend = formatterParams.legend(value);\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tlegend = value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegend = false;\n\t}\n\n\t//set legend color\n\tswitch(typeof formatterParams.legendColor){\n\t\tcase \"string\":\n\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.legendColor)){\n\t\t\t\tlet unit = 100 / formatterParams.legendColor.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegendColor = \"#000\";\n\t}\n\n\telement.style.minWidth = \"30px\";\n\telement.style.position = \"relative\";\n\n\telement.setAttribute(\"aria-label\", percentValue);\n\n\tvar barEl = document.createElement(\"div\");\n\tbarEl.style.display = \"inline-block\";\n\tbarEl.style.width = percentValue + \"%\";\n\tbarEl.style.backgroundColor = color;\n\tbarEl.style.height = \"100%\";\n\n\tbarEl.setAttribute('data-max', max);\n\tbarEl.setAttribute('data-min', min);\n\n\tvar barContainer = document.createElement(\"div\");\n\tbarContainer.style.position = \"relative\";\n\tbarContainer.style.width = \"100%\";\n\tbarContainer.style.height = \"100%\";\n\n\tif(legend){\n\t\tvar legendEl = document.createElement(\"div\");\n\t\tlegendEl.style.position = \"absolute\";\n\t\tlegendEl.style.top = 0;\n\t\tlegendEl.style.left = 0;\n\t\tlegendEl.style.textAlign = legendAlign;\n\t\tlegendEl.style.width = \"100%\";\n\t\tlegendEl.style.color = legendColor;\n\t\tlegendEl.innerHTML = legend;\n\t}\n\n\tonRendered(function(){\n\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\tif(!(cell instanceof CellComponent)){\n\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\tholderEl.style.position = \"absolute\";\n\t\t\tholderEl.style.top = \"4px\";\n\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\tholderEl.style.left = \"4px\";\n\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\telement.appendChild(holderEl);\n\n\t\t\telement = holderEl;\n\t\t}\n\n\t\telement.appendChild(barContainer);\n\t\tbarContainer.appendChild(barEl);\n\n\t\tif(legend){\n\t\t\tbarContainer.appendChild(legendEl);\n\t\t}\n\t});\n\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\tvar content = document.createElement(\"span\");\n\tvar row = cell.getRow();\n\tvar table = cell.getTable();\n\n\trow.watchPosition((position) => {\n\t\tif (formatterParams.relativeToPage) {\n\t\t\tposition += table.modules.page.getPageSize() * (table.modules.page.getPage() - 1);\n\t\t}\n\t\tcontent.innerText = position;\n\t});\n\t\n\treturn content;\n}\n","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\treturn \"
        \";\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"div\"),\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\n\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\n\tel.innerHTML = `\n \n \n\n\n\n \n`;\n\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\tfunction toggleList(isOpen){\n\t\tvar collapseEl = config.element;\n\n\t\tconfig.open = isOpen;\n\n\t\tif(collapseEl){\n\n\t\t\tif(config.open){\n\t\t\t\tel.classList.add(\"open\");\n\t\t\t\tcollapseEl.style.display = '';\n\t\t\t}else{\n\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tel.addEventListener(\"click\", function(e){\n\t\te.stopImmediatePropagation();\n\t\ttoggleList(!config.open);\n\t\tcell.getTable().rowManager.adjustTableSize();\n\t});\n\n\ttoggleList(config.open);\n\n\treturn el;\n}","import RowComponent from '../../../../core/row/RowComponent.js';\n\nexport default function(cell, formatterParams, onRendered){\n\tvar checkbox = document.createElement(\"input\");\n\tvar blocked = false;\n\n\tcheckbox.type = 'checkbox';\n\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\n\t\n\tif(this.table.modExists(\"selectRow\", true)){\n\n\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(typeof cell.getRow == 'function'){\n\t\t\tvar row = cell.getRow();\n\n\t\t\tif(row instanceof RowComponent){\n\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\t\tif(this.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\t\tif(!blocked){\n\t\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t}else{\n\t\t\t\tcheckbox = \"\";\n\t\t\t}\n\t\t}else {\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\n\t\t\t\t\tthis.table.deselectRow();\n\t\t\t\t}else {\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t}\n\t}\n\n\treturn checkbox;\n}","import Module from '../../core/Module.js';\n\nimport defaultFormatters from './defaults/formatters.js';\n\nclass Format extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.registerColumnOption(\"formatter\");\n\t\tthis.registerColumnOption(\"formatterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"formatterPrint\");\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\n\t\tthis.registerColumnOption(\"formatterClipboard\");\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\n\t\tthis.registerColumnOption(\"titleFormatter\");\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\n\t}\n\t\n\t//initialize column formatter\n\tinitializeColumn(column){\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\t\t\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t\t}\n\t}\n\t\n\tlookupFormatter(column, type){\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\n\t\tformatter = column.definition[\"formatter\" + type];\n\t\t\n\t\t//set column formatter\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tconfig.formatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = formatter;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn config;\n\t}\n\t\n\tcellRendered(cell){\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\n\t\t\tcell.modules.format.renderedCallback();\n\t\t\tcell.modules.format.rendered = true;\n\t\t}\n\t}\n\t\n\t//return a formatted value for a column header\n\tformatHeader(column, title, el){\n\t\tvar formatter, params, onRendered, mockCell;\n\t\t\n\t\tif(column.definition.titleFormatter){\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\n\t\t\t\n\t\t\tonRendered = (callback) => {\n\t\t\t\tcolumn.titleFormatterRendered = callback;\n\t\t\t};\n\t\t\t\n\t\t\tmockCell = {\n\t\t\t\tgetValue:function(){\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tgetElement:function(){\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tgetType:function(){\n\t\t\t\t\treturn \"header\";\n\t\t\t\t},\n\t\t\t\tgetColumn:function(){\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetTable:() => {\n\t\t\t\t\treturn this.table;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\tparams = column.definition.titleFormatterParams || {};\n\t\t\t\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\t\t\t\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\n\t\t}else{\n\t\t\treturn title;\n\t\t}\n\t}\n\t\n\t\n\t//return a formatted value for a cell\n\tformatValue(cell){\n\t\tvar component = cell.getComponent(),\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\tif(!cell.modules.format){\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\t\t\t\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t}\n\t\t\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t}\n\t\n\tformatExportValue(cell, type){\n\t\tvar formatter = cell.column.modules.format[type],\n\t\tparams;\n\t\t\n\t\tif(formatter){\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(cell.getComponent()) : formatter.params;\n\t\t\t\n\t\t\tfunction onRendered(callback){\n\t\t\t\tif(!cell.modules.format){\n\t\t\t\t\tcell.modules.format = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\t\tcell.modules.format.rendered = false;\n\t\t\t}\n\t\t\t\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t\t\t\n\t\t}else{\n\t\t\treturn this.formatValue(cell);\n\t\t}\n\t}\n\t\n\tsanitizeHTML(value){\n\t\tif(value){\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\t\t\t\n\t\t\treturn String(value).replace(/[&<>\"'`=/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t}\n\t\n\temptyToSpace(value){\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n\t}\n\t\n\t//get formatter for cell\n\tgetFormatter(formatter){\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tformatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t//Custom formatter Function, do nothing\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn formatter;\n\t}\n}\n\nFormat.moduleName = \"format\";\n\n//load defaults\nFormat.formatters = defaultFormatters;\n\nexport default Format;","import Module from '../../core/Module.js';\n\nclass FrozenColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.blocked = true;\n\t\t\n\t\tthis.registerColumnOption(\"frozen\");\n\t}\n\t\n\t//reset initial state\n\treset(){\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.active = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\n\t\t\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-deleted\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-show\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"columns-loaded\", this.reinitializeColumns.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t}\n\t\n\tblockLayout(){\n\t\tthis.blocked = true;\n\t}\n\t\n\tunblockLayout(){\n\t\tthis.blocked = false;\n\t}\n\t\n\tlayoutCell(cell){\n\t\tthis.layoutElement(cell.element, cell.column);\n\t}\n\t\n\treinitializeColumns(){\n\t\tthis.reset();\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tthis.initializeColumn(column);\n\t\t});\n\n\t\tthis.layout();\n\t}\n\t\n\t//initialize specific column\n\tinitializeColumn(column){\n\t\tvar config = {margin:0, edge:false};\n\t\t\n\t\tif(!column.isGroup){\t\t\t\n\t\t\tif(this.frozenCheck(column)){\n\t\t\t\tconfig.position = this.initializationMode;\n\t\t\t\t\n\t\t\t\tif(this.initializationMode == \"left\"){\n\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t}else{\n\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.active = true;\n\t\t\t\t\n\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t}else{\n\t\t\t\tthis.initializationMode = \"right\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfrozenCheck(column){\n\t\tif(column.parent.isGroup && column.definition.frozen){\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t\t}\n\t\t\n\t\tif(column.parent.isGroup){\n\t\t\treturn this.frozenCheck(column.parent);\n\t\t}else{\n\t\t\treturn column.definition.frozen;\n\t\t}\n\t}\n\t\n\t//layout calculation rows\n\tlayoutCalcRows(){\n\t\tif(this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modExists(\"groupRows\")){\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tlayoutGroupCalcs(groups){\n\t\tgroups.forEach((group) => {\n\t\t\tif(group.calcs.top){\n\t\t\t\tthis.layoutRow(group.calcs.top);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.calcs.bottom){\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.groupList && group.groupList.length){\n\t\t\t\tthis.layoutGroupCalcs(group.groupList);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//calculate column positions and layout headers\n\tlayoutColumnPosition(allCells){\n\t\tvar leftParents = [];\n\t\t\n\t\tvar leftMargin = 0;\n\t\tvar rightMargin = 0;\n\t\t\n\t\tthis.leftColumns.forEach((column, i) => {\t\n\t\t\tcolumn.modules.frozen.marginValue = leftMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tleftMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.leftColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\n\t\t\t\tif(!leftParents.includes(parentEl)){\n\t\t\t\t\tthis.layoutElement(parentEl, column);\n\t\t\t\t\tleftParents.push(parentEl);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tparentEl.classList.toggle(\"tabulator-frozen-left\", column.modules.frozen.edge && column.modules.frozen.position === \"left\");\n\t\t\t\tparentEl.classList.toggle(\"tabulator-frozen-right\", column.modules.frozen.edge && column.modules.frozen.position === \"right\");\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column, i) => {\n\t\t\t\n\t\t\tcolumn.modules.frozen.marginValue = rightMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\trightMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.rightColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetColGroupParentElement(column){\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n\t}\n\t\n\t//layout columns appropriately\n\tlayout(){\t\n\t\tif(this.active && !this.blocked){\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition();\n\t\t\t\n\t\t\tthis.reinitializeRows();\n\t\t\t\n\t\t\tthis.layoutCalcRows();\n\t\t}\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.table.rowManager.getVisibleRows(true);\n\t\tvar otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\t\t\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t\t\n\t\tvisibleRows.forEach((row) =>{\n\t\t\tif(row.type === \"row\"){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutRow(row){\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\n\t\t}\n\t\t\n\t\tthis.leftColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutElement(element, column){\n\t\tvar position;\n\t\t\n\t\tif(column.modules.frozen && element){\n\t\t\telement.style.position = \"sticky\";\n\n\t\t\tif(this.table.rtl){\n\t\t\t\tposition = column.modules.frozen.position === \"left\" ? \"right\" : \"left\";\n\t\t\t}else{\n\t\t\t\tposition = column.modules.frozen.position;\n\t\t\t}\n\t\t\n\t\t\telement.style[position] = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\t\t\t\n\t\t\telement.classList.toggle(\"tabulator-frozen-left\", column.modules.frozen.edge && column.modules.frozen.position === \"left\");\n\t\t\telement.classList.toggle(\"tabulator-frozen-right\", column.modules.frozen.edge && column.modules.frozen.position === \"right\");\n\t\t}\n\t}\n\n\tadjustForScrollbar(width){\n\t\tif(this.rightColumns.length){\n\t\t\tthis.table.columnManager.getContentsElement().style.width = \"calc(100% - \" + width + \"px)\";\n\t\t}\n\t}\n\t\n\t_calcSpace(columns, index){\n\t\tvar width = 0;\n\t\t\n\t\tfor (let i = 0; i < index; i++){\n\t\t\tif(columns[i].visible){\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn width;\n\t}\n}\n\nFrozenColumns.moduleName = \"frozenColumns\";\n\nexport default FrozenColumns;","import Module from '../../core/Module.js';\n\nclass FrozenRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\n\n\t\t//register table options\n\t\tthis.registerTableOption(\"frozenRowsField\", \"id\"); //field to choose frozen rows by\n\t\tthis.registerTableOption(\"frozenRows\", false); //holder for frozen row identifiers\n\t}\n\n\tinitialize(){\n\t\tvar\tfragment = document.createDocumentFragment();\n\t\t\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\t\t\n\t\tfragment.appendChild(document.createElement(\"br\"));\n\t\tfragment.appendChild(this.topElement);\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);\n\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\n\n\t\tif(this.table.options.frozenRows){\n\t\t\tthis.subscribe(\"data-processed\", this.initializeRows.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t}\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\tinitializeRows(){\n\t\tthis.table.rowManager.getRows().forEach((row) => {\n\t\t\tthis.initializeRow(row);\n\t\t});\n\t}\n\n\tinitializeRow(row){\n\t\tvar frozenRows = this.table.options.frozenRows,\n\t\trowType = typeof frozenRows;\n\n\t\tif(rowType === \"number\"){\n\t\t\tif(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(rowType === \"function\"){\n\t\t\tif(frozenRows.call(this.table, row.getComponent())){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(Array.isArray(frozenRows)){\n\t\t\tif(frozenRows.includes(row.data[this.options(\"frozenRowsField\")])){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowFrozen(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\treturn index > -1;\n\t}\n\n\tisFrozen(){\n\t\treturn !!this.rows.length;\n\t}\n\n\tvisibleRows(viewable, rows){\n\t\tthis.rows.forEach((row) => {\n\t\t\trows.push(row);\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\t//filter frozen rows out of display data\n\tgetRows(rows){\n\t\tvar output = rows.slice(0);\n\n\t\tthis.rows.forEach(function(row){\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif(index > -1){\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tfreezeRow(row){\n\t\tif(!row.modules.frozen){\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.styleRows();\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t}\n\n\tunfreezeRow(row){\n\t\tif(row.modules.frozen){\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tthis.detachRow(row);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tif(this.rows.length){\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t}\n\n\tdetachRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t}\n\n\tstyleRows(row){\n\t\tthis.rows.forEach((row, i) => {\n\t\t\tthis.table.rowManager.styleRow(row, i);\n\t\t});\n\t}\n}\n\nFrozenRows.moduleName = \"frozenRows\";\n\nexport default FrozenRows;","//public group object\nclass GroupComponent {\n\tconstructor (group){\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"group\", target._group, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKey(){\n\t\treturn this._group.key;\n\t}\n\n\tgetField(){\n\t\treturn this._group.field;\n\t}\n\n\tgetElement(){\n\t\treturn this._group.element;\n\t}\n\n\tgetRows(){\n\t\treturn this._group.getRows(true);\n\t}\n\n\tgetSubGroups(){\n\t\treturn this._group.getSubGroups(true);\n\t}\n\n\tgetParentGroup(){\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t}\n\n\tisVisible(){\n\t\treturn this._group.visible;\n\t}\n\n\tshow(){\n\t\tthis._group.show();\n\t}\n\n\thide(){\n\t\tthis._group.hide();\n\t}\n\n\ttoggle(){\n\t\tthis._group.toggleVisibility();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible);\n\t}\n\n\t_getSelf(){\n\t\treturn this._group;\n\t}\n\n\tgetTable(){\n\t\treturn this._group.groupManager.table;\n\t}\n}\n\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\nimport GroupComponent from './GroupComponent.js';\n\n//Group functions\nclass Group{\n\t\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.element = false;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\t\t\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\t\t\n\t\tthis.createValueGroups();\n\t}\n\t\n\twipe(elementsOnly){\n\t\tif(!elementsOnly){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\tgroup.wipe();\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tif(row.modules){\n\t\t\t\t\t\tdelete row.modules.group;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n\t\n\tcreateElements(){\n\t\tvar arrow = document.createElement(\"div\");\n\t\tarrow.classList.add(\"tabulator-arrow\");\n\t\t\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\t\tthis.arrowElement.appendChild(arrow);\n\t\t\n\t\t//setup movable rows\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t}\n\t\n\tcreateValueGroups(){\n\t\tvar level = this.level + 1;\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\n\t\t\t\tthis._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t}\n\t\n\taddBindings(){\n\t\tvar toggleElement;\n\t\t\n\t\tif(this.groupManager.table.options.groupToggleElement){\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\n\t\t\t\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\n\t\t\t\tif(this.groupManager.table.options.groupToggleElement === \"arrow\"){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\t//allow click event to propagate before toggling visibility\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.toggleVisibility();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\t\n\t_createGroup(groupID, level){\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\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\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\t_addRowToGroup(row){\n\t\t\n\t\tvar level = this.level + 1;\n\t\t\n\t\tif(this.hasSubGroups){\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\tgroupKey = level + \"_\" + groupID;\n\t\t\t\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\t\tif(this.groups[groupKey]){\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(!this.groups[groupKey]){\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_addRow(row){\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t}\n\t\n\tinsertRow(row, to, after){\n\t\tvar data = this.conformRowData({});\n\t\t\n\t\trow.updateData(data);\n\t\t\n\t\tvar toIndex = this.rows.indexOf(to);\n\t\t\n\t\tif(toIndex > -1){\n\t\t\tif(after){\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\n\t\t\t}else{\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t}else{\n\t\t\tif(after){\n\t\t\t\tthis.rows.push(row);\n\t\t\t}else{\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\trow.modules.group = this;\n\t\t\n\t\t// this.generateGroupHeaderContents();\n\t\t\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\t\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\t\n\tscrollHeader(left){\n\t\tif(this.arrowElement){\n\t\t\tthis.arrowElement.style.marginLeft = left;\n\t\t\t\n\t\t\tthis.groupList.forEach(function(child){\n\t\t\t\tchild.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tgetRowIndex(row){}\n\t\n\t//update row data to match grouping constraints\n\tconformRowData(data){\n\t\tif(this.field){\n\t\t\tdata[this.field] = this.key;\n\t\t}else{\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\t\t\n\t\tif(this.parent){\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\tremoveRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t\t\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.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}\t\t\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(el.parentNode){\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupManager.blockRedraw){\n\t\t\t\tthis.generateGroupHeaderContents();\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupList.length){\n\t\t\t\tif(this.parent){\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t}else{\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetHeadersAndRows(){\n\t\tvar output = [];\n\t\t\n\t\toutput.push(this);\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\t\n\t\tif(this.calcs.top){\n\t\t\tthis.calcs.top.detachElement();\n\t\t\tthis.calcs.top.deleteCells();\n\t\t}\n\t\t\n\t\tif(this.calcs.bottom){\n\t\t\tthis.calcs.bottom.detachElement();\n\t\t\tthis.calcs.bottom.deleteCells();\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\tif(this.visible){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toutput = output.concat(this.rows);\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\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\t\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetData(visible, transform){\n\t\tvar output = [];\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(!visible || (visible && this.visible)){\n\t\t\tthis.rows.forEach((row) => {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRowCount(){\n\t\tvar count = 0;\n\t\t\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t}else{\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t\n\ttoggleVisibility(){\n\t\tif(this.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\t\n\thide(){\n\t\tthis.visible = false;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\t\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\n\t}\n\t\n\tshow(){\n\t\tthis.visible = true;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tvar prev = this.generateElement();\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((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\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\n\t}\n\t\n\t_visSet(){\n\t\tvar data = [];\n\t\t\n\t\tif(typeof this.visible == \"function\"){\n\t\t\t\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\t\t\t\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\t\n\t\t\t\tif(result){\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tif(this.rows.find(function(item){\n\t\t\t\treturn item === row;\n\t\t\t})){\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetSubGroups(component){\n\t\tvar output = [];\n\t\t\n\t\tthis.groupList.forEach(function(child){\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRows(component, includeChildren){\n\t\tvar output = [];\n\t\t\n\t\tif(includeChildren && this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getRows(component, includeChildren));\n\t\t\t});\n\t\t}else{\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\toutput.push(component ? row.getComponent() : row);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgenerateGroupHeaderContents(){\n\t\tvar data = [];\n\t\t\n\t\tvar rows = this.getRows(false, true);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\t\t\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\n\t\tif(typeof this.elementContents === \"string\"){\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t}else{\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\t\t\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t}\n\t\n\tgetPath(path = []) {\n\t\tpath.unshift(this.key);\n\t\tif(this.parent) {\n\t\t\tthis.parent.getPath(path);\n\t\t}\n\t\treturn path;\n\t}\n\t\n\t////////////// Standard Row Functions //////////////\n\t\n\tgetElement(){\n\t\treturn this.elementContents ? this.element : this.generateElement();\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.addBindings = false;\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(this.visible){\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t}else{\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\t\t\n\t\tthis.generateGroupHeaderContents();\n\t\t\n\t\t// this.addBindings();\n\t\t\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(){\n\t\tthis.setHeight(this.element.clientHeight);\n\t}\n\t\n\tinitialize(force){\n\t\tif(!this.initialized || force){\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\treinitialize(){\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\t\t\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.initialize(true);\n\t\t}\n\t}\n\t\n\tsetHeight(height){\n\t\tif(this.height != height){\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\tgetGroup(){\n\t\treturn this;\n\t}\n\t\n\treinitializeHeight(){}\n\t\n\tcalcHeight(){}\n\t\n\tsetCellHeight(){}\n\t\n\tclearCellHeight(){}\n\t\n\tdeinitializeHeight(){}\n\n\trendered(){}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new GroupComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n\nexport default Group;","import Module from '../../core/Module.js';\n\nimport Group from './Group.js';\n\nclass GroupRows extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\t\n\t\tthis.displayHandler = this.getRows.bind(this);\n\n\t\tthis.blockRedraw = false;\n\t\t\n\t\t//register table options\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\n\t\tthis.registerTableOption(\"groupValues\", false);\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\n\t\t\n\t\t//register table functions\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\n\t}\n\t\n\t//initialize group configuration\n\tinitialize(){\n\t\tthis.subscribe(\"table-destroy\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wipe\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wiped\", this._restore_redrawing.bind(this));\n\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t_blockRedrawing(){\n\t\tthis.blockRedraw = true;\n\t}\n\n\t_restore_redrawing(){\n\t\tthis.blockRedraw = false;\n\t}\n\n\tconfigureGroupSetup(){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar groupBy = this.table.options.groupBy,\n\t\t\tstartOpen = this.table.options.groupStartOpen,\n\t\t\tgroupHeader = this.table.options.groupHeader;\n\t\t\t\n\t\t\tthis.allowedValues = this.table.options.groupValues;\n\t\t\t\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\t\t\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\n\t\t\t\t};\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupIDLookups = [];\n\t\t\t\n\t\t\tif(groupBy){\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\t\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\t\t\t\t\t\n\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\tif(col.definition.topCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(col.definition.bottomCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\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\t\n\t\t\tif(!Array.isArray(groupBy)){\n\t\t\t\tgroupBy = [groupBy];\n\t\t\t}\n\t\t\t\n\t\t\tgroupBy.forEach((group, i) => {\n\t\t\t\tvar lookupFunc, column;\n\t\t\t\t\n\t\t\t\tif(typeof group == \"function\"){\n\t\t\t\t\tlookupFunc = group;\n\t\t\t\t}else{\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\n\t\t\t\t\t\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t\t};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groupIDLookups.push({\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\t\tfunc:lookupFunc,\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tif(startOpen){\n\t\t\t\tif(!Array.isArray(startOpen)){\n\t\t\t\t\tstartOpen = [startOpen];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstartOpen.forEach((level) => {\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.startOpen = startOpen;\n\t\t\t}\n\t\t\t\n\t\t\tif(groupHeader){\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t\t}\n\t\t}else{\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\trowSample(rows, prevValue){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar group = this.getGroups(false)[0];\n\t\t\t\n\t\t\tprevValue.push(group.getRows(false)[0]);\n\t\t}\n\t\t\n\t\treturn prevValue;\n\t}\n\t\n\tvirtualRenderFill(){\n\t\tvar el = this.table.rowManager.tableElement;\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\trows = rows.filter((row) => {\n\t\t\t\treturn row.type !== \"group\";\n\t\t\t});\n\t\t\t\n\t\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\n\t\t}else{\n\t\t\treturn rows;\n\t\t}\n\t}\n\t\n\trowAddingIndex(row, index, top){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.assignRowToGroup(row);\n\t\t\t\n\t\t\tvar groupRows = row.modules.group.rows;\n\t\t\t\n\t\t\tif(groupRows.length > 1){\n\t\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\n\t\t\t\t\tif(top){\n\t\t\t\t\t\tif(groupRows[0] !== row){\n\t\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn index;\n\t\t}\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"group-changed\");\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tsetGroupBy(groups){\n\t\tthis.table.options.groupBy = groups;\n\t\t\n\t\tif(!this.initialized){\n\t\t\tthis.initialize();\n\t\t}\n\t\t\n\t\tthis.configureGroupSetup();\n\n\t\tif(!groups && this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs === true){\n\t\t\tthis.table.modules.columnCalcs.reinitializeCalcs();\n\t\t}\n\t\t\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupValues(groupValues){\n\t\tthis.table.options.groupValues = groupValues;\n\t\tthis.configureGroupSetup();\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupStartOpen(values){\n\t\tthis.table.options.groupStartOpen = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tsetGroupHeader(values){\n\t\tthis.table.options.groupHeader = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tuserGetGroups(values){\n\t\treturn this.getGroups(true);\n\t}\n\t\n\t// get grouped table data in the same format as getData()\n\tuserGetGroupedData(){\n\t\treturn this.table.options.groupBy ? this.getGroupedData() : this.getData();\n\t}\n\t\n\t\n\t///////////////////////////////////////\n\t///////// Component Functions /////////\n\t///////////////////////////////////////\n\t\n\trowGetGroup(row){\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\trowMoving(from, to, after){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(!after && to instanceof Group){\n\t\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t\t}\n\t\t\t\n\t\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\n\t\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\n\t\t\t\n\t\t\tif(toGroup === fromGroup){\n\t\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t}else{\n\t\t\t\tif(fromGroup){\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\trowDeleting(row){\n\t\t//remove from group\n\t\tif(this.table.options.groupBy && row.modules.group){\n\t\t\trow.modules.group.removeRow(row);\n\t\t}\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.updateGroupRows(true);\n\t\t}\t\n\t}\n\t\n\tcellUpdated(cell){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.reassignRowToGroup(cell.row);\n\t\t}\n\t}\n\t\n\t//return appropriate rows with group headers\n\tgetRows(rows){\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\n\t\t\t\n\t\t\tthis.generateGroups(rows);\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\n\t\t\t}\n\t\t\t\n\t\t\treturn this.updateGroupRows();\n\t\t\t\n\t\t}else{\n\t\t\treturn rows.slice(0);\n\t\t}\n\t}\n\t\n\tgetGroups(component){\n\t\tvar groupComponents = [];\n\t\t\n\t\tthis.groupList.forEach(function(group){\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\tgetChildGroups(group){\n\t\tvar groupComponents = [];\n\t\t\n\t\tif(!group){\n\t\t\tgroup = this;\n\t\t}\n\t\t\n\t\tgroup.groupList.forEach((child) => {\n\t\t\tif(child.groupList.length){\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\n\t\t\t}else{\n\t\t\t\tgroupComponents.push(child);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\twipe(){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\tpullGroupListData(groupList) {\n\t\tvar groupListData = [];\n\t\t\n\t\tgroupList.forEach((group) => {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\t\t\t\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\n\t\t\t\t\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t}\n\t\t\t\n\t\t\telse {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\t\n\t\t\t\tgroup.getRows().forEach((row) => {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupListData;\n\t}\n\t\n\tgetGroupedData(){\n\t\t\n\t\treturn this.pullGroupListData(this.groupList);\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\t\n\t\tif(this.options(\"dataTree\")){\n\t\t\trow = this.table.modules.dataTree.getTreeParentRoot(row);\n\t\t}\n\t\t\n\t\tthis.groupList.forEach((group) => {\n\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\n\t\t\tif(result){\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tcountGroups(){\n\t\treturn this.groupList.length;\n\t}\n\t\n\tgenerateGroups(rows){\n\t\tvar oldGroups = this.groups;\n\t\t\n\t\tthis.groups = {};\n\t\tthis.groupList = [];\n\t\t\n\t\tif(this.allowedValues && this.allowedValues[0]){\n\t\t\tthis.allowedValues[0].forEach((value) => {\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\n\t\t\t});\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t}else{\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t\t\n\t\tObject.values(oldGroups).forEach((group) => {\n\t\t\tgroup.wipe(true);\n\t\t});\t\n\t}\n\t\n\t\n\tcreateGroup(groupID, level, oldGroups){\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\tgroup;\n\t\t\n\t\toldGroups = oldGroups || [];\n\t\t\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\tassignRowToExistingGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tgroupKey = \"0_\" + groupID;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n\t\n\tassignRowToGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\n\t\t\n\t\tif(newGroupNeeded){\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\t\t\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\t\t\n\t\treturn !newGroupNeeded;\n\t}\n\t\n\treassignRowToGroup(row){\n\t\tif(row.type === \"row\"){\n\t\t\tvar oldRowGroup = row.modules.group,\n\t\t\toldGroupPath = oldRowGroup.getPath(),\n\t\t\tnewGroupPath = this.getExpectedPath(row),\n\t\t\tsamePath;\n\t\t\t\n\t\t\t// figure out if new group path is the same as old group path\n\t\t\tsamePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\n\t\t\t\treturn element === newGroupPath[index];\n\t\t\t});\n\t\t\t\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\t\t\tif(!samePath) {\n\t\t\t\toldRowGroup.removeRow(row);\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetExpectedPath(row) {\n\t\tvar groupPath = [], rowData = row.getData();\n\t\t\n\t\tthis.groupIDLookups.forEach((groupId) => {\n\t\t\tgroupPath.push(groupId.func(rowData));\n\t\t});\n\t\t\n\t\treturn groupPath;\n\t}\n\t\n\tupdateGroupRows(force){\n\t\tvar output = [];\n\n\t\tif(!this.blockRedraw){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tscrollHeaders(left){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\n\t\t\t}\n\t\t\t\n\t\t\tleft = left + \"px\";\n\t\t\t\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tgroup.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcheckBasicModeGroupHeaderWidth(){\n\t\tvar element = this.table.rowManager.tableElement,\n\t\tonlyGroupHeaders = true;\n\t\t\n\t\tthis.table.rowManager.getDisplayRows().forEach((row, index) =>{\n\t\t\tthis.table.rowManager.styleRow(row, index);\n\t\t\telement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t\t\n\t\t\tif(row.type !== \"group\"){\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n}\n\nGroupRows.moduleName = \"groupRows\";\n\nexport default GroupRows;","import Module from '../../core/Module.js';\nimport Row from '../../core/row/Row.js';\nimport Cell from '../../core/cell/Cell.js';\n\nimport defaultUndoers from './defaults/undoers.js';\nimport defaultRedoers from './defaults/redoers.js';\n\nclass History extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.history){\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\n\t}\n\n\trowMoved(from, to, after){\n\t\tthis.action(\"rowMove\", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});\n\t}\n\n\trowAdded(row, data, pos, index){\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\n\t}\n\n\trowDeleted(row){\n\t\tvar index, rows;\n\n\t\tif(this.table.options.groupBy){\n\n\t\t\trows = row.getComponent().getGroup()._getSelf().rows;\n\t\t\tindex = rows.indexOf(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = rows[index-1];\n\t\t\t}\n\t\t}else{\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\n\t\t\t}\n\t\t}\n\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\n\t}\n\n\tcellUpdated(cell){\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\n\t}\n\n\tclear(){\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t}\n\n\taction(type, component, data){\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype:type,\n\t\t\tcomponent:component,\n\t\t\tdata:data,\n\t\t});\n\n\t\tthis.index ++;\n\t}\n\n\tgetHistoryUndoSize(){\n\t\treturn this.index + 1;\n\t}\n\n\tgetHistoryRedoSize(){\n\t\treturn this.history.length - (this.index + 1);\n\t}\n\n\tclearComponentHistory(component){\n\t\tvar index = this.history.findIndex(function(item){\n\t\t\treturn item.component === component;\n\t\t});\n\n\t\tif(index > -1){\n\t\t\tthis.history.splice(index, 1);\n\t\t\tif(index <= this.index){\n\t\t\t\tthis.index--;\n\t\t\t}\n\n\t\t\tthis.clearComponentHistory(component);\n\t\t}\n\t}\n\n\tundo(){\n\t\tif(this.index > -1){\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(this.options(\"history\") ? \"History Undo Error - No more history to undo\" : \"History module not enabled\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tredo(){\n\t\tif(this.history.length-1 > this.index){\n\n\t\t\tthis.index++;\n\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.redoers[action.type].call(this, action);\n\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(this.options(\"history\") ? \"History Redo Error - No more history to redo\" : \"History module not enabled\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//rebind rows to new element after deletion\n\t_rebindRow(oldRow, newRow){\n\t\tthis.history.forEach(function(action){\n\t\t\tif(action.component instanceof Row){\n\t\t\t\tif(action.component === oldRow){\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t}else if(action.component instanceof Cell){\n\t\t\t\tif(action.component.row === oldRow){\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif(field){\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nHistory.moduleName = \"history\";\n\n//load defaults\nHistory.undoers = defaultUndoers;\nHistory.redoers = defaultRedoers;\n\nexport default History;","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\taction.component.deleteActual();\n\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowDelete: function(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\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowMove: function(action){\n\t\tvar after = (action.data.posFrom - action.data.posTo) > 0;\n\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);\n\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(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\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowDelete:function(action){\n\t\taction.component.deleteActual();\n\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowMove: function(action){\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);\n\t\t\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","import Module from '../../core/Module.js';\n\nclass HtmlTableImport extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t}\n\n\tinitialize(){\n\t\tthis.tableElementCheck();\n\t}\n\n\ttableElementCheck(){\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\n\t\t\tif(this.table.originalElement.childNodes.length){\n\t\t\t\tthis.parseTable();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element.\");\n\t\t\t}\n\t\t}\n\t}\n\n\tparseTable(){\n\t\tvar element = this.table.originalElement,\n\t\toptions = this.table.options,\n\t\theaders = element.getElementsByTagName(\"th\"),\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\n\t\tdata = [];\n\n\t\tthis.hasIndex = false;\n\n\t\tthis.dispatchExternal(\"htmlImporting\");\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for Tabulator inline options\n\t\tthis._extractOptions(element, options);\n\n\t\tif(headers.length){\n\t\t\tthis._extractHeaders(headers, rows);\n\t\t}else{\n\t\t\tthis._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor(var index = 0; index < rows.length; index++){\n\t\t\tvar row = rows[index],\n\t\t\tcells = row.getElementsByTagName(\"td\"),\n\t\t\titem = {};\n\n\t\t\t//create index if the don't exist in table\n\t\t\tif(!this.hasIndex){\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\toptions.data = data;\n\n\t\tthis.dispatchExternal(\"htmlImported\");\n\t}\n\n\t//extract tabulator attribute options\n\t_extractOptions(element, options, defaultOptions){\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach((item) => {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor(var index in attributes){\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//get value of attribute\n\t_attribValue(value){\n\t\tif(value === \"true\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(value === \"false\"){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t//find column if it has already been defined\n\t_findCol(title){\n\t\tvar match = this.table.options.columns.find((column) => {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t}\n\n\t//extract column from headers\n\t_extractHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\texists = false,\n\t\t\tcol = this._findCol(header.textContent),\n\t\t\twidth;\n\n\t\t\tif(col){\n\t\t\t\texists = true;\n\t\t\t}else{\n\t\t\t\tcol = {title:header.textContent.trim()};\n\t\t\t}\n\n\t\t\tif(!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replaceAll(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif(width && !col.width)\t{\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for Tabulator inline options\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif(col.field == this.table.options.index){\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif(!exists){\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\n\t\t}\n\t}\n\n\t//generate blank headers\n\t_generateBlankHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\tcol = {title:\"\", field:\"col\" + index};\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif(width){\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n}\n\nHtmlTableImport.moduleName = \"htmlTableImport\";\n\nexport default HtmlTableImport;\n","import csv from './importers/csv.js';\nimport json from './importers/json.js';\nimport array from './importers/array.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tarray:array,\n};","function csvImporter(input){\n\tvar data = [],\n\trow = 0, \n\tcol = 0,\n\tinQuote = false;\n \n\t//Iterate over each character\n\tfor (let index = 0; index < input.length; index++) {\n\t\tlet char = input[index], \n\t\tnextChar = input[index+1]; \n \n\t\t//Initialize empty row\n\t\tif(!data[row]){\n\t\t\tdata[row] = [];\n\t\t}\n\n\t\t//Initialize empty column\n\t\tif(!data[row][col]){\n\t\t\tdata[row][col] = \"\";\n\t\t}\n \n\t\t//Handle quotation mark inside string\n\t\tif (char == '\"' && inQuote && nextChar == '\"') { \n\t\t\tdata[row][col] += char; \n\t\t\tindex++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//Begin / End Quote\n\t\tif (char == '\"') { \n\t\t\tinQuote = !inQuote;\n\t\t\tcontinue;\n\t\t}\n \n\t\t//Next column (if not in quote)\n\t\tif (char == ',' && !inQuote) { \n\t\t\tcol++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CRLF) \n\t\tif (char == '\\r' && nextChar == '\\n' && !inQuote) { \n\t\t\tcol = 0; \n\t\t\trow++; \n\t\t\tindex++; \n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CR or LF) \n\t\tif ((char == '\\r' || char == '\\n') && !inQuote) { \n\t\t\tcol = 0;\n\t\t\trow++;\n\t\t\tcontinue; \n\t\t}\n\n\t\t//Normal Character, append to column\n\t\tdata[row][col] += char;\n\t}\n\n\treturn data;\n}\n\nexport default csvImporter;","export default function(input){\n\ttry {\n\t\treturn JSON.parse(input);\n\t} catch(e) {\n\t\tconsole.warn(\"JSON Import Error - File contents is invalid JSON\", e);\n\t\treturn Promise.reject();\n\t}\n}","function arrayImporter(input){\n\treturn input;\n}\n\nexport default arrayImporter;","import Module from '../../core/Module.js';\n\nimport defaultImporters from './defaults/importers.js';\n\nclass Import extends Module{\n \n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.registerTableOption(\"importFormat\");\n\t\tthis.registerTableOption(\"importReader\", \"text\");\n\t}\n \n\tinitialize(){\n\t\tthis.registerTableFunction(\"import\", this.importFromFile.bind(this));\n\n\t\tif(this.table.options.importFormat){\n\t\t\tthis.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\n\t\t\tthis.subscribe(\"data-load\", this.loadData.bind(this), 10);\n\t\t}\n\t}\n\n\tloadDataCheck(data){\n\t\treturn this.table.options.importFormat && (typeof data === \"string\" || (Array.isArray(data) && data.length && Array.isArray(data)));\n\t}\n\n\tloadData(data, params, config, silent, previousData){\n\t\treturn this.importData(this.lookupImporter(), data)\n\t\t\t.then(this.structureData.bind(this))\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import data\");\n\t\t\t\treturn Promise.reject(err);\n\t\t\t});\n\t}\n\n\tlookupImporter(importFormat){\n\t\tvar importer;\n \n\t\tif(!importFormat){\n\t\t\timportFormat = this.table.options.importFormat;\n\t\t}\n \n\t\tif(typeof importFormat === \"string\"){\n\t\t\timporter = Import.importers[importFormat];\n\t\t}else{\n\t\t\timporter = importFormat;\n\t\t}\n\n\t\tif(!importer){\n\t\t\tconsole.error(\"Import Error - Importer not found:\", importFormat);\n\t\t}\n \n\t\treturn importer;\n\t}\n \n\timportFromFile(importFormat, extension){\n\t\tvar importer = this.lookupImporter(importFormat);\n \n\t\tif(importer){\n\t\t\treturn this.pickFile(extension)\n\t\t\t\t.then(this.importData.bind(this, importer))\n\t\t\t\t.then(this.structureData.bind(this))\n\t\t\t\t.then(this.setData.bind(this))\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import file\");\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t});\n\t\t}\n\t}\n \n\tpickFile(extensions){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.type = \"file\";\n\t\t\tinput.accept = extensions;\n \n\t\t\tinput.addEventListener(\"change\", (e) => {\n\t\t\t\tvar file = input.files[0],\n\t\t\t\treader = new FileReader();\n \n\t\t\t\tswitch(this.table.options.importReader){\n\t\t\t\t\tcase \"buffer\":\n\t\t\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"binary\":\n\t\t\t\t\t\treader.readAsBinaryString(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treader.readAsText(file);\n\t\t\t\t}\n \n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tresolve(reader.result);\n\t\t\t\t};\n \n\t\t\t\treader.onerror = (e) => {\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n \n\t\t\tinput.click();\n\t\t});\n\t}\n \n\timportData(importer, fileContents){\n\t\tvar data = importer.call(this.table, fileContents);\n \n\t\tif(data instanceof Promise){\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn data ? Promise.resolve(data) : Promise.reject();\n\t\t}\n\t}\n\n\tstructureData(parsedData){\n\t\tvar data = [];\n \n\t\tif(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\n\t\t\tif(this.table.options.autoColumns){\n\t\t\t\tdata = this.structureArrayToObject(parsedData);\n\t\t\t}else{\n\t\t\t\tdata = this.structureArrayToColumns(parsedData);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn parsedData;\n\t\t}\n\t}\n\n\tstructureArrayToObject(parsedData){\n\t\tvar columns = parsedData.shift();\n\n\t\tvar data = parsedData.map((values) => {\n\t\t\tvar row = {};\n\n\t\t\tcolumns.forEach((key, i) => {\n\t\t\t\trow[key] = values[i];\n\t\t\t});\n\n\t\t\treturn row;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tstructureArrayToColumns(parsedData){\n\t\tvar data = [],\n\t\tcolumns = this.table.getColumns();\n\n\t\t//remove first row if it is the column names\n\t\tif(columns[0] && parsedData[0][0]){\n\t\t\tif(columns[0].getDefinition().title === parsedData[0][0]){\n\t\t\t\tparsedData.shift();\n\t\t\t}\n\t\t}\n \n\t\t//convert row arrays to objects\n\t\tparsedData.forEach((rowData) => {\n\t\t\tvar row = {};\n\n\t\t\trowData.forEach((value, index) => {\n\t\t\t\tvar column = columns[index];\n\n\t\t\t\tif(column){\n\t\t\t\t\trow[column.getField()] = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdata.push(row);\n\t\t});\n\n\t\treturn data;\n\t}\n \n\tsetData(data){\n\t\treturn this.table.setData(data);\n\t}\n}\n\nImport.moduleName = \"import\";\n\n//load defaults\nImport.importers = defaultImporters;\n\nexport default Import;","import Module from '../../core/Module.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\n\nclass Interaction extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.eventMap = {\n\t\t\t//row events\n\t\t\trowClick:\"row-click\",\n\t\t\trowDblClick:\"row-dblclick\",\n\t\t\trowContext:\"row-contextmenu\",\n\t\t\trowMouseEnter:\"row-mouseenter\",\n\t\t\trowMouseLeave:\"row-mouseleave\",\n\t\t\trowMouseOver:\"row-mouseover\",\n\t\t\trowMouseOut:\"row-mouseout\",\n\t\t\trowMouseMove:\"row-mousemove\",\n\t\t\trowMouseDown:\"row-mousedown\",\n\t\t\trowMouseUp:\"row-mouseup\",\n\t\t\trowTap:\"row\",\n\t\t\trowDblTap:\"row\",\n\t\t\trowTapHold:\"row\",\n\n\t\t\t//cell events\n\t\t\tcellClick:\"cell-click\",\n\t\t\tcellDblClick:\"cell-dblclick\",\n\t\t\tcellContext:\"cell-contextmenu\",\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\n\t\t\tcellMouseOver:\"cell-mouseover\",\n\t\t\tcellMouseOut:\"cell-mouseout\",\n\t\t\tcellMouseMove:\"cell-mousemove\",\n\t\t\tcellMouseDown:\"cell-mousedown\",\n\t\t\tcellMouseUp:\"cell-mouseup\",\n\t\t\tcellTap:\"cell\",\n\t\t\tcellDblTap:\"cell\",\n\t\t\tcellTapHold:\"cell\",\n\n\t\t\t//column header events\n\t\t\theaderClick:\"column-click\",\n\t\t\theaderDblClick:\"column-dblclick\",\n\t\t\theaderContext:\"column-contextmenu\",\n\t\t\theaderMouseEnter:\"column-mouseenter\",\n\t\t\theaderMouseLeave:\"column-mouseleave\",\n\t\t\theaderMouseOver:\"column-mouseover\",\n\t\t\theaderMouseOut:\"column-mouseout\",\n\t\t\theaderMouseMove:\"column-mousemove\",\n\t\t\theaderMouseDown:\"column-mousedown\",\n\t\t\theaderMouseUp:\"column-mouseup\",\n\t\t\theaderTap:\"column\",\n\t\t\theaderDblTap:\"column\",\n\t\t\theaderTapHold:\"column\",\n\n\t\t\t//group header\n\t\t\tgroupClick:\"group-click\",\n\t\t\tgroupDblClick:\"group-dblclick\",\n\t\t\tgroupContext:\"group-contextmenu\",\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\n\t\t\tgroupMouseOver:\"group-mouseover\",\n\t\t\tgroupMouseOut:\"group-mouseout\",\n\t\t\tgroupMouseMove:\"group-mousemove\",\n\t\t\tgroupMouseDown:\"group-mousedown\",\n\t\t\tgroupMouseUp:\"group-mouseup\",\n\t\t\tgroupTap:\"group\",\n\t\t\tgroupDblTap:\"group\",\n\t\t\tgroupTapHold:\"group\",\n\t\t};\n\n\t\tthis.subscribers = {};\n\n\t\tthis.touchSubscribers = {};\n\n\t\tthis.columnSubscribers = {};\n\n\t\tthis.touchWatchers = {\n\t\t\trow:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcell:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcolumn:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tgroup:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t}\n\t\t};\n\n\t\tthis.registerColumnOption(\"headerClick\");\n\t\tthis.registerColumnOption(\"headerDblClick\");\n\t\tthis.registerColumnOption(\"headerContext\");\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\n\t\tthis.registerColumnOption(\"headerMouseOver\");\n\t\tthis.registerColumnOption(\"headerMouseOut\");\n\t\tthis.registerColumnOption(\"headerMouseMove\");\n\t\tthis.registerColumnOption(\"headerMouseDown\");\n\t\tthis.registerColumnOption(\"headerMouseUp\");\n\t\tthis.registerColumnOption(\"headerTap\");\n\t\tthis.registerColumnOption(\"headerDblTap\");\n\t\tthis.registerColumnOption(\"headerTapHold\");\n\n\t\tthis.registerColumnOption(\"cellClick\");\n\t\tthis.registerColumnOption(\"cellDblClick\");\n\t\tthis.registerColumnOption(\"cellContext\");\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\n\t\tthis.registerColumnOption(\"cellMouseOver\");\n\t\tthis.registerColumnOption(\"cellMouseOut\");\n\t\tthis.registerColumnOption(\"cellMouseMove\");\n\t\tthis.registerColumnOption(\"cellMouseDown\");\n\t\tthis.registerColumnOption(\"cellMouseUp\");\n\t\tthis.registerColumnOption(\"cellTap\");\n\t\tthis.registerColumnOption(\"cellDblTap\");\n\t\tthis.registerColumnOption(\"cellTapHold\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.initializeExternalEvents();\n\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.clearTouchWatchers.bind(this));\n\t\tthis.subscribe(\"scroll-vertical\", this.clearTouchWatchers.bind(this));\n\t}\n\n\tclearTouchWatchers(){\n\t\tvar types = Object.values(this.touchWatchers);\n\n\t\ttypes.forEach((type) => {\n\t\t\tfor(let key in type){\n\t\t\t\ttype[key] = null;\n\t\t\t}\n\t\t});\n\t}\n\t\t\n\tcellContentsSelectionFixer(e, cell){\n\t\tvar range;\n\n\t\tif(this.table.modExists(\"edit\")){\n\t\t\tif (this.table.modules.edit.currentCell === cell){\n\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\n\tinitializeExternalEvents(){\n\t\tfor(let key in this.eventMap){\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key));\n\t\t}\n\t}\n\n\tsubscriptionChanged(key, added){\n\t\tif(added){\n\t\t\tif(!this.subscribers[key]){\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t}else{\n\t\t\t\t\tthis.subscribeTouchEvents(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t\tdelete this.subscribers[key];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.unsubscribeTouchEvents(key);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tsubscribeTouchEvents(key){\n\t\tvar type = this.eventMap[key];\n\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\n\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\t\t}\n\n\t\tthis.subscribers[key] = true;\n\t}\n\n\tunsubscribeTouchEvents(key){\n\t\tvar noTouch = true,\n\t\ttype = this.eventMap[key];\n\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\n\t\t\tdelete this.subscribers[key];\n\n\t\t\tfor(let i in this.eventMap){\n\t\t\t\tif(this.eventMap[i] === type){\n\t\t\t\t\tif(this.subscribers[i]){\n\t\t\t\t\t\tnoTouch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(noTouch){\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\n\t\tfor(let key in this.eventMap){\n\t\t\tif(def[key]){\n\t\t\t\tthis.subscriptionChanged(key, true);\n\n\t\t\t\tif(!this.columnSubscribers[key]){\n\t\t\t\t\tthis.columnSubscribers[key] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.columnSubscribers[key].push(column);\n\t\t\t}\n\t\t}\n\t}\n\n\thandle(action, e, component){\n\t\tthis.dispatchEvent(action, e, component);\n\t}\n\n\thandleTouch(type, action, e, component){\n\t\tvar watchers = this.touchWatchers[type];\n\n\t\tif(type === \"column\"){\n\t\t\ttype = \"header\";\n\t\t}\n\n\t\tswitch(action){\n\t\t\tcase \"start\":\n\t\t\t\twatchers.tap = true;\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\n\t\t\t\twatchers.tapHold = setTimeout(() => {\n\t\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\t\twatchers.tapHold = null;\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\n\t\t\t\t}, 1000);\n\t\t\t\tbreak;\n\n\t\t\tcase \"end\":\n\t\t\t\tif(watchers.tap){\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\n\t\t\t\t}\n\n\t\t\t\tif(watchers.tapDbl){\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\n\t\t\t\t}else{\n\t\t\t\t\twatchers.tapDbl = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\t\twatchers.tapDbl = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\twatchers.tapHold = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdispatchEvent(action, e, component){\n\t\tvar componentObj = component.getComponent(),\n\t\tcallback;\n\n\t\tif(this.columnSubscribers[action]){\n\n\t\t\tif(component instanceof Cell){\n\t\t\t\tcallback = component.column.definition[action];\n\t\t\t}else if(component instanceof Column){\n\t\t\t\tcallback = component.definition[action];\n\t\t\t}\n\n\t\t\tif(callback){\n\t\t\t\tcallback(e, componentObj);\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchExternal(action, e, componentObj);\n\t}\n}\n\nInteraction.moduleName = \"interaction\";\n\nexport default Interaction;\n","import Module from '../../core/Module.js';\n\nimport defaultBindings from './defaults/bindings.js';\nimport defaultActions from './defaults/actions.js';\n\nclass Keybindings extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\n\t}\n\n\tinitialize(){\n\t\tvar bindings = this.table.options.keybindings,\n\t\tmergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif(bindings !== false){\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings);\n\t\t\tObject.assign(mergedBindings, bindings);\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t}\n\n\tmapBindings(bindings){\n\t\tfor(let key in bindings){\n\t\t\tif(Keybindings.actions[key]){\n\t\t\t\tif(bindings[key]){\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach((binding) => {\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\n\t\t\t\t\t\t\n\t\t\t\t\t\tbindingList.forEach((item) => {\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\n\t\t\t\t\t\t});\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapBinding(action, symbolsList){\n\t\tvar binding = {\n\t\t\taction: Keybindings.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false,\n\t\t\tmeta: false,\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach((symbol) => {\n\t\t\tswitch(symbol){\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"meta\":\n\t\t\t\t\tbinding.meta = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif(!this.watchKeys[symbol]){\n\t\t\t\t\t\tthis.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t}\n\n\tbindEvents(){\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function(binding){\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t}\n\n\tclearBindings(){\n\t\tif(this.keyupBinding){\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif(this.keydownBinding){\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t}\n\n\tcheckBinding(e, binding){\n\t\tvar match = true;\n\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\n\t\t\tbinding.keys.forEach((key) => {\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\n\n\t\t\t\tif(index == -1){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tbinding.action.call(this, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\nKeybindings.moduleName = \"keybindings\";\n\n//load defaults\nKeybindings.bindings = defaultBindings;\nKeybindings.actions = defaultActions;\n\nexport default Keybindings;","export default {\n\tnavPrev:\"shift + 9\",\n\tnavNext:9,\n\tnavUp:38,\n\tnavDown:40,\n\tnavLeft:37,\n\tnavRight:39,\n\tscrollPageUp:33,\n\tscrollPageDown:34,\n\tscrollToStart:36,\n\tscrollToEnd:35,\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 67\"],\n\n\trangeJumpUp:[\"ctrl + 38\", \"meta + 38\"],\n\trangeJumpDown:[\"ctrl + 40\", \"meta + 40\"],\n\trangeJumpLeft:[\"ctrl + 37\", \"meta + 37\"],\n\trangeJumpRight:[\"ctrl + 39\", \"meta + 39\"],\n\trangeExpandUp:\"shift + 38\",\n\trangeExpandDown:\"shift + 40\",\n\trangeExpandLeft:\"shift + 37\",\n\trangeExpandRight:\"shift + 39\",\n\trangeExpandJumpUp:[\"ctrl + shift + 38\", \"meta + shift + 38\"],\n\trangeExpandJumpDown:[\"ctrl + shift + 40\", \"meta + shift + 40\"],\n\trangeExpandJumpLeft:[\"ctrl + shift + 37\", \"meta + shift + 37\"],\n\trangeExpandJumpRight:[\"ctrl + shift + 39\", \"meta + shift + 39\"],\n};\n","export default {\n\tkeyBlock:function(e){\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight;\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(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\n\t\tscrollMax = 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\n\t},\n\tscrollToStart:function(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(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(e){\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\n\t},\n\n\tnavNext:function(e){\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\n\t},\n\n\tnavLeft:function(e){\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\n\t},\n\n\tnavRight:function(e){\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\n\t},\n\n\tnavUp:function(e){\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\n\t},\n\n\tnavDown:function(e){\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\n\t},\n\n\trangeJumpLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", true, false);\n\t},\n\trangeJumpRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", true, false);\n\t},\n\trangeJumpUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", true, false);\n\t},\n\trangeJumpDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", true, false);\n\t},\n\trangeExpandLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", false, true);\n\t},\n\trangeExpandRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", false, true);\n\t},\n\trangeExpandUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", false, true);\n\t},\n\trangeExpandDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", false, true);\n\t},\n\trangeExpandJumpLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", true, true);\n\t},\n\trangeExpandJumpRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", true, true);\n\t},\n\trangeExpandJumpUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", true, true);\n\t},\n\trangeExpandJumpDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", true, true);\n\t},\n\n\tundo:function(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(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(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","import Module from '../../core/Module.js';\n\nclass Menu extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.menuContainer = null;\n\t\tthis.nestedMenuBlock = false;\n\t\t\n\t\tthis.currentComponent = null;\n\t\tthis.rootPopup = null;\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\n\t\t\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\n\t\tthis.registerTableOption(\"rowDblClickMenu\", false);\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\n\t\tthis.registerTableOption(\"groupDblClickMenu\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextMenu\");\n\t\tthis.registerColumnOption(\"headerClickMenu\");\n\t\tthis.registerColumnOption(\"headerDblClickMenu\");\n\t\tthis.registerColumnOption(\"headerMenu\");\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\n\t\tthis.registerColumnOption(\"contextMenu\");\n\t\tthis.registerColumnOption(\"clickMenu\");\n\t\tthis.registerColumnOption(\"dblClickMenu\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tif(!this.deprecationCheck(\"menuContainer\", \"popupContainer\")){\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\n\t\t}\n\t}\t\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextMenu){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickMenu){\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowDblClickMenu){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextMenu){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickMenu){\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupDblClickMenu){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu));\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar\tdef = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){\n\t\t\tthis.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerDblClickMenu\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerMenu){\n\t\t\tthis.initializeColumnHeaderMenu(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\n\t\t}\n\t\t\n\t\tif(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){\n\t\t\tthis.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, \"dblClickMenu\");\n\t\t\tthis.subscribe(\"cell-dblclick\", this.columnSubscribers.dblClickMenu);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderMenu(column){\n\t\tvar icon = column.definition.headerMenuIcon,\n\t\theaderMenuEl;\n\t\t\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\n\t\t\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderMenuEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderMenuEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadMenuTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadMenuTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadMenuEvent(menu, e, component){\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\n\t\t\n\t\tthis.loadMenu(e, component, menu);\n\t}\n\t\n\tloadMenu(e, component, menu, parentEl, parentPopup){\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\n\t\tmenuEl = document.createElement(\"div\"),\n\t\tpopup;\n\t\t\n\t\tmenuEl.classList.add(\"tabulator-menu\");\n\t\t\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\t//abort if no menu set\n\t\tif(!menu || !menu.length){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!parentEl){\n\t\t\tif(this.nestedMenuBlock){\n\t\t\t\t//abort if child menu already open\n\t\t\t\tif(this.rootPopup){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\n\t\t\t\t\tthis.nestedMenuBlock = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\n\t\t\t\n\t\t}else{\n\t\t\tpopup = parentPopup.child(menuEl);\n\t\t}\n\t\t\n\t\tmenu.forEach((item) => {\n\t\t\tvar itemEl = document.createElement(\"div\"),\n\t\t\tlabel = item.label,\n\t\t\tdisabled = item.disabled;\n\t\t\t\n\t\t\tif(item.separator){\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t\t}else{\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\t\t\t\t\n\t\t\t\tif(typeof label == \"function\"){\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(label instanceof Node){\n\t\t\t\t\titemEl.appendChild(label);\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(typeof disabled == \"function\"){\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(disabled){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(item.action){\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\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\t\n\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmenuEl.appendChild(itemEl);\n\t\t});\n\t\t\n\t\tmenuEl.addEventListener(\"click\", (e) => {\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tpopup.show(parentEl || e);\n\t\t\n\t\tif(popup === this.rootPopup){\n\t\t\tthis.rootPopup.hideOnBlur(() => {\n\t\t\t\tthis.rootPopup = null;\n\t\t\t\t\n\t\t\t\tif(this.currentComponent){\n\t\t\t\t\tthis.dispatch(\"menu-closed\", menu, popup);\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\n\t\t\t\t\tthis.currentComponent = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.currentComponent = component;\n\t\t\t\n\t\t\tthis.dispatch(\"menu-opened\", menu, popup);\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nMenu.moduleName = \"menu\";\n\nexport default Menu;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the destination column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\t\t\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\n\t}\n\t\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.movableColumns){\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"alert-show\", this.abortMove.bind(this));\n\t\t}\n\t}\n\n\tabortMove(){\n\t\tclearTimeout(this.checkTimeout);\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\tcolEl;\n\t\t\n\t\tif(!column.modules.frozen && !column.isGroup){\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tconfig.mousemove = function(e){\n\t\t\t\tif(column.parent === self.moving.parent){\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\t\t\n\t\tcolumn.modules.moveColumn = config;\n\t}\n\t\n\tbindTouchEvents(column){\n\t\tvar colEl = column.getElement(),\n\t\tstartXMove = false, //shifting center position of the cell\n\t\tnextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\n\t\t\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\t\t\t\t\n\t\t\t\tthis.startMove(e, column);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\n\t\t\tvar diff, moveToCol;\n\t\t\t\n\t\t\tif(this.moving){\n\t\t\t\tthis.moveHover(e);\n\t\t\t\t\n\t\t\t\tif(!startXMove){\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\t\t\t\t\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\n\t\t\t\t\t\tmoveToCol = nextCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\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(prevCol && -diff - prevColWidthLast > prevColWidth){\n\t\t\t\t\t\tmoveToCol = prevCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(moveToCol){\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tstartMove(e, column){\n\t\tvar element = column.getElement(),\n\t\theaderElement = this.table.columnManager.getContentsElement(),\n\t\theadersElement = this.table.columnManager.getHeadersElement();\n\t\t\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\n\t\t\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\t\t\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t\t\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\t\t\n\t\theaderElement.appendChild(this.hoverElement);\n\t\t\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\n\t\t\n\t\tif(!this.touchMove){\n\t\t\tthis._bindMouseMove();\n\t\t\t\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t\t\n\t\tthis.moveHover(e);\n\t}\n\t\n\t_bindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_unbindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tmoveColumn(column, after){\n\t\tvar movingCells = this.moving.getCells();\n\t\t\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\t\t\n\t\tif(after){\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tendMove(e){\n\t\tif(e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\t\t\t\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\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\t\t\t\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(this.toCol){\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\t\t\t\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\t\t\t\n\t\t\tif(!this.touchMove){\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tmoveHover(e){\n\t\tvar columnHolder = this.table.columnManager.getContentsElement(),\n\t\tscrollLeft = columnHolder.scrollLeft,\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\n\t\tscrollPos;\n\t\t\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\n\t\t\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nMoveColumns.moduleName = \"moveColumn\";\n\nexport default MoveColumns;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the destination row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connectionSelectorsTables = false;\n\t\tthis.connectionSelectorsElements = false;\n\t\tthis.connectionElements = [];\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\n\n\t\tthis.registerColumnOption(\"rowHandle\");\n\t}\n\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.movableRows){\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeGroupHeader(group){\n\t\tvar self = this,\n\t\tconfig = {};\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, group);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl;\n\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\tif(rowEl.previousSibling){\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\trowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\n\t\tif(!this.hasHandle){\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tthis.hasHandle = true;\n\t\t}\n\t}\n\n\tinitializeCell(cell){\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tvar self = this,\n\t\t\tcellEl = cell.getElement(true);\n\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\n\t\t}\n\t}\n\n\tbindTouchEvents(row, element){\n\t\tvar startYMove = false, //shifting center position of the cell\n\t\tnextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tthis.startMove(e, row);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", (e) => {\n\n\t\t\tvar diff, moveToRow;\n\n\t\t\tif(this.moving){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthis.moveHover(e);\n\n\t\t\t\tif(!startYMove){\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\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(prevRow && -diff - prevRowHeightLast > prevRowHeight){\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(moveToRow){\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t\tthis.touchMove = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t_bindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\t_unbindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\tstartMove(e, row){\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif(!this.connection){\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t}else{\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif(this.connection){\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t}else{\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\n\n\t\tthis.moveHover(e);\n\t}\n\n\tsetStartPosition(e, row){\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\telement, position;\n\n\t\telement = row.getElement();\n\t\tif(this.connection){\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t}else{\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\n\t\t}\n\t}\n\n\tendMove(e){\n\t\tif(!e || e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif(!this.connection){\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif(this.toRow){\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif(this.connection){\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveRow(row, after){\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t}\n\n\tmoveHover(e){\n\t\tif(this.connection){\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t}else{\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t}\n\n\tmoveHoverTable(e){\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\tscrollTop = rowHolder.scrollTop,\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop;\n\t\t\n\t\tthis.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + \"px\";\n\t}\n\n\tmoveHoverConnections(e){\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\n\t}\n\n\telementRowDrop(e, element, row){\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\n\t}\n\n\t//establish connection with other tables\n\tconnectToTables(row){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\t\trow:row,\n\t\t\t});\n\t\t}\n\n\t\tif(this.connectionSelectorsElements){\n\n\t\t\tthis.connectionElements = [];\n\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t\t}\n\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\n\t\t\t\tif(typeof query === \"string\"){\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t\t}else{\n\t\t\t\t\tthis.connectionElements.push(query);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.connectionElements.forEach((element) => {\n\t\t\t\tvar dropEvent = (e) => {\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\n\t\t\t\t};\n\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t\t});\n\t\t}\n\t}\n\n\t//disconnect from other tables\n\tdisconnectFromTables(){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t\t}\n\n\t\tthis.connectionElements.forEach((element) => {\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\t\tdelete element.tabulatorElementDropEvent;\n\t\t});\n\t}\n\n\t//accept incomming connection\n\tconnect(table, row){\n\t\tif(!this.connectedTable){\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\n\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//close incoming connection\n\tdisconnect(table){\n\t\tif(table === this.connectedTable){\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t}\n\n\tdropComplete(table, row, success){\n\t\tvar sender = false;\n\n\t\tif(success){\n\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(sender){\n\t\t\t\tsender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table);\n\t\t\t}else{\n\t\t\t\tif(this.table.options.movableRowsSender){\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t}\n\n\ttableRowDrop(e, row){\n\t\tvar receiver = false,\n\t\tsuccess = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(receiver){\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif(success){\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow:row,\n\t\t\tsuccess:success,\n\t\t});\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t}\n\t}\n}\n\nMoveRows.prototype.receivers = {\n\tinsert:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate:function(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(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(fromRow, toRow, toTable){\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.moduleName = \"moveRow\";\n\nexport default MoveRows;","import Module from '../../core/Module.js';\n\nimport defaultMutators from './defaults/mutators.js';\n\nclass Mutator extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of mutation types\n\t\tthis.enabled = true;\n\n\t\tthis.registerColumnOption(\"mutator\");\n\t\tthis.registerColumnOption(\"mutatorParams\");\n\t\tthis.registerColumnOption(\"mutatorData\");\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\n\t\tthis.registerColumnOption(\"mutatorEdit\");\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\n\t\tthis.registerColumnOption(\"mutateLink\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\n\t}\n\n\trowDataChanged(row, tempData, updatedData){\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\n\t}\n\n\t//initialize column mutator\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\tmutator;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\n\n\t\t\t\tif(mutator){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator:mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t}\n\n\tlookupMutator(value){\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Mutator.mutators[value]){\n\t\t\t\t\tmutator = Mutator.mutators[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t}\n\n\t//apply mutator to row\n\ttransformRow(data, type, updatedData){\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\tvalue;\n\n\t\tif(this.enabled){\n\n\t\t\tthis.table.columnManager.traverse((column) => {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif(column.modules.mutate){\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif(mutator){\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\t\tif((type == \"data\" && !updatedData)|| typeof value !== \"undefined\"){\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\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\treturn data;\n\t}\n\n\t//apply mutator to new cell value\n\ttransformCell(cell, value){\n\t\tif(cell.column.modules.mutate){\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t\t\ttempData = {};\n\n\t\t\tif(mutator){\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\t\t\tcell.column.setFieldValue(tempData, value);\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tmutateLink(cell){\n\t\tvar links = cell.column.definition.mutateLink;\n\n\t\tif(links){\n\t\t\tif(!Array.isArray(links)){\n\t\t\t\tlinks = [links];\n\t\t\t}\n\n\t\t\tlinks.forEach((link) => {\n\t\t\t\tvar linkCell = cell.row.getCell(link);\n\n\t\t\t\tif(linkCell){\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tenable(){\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(){\n\t\tthis.enabled = false;\n\t}\n}\n\nMutator.moduleName = \"mutator\";\n\n//load defaults\nMutator.mutators = defaultMutators;\n\nexport default Mutator;","export default {};","import rows from './pageCounters/rows.js';\nimport pages from './pageCounters/pages.js';\n\n\nexport default {\n\trows:rows,\n\tpages:pages,\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\n\tif(totalRows){\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\n\t\t\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\n\t\t\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(ofEl);\n\t\tel.appendChild(totalEl);\n\t\tel.appendChild(rowsEl);\n\t}else{\n\t\tvalueEl.innerHTML = \" 0 \";\n\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(rowsEl);\n\t}\n\t\n\treturn el;\n}","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\t\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\t\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\t\n\tel.appendChild(showingEl);\n\tel.appendChild(valueEl);\n\tel.appendChild(ofEl);\n\tel.appendChild(totalEl);\n\tel.appendChild(rowsEl);\n\t\n\treturn el;\n}","import Module from '../../core/Module.js';\n\nimport defaultPageCounters from './defaults/pageCounters.js';\n\nclass Page extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\t\t\n\t\tthis.element = null;\n\t\tthis.pageCounterElement = null;\n\t\tthis.pageCounter = null;\n\t\t\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.remoteRowCountEstimate = null;\n\t\t\n\t\tthis.initialLoad = true;\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\n\t\t\n\t\tthis.pageSizes = [];\n\t\t\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\n\t\t\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\n\t\t\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\n\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad){\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\n\t\t\t\n\t\t\tthis.createElements();\n\t\t\tthis.initializePageCounter();\n\t\t\tthis.initializePaginator();\n\t\t}else if(this.table.options.progressiveLoad){\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\t\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad);\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowAddingPosition(row, top){\n\t\tvar rowManager = this.table.rowManager,\n\t\tdisplayRows = rowManager.getDisplayRows(),\n\t\tindex;\n\t\t\n\t\tif(top){\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[0];\n\t\t\t}else{\n\t\t\t\tif(rowManager.activeRows.length){\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.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(displayRows.length){\n\t\t\t\tindex = displayRows[displayRows.length - 1];\n\t\t\t\ttop = displayRows.length < this.size ? false : true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {index, top};\n\t}\n\t\n\tcalculatePageSizes(){\n\t\tvar testElRow, testElCell;\n\t\t\n\t\tif(this.table.options.paginationSize){\n\t\t\tthis.size = this.table.options.paginationSize;\n\t\t}else{\n\t\t\ttestElRow = document.createElement(\"div\");\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\t\ttestElRow.style.visibility = \"hidden\";\n\t\t\t\n\t\t\ttestElCell = document.createElement(\"div\");\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\n\t\t\t\n\t\t\ttestElRow.appendChild(testElCell);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\n\t\t\t\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\n\t\t}\n\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\n\t\t\n\t\tthis.generatePageSizeSelectList();\n\t}\n\t\n\tinitialLoadComplete(){\n\t\tthis.initialLoad = false;\n\t}\n\t\n\tremotePageParams(data, config, silent, params){\n\t\tif(!this.initialLoad){\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\n\t\t\t\tthis.reset(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//configure request params\n\t\tparams.page = this.page;\n\t\t\n\t\t//set page size if defined\n\t\tif(this.size){\n\t\t\tparams.size = this.size;\n\t\t}\n\t\t\n\t\treturn params;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetPageToRow(row){\n\t\tif(this.table.options.pagination){\n\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\treturn this.setPageToRow(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Promise.reject();\n\t}\n\t\n\tuserSetPageSize(size){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.setPageSize(size);\n\t\t\treturn this.setPage(1);\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tscrollVertical(top, dir){\n\t\tvar element, diff, margin;\n\t\tif(!dir && !this.table.dataLoader.loading){\n\t\t\telement = this.table.rowManager.getElement();\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\n\t\t\t\n\t\t\tif(diff < margin){\n\t\t\t\tthis.nextPage()\n\t\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\n\t\t\t}\n\t\t}\n\t}\n\t\n\trestOnRenderBefore(rows, renderInPosition){\n\t\tif(!renderInPosition){\n\t\t\tif(this.mode === \"local\"){\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(){\n\t\tthis.refreshData(true, \"all\");\n\t}\n\t\n\tcreateElements(){\n\t\tvar button;\n\t\t\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\t\t\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\t\t\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\t\t\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\t\t\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\t\t\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\t\t\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\t\t\n\t\tif(this.table.options.paginationSizeSelector){\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t}\n\t\n\tgeneratePageSizeSelectList(){\n\t\tvar pageSizes = [];\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes = [];\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t}else{\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t\n\t\t\tpageSizes.forEach((item) => {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\t\n\t\t\t\tif(item === true){\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\n\t\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = item;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\t\t\t\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t}\n\t\n\tinitializePageCounter(){\n\t\tvar counter = this.table.options.paginationCounter,\n\t\tpageCounter = null;\n\t\t\n\t\tif(counter){\n\t\t\tif(typeof counter === \"function\"){\n\t\t\t\tpageCounter = counter;\n\t\t\t}else{\n\t\t\t\tpageCounter = Page.pageCounters[counter];\n\t\t\t}\n\t\t\t\n\t\t\tif(pageCounter){\n\t\t\t\tthis.pageCounter = pageCounter;\n\t\t\t\t\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup pagination\n\tinitializePaginator(hidden){\n\t\tvar pageSelectLabel, paginationCounterHolder;\n\t\t\n\t\tif(!hidden){\n\t\t\t//build pagination element\n\t\t\t\n\t\t\t//bind localizations\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\n\t\t\t\tthis.firstBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\n\t\t\t\tthis.prevBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\n\t\t\t\tthis.nextBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\n\t\t\t\tthis.lastBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\t//click bindings\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(1);\n\t\t\t});\n\t\t\t\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.previousPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.nextPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(this.max);\n\t\t\t});\n\t\t\t\n\t\t\tif(this.table.options.paginationElement){\n\t\t\t\tthis.element = this.table.options.paginationElement;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pageSizeSelect){\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\n\t\t\t\t\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\n\t\t\t\t\tthis.setPage(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//append to DOM\n\t\t\tthis.element.appendChild(this.firstBut);\n\t\t\tthis.element.appendChild(this.prevBut);\n\t\t\tthis.element.appendChild(this.pagesElement);\n\t\t\tthis.element.appendChild(this.nextBut);\n\t\t\tthis.element.appendChild(this.lastBut);\n\t\t\t\n\t\t\tif(!this.table.options.paginationElement){\n\t\t\t\tif(this.table.options.paginationCounter){\n\n\t\t\t\t\tpaginationCounterHolder; \n\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(paginationCounterHolder){\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\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\tthis.footerAppend(this.pageCounterElement);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.footerAppend(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.page = this.table.options.paginationInitialPage;\n\t\t\tthis.count = this.table.options.paginationButtonCount;\n\t\t}\n\t\t\n\t\t//set default values\n\t\tthis.mode = this.table.options.paginationMode;\n\t}\n\t\n\tinitializeProgressive(mode){\n\t\tthis.initializePaginator(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"page-changed\");\n\t}\n\t\n\t//calculate maximum page from number of rows\n\tsetMaxRows(rowCount){\n\t\tif(!rowCount){\n\t\t\tthis.max = 1;\n\t\t}else{\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\n\t\t}\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t}\n\t}\n\t\n\t//reset to first page without triggering action\n\treset(force){\n\t\tif(!this.initialLoad){\n\t\t\tif(this.mode == \"local\" || force){\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.trackChanges();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//set the maximum page\n\tsetMaxPage(max){\n\t\t\n\t\tmax = parseInt(max);\n\t\t\n\t\tthis.max = max || 1;\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t}\n\t\n\t//set current page number\n\tsetPage(page){\n\t\tswitch(page){\n\t\t\tcase \"first\":\n\t\t\t\treturn this.setPage(1);\n\t\n\t\t\tcase \"prev\":\n\t\t\t\treturn this.previousPage();\n\t\t\t\n\t\t\tcase \"next\":\n\t\t\t\treturn this.nextPage();\n\t\t\t\n\t\t\tcase \"last\":\n\t\t\t\treturn this.setPage(this.max);\n\t\t}\n\t\t\n\t\tpage = parseInt(page);\n\t\t\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\n\t\t\tthis.page = page;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageToRow(row){\n\t\tvar rows = this.displayRows(-1);\n\t\tvar index = rows.indexOf(row);\n\t\n\t\tif(index > -1){\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\n\t\t\t\n\t\t\treturn this.setPage(page);\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageSize(size){\n\t\tif(size !== true){\n\t\t\tsize = parseInt(size);\n\t\t}\n\n\t\tif(size > 0){\n\t\t\tthis.size = size;\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\n\t\t}\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\t_setPageCounter(totalRows, size, currentRow){\n\t\tvar content;\n\t\t\n\t\tif(this.pageCounter){\n\n\t\t\tif(this.mode === \"remote\"){\n\t\t\t\tsize = this.size;\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\n\t\t\t}\n\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\n\t\t\t\n\t\t\tswitch(typeof content){\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif(content instanceof Node){\n\t\t\t\t\t\n\t\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.pageCounterElement.appendChild(content);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\t\n\t\t\t\t\t\tif(content != null){\n\t\t\t\t\t\t\tconsole.warn(\"Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:\", content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.pageCounterElement.innerHTML = content;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup the pagination buttons\n\t_setPageButtons(){\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\n\t\t\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\n\t\t\n\t\tif(this.page == 1){\n\t\t\tthis.firstBut.disabled = true;\n\t\t\tthis.prevBut.disabled = true;\n\t\t}else{\n\t\t\tthis.firstBut.disabled = false;\n\t\t\tthis.prevBut.disabled = false;\n\t\t}\n\t\t\n\t\tif(this.page == this.max){\n\t\t\tthis.lastBut.disabled = true;\n\t\t\tthis.nextBut.disabled = true;\n\t\t}else{\n\t\t\tthis.lastBut.disabled = false;\n\t\t\tthis.nextBut.disabled = false;\n\t\t}\n\t\t\n\t\tfor(let i = min; i <= max; i++){\n\t\t\tif(i>0 && i <= this.max){\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.footerRedraw();\n\t}\n\t\n\t_generatePageButton(page){\n\t\tvar button = document.createElement(\"button\");\n\t\t\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif(page == this.page){\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\t\t\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\t\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t\t});\n\t\t\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\t\t\n\t\tbutton.addEventListener(\"click\", (e) => {\n\t\t\tthis.setPage(page);\n\t\t});\n\t\t\n\t\treturn button;\n\t}\n\t\n\t//previous page\n\tpreviousPage(){\n\t\tif(this.page > 1){\n\t\t\tthis.page--;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\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\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//next page\n\tnextPage(){\n\t\tif(this.page < this.max){\n\t\t\tthis.page++;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tif(!this.progressiveLoad){\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\n\t\t\t}\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//return current page number\n\tgetPage(){\n\t\treturn this.page;\n\t}\n\t\n\t//return max page number\n\tgetPageMax(){\n\t\treturn this.max;\n\t}\n\t\n\tgetPageSize(size){\n\t\treturn this.size;\n\t}\n\t\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\t\n\t//return appropriate rows for current page\n\tgetRows(data){\n\t\tvar actualRowPageSize = 0,\n\t\toutput, start, end, actualStartRow;\n\n\t\tvar actualRows = data.filter((row) => {\n\t\t\treturn row.type === \"row\";\n\t\t});\n\t\t\n\t\tif(this.mode == \"local\"){\n\t\t\toutput = [];\n\t\t\t\n\t\t\tthis.setMaxRows(data.length);\n\t\t\t\n\t\t\tif(this.size === true){\n\t\t\t\tstart = 0;\n\t\t\t\tend = data.length;\n\t\t\t}else{\n\t\t\t\tstart = this.size * (this.page - 1);\n\t\t\t\tend = start + parseInt(this.size);\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageButtons();\n\t\t\t\n\t\t\tfor(let i = start; i < end; i++){\n\t\t\t\tlet row = data[i];\n\n\t\t\t\tif(row){\n\t\t\t\t\toutput.push(row);\n\n\t\t\t\t\tif(row.type === \"row\"){\n\t\t\t\t\t\tif(!actualStartRow){\n\t\t\t\t\t\t\tactualStartRow = row;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tactualRowPageSize++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\n\t\t\t\n\t\t\treturn output;\n\t\t}else{\n\t\t\tthis._setPageButtons();\n\t\t\tthis._setPageCounter(actualRows.length);\n\t\t\t\n\t\t\treturn data.slice(0);\n\t\t}\n\t}\n\t\n\ttrigger(){\n\t\tvar left;\n\t\t\n\t\tswitch(this.mode){\n\t\t\tcase \"local\":\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\t\t\t\n\t\t\t\tthis.refreshData();\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\n\t\t\t\treturn Promise.resolve();\n\t\t\t\n\t\t\tcase \"remote\":\n\t\t\t\tthis.dataChanging = true;\n\t\t\t\treturn this.reloadData(null)\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.dataChanging = false;\n\t\t\t\t\t});\n\t\t\t\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\treturn this.reloadData(null, true);\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\n\t\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t_parseRemoteData(data){\n\t\tvar margin;\n\t\t\n\t\tif(typeof data.last_page === \"undefined\"){\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\n\t\t}\n\t\t\n\t\tif(data.data){\n\t\t\tthis.max = parseInt(data.last_page) || 1;\n\n\t\t\tthis.remoteRowCountEstimate = typeof data.last_row !== \"undefined\" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0));\n\t\t\t\n\t\t\tif(this.progressiveLoad){\n\t\t\t\tswitch(this.mode){\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page == 1){\n\t\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\n\t\t\t\t\t\n\t\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\n\t\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\n\t\t}\n\t\t\n\t\treturn data.data;\n\t}\n\t\n\t//handle the footer element being redrawn\n\tfooterRedraw(){\n\t\tvar footer = this.table.footerManager.containerElement;\n\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}else{\n\t\t\tthis.pagesElement.style.display = '';\n\t\t\t\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n}\n\nPage.moduleName = \"page\";\n\n//load defaults\nPage.pageCounters = defaultPageCounters;\n\nexport default Page;\n","// read persistance information from storage\nexport default {\n\tlocal:function(id, type){\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie:function(id, type){\n\t\tvar cookie = document.cookie,\n\t\tkey = id + \"-\" + type,\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\n\t\tend, 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.slice(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif(end > -1){\n\t\t\t\tcookie = cookie.slice(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","//write persistence information to storage\nexport default {\n\tlocal:function(id, type, data){\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie:function(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};","import Module from '../../core/Module.js';\n\nimport defaultReaders from './defaults/readers.js';\nimport defaultWriters from './defaults/writers.js';\n\nclass Persistence extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\t\tthis.defWatcherBlock = false;\n\t\tthis.config = {};\n\t\tthis.readFunc = false;\n\t\tthis.writeFunc = false;\n\n\t\tthis.registerTableOption(\"persistence\", false);\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\n\t}\n\n\t// Test for whether localStorage is available for use.\n\tlocalStorageTest() {\n\t\tvar testKey = \"_tabulator_test\";\n\n\t\ttry {\n\t\t\twindow.localStorage.setItem( testKey, testKey);\n\t\t\twindow.localStorage.removeItem( testKey );\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//setup parameters\n\tinitialize(){\n\t\tif(this.table.options.persistence){\n\t\t\t//determine persistent layout storage type\n\t\t\tvar mode = this.table.options.persistenceMode,\n\t\t\tid = this.table.options.persistenceID,\n\t\t\tretrievedData;\n\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\n\n\t\t\tif(this.table.options.persistenceReaderFunc){\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.readers[this.mode]){\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.table.options.persistenceWriterFunc){\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.writers[this.mode]){\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//set storage tag\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\n\n\t\t\tthis.config = {\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\t\t\theaderFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter,\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\n\t\t\t};\n\n\t\t\t//load pagination data if needed\n\t\t\tif(this.config.page){\n\t\t\t\tretrievedData = this.retrieveData(\"page\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\n\t\t\t\t\t\tthis.table.options.paginationSize = retrievedData.paginationSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof retrievedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retrievedData.paginationInitialPage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//load group data if needed\n\t\t\tif(this.config.group){\n\t\t\t\tretrievedData = this.retrieveData(\"group\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\n\t\t\t\t\t\tthis.table.options.groupBy = retrievedData.groupBy;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retrievedData.groupStartOpen;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\n\t\t\t\t\t\tthis.table.options.groupHeader = retrievedData.groupHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.config.columns){\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\n\t\t\t}\n\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\n\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"headerFilter\"));\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"column-width\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\n\t\t}\n\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\n\t}\n\n\teventSave(type){\n\t\tif(this.config[type]){\n\t\t\tthis.save(type);\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tvar sorters, filters, headerFilters;\n\n\t\tif(this.config.sort){\n\t\t\tsorters = this.load(\"sort\");\n\n\t\t\tif(!sorters === false){\n\t\t\t\tthis.table.options.initialSort = sorters;\n\t\t\t}\n\t\t}\n\n\t\tif(this.config.filter){\n\t\t\tfilters = this.load(\"filter\");\n\n\t\t\tif(!filters === false){\n\t\t\t\tthis.table.options.initialFilter = filters;\n\t\t\t}\n\t\t}\n\t\tif(this.config.headerFilter){\n\t\t\theaderFilters = this.load(\"headerFilter\");\n\n\t\t\tif(!headerFilters === false){\n\t\t\t\tthis.table.options.initialHeaderFilter = headerFilters;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\ttableRedraw(force){\n\t\tif(force && this.config.columns){\n\t\t\tthis.save(\"columns\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tgetColumnLayout(){\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\n\t}\n\n\tsetColumnLayout(layout){\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout, true));\n\t\treturn true;\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumn(column){\n\t\tvar def, keys;\n\n\t\tif(this.config.columns){\n\t\t\tthis.defWatcherBlock = true;\n\n\t\t\tdef = column.getDefinition();\n\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\t\tkeys.forEach((key)=>{\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\t\tvar value = def[key];\n\n\t\t\t\tif(props){\n\t\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\t\tset: (newValue) => {\n\t\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(props.set){\n\t\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget:() => {\n\t\t\t\t\t\t\tif(props.get){\n\t\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\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\tthis.defWatcherBlock = false;\n\t\t}\n\t}\n\n\t//load saved definitions\n\tload(type, current){\n\t\tvar data = this.retrieveData(type);\n\n\t\tif(current){\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//retrieve data from memory\n\tretrieveData(type){\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n\t}\n\n\t//merge old and new column definitions\n\tmergeDefinition(oldCols, newCols, mergeAllNew){\n\t\tvar output = [];\n\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach((column, to) => {\n\t\t\tvar from = this._findColumn(oldCols, column),\n\t\t\tkeys;\n\n\t\t\tif(from){\n\t\t\t\tif(mergeAllNew){\n\t\t\t\t\tkeys = Object.keys(column);\n\t\t\t\t}else if(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(from);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\n\t\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(from.columns){\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\n\t\toldCols.forEach((column, i) => {\n\t\t\tvar from = this._findColumn(newCols, column);\n\n\t\t\tif (!from) {\n\t\t\t\tif(output.length>i){\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t}else{\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//find matching columns\n\t_findColumn(columns, subject){\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\n\n\t\treturn columns.find(function(col){\n\t\t\tswitch(type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t}\n\t\t});\n\t}\n\n\t//save data\n\tsave(type){\n\t\tvar data = {};\n\n\t\tswitch(type){\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"headerFilter\":\n\t\t\t\tdata = this.table.modules.filter.getHeaderFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tdata = this.getGroupConfig();\n\t\t\t\tbreak;\n\n\t\t\tcase \"page\":\n\t\t\t\tdata = this.getPageConfig();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(this.writeFunc){\n\t\t\tthis.writeFunc(this.id, type, data);\n\t\t}\n\n\t}\n\n\t//ensure sorters contain no function data\n\tvalidateSorters(data){\n\t\tdata.forEach(function(item){\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetGroupConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.group){\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgetPageConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.page){\n\t\t\tif(this.config.page === true || this.config.page.size){\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t\t}\n\n\t\t\tif(this.config.page === true || this.config.page.page){\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\n\t//parse columns for data to store\n\tparseColumns(columns){\n\t\tvar definitions = [],\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\t\tcolumns.forEach((column) => {\n\t\t\tvar defStore = {},\n\t\t\tcolDef = column.getDefinition(),\n\t\t\tkeys;\n\n\t\t\tif(column.isGroup){\n\t\t\t\tdefStore.title = colDef.title;\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\n\t\t\t}else{\n\t\t\t\tdefStore.field = column.getField();\n\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t\tkeys.push(\"visible\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tswitch(key){\n\t\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\n\t\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\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\tdefinitions.push(defStore);\n\t\t});\n\n\t\treturn definitions;\n\t}\n}\n\nPersistence.moduleName = \"persistence\";\n\nPersistence.moduleInitOrder = -10;\n\n//load defaults\nPersistence.readers = defaultReaders;\nPersistence.writers = defaultWriters;\n\nexport default Persistence;","import Module from '../../core/Module.js';\n\nclass Popup extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\n\t\tthis.registerTableOption(\"rowDblClickPopup\", false);\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\n\t\tthis.registerTableOption(\"groupDblClickPopup\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextPopup\");\n\t\tthis.registerColumnOption(\"headerClickPopup\");\n\t\tthis.registerColumnOption(\"headerDblClickPopup\");\n\t\tthis.registerColumnOption(\"headerPopup\");\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\n\t\tthis.registerColumnOption(\"contextPopup\");\n\t\tthis.registerColumnOption(\"clickPopup\");\n\t\tthis.registerColumnOption(\"dblClickPopup\");\n\n\t\tthis.registerComponentFunction(\"cell\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"group\", \"popup\", this._componentPopupCall.bind(this));\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\t_componentPopupCall(component, contents, position){\n\t\tthis.loadPopupEvent(contents, null, component, position);\n\t}\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextPopup){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickPopup){\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\n\t\t}\n\n\t\tif(this.table.options.rowDblClickPopup){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextPopup){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickPopup){\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\n\t\t}\n\n\t\tif(this.table.options.groupDblClickPopup){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup));\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\n\t\t\n\t\t\n\t\t}if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){\n\t\t\tthis.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerDblClickPopup\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickPopup);\n\t\t}\n\t\t\n\t\tif(def.headerPopup){\n\t\t\tthis.initializeColumnHeaderPopup(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\n\t\t}\n\n\t\tif(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){\n\t\t\tthis.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, \"dblClickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.dblClickPopup);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderPopup(column){\n\t\tvar icon = column.definition.headerPopupIcon,\n\t\theaderPopupEl;\n\t\t\n\t\theaderPopupEl = document.createElement(\"span\");\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\n\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderPopupEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderPopupEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadPopupTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadPopupTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadPopupEvent(contents, e, component, position){\n\t\tvar renderedCallback;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\n\t\t\n\t\tthis.loadPopup(e, component, contents, renderedCallback, position);\n\t}\n\t\n\tloadPopup(e, component, contents, renderedCallback, position){\n\t\tvar touch = !(e instanceof MouseEvent),\n\t\tcontentsEl, popup;\n\t\t\n\t\tif(contents instanceof HTMLElement){\n\t\t\tcontentsEl = contents;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\tcontentsEl.innerHTML = contents;\n\t\t}\n\t\t\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\n\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\tpopup = this.popup(contentsEl);\n\n\t\tif(typeof renderedCallback === \"function\"){\n\t\t\tpopup.renderCallback(renderedCallback);\n\t\t}\n\n\t\tif(e){\n\t\t\tpopup.show(e);\n\t\t}else{\n\t\t\tpopup.show(component.getElement(), position || \"center\");\n\t\t}\n\n\t\t\n\t\tpopup.hideOnBlur(() => {\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\n\t\t});\n\n\n\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent());\n\t}\n}\n\nPopup.moduleName = \"popup\";\n\nexport default Popup;\n","import Module from '../../core/Module.js';\n\nclass Print extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t\tthis.beforeprintEventHandler = null;\n\t\tthis.afterprintEventHandler = null;\n\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\n\n\t\tthis.registerColumnOption(\"print\");\n\t\tthis.registerColumnOption(\"titlePrint\");\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\tthis.beforeprintEventHandler = this.replaceTable.bind(this);\n\t\t\tthis.afterprintEventHandler = this.cleanup.bind(this);\n\n\t\t\twindow.addEventListener(\"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.addEventListener(\"afterprint\", this.afterprintEventHandler);\n\t\t\tthis.subscribe(\"table-destroy\", this.destroy.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\n\t}\n\n\tdestroy(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\twindow.removeEventListener( \"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.removeEventListener( \"afterprint\", this.afterprintEventHandler );\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\treplaceTable(){\n\t\tif(!this.manualBlock){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t}\n\n\tcleanup(){\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif(this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t}\n\n\tprintFullscreen(visible, style, config){\n\t\tvar scrollX = window.scrollX,\n\t\tscrollY = window.scrollY,\n\t\theaderEl = document.createElement(\"div\"),\n\t\tfooterEl = document.createElement(\"div\"),\n\t\ttableEl = this.table.modules.export.generateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\n\t\theaderContent, footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif(this.table.options.printHeader){\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif(typeof headerContent == \"string\"){\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t}else{\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif(this.table.options.printFooter){\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\n\t\t\tif(typeof footerContent == \"string\"){\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t}else{\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif(this.table.options.printFormatter){\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t}\n}\n\nPrint.moduleName = \"print\";\n\nexport default Print;","import Module from '../../core/Module.js';\n\nclass ReactiveData extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t\t\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.reactiveData){\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\n\t\t}\n\t}\n\t\n\twatchData(data){\n\t\tvar self = this,\n\t\tversion;\n\t\t\n\t\tthis.currentVersion ++;\n\t\t\n\t\tversion = this.currentVersion;\n\t\t\n\t\tthis.unwatchData();\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\t//override array push function\n\t\tthis.origFuncs.push = data.push;\n\t\t\n\t\tObject.defineProperty(this.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\t\n\t\t\t\t\tself.block(\"data-push\");\n\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.push.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-push\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array unshift function\n\t\tthis.origFuncs.unshift = data.unshift;\n\t\t\n\t\tObject.defineProperty(this.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-unshift\");\n\t\t\t\t\t\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.unshift.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-unshift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array shift function\n\t\tthis.origFuncs.shift = data.shift;\n\t\t\n\t\tObject.defineProperty(this.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-shift\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.shift.call(data);\n\n\t\t\t\t\tself.unblock(\"data-shift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array pop function\n\t\tthis.origFuncs.pop = data.pop;\n\t\t\n\t\tObject.defineProperty(this.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-pop\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.pop.call(data);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-pop\");\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array splice function\n\t\tthis.origFuncs.splice = data.splice;\n\t\t\n\t\tObject.defineProperty(this.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\tend = args[1],\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\n\t\t\t\tstartRow, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-splice\");\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif(newRows){\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(startRow){\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\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\t\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif(end !== 0){\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\t\t\t\t\t\t\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 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\t\n\t\t\t\t\tif(newRows || end !== 0){\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.splice.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-splice\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result ;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchData(){\n\t\tif(this.data !== false){\n\t\t\tfor(var key in this.origFuncs){\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable:true,\n\t\t\t\t\twritable:true,\n\t\t\t\t\tvalue: this.origFuncs.key,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\t\t\n\t\tif(this.table.options.dataTree){\n\t\t\tthis.watchTreeChildren(row);\n\t\t}\n\t}\n\t\n\twatchTreeChildren (row){\n\t\tvar self = this,\n\t\tchildField = row.getData()[this.table.options.dataTreeChildField],\n\t\torigFuncs = {};\n\t\t\n\t\tif(childField){\n\t\t\t\n\t\t\torigFuncs.push = childField.push;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"push\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-push\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-push\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.unshift = childField.unshift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-unshift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-unshift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.shift = childField.shift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-shift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.shift.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-shift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.pop = childField.pop;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-pop\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.pop.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-pop\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.splice = childField.splice;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-splice\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-splice\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trebuildTree(row){\n\t\tthis.table.modules.dataTree.initializeRow(row);\n\t\tthis.table.modules.dataTree.layoutRow(row);\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\t\n\twatchKey(row, data, key){\n\t\tvar self = this,\n\t\tprops = Object.getOwnPropertyDescriptor(data, key),\n\t\tvalue = data[key],\n\t\tversion = this.currentVersion;\n\t\t\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: (newValue) => {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"key\");\n\t\t\t\t\t\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"key\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(props.set){\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget:() => {\n\t\t\t\t\n\t\t\t\tif(props.get){\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue:data[key],\n\t\t\t});\n\t\t}\n\t}\n\t\n\tblock(key){\n\t\tif(!this.blocked){\n\t\t\tthis.blocked = key;\n\t\t}\n\t}\n\t\n\tunblock(key){\n\t\tif(this.blocked === key){\n\t\t\tthis.blocked = false;\n\t\t}\n\t}\n}\n\nReactiveData.moduleName = \"reactiveData\";\n\nexport default ReactiveData;\n\n\n\n","import Module from '../../core/Module.js';\n\nclass ResizeColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.latestX = false;\n\t\tthis.handle = null;\n\t\tthis.initialNextColumn = null;\n\t\tthis.nextColumn = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.registerColumnOption(\"resizable\", true);\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\n\t}\n\t\n\tinitializeEventWatchers(){\n\t\tif(!this.initialized){\n\t\t\t\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\n\t\t\tthis.subscribe(\"column-width\", this.columnWidthUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t\n\tlayoutCellHandles(cell){\n\t\tif(cell.row.type === \"row\"){\n\t\t\tthis.deInitializeComponent(cell);\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\n\t\t}\n\t}\n\t\n\tlayoutColumnHeader(column){\n\t\tif(column.definition.resizable){\n\t\t\tthis.initializeEventWatchers();\n\t\t\tthis.deInitializeComponent(column);\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\n\t\t}\n\t}\n\t\n\tcolumnLayoutUpdated(column){\n\t\tvar prev = column.prevColumn();\n\t\t\n\t\tthis.reinitializeColumn(column);\n\t\t\n\t\tif(prev){\n\t\t\tthis.reinitializeColumn(prev);\n\t\t}\n\t}\n\t\n\tcolumnWidthUpdated(column){\n\t\tif(column.modules.frozen){\n\t\t\tif(this.table.modules.frozenColumns.leftColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}else if(this.table.modules.frozenColumns.rightColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfrozenColumnOffset(column){\n\t\tvar offset = false;\n\n\t\tif(column.modules.frozen){\n\t\t\toffset = column.modules.frozen.marginValue; \n\n\t\t\tif(column.modules.frozen.position === \"left\"){\n\t\t\t\toffset += column.getWidth() - 3;\n\t\t\t}else{\n\t\t\t\tif(offset){\n\t\t\t\t\toffset -= 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn offset !== false ? offset + \"px\" : false;\n\t}\n\t\n\treinitializeColumn(column){\n\t\tvar frozenOffset = this.frozenColumnOffset(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\n\t\t\t\tif(frozenOffset){\n\t\t\t\t\tcell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t\t\tcell.modules.resize.handleEl.style[\"z-index\"] = 11;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\n\t\t\tif(frozenOffset){\n\t\t\t\tcolumn.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\n\t\t}\n\t}\n\t\n\tinitializeColumn(type, component, column, element){\n\t\tvar self = this,\n\t\tvariableHeight = false,\n\t\tmode = column.definition.resizable,\n\t\tconfig = {},\n\t\tnearestColumn = column.getLastColumn();\n\t\t\n\t\t//set column resize mode\n\t\tif(type === \"header\"){\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tconfig = {variableHeight:variableHeight};\n\t\t}\n\t\t\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\n\t\t\t\n\t\t\tvar handle = document.createElement('span');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\t\t\t\n\t\t\thandle.addEventListener(\"click\", function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t\tvar handleDown = function(e){\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t};\n\t\t\t\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\t\t\t\n\t\t\t//resize column on double click\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\n\t\t\t\t\n\t\t\t\te.stopPropagation();\n\t\t\t\tnearestColumn.reinitializeWidth(true);\n\t\t\t\t\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(column.modules.frozen){\n\t\t\t\thandle.style.position = \"sticky\";\n\t\t\t\thandle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);\n\t\t\t}\n\t\t\t\n\t\t\tconfig.handleEl = handle;\n\t\t\t\n\t\t\tif(element.parentNode && column.visible){\n\t\t\t\telement.after(handle);\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tcomponent.modules.resize = config;\n\t}\n\t\n\tdeInitializeColumn(column){\n\t\tthis.deInitializeComponent(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tthis.deInitializeComponent(cell);\n\t\t});\n\t}\n\t\n\tdeInitializeComponent(component){\n\t\tvar handleEl;\n\t\t\n\t\tif(component.modules.resize){\n\t\t\thandleEl = component.modules.resize.handleEl;\n\t\t\t\n\t\t\tif(handleEl && handleEl.parentElement){\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tresizeHandle(component, height){\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\n\t\t}\n\t}\n\t\n\t_checkResizability(column){\n\t\treturn column.definition.resizable;\n\t}\n\t\n\t_mouseDown(e, column, handle){\n\t\tvar self = this;\n\t\t\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tfunction mouseMove(e){\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\n\t\t\tstartDiff = x - self.startX,\n\t\t\tmoveDiff = x - self.latestX,\n\t\t\tblockedBefore, blockedAfter;\n\t\t\t\n\t\t\tself.latestX = x;\n\t\t\t\n\t\t\tif(self.table.rtl){\n\t\t\t\tstartDiff = -startDiff;\n\t\t\t\tmoveDiff = -moveDiff;\n\t\t\t}\n\t\t\t\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\n\t\t\t\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tif(moveDiff < 0){\n\t\t\t\tself.nextColumn = self.initialNextColumn;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\n\t\t\t\t\n\t\t\t\tif(moveDiff > 0){\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(self.nextColumn){\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.table.columnManager.rerenderColumns(true);\n\t\t\t\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction mouseUp(e){\n\t\t\t\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif(self.startColumn.modules.edit){\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\t\t\t\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\t\t\t\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(self.startWidth !== column.getWidth()){\n\t\t\t\tself.table.columnManager.verticalAlignHeaders();\n\n\t\t\t\tself.dispatch(\"column-resized\", column);\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\n\t\t\t}\n\t\t}\n\t\t\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\t\t\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 = true;\n\t\t}\n\t\t\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.latestX = self.startX;\n\t\tself.startWidth = column.getWidth();\n\t\t\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeColumns.moduleName = \"resizeColumns\";\n\nexport default ResizeColumns;","import Module from '../../core/Module.js';\n\nclass ResizeRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.resizableRows){\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\trowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-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(e){\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\n\t\tprevHandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function(e){\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif(prevRow){\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\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\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t}\n\n\t_mouseDown(e, row, handle){\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e){\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e){\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\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 = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeRows.moduleName = \"resizeRows\";\n\nexport default ResizeRows;","import Module from '../../core/Module.js';\n\nclass ResizeTable extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.binding = false;\n\t\tthis.visibilityObserver = false;\n\t\tthis.resizeObserver = false;\n\t\tthis.containerObserver = false;\n\t\t\n\t\tthis.tableHeight = 0;\n\t\tthis.tableWidth = 0;\n\t\tthis.containerHeight = 0;\n\t\tthis.containerWidth = 0;\n\t\t\n\t\tthis.autoResize = false;\n\t\t\n\t\tthis.visible = false;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.initialRedraw = false;\n\t\t\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.autoResize){\n\t\t\tvar table = this.table,\n\t\t\ttableStyle;\n\t\t\t\n\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\n\t\t\tif(table.element.parentNode){\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof IntersectionObserver !== \"undefined\" && typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\n\t\t\t\t\n\t\t\t\tthis.initializeVisibilityObserver();\n\t\t\t\t\n\t\t\t\tthis.autoResize = true;\n\t\t\t\t\n\t\t\t\tthis.resizeObserver = new ResizeObserver((entry) => {\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(table.element.parentNode){\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.resizeObserver.observe(table.element);\n\t\t\t\t\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\n\t\t\t\t\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.binding = function(){\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\ttable.columnManager.rerenderColumns(true);\n\t\t\t\t\t\ttable.redraw();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeVisibilityObserver(){\n\t\tthis.visibilityObserver = new IntersectionObserver((entries) => {\n\t\t\tthis.visible = entries[0].isIntersecting;\n\t\t\t\n\t\t\tif(!this.initialized){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.initialRedraw = !this.visible;\n\t\t\t}else{\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.redrawTable(this.initialRedraw);\n\t\t\t\t\tthis.initialRedraw = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.visibilityObserver.observe(this.table.element);\n\t}\n\t\n\tredrawTable(force){\n\t\tif(this.initialized && this.visible){\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\t\t\tthis.table.redraw(force);\n\t\t}\n\t}\n\t\n\ttableResized(){\n\t\tthis.table.rowManager.redraw();\n\t}\n\t\n\tclearBindings(){\n\t\tif(this.binding){\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\t\t\n\t\tif(this.resizeObserver){\n\t\t\tthis.resizeObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.visibilityObserver){\n\t\t\tthis.visibilityObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.containerObserver){\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t\t}\n\t}\n}\n\nResizeTable.moduleName = \"resizeTable\";\n\nexport default ResizeTable;","import Module from '../../core/Module.js';\n\nclass ResponsiveLayout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t\tthis.collapseHandleColumn = false;\n\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\n\n\t\tthis.registerColumnOption(\"responsive\");\n\t}\n\n\t//generate responsive columns list\n\tinitialize(){\n\t\tif(this.table.options.responsiveLayout){\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\n\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.generateCollapsedRowContent.bind(this));\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\ttableRedraw(force){\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\n\t\t\tif(!force){\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeResponsivity(){\n\t\tvar columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//determine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\n\t\t\tif(column.modules.responsive){\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\n\t\t//assign collapse column\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\n\t\t\t\tthis.collapseHandleColumn = col;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(this.collapseHandleColumn){\n\t\t\tif(this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}else{\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//define layout information\n\tinitializeColumn(column){\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\n\t}\n\n\tinitializeRow(row){\n\t\tvar el;\n\n\t\tif(row.type !== \"calc\"){\n\t\t\tel = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement:el,\n\t\t\t\topen:this.collapseStartOpen,\n\t\t\t};\n\n\t\t\tif(!this.collapseStartOpen){\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tlayoutRow(row){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t}\n\n\t//update column visibility\n\tupdateColumnVisibility(column, responsiveToggle){\n\t\tif(!responsiveToggle && column.modules.responsive){\n\t\t\tcolumn.modules.responsive.visible = column.visible;\n\t\t\tthis.initializeResponsivity();\n\t\t}\n\t}\n\n\thideColumn(column){\n\t\tvar colCount = this.hiddenColumns.length;\n\n\t\tcolumn.hide(false, true);\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !colCount){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}\n\t\t}\n\t}\n\n\tshowColumn(column){\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//redraw columns to fit space\n\tupdate(){\n\t\tvar working = true;\n\n\t\twhile(working){\n\n\t\t\tlet width = this.table.modules.layout.getMode() == \"fitColumns\" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth();\n\n\t\t\tlet diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width;\n\n\t\t\tif(diff < 0){\n\t\t\t\t//table is too wide\n\t\t\t\tlet column = this.columns[this.index];\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.hideColumn(column);\n\t\t\t\t\tthis.index ++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t//table has spare space\n\t\t\t\tlet column = this.columns[this.index -1];\n\n\t\t\t\tif(column){\n\t\t\t\t\tif(diff > 0){\n\t\t\t\t\t\tif(diff >= column.getWidth()){\n\t\t\t\t\t\t\tthis.showColumn(column);\n\t\t\t\t\t\t\tthis.index --;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\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}\n\n\t\t\tif(!this.table.rowManager.activeRowsCount){\n\t\t\t\tthis.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedContent(){\n\t\tvar rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach((row) => {\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t});\n\t}\n\n\tgenerateCollapsedRowContent(row){\n\t\tvar el, contents;\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\n\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif(contents){\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedRowData(row){\n\t\tvar data = row.getData(),\n\t\toutput = [],\n\t\tmockCellComponent;\n\n\t\tthis.hiddenColumns.forEach((column) => {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif(column.definition.title && column.field){\n\t\t\t\tif(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue:false,\n\t\t\t\t\t\tdata:{},\n\t\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction onRendered(callback){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tformatCollapsedData(data){\n\t\tvar list = document.createElement(\"table\");\n\n\t\tdata.forEach(function(item){\n\t\t\tvar row = document.createElement(\"tr\");\n\t\t\tvar titleData = document.createElement(\"td\");\n\t\t\tvar valueData = document.createElement(\"td\");\n\t\t\tvar node_content;\n\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\t\ttitleData.appendChild(titleHighlight);\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\n\t\t\t});\n\n\t\t\tif(item.value instanceof Node){\n\t\t\t\tnode_content = document.createElement(\"div\");\n\t\t\t\tnode_content.appendChild(item.value);\n\t\t\t\tvalueData.appendChild(node_content);\n\t\t\t}else{\n\t\t\t\tvalueData.innerHTML = item.value;\n\t\t\t}\n\n\t\t\trow.appendChild(titleData);\n\t\t\trow.appendChild(valueData);\n\t\t\tlist.appendChild(row);\n\t\t}, this);\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t}\n}\n\nResponsiveLayout.moduleName = \"responsiveLayout\";\n\nexport default ResponsiveLayout;\n","import Module from '../../core/Module.js';\n\nclass SelectRow extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t\tthis.headerCheckboxElement = null; // hold header select element\n\t\t\n\t\tthis.registerTableOption(\"selectableRows\", \"highlight\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRowsRangeMode\", \"drag\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRowsRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\n\t\tthis.registerTableOption(\"selectableRowsPersistence\", true); // maintain selection when table view is updated\n\t\tthis.registerTableOption(\"selectableRowsCheck\", function(data, row){return true;}); //check whether row is selectable\n\t\t\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\n\t}\n\t\n\tinitialize(){\n\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tif(this.table.options.selectableRows === \"highlight\" && this.table.options.selectableRange){\n\t\t\tthis.table.options.selectableRows = false;\n\t\t}\n\n\t\tif(this.table.options.selectableRows !== false){\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.selectableRows && !this.table.options.selectableRowsPersistence){\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"selectable\", \"selectableRows\", true);\n\t\tthis.deprecationCheck(\"selectableRollingSelection\", \"selectableRowsRollingSelection\", true);\n\t\tthis.deprecationCheck(\"selectableRangeMode\", \"selectableRowsRangeMode\", true);\n\t\tthis.deprecationCheck(\"selectablePersistence\", \"selectableRowsPersistence\", true);\n\t\tthis.deprecationCheck(\"selectableCheck\", \"selectableRowsCheck\", true);\n\t}\n\t\n\trowRetrieve(type, prevValue){\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\n\t}\n\t\n\trowDeleted(row){\n\t\tthis._deselectRow(row, true);\n\t}\n\t\n\tclearSelectionData(silent){\n\t\tvar prevSelected = this.selectedRows.length;\n\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\t\t\n\t\tif(prevSelected && silent !== true){\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t}\n\t\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tselectable = self.checkRowSelectability(row),\n\t\telement = row.getElement();\n\t\t\n\t\t// trigger end of row selection\n\t\tvar endSelect = function(){\n\t\t\t\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\t\t\n\t\trow.modules.select = {selected:false};\n\n\t\telement.classList.toggle(\"tabulator-selectable\", selectable);\n\t\telement.classList.toggle(\"tabulator-unselectable\", !selectable);\n\t\t\n\t\t//set row selection class\n\t\tif(self.checkRowSelectability(row)){\t\t\t\n\t\t\tif(self.table.options.selectableRows && self.table.options.selectableRows != \"highlight\"){\n\t\t\t\tif(self.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\n\t\t\t\t}else{\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!self.selecting){\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selecting = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selectPrev = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\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\t\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\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\t\n\thandleComplexRowClick(row, e){\n\t\tif(e.shiftKey){\n\t\t\tthis.table._clearSelection();\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\n\t\t\t\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\n\t\t\t\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\t\t\t\n\t\t\tif(e.ctrlKey || e.metaKey){\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.options.selectableRows !== true && !this.isRowSelected(row)){\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectableRows){\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.lastClickedRow = row;\n\t\t\t}else{\n\t\t\t\tthis.deselectRows(undefined, true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.selectableRows !== true){\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectableRows){\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectableRows);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectRows(toggledRows);\n\t\t\t}\n\t\t\tthis.table._clearSelection();\n\t\t}\n\t\telse if(e.ctrlKey || e.metaKey){\n\t\t\tthis.toggleRow(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}else{\n\t\t\tthis.deselectRows(undefined, true);\n\t\t\tthis.selectRows(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}\n\t}\n\n\tcheckRowSelectability(row){\n\t\tif(row && row.type === \"row\"){\n\t\t\treturn this.table.options.selectableRowsCheck.call(this.table, row.getComponent());\n\t\t}\n\n\t\treturn false;\n\t}\n\t\n\t//toggle row selection\n\ttoggleRow(row){\n\t\tif(this.checkRowSelectability(row)){\n\t\t\tif(row.modules.select && row.modules.select.selected){\n\t\t\t\tthis._deselectRow(row);\n\t\t\t}else{\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//select a number of rows\n\tselectRows(rows){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"number\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._selectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(false, changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._selectRow(rowMatch, false, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//select an individual row\n\t_selectRow(rowInfo, silent, force){\n\t\t//handle max row count\n\t\tif(!isNaN(this.table.options.selectableRows) && this.table.options.selectableRows !== true && !force){\n\t\t\tif(this.selectedRows.length >= this.table.options.selectableRows){\n\t\t\t\tif(this.table.options.selectableRowsRollingSelection){\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t}else{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\t\t\n\t\tif(row){\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectedRows.push(row);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tthis._rowSelectionChanged(silent, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisRowSelected(row){\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t}\n\t\n\t//deselect a number of rows\n\tdeselectRows(rows, silent){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = Object.assign([], this.selectedRows);\n\t\t\t\tbreak;\n\n\t\t\tcase \"number\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._deselectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(silent, [], changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._deselectRow(rowMatch, silent, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//deselect an individual row\n\t_deselectRow(rowInfo, silent){\n\t\tvar self = this,\n\t\trow = self.table.rowManager.findRow(rowInfo),\n\t\tindex, element;\n\t\t\n\t\tif(row){\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\t\t\t\n\t\t\tif(index > -1){\n\n\t\t\t\telement = row.getElement();\n\t\t\t\t\n\t\t\t\tif(element){\n\t\t\t\t\telement.classList.remove(\"tabulator-selected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t\t}\n\t\t\t\tself.selectedRows.splice(index, 1);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tself._rowSelectionChanged(silent, undefined, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetSelectedData(){\n\t\tvar data = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetSelectedRows(){\n\t\tvar rows = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\trows.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t_rowSelectionChanged(silent, selected = [], deselected = []){\n\t\tif(this.headerCheckboxElement){\n\t\t\tif(this.selectedRows.length === 0){\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\n\t\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else {\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(!silent){\n\t\t\tif(!Array.isArray(selected)){\n\t\t\t\tselected = [selected];\n\t\t\t}\n\n\t\t\tselected = selected.map(row => row.getComponent());\n\n\t\t\tif(!Array.isArray(deselected)){\n\t\t\t\tdeselected = [deselected];\n\t\t\t}\n\n\t\t\tdeselected = deselected.map(row => row.getComponent());\n\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows(), selected, deselected);\n\t\t}\n\t}\n\t\n\tregisterRowSelectCheckbox (row, element) {\n\t\tif(!row._row.modules.select){\n\t\t\trow._row.modules.select = {};\n\t\t}\n\t\t\n\t\trow._row.modules.select.checkboxEl = element;\n\t}\n\t\n\tregisterHeaderSelectCheckbox (element) {\n\t\tthis.headerCheckboxElement = element;\n\t}\n\t\n\tchildRowSelection(row, select){\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\t\t\n\t\tif(select){\n\t\t\tfor(let child of children){\n\t\t\t\tthis._selectRow(child, true);\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let child of children){\n\t\t\t\tthis._deselectRow(child, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nSelectRow.moduleName = \"selectRow\";\n\nexport default SelectRow;","//sort datetime\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tif(typeof DT != \"undefined\"){\n\t\tif(!DT.isDateTime(a)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\ta = DT.fromISO(String(a));\n\t\t\t}else{\n\t\t\t\ta = DT.fromFormat(String(a), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!DT.isDateTime(b)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\tb = DT.fromISO(String(b));\n\t\t\t}else{\n\t\t\t\tb = DT.fromFormat(String(b), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!a.isValid){\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\n\t\t}else if(!b.isValid){\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\n\t}else{\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\n\t}\n}","import number from './sorters/number.js';\nimport string from './sorters/string.js';\nimport date from './sorters/date.js';\nimport time from './sorters/time.js';\nimport datetime from './sorters/datetime.js';\nimport boolean from './sorters/boolean.js';\nimport array from './sorters/array.js';\nimport exists from './sorters/exists.js';\nimport alphanum from './sorters/alphanum.js';\n\nexport default {\n\tnumber:number,\n\tstring:string,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tboolean:boolean,\n\tarray:array,\n\texists:exists,\n\talphanum:alphanum\n};","//sort numbers\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar decimal = params.decimalSeparator;\n\tvar thousand = params.thousandSeparator;\n\tvar emptyAlign = 0;\n\n\ta = String(a);\n\tb = String(b);\n\n\tif(thousand){\n\t\ta = a.split(thousand).join(\"\");\n\t\tb = b.split(thousand).join(\"\");\n\t}\n\n\tif(decimal){\n\t\ta = a.split(decimal).join(\".\");\n\t\tb = b.split(decimal).join(\".\");\n\t}\n\n\ta = parseFloat(a);\n\tb = parseFloat(b);\n\n\t//handle non numeric values\n\tif(isNaN(a)){\n\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t}else if(isNaN(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\treturn a - b;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort strings\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\tvar locale;\n\n\t//handle empty values\n\tif(!a){\n\t\temptyAlign = !b ? 0 : -1;\n\t}else if(!b){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\tswitch(typeof params.locale){\n\t\t\tcase \"boolean\":\n\t\t\t\tif(params.locale){\n\t\t\t\t\tlocale = this.langLocale();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tlocale = params.locale;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import datetime from './datetime.js';\n\n//sort date\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"dd/MM/yyyy\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","import datetime from './datetime.js';\n\n//sort times\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"HH:mm\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","//sort booleans\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\treturn el1 - el2;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar type = params.type || \"length\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tfunction calc(value){\n\t\tvar result;\n\n\t\tswitch(type){\n\t\t\tcase \"length\":\n\t\t\t\tresult = value.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"sum\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"max\":\n\t\t\t\tresult = Math.max.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"min\":\n\t\t\t\tresult = Math.min.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"avg\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t}) / value.length;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t//handle non array values\n\tif(!Array.isArray(a)){\n\t\temptyAlign = !Array.isArray(b) ? 0 : -1;\n\t}else if(!Array.isArray(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\treturn calc(b) - calc(a);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\treturn el1 - el2;\n}","//sort alpha numeric strings\nexport default function(as, bs, aRow, bRow, column, dir, params){\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\n\t//handle empty values\n\tif(!as && as!== 0){\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t}else if(!bs && bs!== 0){\n\t\temptyAlign = 1;\n\t}else{\n\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\ta = String(as).toLowerCase();\n\t\tb = String(bs).toLowerCase();\n\t\tif(a === b) return 0;\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\ta = a.match(rx);\n\t\tb = b.match(rx);\n\t\tL = a.length > b.length ? b.length : a.length;\n\t\twhile(i < L){\n\t\t\ta1= a[i];\n\t\t\tb1= b[i++];\n\t\t\tif(a1 !== b1){\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\treturn a1 - b1;\n\t\t\t\t}\n\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\treturn a.length > b.length;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import Module from '../../core/Module.js';\n\nimport defaultSorters from './defaults/sorters.js';\n\nclass Sort extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\t\t\n\t\tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\n\t\t\n\t\tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\n\t\tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\n\t\tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\n\t\tthis.registerTableOption(\"headerSortElement\", \"
        \"); //header sort element\n\t\tthis.registerTableOption(\"headerSortClickElement\", \"header\"); //element which triggers sort when clicked\n\t\t\n\t\tthis.registerColumnOption(\"sorter\");\n\t\tthis.registerColumnOption(\"sorterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"headerSort\", true);\n\t\tthis.registerColumnOption(\"headerSortStartingDir\");\n\t\tthis.registerColumnOption(\"headerSortTristate\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.registerDataHandler(this.sort.bind(this), 20);\n\t\t\n\t\tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\n\t\tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\n\t\tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\n\t\t\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\n\t\t}\n\t}\n\t\n\ttableBuilt(){\n\t\tif(this.table.options.initialSort){\n\t\t\tthis.setSort(this.table.options.initialSort);\n\t\t}\n\t}\n\t\n\tremoteSortParams(data, config, silent, params){\n\t\tvar sorters = this.getSort();\n\t\t\n\t\tsorters.forEach((item) => {\n\t\t\tdelete item.column;\n\t\t});\n\t\t\n\t\tparams.sort = sorters;\n\t\t\n\t\treturn params;\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetSort(sortList, dir){\n\t\tthis.setSort(sortList, dir);\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\t\n\tclearSort(){\n\t\tthis.clear();\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\t//initialize column header for sorting\n\tinitializeColumn(column){\n\t\tvar sorter = false,\n\t\tcolEl,\n\t\tarrowEl;\n\t\t\n\t\tswitch(typeof column.definition.sorter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Sort.sorters[column.definition.sorter]){\n\t\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tcolumn.modules.sort = {\n\t\t\tsorter:sorter, dir:\"none\",\n\t\t\tparams:column.definition.sorterParams || {},\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate,\n\t\t};\n\t\t\n\t\tif(column.definition.headerSort !== false){\n\t\t\t\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\t\t\t\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\t\t\t\n\t\t\tswitch(this.table.options.headerSortClickElement){\n\t\t\t\tcase \"icon\":\n\t\t\t\t\tarrowEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"header\":\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch(this.table.options.headerSortElement){\n\t\t\t\tcase \"function\":\n\t\t\t\t//do nothing\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"object\":\n\t\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t\t}\n\t\t\t\n\t\t\t//create sorter arrow\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\n\t\t\t\n\t\t\tcolumn.modules.sort.element = arrowEl;\n\t\t\t\n\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t\n\t\t\tif(this.table.options.headerSortClickElement === \"icon\"){\n\t\t\t\tarrowEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//sort on click\n\t\t\t(this.table.options.headerSortClickElement === \"icon\" ? arrowEl : colEl).addEventListener(\"click\", (e) => {\n\t\t\t\tvar dir = \"\",\n\t\t\t\tsorters=[],\n\t\t\t\tmatch = false;\n\t\t\t\t\n\t\t\t\tif(column.modules.sort){\n\t\t\t\t\tif(column.modules.sort.tristate){\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tdir = \"none\";\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\tswitch(column.modules.sort.dir){\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = this.getSort();\n\t\t\t\t\t\t\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(match > -1){\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\t\t\t\t\t\t\t\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}else{\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tthis.setSort(sorters);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(dir == \"none\"){\n\t\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tthis.setSort(column, dir);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\n\t\t\t\t\tthis.refreshSort();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trefreshSort(){\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.reloadData(null, false, false);\n\t\t}else{\n\t\t\tthis.refreshData(true);\n\t\t}\n\t\t\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\t\n\t//check if the sorters have changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\t\n\t//return current sorters\n\tgetSort(){\n\t\tvar self = this,\n\t\tsorters = [];\n\t\t\n\t\tself.sortList.forEach(function(item){\n\t\t\tif(item.column){\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn sorters;\n\t}\n\t\n\t//change sort list and trigger sort\n\tsetSort(sortList, dir){\n\t\tvar self = this,\n\t\tnewSortList = [];\n\t\t\n\t\tif(!Array.isArray(sortList)){\n\t\t\tsortList = [{column: sortList, dir:dir}];\n\t\t}\n\t\t\n\t\tsortList.forEach(function(item){\n\t\t\tvar column;\n\t\t\t\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t\tself.sortList = newSortList;\n\t\t\n\t\tthis.dispatch(\"sort-changed\");\n\t}\n\t\n\t//clear sorters\n\tclear(){\n\t\tthis.setSort([]);\n\t}\n\t\n\t//find appropriate sorter for column\n\tfindSorter(column){\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\tsorter = \"string\",\n\t\tfield, value;\n\t\t\n\t\tif(row){\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\t\t\t\n\t\t\tif(field){\n\t\t\t\t\n\t\t\t\tvalue = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Sort.sorters[sorter];\n\t}\n\t\n\t//work through sort list sorting data\n\tsort(data){\n\t\tvar self = this,\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t\tsortListActual = [],\n\t\trowComponents = [];\n\t\t\n\t\tif(this.subscribedExternal(\"dataSorting\")){\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\n\t\t}\n\t\t\n\t\tself.clearColumnHeaders();\n\t\t\n\t\tif(this.table.options.sortMode !== \"remote\"){\n\t\t\t\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tvar sortObj;\n\t\t\t\t\n\t\t\t\tif(item.column){\n\t\t\t\t\tsortObj = item.column.modules.sort;\n\t\t\t\t\t\n\t\t\t\t\tif(sortObj){\n\t\t\t\t\t\t\n\t\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\t\tif(!sortObj.sorter){\n\t\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\t\t\t\t\t\t\n\t\t\t\t\t\tsortListActual.push(item);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t//sort data\n\t\t\tif (sortListActual.length) {\n\t\t\t\tself._sortItems(data, sortListActual);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataSorted\")){\n\t\t\tdata.forEach((row) => {\n\t\t\t\trowComponents.push(row.getComponent());\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//clear sort arrows on columns\n\tclearColumnHeaders(){\n\t\tthis.table.columnManager.getRealColumns().forEach((column) => {\n\t\t\tif(column.modules.sort){\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//set the column header sort direction\n\tsetColumnHeader(column, dir){\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir === \"asc\" ? \"ascending\" : \"descending\");\n\t\tthis.setColumnHeaderSortIcon(column, dir);\n\t}\n\t\n\tsetColumnHeaderSortIcon(column, dir){\n\t\tvar sortEl = column.modules.sort.element,\n\t\tarrowEl;\n\t\t\n\t\tif(column.definition.headerSort && typeof this.table.options.headerSortElement === \"function\"){\n\t\t\twhile(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild);\n\t\t\t\n\t\t\tarrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir);\n\t\t\t\n\t\t\tif(typeof arrowEl === \"object\"){\n\t\t\t\tsortEl.appendChild(arrowEl);\n\t\t\t}else{\n\t\t\t\tsortEl.innerHTML = arrowEl;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//sort each item in sort list\n\t_sortItems(data, sortList){\n\t\tvar sorterCount = sortList.length - 1;\n\t\t\n\t\tdata.sort((a, b) => {\n\t\t\tvar result;\n\t\t\t\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\n\t\t\t\tlet sortItem = sortList[i];\n\t\t\t\t\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\t\t\t\t\n\t\t\t\tif(result !== 0){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn result;\n\t\t});\n\t}\n\t\n\t//process individual rows for a sort function on active data\n\t_sortRow(a, b, column, dir, params){\n\t\tvar el1Comp, el2Comp;\n\t\t\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\t\t\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\t\t\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\t\t\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\t\t\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t}\n}\n\nSort.moduleName = \"sort\";\n\n//load defaults\nSort.sorters = defaultSorters;\n\nexport default Sort;\n","class RangeComponent {\n\tconstructor(range) {\n\t\tthis._range = range;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function (target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t} else {\n\t\t\t\t\treturn target._range.table.componentFunctionBinder.handle(\"range\", target._range, name);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\tgetElement() {\n\t\treturn this._range.element;\n\t}\n\n\tgetData() {\n\t\treturn this._range.getData();\n\t}\n\n\tgetCells() {\n\t\treturn this._range.getCells(true);\n\t}\n\n\tgetStructuredCells() {\n\t\treturn this._range.getStructuredCells();\n\t}\n\n\tgetRows() {\n\t\treturn this._range.getRows().map((row) => row.getComponent());\n\t}\n\n\tgetColumns() {\n\t\treturn this._range.getColumns().map((column) => column.getComponent());\n\t}\n\t\n\tgetBounds() {\n\t\treturn this._range.getBounds();\n\t}\n\n\tgetTopEdge() {\n\t\treturn this._range.top;\n\t}\n\n\tgetBottomEdge() {\n\t\treturn this._range.bottom;\n\t}\n\n\tgetLeftEdge() {\n\t\treturn this._range.left;\n\t}\n\n\tgetRightEdge() {\n\t\treturn this._range.right;\n\t}\n\n\tsetBounds(start, end){\n\t\tif(this._range.destroyedGuard(\"setBounds\")){\n\t\t\tthis._range.setBounds(start ? start._cell : start, end ? end._cell : end);\n\t\t}\n\t}\n\n\tsetStartBound(start){\n\t\tif(this._range.destroyedGuard(\"setStartBound\")){\n\t\t\tthis._range.setEndBound(start ? start._cell : start);\n\t\t\tthis._range.rangeManager.layoutElement();\n\t\t}\n\t}\n\n\tsetEndBound(end){\n\t\tif(this._range.destroyedGuard(\"setEndBound\")){\n\t\t\tthis._range.setEndBound(end ? end._cell : end);\n\t\t\tthis._range.rangeManager.layoutElement();\n\t\t}\n\t}\n\n\tclearValues(){\n\t\tif(this._range.destroyedGuard(\"clearValues\")){\n\t\t\tthis._range.clearValues();\n\t\t}\n\t}\n\n\tremove(){\n\t\tif(this._range.destroyedGuard(\"remove\")){\n\t\t\tthis._range.destroy(true);\n\t\t}\n\t}\n}\n\nexport default RangeComponent;\n","import CoreFeature from '../../core/CoreFeature.js';\nimport RangeComponent from \"./RangeComponent\";\n\nclass Range extends CoreFeature{\n\tconstructor(table, rangeManager, start, end) {\n\t\tsuper(table);\n\t\t\n\t\tthis.rangeManager = rangeManager;\n\t\tthis.element = null;\n\t\tthis.initialized = false;\n\t\tthis.initializing = {\n\t\t\tstart:false,\n\t\t\tend:false,\n\t\t};\n\t\tthis.destroyed = false;\n\t\t\n\t\tthis.top = 0;\n\t\tthis.bottom = 0;\n\t\tthis.left = 0;\n\t\tthis.right = 0;\n\t\t\n\t\tthis.table = table;\n\t\tthis.start = {row:0, col:0};\n\t\tthis.end = {row:0, col:0};\n\n\t\tif(this.rangeManager.rowHeader){\n\t\t\tthis.left = 1;\n\t\t\tthis.right = 1;\n\t\t\tthis.start.col = 1;\n\t\t\tthis.end.col = 1;\n\t\t}\n\t\t\n\t\tthis.initElement();\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tthis.initBounds(start, end);\n\t\t});\n\t}\n\t\n\tinitElement(){\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-range\");\n\t}\n\t\n\tinitBounds(start, end){\n\t\tthis._updateMinMax();\n\t\t\n\t\tif(start){\n\t\t\tthis.setBounds(start, end || start);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Boundary Setup ///////\n\t///////////////////////////////////\n\t\n\tsetStart(row, col) {\n\t\tif(this.start.row !== row || this.start.col !== col){\n\t\t\tthis.start.row = row;\n\t\t\tthis.start.col = col;\n\t\t\t\n\t\t\tthis.initializing.start = true;\n\t\t\tthis._updateMinMax();\n\t\t}\n\t}\n\t\n\tsetEnd(row, col) {\n\t\tif(this.end.row !== row || this.end.col !== col){\n\t\t\tthis.end.row = row;\n\t\t\tthis.end.col = col;\n\t\t\t\n\t\t\tthis.initializing.end = true;\n\t\t\tthis._updateMinMax();\n\t\t}\n\t}\n\t\n\tsetBounds(start, end, visibleRows){\n\t\tif(start){\n\t\t\tthis.setStartBound(start);\n\t\t}\n\t\t\n\t\tthis.setEndBound(end || start);\n\t\tthis.rangeManager.layoutElement(visibleRows);\n\t}\n\t\n\tsetStartBound(element){\n\t\tvar row, col;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(this.rangeManager.columnSelection){\n\t\t\t\tthis.setStart(0, element.getPosition() - 1);\n\t\t\t}\n\t\t}else{\n\t\t\trow = element.row.position - 1;\n\t\t\tcol = element.column.getPosition() - 1;\n\t\t\t\n\t\t\tif (element.column === this.rangeManager.rowHeader) {\n\t\t\t\tthis.setStart(row, 1);\n\t\t\t} else {\n\t\t\t\tthis.setStart(row, col);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tsetEndBound(element){\n\t\tvar rowsCount = this._getTableRows().length,\n\t\trow, col, isRowHeader;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(this.rangeManager.columnSelection){\n\t\t\t\tif (this.rangeManager.selecting === \"column\") {\n\t\t\t\t\tthis.setEnd(rowsCount - 1, element.getPosition() - 1);\n\t\t\t\t} else if (this.rangeManager.selecting === \"cell\") {\n\t\t\t\t\tthis.setEnd(0, element.getPosition() - 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\trow = element.row.position - 1;\n\t\t\tcol = element.column.getPosition() - 1;\n\t\t\tisRowHeader = element.column === this.rangeManager.rowHeader;\n\t\t\t\n\t\t\tif (this.rangeManager.selecting === \"row\") {\n\t\t\t\tthis.setEnd(row, this._getTableColumns().length - 1);\n\t\t\t} else if (this.rangeManager.selecting !== \"row\" && isRowHeader) {\n\t\t\t\tthis.setEnd(row, 0);\n\t\t\t} else if (this.rangeManager.selecting === \"column\") {\n\t\t\t\tthis.setEnd(rowsCount - 1, col);\n\t\t\t} else {\n\t\t\t\tthis.setEnd(row, col);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_updateMinMax() {\n\t\tthis.top = Math.min(this.start.row, this.end.row);\n\t\tthis.bottom = Math.max(this.start.row, this.end.row);\n\t\tthis.left = Math.min(this.start.col, this.end.col);\n\t\tthis.right = Math.max(this.start.col, this.end.col);\n\t\t\n\t\tif(this.initialized){\n\t\t\tthis.dispatchExternal(\"rangeChanged\", this.getComponent());\n\t\t}else{\n\t\t\tif(this.initializing.start && this.initializing.end){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.dispatchExternal(\"rangeAdded\", this.getComponent());\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_getTableColumns() {\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex();\n\t}\n\t\n\t_getTableRows() {\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Rendering ///////\n\t///////////////////////////////////\n\t\n\tlayout() {\n\t\tvar _vDomTop = this.table.rowManager.renderer.vDomTop,\n\t\t_vDomBottom = this.table.rowManager.renderer.vDomBottom,\n\t\t_vDomLeft = this.table.columnManager.renderer.leftCol,\n\t\t_vDomRight = this.table.columnManager.renderer.rightCol,\t\t\n\t\ttop, bottom, left, right, topLeftCell, bottomRightCell;\n\t\t\n\t\tif (_vDomTop == null) {\n\t\t\t_vDomTop = 0;\n\t\t}\n\t\t\n\t\tif (_vDomBottom == null) {\n\t\t\t_vDomBottom = Infinity;\n\t\t}\n\t\t\n\t\tif (_vDomLeft == null) {\n\t\t\t_vDomLeft = 0;\n\t\t}\n\t\t\n\t\tif (_vDomRight == null) {\n\t\t\t_vDomRight = Infinity;\n\t\t}\n\t\t\n\t\tif (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) {\n\t\t\ttop = Math.max(this.top, _vDomTop);\n\t\t\tbottom = Math.min(this.bottom, _vDomBottom);\n\t\t\tleft = Math.max(this.left, _vDomLeft);\n\t\t\tright = Math.min(this.right, _vDomRight);\n\t\t\t\n\t\t\ttopLeftCell = this.rangeManager.getCell(top, left);\n\t\t\tbottomRightCell = this.rangeManager.getCell(bottom, right);\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-range-active\");\n\t\t\t// this.element.classList.toggle(\"tabulator-range-active\", this === this.rangeManager.activeRange);\n\t\t\t\n\t\t\tthis.element.style.left = topLeftCell.row.getElement().offsetLeft + topLeftCell.getElement().offsetLeft + \"px\";\n\t\t\tthis.element.style.top = topLeftCell.row.getElement().offsetTop + \"px\";\n\t\t\tthis.element.style.width = bottomRightCell.getElement().offsetLeft + bottomRightCell.getElement().offsetWidth - topLeftCell.getElement().offsetLeft + \"px\";\n\t\t\tthis.element.style.height = bottomRightCell.row.getElement().offsetTop + bottomRightCell.row.getElement().offsetHeight - topLeftCell.row.getElement().offsetTop + \"px\";\n\t\t}\n\t}\n\t\n\tatTopLeft(cell) {\n\t\treturn cell.row.position - 1 === this.top && cell.column.getPosition() - 1 === this.left;\n\t}\n\t\n\tatBottomRight(cell) {\n\t\treturn cell.row.position - 1 === this.bottom && cell.column.getPosition() - 1 === this.right;\n\t}\n\t\n\toccupies(cell) {\n\t\treturn this.occupiesRow(cell.row) && this.occupiesColumn(cell.column);\n\t}\n\t\n\toccupiesRow(row) {\n\t\treturn this.top <= row.position - 1 && row.position - 1 <= this.bottom;\n\t}\n\t\n\toccupiesColumn(col) {\n\t\treturn this.left <= col.getPosition() - 1 && col.getPosition() - 1 <= this.right;\n\t}\n\t\n\toverlaps(left, top, right, bottom) {\n\t\tif ((this.left > right || left > this.right) || (this.top > bottom || top > this.bottom)){\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\treturn true;\n\t}\n\t\n\tgetData() {\n\t\tvar data = [],\n\t\trows = this.getRows(),\n\t\tcolumns = this.getColumns();\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tvar rowData = row.getData(),\n\t\t\tresult = {};\n\t\t\t\n\t\t\tcolumns.forEach((column) => {\n\t\t\t\tresult[column.field] = rowData[column.field];\n\t\t\t});\n\t\t\t\n\t\t\tdata.push(result);\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetCells(structured, component) {\n\t\tvar cells = [],\n\t\trows = this.getRows(),\n\t\tcolumns = this.getColumns();\n\t\t\n\t\tif (structured) {\n\t\t\tcells = rows.map((row) => {\n\t\t\t\tvar arr = [];\n\t\t\t\t\n\t\t\t\trow.getCells().forEach((cell) => {\n\t\t\t\t\tif (columns.includes(cell.column)) {\n\t\t\t\t\t\tarr.push(component ? cell.getComponent() : cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn arr;\n\t\t\t});\n\t\t} else {\n\t\t\trows.forEach((row) => {\n\t\t\t\trow.getCells().forEach((cell) => {\n\t\t\t\t\tif (columns.includes(cell.column)) {\n\t\t\t\t\t\tcells.push(component ? cell.getComponent() : cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn cells;\n\t}\n\t\n\tgetStructuredCells() {\n\t\treturn this.getCells(true, true);\n\t}\n\t\n\tgetRows() {\n\t\treturn this._getTableRows().slice(this.top, this.bottom + 1);\n\t}\n\t\n\tgetColumns() {\n\t\treturn this._getTableColumns().slice(this.left, this.right + 1);\n\t}\n\t\n\tclearValues(){\n\t\tvar cells = this.getCells();\n\t\tvar clearValue = this.table.options.selectableRangeClearCellsValue;\n\t\t\n\t\tthis.table.blockRedraw();\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tcell.setValue(clearValue);\n\t\t});\n\t\t\n\t\tthis.table.restoreRedraw();\n\t\t\n\t}\n\t\n\tgetBounds(component){\n\t\tvar cells = this.getCells(false, component),\n\t\toutput = {\n\t\t\tstart:null,\n\t\t\tend:null,\n\t\t};\n\t\t\n\t\tif(cells.length){\n\t\t\toutput.start = cells[0];\n\t\t\toutput.end = cells[cells.length - 1];\n\t\t}else{\n\t\t\tconsole.warn(\"No bounds defined on range\");\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponent() {\n\t\tif (!this.component) {\n\t\t\tthis.component = new RangeComponent(this);\n\t\t}\n\t\treturn this.component;\n\t}\n\t\n\tdestroy(notify) {\n\t\tthis.destroyed = true;\n\t\t\n\t\tthis.element.remove();\n\t\t\n\t\tif(notify){\n\t\t\tthis.rangeManager.rangeRemoved(this);\n\t\t}\n\t\t\n\t\tif(this.initialized){\n\t\t\tthis.dispatchExternal(\"rangeRemoved\", this.getComponent());\n\t\t}\n\t}\n\t\n\tdestroyedGuard(func){\n\t\tif(this.destroyed){\n\t\t\tconsole.warn(\"You cannot call the \" + func + \" function on a destroyed range\");\n\t\t}\n\t\t\n\t\treturn !this.destroyed;\n\t}\n}\n\nexport default Range;\n","import Module from \"../../core/Module.js\";\nimport Range from \"./Range.js\";\n\nclass SelectRange extends Module {\n\tconstructor(table) {\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = \"cell\";\n\t\tthis.mousedown = false;\n\t\tthis.ranges = [];\n\t\tthis.overlay = null;\n\t\tthis.rowHeader = null;\n\t\tthis.layoutChangeTimeout = null;\n\t\tthis.columnSelection = false;\n\t\tthis.rowSelection = false;\n\t\tthis.maxRanges = 0;\n\t\tthis.activeRange = false;\n\t\tthis.blockKeydown = false;\n\t\t\n\t\tthis.keyDownEvent = this._handleKeyDown.bind(this);\n\t\tthis.mouseUpEvent = this._handleMouseUp.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"selectableRange\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeColumns\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeRows\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeClearCells\", false); //allow clearing of active range\n\t\tthis.registerTableOption(\"selectableRangeClearCellsValue\", undefined); //value for cleared active range\n\n\t\tthis.registerTableFunction(\"getRangesData\", this.getRangesData.bind(this));\n\t\tthis.registerTableFunction(\"getRanges\", this.getRanges.bind(this));\n\t\tthis.registerTableFunction(\"addRange\", this.addRangeFromComponent.bind(this));\n\n\t\tthis.registerComponentFunction(\"cell\", \"getRanges\", this.cellGetRanges.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getRanges\", this.rowGetRanges.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getRanges\", this.colGetRanges.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Initialization ///////\n\t///////////////////////////////////\n\t\n\tinitialize() {\n\t\tif (this.options(\"selectableRange\")) {\t\t\n\t\t\tif(!this.options(\"selectableRows\")){\n\t\t\t\t\n\t\t\t\tthis.maxRanges = this.options(\"selectableRange\");\n\t\t\t\t\n\t\t\t\tthis.initializeTable();\n\t\t\t\tthis.initializeWatchers();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"SelectRange functionality cannot be used in conjunction with row selection\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\tinitializeTable() {\t\t\n\t\tthis.overlay = document.createElement(\"div\");\n\t\tthis.overlay.classList.add(\"tabulator-range-overlay\");\n\t\t\n\t\tthis.rangeContainer = document.createElement(\"div\");\n\t\tthis.rangeContainer.classList.add(\"tabulator-range-container\");\n\t\t\n\t\tthis.activeRangeCellElement = document.createElement(\"div\");\n\t\tthis.activeRangeCellElement.classList.add(\"tabulator-range-cell-active\");\n\t\t\n\t\tthis.overlay.appendChild(this.rangeContainer);\n\t\tthis.overlay.appendChild(this.activeRangeCellElement);\n\t\t\n\t\tthis.table.rowManager.element.addEventListener(\"keydown\", this.keyDownEvent);\n\t\t\n\t\tthis.resetRanges();\n\t\t\n\t\tthis.table.rowManager.element.appendChild(this.overlay);\n\t\tthis.table.columnManager.element.setAttribute(\"tabindex\", 0);\n\t\tthis.table.element.classList.add(\"tabulator-ranges\");\n\t}\n\t\n\tinitializeWatchers() {\n\t\tthis.columnSelection = this.options(\"selectableRangeColumns\");\n\t\tthis.rowSelection = this.options(\"selectableRangeRows\");\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-mousedown\", this.handleColumnMouseDown.bind(this));\n\t\tthis.subscribe(\"column-mousemove\", this.handleColumnMouseMove.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.handleColumnResized.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"column-height\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"columns-loaded\", this.updateHeaderColumn.bind(this));\n\n\t\tthis.subscribe(\"cell-height\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.renderCell.bind(this));\n\t\tthis.subscribe(\"cell-mousedown\", this.handleCellMouseDown.bind(this));\n\t\tthis.subscribe(\"cell-mousemove\", this.handleCellMouseMove.bind(this));\n\t\tthis.subscribe(\"cell-click\", this.handleCellClick.bind(this));\n\t\tthis.subscribe(\"cell-editing\", this.handleEditingCell.bind(this));\n\t\t\n\t\tthis.subscribe(\"page-changed\", this.redraw.bind(this));\n\n\t\tthis.subscribe(\"scroll-vertical\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.layoutChange.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-destroy\", this.tableDestroyed.bind(this));\n\t\tthis.subscribe(\"data-processed\", this.resetRanges.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-layout\", this.layoutElement.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.redraw.bind(this));\n\t\tthis.subscribe(\"table-destroy\", this.tableDestroyed.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-editor-clear\", this.finishEditingCell.bind(this));\n\t\tthis.subscribe(\"edit-blur\", this.restoreFocus.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.keyNavigate.bind(this, \"left\"));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keyNavigate.bind(this, \"right\"));\n\t\tthis.subscribe(\"keybinding-nav-left\", this.keyNavigate.bind(this, \"left\"));\n\t\tthis.subscribe(\"keybinding-nav-right\", this.keyNavigate.bind(this, \"right\"));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.keyNavigate.bind(this, \"up\"));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.keyNavigate.bind(this, \"down\"));\n\t\tthis.subscribe(\"keybinding-nav-range\", this.keyNavigateRange.bind(this));\n\t}\n\t\n\t\n\tinitializeColumn(column) {\n\t\tif(this.columnSelection && column.definition.headerSort && this.options(\"headerSortClickElement\") !== \"icon\"){\n\t\t\tconsole.warn(\"Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'.\");\n\t\t}\n\t\t\n\t\tif (column.modules.edit) {\n\t\t\t// Block editor from taking action so we can trigger edit by\n\t\t\t// double clicking.\n\t\t\t// column.modules.edit.blocked = true;\n\t\t}\n\t}\n\t\n\tupdateHeaderColumn(){\n\t\tif(this.rowSelection){\n\t\t\tthis.rowHeader = this.table.columnManager.getVisibleColumnsByIndex()[0];\n\t\t\t\n\t\t\tif(this.rowHeader){\n\t\t\t\tthis.rowHeader.definition.cssClass = this.rowHeader.definition.cssClass + \" tabulator-range-row-header\";\n\t\t\t\t\n\t\t\t\tif(this.rowHeader.definition.headerSort){\n\t\t\t\t\tconsole.warn(\"Using column headerSort with selectableRangeRows option may result in unpredictable behavior\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.rowHeader.definition.editor){\n\t\t\t\t\tconsole.warn(\"Using column editor with selectableRangeRows option may result in unpredictable behavior\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Table Functions ///////\n\t///////////////////////////////////\n\t\n\tgetRanges(){\n\t\treturn this.ranges.map((range) => range.getComponent());\n\t}\n\t\n\tgetRangesData() {\n\t\treturn this.ranges.map((range) => range.getData());\n\t}\n\t\n\taddRangeFromComponent(start, end){\n\t\tstart = start ? start._cell : null;\n\t\tend = end ? end._cell : null;\n\t\t\n\t\treturn this.addRange(start, end);\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Component Functions ///////\n\t///////////////////////////////////\n\t\n\tcellGetRanges(cell){\n\t\tvar ranges = [];\n\t\t\n\t\tif (cell.column === this.rowHeader) {\n\t\t\tranges = this.ranges.filter((range) => range.occupiesRow(cell.row));\n\t\t} else {\n\t\t\tranges = this.ranges.filter((range) => range.occupies(cell));\n\t\t}\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\trowGetRanges(row){\n\t\tvar ranges = this.ranges.filter((range) => range.occupiesRow(row));\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\tcolGetRanges(col){\n\t\tvar ranges = this.ranges.filter((range) => range.occupiesColumn(col));\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Event Handlers /////////\n\t///////////////////////////////////\n\t\n\t_handleMouseUp(e){\n\t\tthis.mousedown = false;\n\t\tdocument.removeEventListener(\"mouseup\", this.mouseUpEvent);\n\t}\n\t\n\t_handleKeyDown(e) {\n\t\tif (!this.blockKeydown && (!this.table.modules.edit || (this.table.modules.edit && !this.table.modules.edit.currentCell))) {\n\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t// is editing a cell?\n\t\t\t\tif (this.table.modules.edit && this.table.modules.edit.currentCell) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.table.modules.edit.editCell(this.getActiveCell());\n\t\t\t\t\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\tif ((e.key === \"Backspace\" || e.key === \"Delete\") && this.options(\"selectableRangeClearCells\")) {\n\t\t\t\tif(this.activeRange){\n\t\t\t\t\tthis.activeRange.clearValues();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeFocus(cell){\n\t\tvar range;\n\t\t\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\t\n\trestoreFocus(element){\n\t\tthis.table.rowManager.element.focus();\n\t\t\n\t\treturn true;\n\t}\n\t\n\t///////////////////////////////////\n\t////// Column Functionality ///////\n\t///////////////////////////////////\n\t\n\thandleColumnResized(column) {\n\t\tvar selected;\n\t\t\n\t\tif (this.selecting !== \"column\" && this.selecting !== \"all\") {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tselected = this.ranges.some((range) => range.occupiesColumn(column));\n\t\t\n\t\tif (!selected) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.ranges.forEach((range) => {\n\t\t\tvar selectedColumns = range.getColumns(true);\n\t\t\t\n\t\t\tselectedColumns.forEach((selectedColumn) => {\n\t\t\t\tif (selectedColumn !== column) {\n\t\t\t\t\tselectedColumn.setWidth(column.width);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t\n\thandleColumnMouseDown(event, column) {\n\t\tif (event.button === 2 && (this.selecting === \"column\" || this.selecting === \"all\") && this.activeRange.occupiesColumn(column)) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.mousedown = true;\n\t\t\n\t\tdocument.addEventListener(\"mouseup\", this.mouseUpEvent);\n\t\t\n\t\tthis.newSelection(event, column);\n\t}\n\t\n\thandleColumnMouseMove(e, column) {\n\t\tif (column === this.rowHeader || !this.mousedown || this.selecting === 'all') {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRange.setBounds(false, column, true);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Cell Functionality ///////\n\t///////////////////////////////////\n\t\n\trenderCell(cell) {\n\t\tvar el = cell.getElement(),\n\t\trangeIdx = this.ranges.findIndex((range) => range.occupies(cell));\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", rangeIdx !== -1);\n\t\tel.classList.toggle(\"tabulator-range-only-cell-selected\", this.ranges.length === 1 && this.ranges[0].atTopLeft(cell) &&\tthis.ranges[0].atBottomRight(cell));\n\t\t\n\t\tel.dataset.range = rangeIdx;\n\t}\n\t\n\thandleCellMouseDown(event, cell) {\n\t\tif (event.button === 2 && (this.activeRange.occupies(cell) || ((this.selecting === \"row\" || this.selecting === \"all\") && this.activeRange.occupiesRow(cell.row)))) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.mousedown = true;\n\t\t\n\t\tdocument.addEventListener(\"mouseup\", this.mouseUpEvent);\n\t\t\n\t\tthis.newSelection(event, cell);\n\t}\n\t\n\thandleCellMouseMove(e, cell) {\n\t\tif (!this.mousedown || this.selecting === \"all\") {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRange.setBounds(false, cell, true);\n\t}\n\t\n\thandleCellClick(e, cell){\n\t\tthis.initializeFocus(cell);\n\t}\n\t\n\thandleEditingCell(cell) {\n\t\tif(this.activeRange){\n\t\t\tthis.activeRange.setBounds(cell);\n\t\t}\n\t}\n\t\n\tfinishEditingCell() {\n\t\tthis.blockKeydown = true;\n\t\tthis.table.rowManager.element.focus();\n\n\t\tsetTimeout(() => {\n\t\t\tthis.blockKeydown = false;\n\t\t}, 10);\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Navigation ///////\n\t///////////////////////////////////\n\t\n\tkeyNavigate(dir, e){\n\t\tif(this.navigate(false, false, dir)){\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\tkeyNavigateRange(e, dir, jump, expand){\n\t\tif(this.navigate(jump, expand, dir)){\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\tnavigate(jump, expand, dir) {\n\t\tvar moved = false,\n\t\trange, rangeEdge, nextRow, nextCol, row, column;\n\t\t\n\t\t// Don't navigate while editing\n\t\tif (this.table.modules.edit && this.table.modules.edit.currentCell) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// If there are more than 1 range, use the active range and destroy the others\n\t\tif (this.ranges.length > 1) {\n\t\t\tthis.ranges = this.ranges.filter((range) => {\n\t\t\t\tif (range === this.activeRange) {\n\t\t\t\t\trange.setEnd(range.start.row, range.start.col);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\trange.destroy();\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t\t\n\t\trange = this.activeRange;\n\t\t\n\t\trangeEdge = expand ? range.end : range.start;\n\t\tnextRow = rangeEdge.row;\n\t\tnextCol = rangeEdge.col;\n\t\t\n\t\tif(jump){\n\t\t\tswitch(dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnextCol = this.findJumpCellLeft(range.start.row, rangeEdge.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnextCol = this.findJumpCellRight(range.start.row, rangeEdge.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnextRow = this.findJumpCellUp(rangeEdge.row, range.start.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnextRow = this.findJumpCellDown(rangeEdge.row, range.start.col);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}else{\n\t\t\tif(expand){\n\t\t\t\tif ((this.selecting === 'row' && (dir === 'left' || dir === 'right')) || (this.selecting === 'column' && (dir === 'up' || dir === 'down'))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tswitch(dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnextCol = Math.max(nextCol - 1, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnextCol = Math.min(nextCol + 1, this.getTableColumns().length - 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnextRow = Math.max(nextRow - 1, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnextRow = Math.min(nextRow + 1, this.getTableRows().length - 1);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tmoved = nextCol !== rangeEdge.col || nextRow !== rangeEdge.row;\n\t\t\n\t\tif(!expand){\n\t\t\trange.setStart(nextRow, nextCol);\n\t\t}\n\t\t\n\t\trange.setEnd(nextRow, nextCol);\n\t\t\n\t\tif(!expand){\n\t\t\tthis.selecting = \"cell\";\n\t\t}\n\t\t\n\t\tif (moved) {\n\t\t\trow = this.getRowByRangePos(range.end.row);\n\t\t\tcolumn = this.getColumnByRangePos(range.end.col);\n\t\t\t\n\t\t\tif ((dir === 'left' || dir === 'right') && column.getElement().parentNode === null) {\n\t\t\t\tcolumn.getComponent().scrollTo(undefined, false);\n\t\t\t} else if ((dir === 'up' || dir === 'down') && row.getElement().parentNode === null) {\n\t\t\t\trow.getComponent().scrollTo(undefined, false);\n\t\t\t} else {\n\t\t\t\t// Use faster autoScroll when the elements are on the DOM\n\t\t\t\tthis.autoScroll(range, row.getElement(), column.getElement());\n\t\t\t}\n\t\t\t\n\t\t\tthis.layoutElement();\n\t\t\t\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\trangeRemoved(removed){\n\t\tthis.ranges = this.ranges.filter((range) => range !== removed);\n\t\t\n\t\tif(this.activeRange === removed){\n\t\t\tif(this.ranges.length){\n\t\t\t\tthis.activeRange = this.ranges[this.ranges.length - 1];\n\t\t\t}else{\n\t\t\t\tthis.addRange();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.layoutElement();\n\t}\n\t\n\tfindJumpCell(cells, reverse, emptyStart, emptySide){\n\t\tvar nextCell;\n\t\t\n\t\tif(reverse){\n\t\t\tcells = cells.reverse();\n\t\t}\n\t\t\n\t\tfor(let currentCell of cells){\n\t\t\tlet currentValue = currentCell.getValue();\n\t\t\t\n\t\t\tif(emptyStart){\n\t\t\t\tnextCell = currentCell;\n\t\t\t\tif(currentValue){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(emptySide){\n\t\t\t\t\tnextCell = currentCell;\n\t\t\t\t\t\n\t\t\t\t\tif(currentValue){\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(currentValue){\n\t\t\t\t\t\tnextCell = currentCell;\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\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindJumpCellLeft(rowPos, colPos){\n\t\tvar row = this.getRowByRangePos(rowPos),\n\t\tcells = row.cells.filter((cell) => cell.column.visible),\n\t\tisStartingCellEmpty = !cells[colPos].getValue(),\n\t\tisLeftOfStartingCellEmpty = cells[colPos] ? !cells[colPos].getValue() : false,\n\t\tjumpCol = colPos,\n\t\ttargetCells = this.rowHeader ? cells.slice(1, colPos) : cells.slice(0, colPos),\n\t\tnextCell = this.findJumpCell(targetCells, true, isStartingCellEmpty, isLeftOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpCol = nextCell.column.getPosition() - 1;\n\t\t}\n\t\t\n\t\treturn jumpCol;\n\t}\n\t\n\tfindJumpCellRight(rowPos, colPos){\n\t\tvar row = this.getRowByRangePos(rowPos),\n\t\tcells = row.cells.filter((cell) => cell.column.visible),\n\t\tisStartingCellEmpty = !cells[colPos].getValue(),\n\t\tisRightOfStartingCellEmpty = cells[colPos + 1] ? !cells[colPos + 1].getValue() : false,\n\t\tjumpCol = colPos,\n\t\tnextCell = this.findJumpCell(cells.slice(colPos + 1, cells.length), false, isStartingCellEmpty, isRightOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpCol = nextCell.column.getPosition() - 1;\n\t\t}\n\t\t\n\t\treturn jumpCol;\n\t}\n\t\n\tfindJumpCellUp(rowPos, colPos) {\n\t\tvar column = this.getColumnByRangePos(colPos),\n\t\tcells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)),\n\t\tisStartingCellEmpty = !cells[rowPos].getValue(),\n\t\tisTopOfStartingCellEmpty = cells[rowPos - 1] ? !cells[rowPos - 1].getValue() : false,\n\t\tjumpRow = rowPos,\n\t\tnextCell = this.findJumpCell(cells.slice(0, jumpRow), true, isStartingCellEmpty, isTopOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpRow = nextCell.row.position - 1;\n\t\t}\n\t\t\n\t\treturn jumpRow;\n\t}\n\t\n\tfindJumpCellDown(rowPos, colPos) {\n\t\tvar column = this.getColumnByRangePos(colPos),\n\t\tcells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)),\n\t\tisStartingCellEmpty = !cells[rowPos].getValue(),\n\t\tisBottomOfStartingCellEmpty = cells[rowPos + 1] ? !cells[rowPos + 1].getValue() : false,\n\t\tjumpRow = rowPos,\n\t\tnextCell = this.findJumpCell(cells.slice(jumpRow + 1, cells.length), false, isStartingCellEmpty, isBottomOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpRow = nextCell.row.position - 1;\n\t\t}\n\t\t\n\t\treturn jumpRow;\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Selection ///////\n\t///////////////////////////////////\n\tnewSelection(event, element) {\n\t\tvar range;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(!this.columnSelection){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif (element === this.rowHeader) {\n\t\t\t\trange = this.resetRanges();\n\t\t\t\tthis.selecting = \"all\";\n\t\t\t\t\n\t\t\t\tvar topLeftCell, bottomRightCell = this.getCell(-1, -1);\n\n\t\t\t\tif(this.rowHeader){\n\t\t\t\t\ttopLeftCell = this.getCell(0, 1);\n\t\t\t\t}else{\n\t\t\t\t\ttopLeftCell = this.getCell(0, 0);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trange.setBounds(topLeftCell, bottomRightCell);\t\t\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tthis.selecting = \"column\";\n\t\t\t}\n\t\t} else if (element.column === this.rowHeader) {\n\t\t\tthis.selecting = \"row\";\n\t\t} else {\n\t\t\tthis.selecting = \"cell\";\n\t\t}\n\t\t\n\t\tif (event.shiftKey) {\n\t\t\tthis.activeRange.setBounds(false, element);\n\t\t} else if (event.ctrlKey) {\n\t\t\tthis.addRange().setBounds(element);\n\t\t} else {\n\t\t\tthis.resetRanges().setBounds(element);\n\t\t}\n\t}\n\t\n\tautoScroll(range, row, column) {\n\t\tvar tableHolder = this.table.rowManager.element,\n\t\trowHeader, rect, view, withinHorizontalView, withinVerticalView;\n\n\t\tif (typeof row === 'undefined') {\n\t\t\trow = this.getRowByRangePos(range.end.row).getElement();\n\t\t}\n\t\t\n\t\tif (typeof column === 'undefined') {\n\t\t\tcolumn = this.getColumnByRangePos(range.end.col).getElement();\n\t\t}\n\n\t\tif (this.rowHeader) {\n\t\t\trowHeader = this.rowHeader.getElement();\n\t\t}\n\t\t\n\t\trect = {\n\t\t\tleft: column.offsetLeft,\n\t\t\tright: column.offsetLeft + column.offsetWidth,\n\t\t\ttop: row.offsetTop,\n\t\t\tbottom: row.offsetTop + row.offsetHeight,\n\t\t};\n\t\t\n\t\tview = {\n\t\t\tleft: tableHolder.scrollLeft,\n\t\t\tright: Math.ceil(tableHolder.scrollLeft + tableHolder.clientWidth),\n\t\t\ttop: tableHolder.scrollTop,\n\t\t\tbottom:\ttableHolder.scrollTop +\ttableHolder.offsetHeight - this.table.rowManager.scrollbarWidth,\n\t\t};\n\n\t\tif (rowHeader) {\n\t\t\tview.left += rowHeader.offsetWidth;\n\t\t}\n\t\t\n\t\twithinHorizontalView = view.left < rect.left &&\trect.left < view.right && view.left < rect.right &&\trect.right < view.right;\n\t\t\n\t\twithinVerticalView = view.top < rect.top &&\trect.top < view.bottom && view.top < rect.bottom &&\trect.bottom < view.bottom;\n\t\t\n\t\tif (!withinHorizontalView) {\n\t\t\tif (rect.left < view.left) {\n\t\t\t\ttableHolder.scrollLeft = rect.left;\n\t\t\t\tif (rowHeader) {\n\t\t\t\t\ttableHolder.scrollLeft -= rowHeader.offsetWidth;\n\t\t\t\t}\n\t\t\t} else if (rect.right > view.right) {\n\t\t\t\ttableHolder.scrollLeft = rect.right - tableHolder.clientWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (!withinVerticalView) {\n\t\t\tif (rect.top < view.top) {\n\t\t\t\ttableHolder.scrollTop = rect.top;\n\t\t\t} else if (rect.bottom > view.bottom) {\n\t\t\t\ttableHolder.scrollTop = rect.bottom - tableHolder.clientHeight;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t/////// Layout ///////\n\t///////////////////////////////////\n\t\n\tlayoutChange(){\n\t\tthis.overlay.style.visibility = \"hidden\";\n\t\tclearTimeout(this.layoutChangeTimeout);\n\t\tthis.layoutChangeTimeout = setTimeout(this.layoutRanges.bind(this), 200);\n\t}\n\t\n\tredraw(force) {\n\t\tif (force) {\n\t\t\tthis.selecting = 'cell';\n\t\t\tthis.resetRanges();\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\t\n\tlayoutElement(visibleRows) {\n\t\tvar rows;\n\t\t\n\t\tif (visibleRows) {\n\t\t\trows = this.table.rowManager.getVisibleRows(true);\n\t\t} else {\n\t\t\trows = this.table.rowManager.getRows();\n\t\t}\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\") {\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\trow.cells.forEach((cell) => this.renderCell(cell));\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.getTableColumns().forEach((column) => {\n\t\t\tthis.layoutColumn(column);\n\t\t});\n\t\t\n\t\tthis.layoutRanges();\n\t}\n\t\n\tlayoutRow(row) {\n\t\tvar el = row.getElement(),\n\t\tselected = false,\n\t\toccupied = this.ranges.some((range) => range.occupiesRow(row));\n\t\t\n\t\tif (this.selecting === \"row\") {\n\t\t\tselected = occupied;\n\t\t} else if (this.selecting === \"all\") {\n\t\t\tselected = true;\n\t\t}\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", selected);\n\t\tel.classList.toggle(\"tabulator-range-highlight\", occupied);\n\t}\n\t\n\tlayoutColumn(column) {\n\t\tvar el = column.getElement(),\t\t\n\t\tselected = false,\n\t\toccupied = this.ranges.some((range) => range.occupiesColumn(column));\n\t\t\n\t\tif (this.selecting === \"column\") {\n\t\t\tselected = occupied;\n\t\t} else if (this.selecting === \"all\") {\n\t\t\tselected = true;\n\t\t}\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", selected);\n\t\tel.classList.toggle(\"tabulator-range-highlight\", occupied);\n\t}\n\t\n\tlayoutRanges() {\n\t\tvar activeCell;\n\t\t\n\t\tif (!this.table.initialized) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tactiveCell = this.getActiveCell();\n\t\t\n\t\tif (!activeCell) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRangeCellElement.style.left = activeCell.row.getElement().offsetLeft + activeCell.getElement().offsetLeft + \"px\";\n\t\tthis.activeRangeCellElement.style.top =\tactiveCell.row.getElement().offsetTop + \"px\";\n\t\tthis.activeRangeCellElement.style.width = activeCell.getElement().offsetLeft + activeCell.getElement().offsetWidth - activeCell.getElement().offsetLeft + \"px\";\n\t\tthis.activeRangeCellElement.style.height = activeCell.row.getElement().offsetTop + activeCell.row.getElement().offsetHeight - activeCell.row.getElement().offsetTop + \"px\";\n\t\t\n\t\tthis.ranges.forEach((range) => range.layout());\n\t\t\n\t\tthis.overlay.style.visibility = \"visible\";\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t/////// Helper Functions ///////\n\t///////////////////////////////////\t\n\t\n\tgetCell(rowIdx, colIdx) {\n\t\tvar row;\n\t\t\n\t\tif (colIdx < 0) {\n\t\t\tcolIdx = this.getTableColumns().length + colIdx;\n\t\t\tif (colIdx < 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (rowIdx < 0) {\n\t\t\trowIdx = this.getTableRows().length + rowIdx;\n\t\t}\n\t\t\n\t\trow = this.table.rowManager.getRowFromPosition(rowIdx + 1);\n\t\t\n\t\treturn row ? row.getCells(false, true).filter((cell) => cell.column.visible)[colIdx] : null;\n\t}\n\t\n\t\n\tgetActiveCell() {\n\t\treturn this.getCell(this.activeRange.start.row, this.activeRange.start.col);\n\t}\n\t\n\tgetRowByRangePos(pos) {\n\t\treturn this.getTableRows()[pos];\n\t}\n\t\n\tgetColumnByRangePos(pos) {\n\t\treturn this.getTableColumns()[pos];\n\t}\n\t\n\tgetTableRows() {\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\t\n\tgetTableColumns() {\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex();\n\t}\n\t\n\taddRange(start, end) {\n\t\tvar range;\n\t\t\n\t\tif(this.maxRanges !== true && this.ranges.length >= this.maxRanges){\n\t\t\tthis.ranges.shift().destroy();\n\t\t}\n\t\t\n\t\trange = new Range(this.table, this, start, end);\n\t\t\n\t\tthis.activeRange = range;\n\t\tthis.ranges.push(range);\n\t\tthis.rangeContainer.appendChild(range.element);\n\t\t\n\t\treturn range;\n\t}\n\t\n\tresetRanges() {\n\t\tvar range, cell;\n\t\t\n\t\tthis.ranges.forEach((range) => range.destroy());\n\t\tthis.ranges = [];\n\t\t\n\t\trange = this.addRange();\n\t\t\n\t\tif(this.table.rowManager.activeRows.length){\n\t\t\tcell = this.table.rowManager.activeRows[0].cells[this.rowHeader ? 1 : 0];\n\n\t\t\tif(cell){\n\t\t\t\trange.setBounds(cell);\n\t\t\t\tthis.initializeFocus(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn range;\n\t}\n\t\n\ttableDestroyed(){\n\t\tdocument.removeEventListener(\"mouseup\", this.mouseUpEvent);\n\t\tthis.table.rowManager.element.removeEventListener(\"keydown\", this.keyDownEvent);\n\t}\n\t\n\tselectedRows(component) {\n\t\treturn component ? this.activeRange.getRows().map((row) => row.getComponent()) : this.activeRange.getRows();\n\t}\n\t\n\tselectedColumns(component) {\n\t\treturn component ? this.activeRange.getColumns().map((col) => col.getComponent()) : this.activeRange.getColumns();\n\t}\n}\n\nSelectRange.moduleName = \"selectRange\";\n\nexport default SelectRange;\n","import Module from '../../core/Module.js';\nimport Cell from '../../core/cell/Cell.js';\n\nclass Tooltip extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.tooltipSubscriber = null,\n\t\tthis.headerSubscriber = null,\n\t\t\n\t\tthis.timeout = null;\n\t\tthis.popupInstance = null;\n\t\t\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \n\t\t\n\t\tthis.registerColumnOption(\"tooltip\");\n\t\tthis.registerColumnOption(\"headerTooltip\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheckMsg(\"tooltipGenerationMode\", \"This option is no longer needed as tooltips are always generated on hover now\");\n\t}\t\n\t\n\tinitializeColumn(column){\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\n\t\t\tthis.headerSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\n\t\t}\n\t\t\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\n\t\t\tthis.tooltipSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\n\t\t}\n\t}\n\t\n\tmousemoveCheck(action, e, component){\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\n\t\t\n\t\tif(tooltip){\n\t\t\tthis.clearPopup();\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\n\t\t}\n\t}\n\n\tmouseoutCheck(action, e, component){\n\t\tif(!this.popupInstance){\n\t\t\tthis.clearPopup();\n\t\t}\n\t}\n\t\n\tclearPopup(action, e, component){\n\t\tclearTimeout(this.timeout);\n\t\tthis.timeout = null;\n\t\t\n\t\tif(this.popupInstance){\n\t\t\tthis.popupInstance.hide();\n\t\t}\n\t}\n\t\n\tloadTooltip(e, component, tooltip){\n\t\tvar contentsEl, renderedCallback, coords;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(typeof tooltip === \"function\"){\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\n\t\t}\n\t\t\n\t\tif(tooltip instanceof HTMLElement){\n\t\t\tcontentsEl = tooltip;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\t\n\t\t\tif(tooltip === true){\n\t\t\t\tif(component instanceof Cell){\n\t\t\t\t\ttooltip = component.value;\n\t\t\t\t}else{\n\t\t\t\t\tif(component.definition.field){\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\ttooltip = component.definition.title;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcontentsEl.innerHTML = tooltip;\n\t\t}\n\t\t\n\t\tif(tooltip || tooltip === 0 || tooltip === false){\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\n\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault());\n\t\t\t\n\t\t\tthis.popupInstance = this.popup(contentsEl);\n\t\t\t\n\t\t\tif(typeof renderedCallback === \"function\"){\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\n\t\t\t}\n\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\n\t\t\t\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\n\t\t\t\tthis.popupInstance = null;\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nTooltip.moduleName = \"tooltip\";\n\nexport default Tooltip;\n","export default {\n\t//is integer\n\tinteger: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function(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(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 alphanumeric\n\talphanumeric: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar reg = new RegExp(/^[a-z0-9]+$/i);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//maximum value\n\tmax: function(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(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(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(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\n\t//minimum string length\n\tminLength: function(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(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(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typeof parameters == \"string\"){\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function(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(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(cell, value, parameters){\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultValidators from './defaults/validators.js';\n\nclass Validate extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.invalidCells = [];\n\t\t\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\n\t\t\n\t\tthis.registerColumnOption(\"validator\");\n\t\t\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\n\t}\n\t\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Event Handling //////////\n\t///////////////////////////////////\n\t\n\teditValidate(cell, value, previousValue){\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\n\t\t\n\t\t// allow time for editor to make render changes then style cell\n\t\tif(valid !== true){\n\t\t\tsetTimeout(() => {\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn valid;\n\t}\n\t\n\teditorClear(cell, cancelled){\n\t\tif(cancelled){\n\t\t\tif(cell.column.modules.validate){\n\t\t\t\tthis.cellValidate(cell);\n\t\t\t}\n\t\t}\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t}\n\t\n\teditedClear(cell){\n\t\tif(cell.modules.validate){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Cell Functions /////////\n\t///////////////////////////////////\n\t\n\tcellIsValid(cell){\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\n\t}\n\t\n\tcellValidate(cell){\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Column Functions ////////\n\t///////////////////////////////////\n\t\n\tcolumnValidate(column){\n\t\tvar invalid = [];\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Row Functions //////////\n\t///////////////////////////////////\n\t\n\trowValidate(row){\n\t\tvar invalid = [];\n\t\t\n\t\trow.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\tuserClearCellValidation(cells){\n\t\tif(!cells){\n\t\t\tcells = this.getInvalidCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.clearValidation(cell._getSelf());\n\t\t});\n\t}\n\t\n\tuserValidate(cells){\n\t\tvar output = [];\n\t\t\n\t\t//clear row data\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trow = row.getComponent();\n\t\t\t\n\t\t\tvar valid = row.validate();\n\t\t\t\n\t\t\tif(valid !== true){\n\t\t\t\toutput = output.concat(valid);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output.length ? output : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.validator !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//validate\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = [],\n\t\tvalidator;\n\t\t\n\t\tif(column.definition.validator){\n\t\t\t\n\t\t\tif(Array.isArray(column.definition.validator)){\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\t\t\t\t\t\n\t\t\t\t\tif(validator){\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\t\t\t\t\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\t\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t}\n\t\n\t_extractValidator(value){\n\t\tvar type, params, pos;\n\t\t\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tpos = value.indexOf(':');\n\t\t\t\n\t\t\t\tif(pos > -1){\n\t\t\t\t\ttype = value.substring(0,pos);\n\t\t\t\t\tparams = value.substring(pos+1);\n\t\t\t\t}else{\n\t\t\t\t\ttype = value;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t}\n\t}\n\t\n\t_buildValidator(type, params){\n\t\t\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\n\t\t\n\t\tif(!func){\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn {\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc:func,\n\t\t\t\tparams:params,\n\t\t\t};\n\t\t}\n\t}\n\t\n\tvalidate(validators, cell, value){\n\t\tvar self = this,\n\t\tfailedValidators = [],\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\n\t\tif(validators){\n\t\t\tvalidators.forEach((item) => {\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\n\t\t\t\t\tfailedValidators.push({\n\t\t\t\t\t\ttype:item.type,\n\t\t\t\t\t\tparameters:item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(!cell.modules.validate){\n\t\t\tcell.modules.validate = {};\n\t\t}\n\t\t\n\t\tif(!failedValidators.length){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}else{\n\t\t\tcell.modules.validate.invalid = failedValidators;\n\t\t\t\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t}\n\t\t\t\n\t\t\tif(invalidIndex == -1){\n\t\t\t\tthis.invalidCells.push(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn failedValidators.length ? failedValidators : true;\n\t}\n\t\n\tgetInvalidCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.invalidCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearValidation(cell){\n\t\tvar invalidIndex;\n\t\t\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\n\t\t\t\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\t\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nValidate.moduleName = \"validate\";\n\n//load defaults\nValidate.validators = defaultValidators;\n\nexport default Validate;\n","//tabulator with all modules installed\nimport {default as Tabulator} from './Tabulator.js';\nimport * as modules from '../core/modules/optional.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nclass TabulatorFull extends Tabulator {}\n\n//bind modules and static functionality\nnew ModuleBinder(TabulatorFull, modules);\n\nexport default TabulatorFull;\n"],"names":["CoreFeature","constructor","table","this","reloadData","data","silent","columnsChanged","dataLoader","load","undefined","langText","modules","localize","getText","arguments","langBind","bind","langLocale","getLocale","commsConnections","comms","getConnections","commsSend","send","layoutMode","layout","getMode","layoutRefresh","force","subscribe","eventBus","unsubscribe","subscribed","key","subscriptionChange","dispatch","chain","confirm","dispatchExternal","externalEvents","subscribedExternal","subscriptionChangeExternal","options","setOption","value","deprecationCheck","oldOption","newOption","convert","deprecationAdvisor","check","deprecationCheckMsg","msg","checkMsg","deprecationMsg","module","ColumnComponent","column","_column","type","Proxy","get","target","name","receiver","componentFunctionBinder","handle","getElement","getDefinition","getField","getTitleDownload","getCells","cells","forEach","cell","push","getComponent","isVisible","visible","show","isGroup","columns","hide","toggle","delete","getSubColumns","output","length","getParentColumn","parent","Column","_getSelf","scrollTo","position","ifVisible","columnManager","scrollToColumn","getTable","move","to","after","toColumn","findColumn","moveColumn","console","warn","getNextColumn","nextCol","nextColumn","getPrevColumn","prevCol","prevColumn","updateDefinition","updates","getWidth","setWidth","width","result","reinitializeWidth","rerenderColumns","title","field","hozAlign","vertAlign","minWidth","maxWidth","maxInitialWidth","cssClass","variableHeight","headerVertical","headerHozAlign","headerWordWrap","editableTitle","CellComponent","_cell","getValue","getOldValue","getInitialValue","initialValue","getRow","row","getData","transform","getType","getColumn","setValue","mutate","restoreOldValue","setValueActual","restoreInitialValue","checkHeight","Cell","super","element","oldValue","height","component","loaded","build","generateElement","_configureCell","getFieldValue","document","createElement","className","setAttribute","style","textAlign","display","alignItems","top","bottom","middle","justifyContent","left","right","center","definition","split","classList","add","_generateContents","val","innerHTML","Node","firstChild","removeChild","appendChild","cellRendered","containerOnly","layoutElement","setValueProcessData","cellEdited","call","rowManager","changed","setFieldValue","widthStyled","clearWidth","offsetWidth","setMinWidth","minWidthStyled","setMaxWidth","maxWidthStyled","reinitializeHeight","clearHeight","setHeight","heightStyled","getHeight","offsetHeight","redrawBlock","parentNode","deleteCell","calcs","getIndex","getCellIndex","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","widthFixed","i","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","el","columnHeaderVertAlign","defaults","columnDefaults","optionsList","generate","defaultOptionList","checkDefinition","Object","keys","indexOf","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","parseInt","_buildColumnHeaderTitle","addEventListener","e","stopPropagation","focus","text","_formatColumnHeaderTitle","contents","dataObj","structure","columnRendered","verticalAlign","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","minHeight","clearVerticalAlign","paddingTop","getFirstColumn","getLastColumn","getColumns","traverse","concat","getTopColumn","updateBranches","colDefs","responsiveToggle","verticalAlignHeaders","matchChildWidths","childWidth","child","index","splice","setWidthActual","isNaN","Math","floor","clientWidth","max","min","checkCellHeights","rows","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","getLeftOffset","offset","offsetLeft","ceil","getBoundingClientRect","Promise","resolve","reject","cellCount","deregisterColumn","generateCell","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","fitToData","setTo","error","assign","addColumn","then","getPosition","getVisibleColumnsByIndex","defaultOptions","Helpers","static","box","window","pageYOffset","documentElement","clientTop","pageXOffset","clientLeft","separator","obj","clone","list","objectProto","__proto__","arrayProto","Array","isArray","match","copy","subject","findIndex","item","unshift","deepClone","OptionsList","msgType","registeredDefaults","register","option","userOptions","debugInvalidOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","tableElement","verticalFillMode","initialize","clearRows","clearColumns","reinitializeColumnWidths","renderRows","renderColumns","rerenderRows","callback","update","blockRedraw","renderRowCells","rerenderRowCells","scrollColumns","dir","scrollRows","resize","scrollToRow","scrollToRowNearestTop","visibleRows","includingBuffer","getDisplayRows","styleRow","rowEl","remove","clear","render","rerender","scrollToRowPosition","rowIndex","scrollToRowIfVisible","elVisible","elOffset","scrollHeight","scrollTop","offsetTop","BasicHorizontal","inFragment","rowFrag","createDocumentFragment","VirtualDomHorizontal","leftCol","rightCol","scrollLeft","vDomScrollPosLeft","vDomScrollPosRight","vDomPadLeft","vDomPadRight","fitDataColAvg","windowBuffer","initialized","isFitData","compatibilityCheck","layoutCheck","vertScrollListen","startsWith","clearVisRowCache","dataChange","scroll","calcWindowBuffer","buffer","columnsByIndex","old","cols","colPos","config","frozen","leftPos","rightPos","fitDataCheck","vdomHoz","paddingLeft","paddingRight","reinitChanged","reinitializeRows","initializeRow","reinitializeRow","deinitialize","change","generateCells","colEnd","col","getVisibleRows","otherRows","getRows","filter","includes","diff","abs","addColRight","removeColLeft","addColLeft","removeColRight","colPositionAdjust","start","end","changes","working","getCell","insertBefore","nextSibling","fitDataColActualWidthCheck","ex","message","newWidth","widthDiff","frozenColumns","leftColumns","appendCell","rightColumns","ColumnManager","blockHozScrollEvent","headersElement","contentsElement","columnsByField","defaultColumnOptions","redrawBlockUpdate","renderer","initializeRenderer","createHeadersElement","createHeaderContentsElement","createHeaderElement","initializeScrollWheelWatcher","scrollHorizontal","padVerticalScrollbar","rtl","marginLeft","marginRight","renderClass","renderers","virtual","RendererVirtualDomHorizontal","basic","RendererBasicHorizontal","renderHorizontal","headerVisible","getContentsElement","deltaX","generateColumnsFromRowData","sorter","definitions","autoColumnsDefinitions","find","setColumns","_addColumn","_reIndexColumns","redraw","before","nextToColumn","colEl","topColumn","parentIndex","nextEl","adjustTableSize","HTMLElement","getColumnByField","getColumnsByFieldRoot","root","matches","getFirstVisibleColumn","getRealColumns","getDefinitions","active","getDefinitionTree","getComponents","structured","from","moveColumnActual","reinitialize","_moveColumnInArray","updateRows","toIndex","fromIndex","adjust","scrollToColumnPosition","scrollToColumnIfVisible","scrollWidth","getFlexBaseWidth","totalWidth","fixedWidth","colWidth","restoreRedraw","resetScroll","footerManager","RowComponent","_row","watchPosition","moveToRow","updateData","normalizeHeight","reformat","getNextRow","nextRow","getPrevRow","prevRow","Row","manualHeight","outerHeight","positionWatchers","created","setData","create","detachElement","deleteCells","rowFormatter","rendered","deinitializeHeight","children","maxHeight","rowHeight","resizableRows","updatedData","newRowData","tempData","JSON","parse","attrname","findCell","nextDisplayRow","prevDisplayRow","toRow","findRow","moveRowActual","refreshActiveData","deleteActual","detachModules","deleteRow","wipe","isDisplayed","setPosition","getGroup","group","BasicVertical","visibility","onlyGroupHeaders","tableFrag","tableEmpty","rowTop","VirtualDomVertical","vDomRowHeight","vDomTop","vDomBottom","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topRow","topOffset","topDiff","bottomDiff","margin","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","renderVerticalBuffer","topEdge","bottomEdge","topFound","bottomRow","slice","forceMove","rowFragment","holder","topPad","rowsHeight","heightOccupied","topPadHeight","rowsCount","renderedRows","totalRowsRendered","rowsToRender","fixedHeight","containerHeight","avgRowHeight","resized","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","placeholder","placeholderContents","firstRender","renderMode","activeRowsPipeline","activeRows","activeRowsCount","displayRows","displayRowsCount","redrawBlockRestoreConfig","redrawBlockRenderInPosition","dataPipeline","displayPipeline","scrollbarWidth","initializePlaceholder","getTableElement","leftDir","topDir","_positionPlaceholder","getRowFromDataObject","getRowFromPosition","renderInPosition","pagination","_setDataActual","reRenderInPosition","autoColumns","_wipeElements","destroy","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","regenerateRowPositions","addRow","pos","addRowActual","addRows","refreshDisplayOnly","findAddRowPos","reverse","_clearPlaceholder","addRowPos","chainResult","moveRow","moveRowInArray","clearData","getRowIndex","findRowIndex","getDisplayRowIndex","rowOnly","getDataCount","registerDataPipelineHandler","handler","priority","sort","a","b","registerDisplayPipelineHandler","skipStage","stage","cascadeOrder","destroyed","refreshPipelines","renderTable","layoutColumnsOnNewData","resetDisplayRows","setDisplayRows","viewable","scrollBarCheck","RendererVirtualDomVertical","RendererBasicVertical","renderVertical","getRenderMode","_clearTable","renderEmptyScroll","_showPlaceholder","checkPlaceholder","initialHeight","otherHeight","external","tableWidth","browser","event","createEvent","initEvent","dispatchEvent","Event","FooterManager","containerElement","createContainerElement","initializeElement","footerElement","querySelector","append","activate","prepend","deactivate","InteractionManager","abortClasses","previousTargets","listeners","componentMap","pseudoTrackers","subscriber","pseudoTracking","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","bindPseudoEvents","pseudoMouseEnter","pseudoMouseLeave","leaveList","linkedKeys","links","values","comp","subscriptionChanged","clearWatchers","added","updateEventListeners","track","removeEventListener","path","composedPath","targets","findTargets","bindComponents","triggerEvents","elTargets","targetMatches","previousTarget","closest","ComponentFunctionBinder","bindings","funcName","debugInvalidComponentFuncs","DataLoader","requestOrder","loading","params","replace","requestNo","alertLoader","mapParams","dataSendParams","response","objectInvert","dataReceiveParams","rowData","clearAlert","catch","alertError","setTimeout","dataLoaderErrorTimeout","finally","map","blockActiveLoad","alertManager","alert","dataLoaderLoading","dataLoaderError","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifySubscriptionChange","notifiers","args","shift","callResult","apply","log","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","confirmed","DeprecationAdvisor","_warnUser","TableRegistry","tables","query","results","querySelectorAll","matchElement","Tabulator","lookupTable","Popup","container","_lookupContainer","reversedX","childPopup","blurable","blurCallback","blurEventsBound","renderedCallback","hideable","blurEvent","escEvent","_escapeCheck","destroyBinding","tableDestroyed","popupContainer","_checkContainerIsParent","body","renderCallback","containerEventCoords","touch","MouseEvent","x","touches","pageX","y","pageY","parentOffset","elementPositionCoords","containerOffset","origin","parentEl","coords","_fitToScreen","hideOnBlur","keyCode","blockHide","restoreHide","Module","_handler","registerTableOption","registerColumnOption","registerTableFunction","func","initGuard","registerComponentFunction","registerDataHandler","registerDisplayHandler","lookupIndex","refreshData","footerAppend","footerPrepend","footerRemove","popup","menuEl","menuContainer","content","forced","responsiveLayout","modExists","fitData","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","colsWidth","gap","lastCol","responsive","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","nextColWidth","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Layout","mode","modes","initializeColumn","Number","dataChanged","moduleName","defaultModes","Localize","locale","lang","langList","langs","headerFilterPlaceholder","setHeaderFilterPlaceholder","installLang","setLocale","getLang","default","headerFilters","_setLangProp","desiredLocale","navigator","language","toLowerCase","prefix","traverseLang","trans","prop","_executeBindings","pathArray","_getLangElement","level","rootPath","binding","groups","items","page_size","page_title","first","first_title","last","last_title","prev","prev_title","next","next_title","all","counter","showing","of","pages","Comms","receive","selectors","connections","con","action","connection","tableComms","commsReceived","ModuleBinder","tabulator","bindStaticFunctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","registerModule","mod","registerModuleBinding","findTable","prototype","orderedStartMods","orderedEndMods","unOrderedMods","moduleCore","modulesCore","moduleInitOrder","modulesRegular","core","mods","Alert","_createAlertElement","msgElement","_createMsgElement","_typeClass","interactionMonitor","browserSlow","browserMobile","originalElement","initializeCoreSystems","_create","_clearObjectPointers","_mapDeprecatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","_clearSelection","getSelection","empty","removeAllRanges","selection","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","getComputedStyle","textDirection","direction","reactiveData","newElement","tagName","attributes","replaceChild","_detectBrowser","deregister","ua","userAgent","vendor","opera","test","stack","line","debugInitialization","Error","trim","replaceData","responses","addData","updateOrAddData","newRows","foundRows","updateOrAddRow","updateRow","fromRow","getRowPosition","getColumnDefinitions","showColumn","hideColumn","toggleColumn","deleteColumn","updateColumnDefinition","fromColumn","on","off","plugin","required","debugDeprecation","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","Accessor","allowedTypes","transformRow","accessor","charAt","toUpperCase","lookupAccessor","accessors","rowComponent","colComponent","generateParamsList","serializeParams","encoded","encodeURIComponent","join","url","method","json","headers","stringify","form","FormData","Ajax","urlGenerator","loaderPromise","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","getUrl","requestDataCheck","requestParams","requestData","ajaxParams","previousData","generateConfig","sendRequest","defaultConfig","ajaxRequesting","ajaxResponse","contentType","ajaxContentType","Accept","location","credentials","fetch","ok","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","export","generateExportList","clipboardCopyConfig","clipboardCopyStyled","generateHTMLTable","generatePlainContent","clipboardData","originalEvent","reset","paste","setPasteParser","clipboardPasteParser","setPasteAction","clipboardPasteAction","getKey","range","internal","sel","textRange","createRange","selectNodeContents","toString","addRange","createTextRange","moveToElementText","select","execCommand","pasteActions","parser","pasteParsers","checkPasteOrigin","getPasteData","mutateData","mutator","valid","insert","bounds","startCell","startRow","rowWidth","dataLength","selectRange","activeRange","singleCell","getBounds","headerFindSuccess","columnMap","startCol","itemLength","CalcComponent","avg","calcParams","precision","reduce","sum","toFixed","parseFloat","String","count","unique","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","botRow","topInitialized","botInitialized","recalcAfterBlock","cellValueChanged","initializeColumnCheck","rowsUpdated","recalcActiveRows","recalcActiveRowsRefresh","tableRedraw","adjustForScrollbar","resizeHolderWidth","getResults","userRecalc","recalc","blockCheck","groupBy","recalcRowGroup","dataTreeStartExpanded","dataTree","recalcAll","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","removeCalcs","reinitializeCalcs","fragment","rowsToData","generateRow","recalcGroup","groupRows","getRowGroup","getChildGroups","generateRowData","generateTopRow","generateBottomRow","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","disable","enable","format","formatter","getFormatter","paramKey","hasTopCalcs","hasBottomCalcs","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","isRowExpanded","dummyEl","dataTreeChildField","dataTreeChildIndent","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","layoutRow","rowDelete","rowDataChanged","columnMoving","initializeElementField","tableRedrawing","reinitializeRowChildren","firstCol","dataTreeElementColumn","getTreeChildren","redrawNeeded","childArray","controlEl","generateControlElement","cloneNode","getPropertyValue","oldControl","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","sub","childData","childRow","getTreeParentRoot","childIndex","findChildIndex","recurse","getChildField","csv","setFileContents","delimiter","fileContents","depth","bom","jsonLines","pdf","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","parseRow","styles","colSpan","rowSpan","orientation","unit","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","xlsx","sheetName","workbook","XLSX","utils","book_new","tableFeatures","compression","compress","writeOptions","bookType","bookSST","generateSheet","merges","worksheet","s","c","r","j","Date","sheet_add_aoa","encode_range","SheetNames","Sheets","sheetOnly","sheets","sheet","intercept","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","Download","mimeType","Blob","deprecatedOptionsCheck","download","downloadToTab","filename","interceptCallback","downloadFunc","downloaders","mime","triggerDownload","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","blob","downloadEncoder","URL","createObjectURL","msSaveOrOpenBlob","click","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","ctrlKey","metaKey","maskAutoFill","defaultDownloaders","Edit","editor","onRendered","success","cancel","editorParams","edit","_initializeParams","displayItems","currentItems","focusedItem","input","_createInputElement","listEl","_createListElement","initialValues","isFilter","filterTimeout","filtered","typing","listIteration","lastAction","filterTerm","actions","_deprecatedOptionsCheck","_initializeValue","_onRendered","listItemFormatter","sortValuesList","searchFunc","searchingPlaceholder","defaultValue","multiselect","headerFilterInitialListGen","cellEl","clickStop","preventScroll","_preventPopupBlur","_preventBlur","_inputKeyDown","_setListWidth","attribs","elementAttributes","clearable","padding","boxSizing","autocomplete","cursor","caretColor","getAttribute","_bindInputEvents","valueCheck","valueKeys","verticalNavigation","placeholderLoading","placeholderEmpty","filterDelay","emptyValue","freetext","filterFunc","filterRemote","allowEmpty","listOnEmpty","valuesLookup","valuesURL","_inputFocus","_inputClick","_inputBlur","_inputSearch","_inputKeyUp","rebuildOptionsList","_filter","clearTimeout","_filterList","_resolveValue","_clearChoices","_keyUp","_keyDown","_keySide","_keyEnter","_keyEsc","_keyHomeEnd","_keyTab","_keySelectLetter","_keyAutoCompLetter","_chooseItem","stopImmediatePropagation","_focusItem","_cancel","_scrollToValue","character","fromCharCode","label","scrollIntoView","behavior","block","inline","_generateOptions","_sortOptions","_buildList","_showList","isInteger","_filterOptions","iteration","_ajaxRequest","_uniqueColumnValues","valuesLookupField","_addPlaceholder","responseValues","_parseList","_clearList","term","urlBuilder","inputValues","entries","_parseListItem","_parseListGroup","itemParams","selected","original","_defaultSortFunction","_sortGroup","as","bs","a1","b1","L","rx","rd","emptyAlign","isFinite","_defaultFilterFunc","_filterItem","_buildItem","itemFormatter","_groupClick","_itemClick","_styleItem","startVis","blur","cellValue","search","onChange","selectContents","textarea","vertNav","whiteSpace","heightNow","shiftKey","shiftEnterSubmit","selectionStart","number","step","blurFunc","date","inputFormat","DT","DateTime","luxon","convertDate","isDateTime","fromISO","fromFormat","toFormat","luxDate","toISO","relatedTarget","rangeParent","explicitOriginalTarget","time","newDatetime","luxTime","datetime","luxDateTime","List","star","self","maxStars","getElementsByTagName","size","stars","starsHolder","createElementNS","starChange","buildStar","starHolder","nextStar","changeValue","overflow","textOverflow","progress","mouseDrag","mouseDragWidth","percent","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","trueValueSet","falseValueSet","marginTop","checkedValue","checked","trueValue","falseValue","indeterminate","currentCell","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellIsEdited","clearEdited","editCell","cellCancelEdit","bindEditor","updateCellClass","columnDeleteCheck","rowDeleteCheck","rowEditableCheck","cancelEdit","pasteBlocker","keybindingNavigateNext","newRow","edited","allowEdit","nextCell","findPrevEditableCell","findNextEditableCell","prevCell","editable","getCurrentCell","clearEditor","cellEditCancelled","button","contains","focusCellNoEvent","forceEdit","focusScrollAdjust","leftEdge","rightEdge","leftMargin","rightMargin","cellEditor","editFinished","cellClick","cellEditing","validationMode","editIndex","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","selectedColumns","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","generateTable","generateTableElement","selectRow","selectedRows","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","visProp","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","generateHeaderElement","generateGroupElement","generateCalcElement","generateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","classNames","generator","cellStyle","cellWrapper","formatCells","formatExportValue","align","htmlOutputConfig","props","lookup","color","fromStyle","filterVal","rowVal","filterParams","regex","RegExp","like","keywords","keyword","matchAll","starts","ends","endsWith","in","Filter","filterList","headerFilterColumns","prevHeaderFilterChangeCheck","tableInitialized","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","generatePlaceholder","filterMode","remoteFilterParams","initialFilter","setFilter","initialHeaderFilter","placeholderHeaderFilter","refreshFilter","addFilter","removeFilter","clearFilter","clearHeaderFilter","headerFilter","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","onRenderedCallback","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","hasChanged","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","defaultFilters","plaintext","formatterParams","emptyToSpace","sanitizeHTML","money","integer","decimal","rgx","floatVal","sign","decimalSym","thousandSym","thousand","negativeSign","symbolAfter","link","urlPrefix","labelField","labelTraverse","urlField","retrieveNestedData","image","src","urlSuffix","truthy","allowTruthy","tick","tickElement","cross","crossElement","outputFormat","invalid","invalidPlaceholder","isValid","timezone","setZone","datetimediff","suffix","humanize","now","toHuman","traffic","percentValue","colors","legend","legendColor","legendAlign","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","relativeToPage","page","getPageSize","getPage","innerText","responsiveCollapse","toggleList","isOpen","rowSelection","checkbox","selectableRowsRangeMode","toggleSelect","handleComplexRowClick","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","initializationMode","layoutCell","reinitializeColumns","blockLayout","unblockLayout","edge","frozenCheck","layoutCalcRows","layoutGroupCalcs","groupList","layoutColumnPosition","allCells","leftParents","marginValue","getColGroupParentElement","_calcSpace","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","frozenRows","initializeRows","rowType","isFrozen","styleRows","GroupComponent","groupManager","getParentGroup","toggleVisibility","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","elementContents","arrowElement","createElements","addBindings","createValueGroups","elementsOnly","arrow","movableRows","initializeGroupHeader","allowedValues","_createGroup","groupToggleElement","groupID","groupKey","headerGenerator","insertRow","conformRowData","updateGroupRows","scrollHeader","removeRow","groupValues","generateGroupHeaderContents","removeGroup","getHeadersAndRows","_visSet","groupClosedShowCalcs","includeChildren","getPath","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","_blockRedrawing","_restore_redrawing","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","configureGroupSetup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","groupStartOpen","langValue","lookupFunc","prevValue","assignRowToGroup","getGroupedData","toGroup","fromGroup","generateGroups","groupComponents","pullGroupListData","groupListData","rowCount","headerContent","countGroups","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","every","groupPath","groupId","checkBasicModeGroupHeaderWidth","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","posFrom","posTo","newValue","undoers","redoers","_rebindRow","oldRow","cellEdit","rowAdd","rowMove","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","optionsArr","attrib","_attribValue","_findCol","exists","textContent","replaceAll","inQuote","nextChar","array","Import","importFromFile","importFormat","loadDataCheck","loadData","importData","lookupImporter","structureData","err","importer","importers","extension","pickFile","extensions","accept","file","files","reader","FileReader","importReader","readAsArrayBuffer","readAsBinaryString","readAsDataURL","readAsText","onload","onerror","parsedData","structureArrayToObject","structureArrayToColumns","defaultImporters","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowMouseDown","rowMouseUp","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellMouseDown","cellMouseUp","cellTap","cellDblTap","cellTapHold","headerClick","headerDblClick","headerContext","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","headerMouseDown","headerMouseUp","headerTap","headerDblTap","headerTapHold","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","groupMouseDown","groupMouseUp","groupTap","groupDblTap","groupTapHold","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tap","tapDbl","tapHold","initializeExternalEvents","cellContentsSelectionFixer","clearTouchWatchers","selectNode","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","noTouch","watchers","componentObj","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","mapBinding","symbolsList","ctrl","meta","code","checkBinding","navPrev","navNext","navUp","navDown","navLeft","navRight","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","rangeJumpUp","rangeJumpDown","rangeJumpLeft","rangeJumpRight","rangeExpandUp","rangeExpandDown","rangeExpandLeft","rangeExpandRight","rangeExpandJumpUp","rangeExpandJumpDown","rangeExpandJumpLeft","rangeExpandJumpRight","keyBlock","newPos","scrollMax","Menu","nestedMenuBlock","currentComponent","rootPopup","initializeRowWatchers","initializeGroupWatchers","rowContextMenu","loadMenuEvent","rowClickMenu","rowDblClickMenu","groupContextMenu","groupClickMenu","groupDblClickMenu","headerContextMenu","loadMenuTableColumnEvent","headerClickMenu","headerDblClickMenu","headerMenu","initializeColumnHeaderMenu","contextMenu","loadMenuTableCellEvent","clickMenu","dblClickMenu","headerMenuEl","icon","headerMenuIcon","menu","loadMenu","parentPopup","itemEl","disabled","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","movableColumns","abortMove","mousemove","which","startMove","bindTouchEvents","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","passive","moveToCol","_bindMouseMove","_unbindMouseMove","movingCells","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","initializeCell","mouseup","tableRowDrop","previousSibling","rowHandle","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","pointerEvents","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","elementRowDrop","connectionTables","dropEvent","tabulatorElementDropEvent","connect","disconnect","dropComplete","sender","movableRowsSender","senders","movableRowsReceiver","receivers","fromTable","toTable","Mutator","enabled","transformCell","mutateLink","lookupMutator","mutators","mutatorEdit","linkCell","pageSize","currentRow","currentPage","totalRows","totalPages","showingEl","valueEl","ofEl","totalEl","rowsEl","Page","progressiveLoad","pageCounterElement","pageCounter","remoteRowCountEstimate","initialLoad","dataChanging","pageSizes","setMaxPage","setPage","userSetPageToRow","userSetPageSize","previousPage","nextPage","getPageMax","setPageToRow","initialLoadComplete","calculatePageSizes","footerRedraw","paginationAddRow","rowAddingPosition","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePageCounter","initializePaginator","initializeProgressive","scrollVertical","testElRow","testElCell","paginationSize","generatePageSizeSelectList","setPageSize","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","paginationCounter","pageCounters","hidden","pageSelectLabel","paginationCounterHolder","paginationElement","paginationCounterElement","paginationInitialPage","paginationButtonCount","setMaxRows","trigger","_setPageCounter","_setPageButtons","leftSize","rightSize","_generatePageButton","actualStartRow","actualRowPageSize","actualRows","last_page","last_row","progressiveLoadDelay","footer","defaultPageCounters","local","id","localStorage","getItem","cookie","cookiePos","setItem","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","localStorageTest","testKey","removeItem","persistence","retrievedData","persistenceMode","persistenceID","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retrieveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","current","oldCols","newCols","mergeAllNew","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","excludedKeys","defStore","colDef","defaultReaders","defaultWriters","_componentPopupCall","loadPopupEvent","rowContextPopup","rowClickPopup","rowDblClickPopup","groupContextPopup","groupClickPopup","groupDblClickPopup","headerContextPopup","loadPopupTableColumnEvent","headerClickPopup","headerDblClickPopup","headerPopup","initializeColumnHeaderPopup","contextPopup","loadPopupTableCellEvent","clickPopup","dblClickPopup","headerPopupEl","headerPopupIcon","loadPopup","contentsEl","Print","manualBlock","beforeprintEventHandler","afterprintEventHandler","printAsHtml","replaceTable","cleanup","printFullscreen","printConfig","printStyled","printRowRange","footerContent","scrollX","scrollY","footerEl","tableEl","printHeader","printFooter","printFormatter","ReactiveData","origFuncs","currentVersion","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","pop","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","unwatchRow","ResizeColumns","startColumn","startWidth","latestX","initialNextColumn","layoutColumnHeader","initializeEventWatchers","layoutCellHandles","deInitializeComponent","resizeHandle","columnLayoutUpdated","deInitializeColumn","columnWidthUpdated","resizable","reinitializeColumn","frozenColumnOffset","frozenOffset","handleEl","nearestColumn","_checkResizability","handleDown","_mouseDown","oldWidth","parentElement","mouseMove","blockedBefore","blockedAfter","startDiff","moveDiff","resizableColumnFit","mouseUp","ResizeRows","startHeight","prevHandle","prevHandleDown","screenY","ResizeTable","visibilityObserver","resizeObserver","containerObserver","tableHeight","containerWidth","autoResize","initialRedraw","tableStyle","IntersectionObserver","ResizeObserver","initializeVisibilityObserver","entry","nodeHeight","contentRect","nodeWidth","redrawTable","observe","tableResized","isIntersecting","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","generateCollapsedRowContent","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","order","generateCollapsedContent","colCount","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","node_content","titleData","valueData","titleHighlight","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectableRows","selectableRange","clearSelectionData","rowRetrieve","selectableRowsPersistence","_deselectRow","prevSelected","_rowSelectionChanged","selectable","checkRowSelectability","endSelect","lastClickedRowIdx","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","selectableRowsCheck","_selectRow","rowMatch","rowInfo","selectableRowsRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","deselected","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","string","localeCompare","boolean","calc","d","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortClickElement","headerSortElement","setColumnHeaderSortIcon","columnHeaderSortMulti","newSortList","findSorter","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","setColumnHeader","_sortItems","sortEl","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","el1","el2","defaultSorters","RangeComponent","_range","getStructuredCells","getTopEdge","getBottomEdge","getLeftEdge","getRightEdge","setBounds","destroyedGuard","setStartBound","setEndBound","rangeManager","clearValues","Range","initializing","rowHeader","initElement","initBounds","_updateMinMax","setStart","setEnd","columnSelection","isRowHeader","_getTableRows","_getTableColumns","topLeftCell","bottomRightCell","_vDomTop","_vDomBottom","_vDomLeft","_vDomRight","Infinity","overlaps","atTopLeft","atBottomRight","occupies","occupiesRow","occupiesColumn","arr","clearValue","selectableRangeClearCellsValue","notify","rangeRemoved","SelectRange","mousedown","ranges","overlay","layoutChangeTimeout","maxRanges","blockKeydown","keyDownEvent","_handleKeyDown","mouseUpEvent","_handleMouseUp","getRangesData","getRanges","addRangeFromComponent","cellGetRanges","rowGetRanges","colGetRanges","initializeTable","initializeWatchers","rangeContainer","activeRangeCellElement","resetRanges","handleColumnMouseDown","handleColumnMouseMove","handleColumnResized","layoutChange","updateHeaderColumn","renderCell","handleCellMouseDown","handleCellMouseMove","handleCellClick","handleEditingCell","finishEditingCell","restoreFocus","keyNavigate","keyNavigateRange","getActiveCell","initializeFocus","some","selectedColumn","newSelection","rangeIdx","dataset","navigate","jump","expand","moved","rangeEdge","findJumpCellLeft","findJumpCellRight","findJumpCellUp","findJumpCellDown","getTableColumns","getTableRows","getRowByRangePos","getColumnByRangePos","autoScroll","removed","findJumpCell","emptyStart","emptySide","currentValue","rowPos","isStartingCellEmpty","isLeftOfStartingCellEmpty","jumpCol","targetCells","isRightOfStartingCellEmpty","isTopOfStartingCellEmpty","jumpRow","isBottomOfStartingCellEmpty","rect","withinHorizontalView","withinVerticalView","tableHolder","layoutRanges","layoutColumn","occupied","activeCell","colIdx","Tooltip","tooltipSubscriber","headerSubscriber","timeout","popupInstance","headerTooltip","mousemoveCheck","mouseoutCheck","tooltip","clearPopup","loadTooltip","tooltipDelay","parameters","float","numeric","alphanumeric","minLength","maxLength","cellData","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","cellValidate","columnValidate","rowValidate","editValidate","editorClear","editedClear","previousValue","validate","cancelled","validator","_extractValidator","substring","_buildValidator","validators","failedValidators","invalidIndex","defaultValidators","TabulatorFull"],"mappings":"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"} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/js/tabulator_esm.js b/tmp/tabulator-5.6.1/dist/js/tabulator_esm.js deleted file mode 100644 index 906f44d..0000000 --- a/tmp/tabulator-5.6.1/dist/js/tabulator_esm.js +++ /dev/null @@ -1,28045 +0,0 @@ -/* Tabulator v5.6.1 (c) Oliver Folkerd 2024 */ -class CoreFeature{ - - constructor(table){ - this.table = table; - } - - ////////////////////////////////////////// - /////////////// DataLoad ///////////////// - ////////////////////////////////////////// - - reloadData(data, silent, columnsChanged){ - return this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged); - } - - ////////////////////////////////////////// - ///////////// Localization /////////////// - ////////////////////////////////////////// - - langText(){ - return this.table.modules.localize.getText(...arguments); - } - - langBind(){ - return this.table.modules.localize.bind(...arguments); - } - - langLocale(){ - return this.table.modules.localize.getLocale(...arguments); - } - - - ////////////////////////////////////////// - ////////// Inter Table Comms ///////////// - ////////////////////////////////////////// - - commsConnections(){ - return this.table.modules.comms.getConnections(...arguments); - } - - commsSend(){ - return this.table.modules.comms.send(...arguments); - } - - ////////////////////////////////////////// - //////////////// Layout ///////////////// - ////////////////////////////////////////// - - layoutMode(){ - return this.table.modules.layout.getMode(); - } - - layoutRefresh(force){ - return this.table.modules.layout.layout(force); - } - - - ////////////////////////////////////////// - /////////////// Event Bus //////////////// - ////////////////////////////////////////// - - subscribe(){ - return this.table.eventBus.subscribe(...arguments); - } - - unsubscribe(){ - return this.table.eventBus.unsubscribe(...arguments); - } - - subscribed(key){ - return this.table.eventBus.subscribed(key); - } - - subscriptionChange(){ - return this.table.eventBus.subscriptionChange(...arguments); - } - - dispatch(){ - return this.table.eventBus.dispatch(...arguments); - } - - chain(){ - return this.table.eventBus.chain(...arguments); - } - - confirm(){ - return this.table.eventBus.confirm(...arguments); - } - - dispatchExternal(){ - return this.table.externalEvents.dispatch(...arguments); - } - - subscribedExternal(key){ - return this.table.externalEvents.subscribed(key); - } - - subscriptionChangeExternal(){ - return this.table.externalEvents.subscriptionChange(...arguments); - } - - ////////////////////////////////////////// - //////////////// Options ///////////////// - ////////////////////////////////////////// - - options(key){ - return this.table.options[key]; - } - - setOption(key, value){ - if(typeof value !== "undefined"){ - this.table.options[key] = value; - } - - return this.table.options[key]; - } - - ////////////////////////////////////////// - /////////// Deprecation Checks /////////// - ////////////////////////////////////////// - - deprecationCheck(oldOption, newOption, convert){ - return this.table.deprecationAdvisor.check(oldOption, newOption, convert); - } - - deprecationCheckMsg(oldOption, msg){ - return this.table.deprecationAdvisor.checkMsg(oldOption, msg); - } - - deprecationMsg(msg){ - return this.table.deprecationAdvisor.msg(msg); - } - ////////////////////////////////////////// - //////////////// Modules ///////////////// - ////////////////////////////////////////// - - module(key){ - return this.table.module(key); - } -} - -class Helpers{ - - static elVisible(el){ - return !(el.offsetWidth <= 0 && el.offsetHeight <= 0); - } - - static elOffset(el){ - var box = el.getBoundingClientRect(); - - return { - top: box.top + window.pageYOffset - document.documentElement.clientTop, - left: box.left + window.pageXOffset - document.documentElement.clientLeft - }; - } - - static retrieveNestedData(separator, field, data){ - var structure = separator ? field.split(separator) : [field], - length = structure.length, - output; - - for(let i = 0; i < length; i++){ - - data = data[structure[i]]; - - output = data; - - if(!data){ - break; - } - } - - return output; - } - - static deepClone(obj, clone, list = []){ - var objectProto = {}.__proto__, - arrayProto = [].__proto__; - - if (!clone){ - clone = Object.assign(Array.isArray(obj) ? [] : {}, obj); - } - - for(var i in obj) { - let subject = obj[i], - match, copy; - - if(subject != null && typeof subject === "object" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){ - match = list.findIndex((item) => { - return item.subject === subject; - }); - - if(match > -1){ - clone[i] = list[match].copy; - }else { - copy = Object.assign(Array.isArray(subject) ? [] : {}, subject); - - list.unshift({subject, copy}); - - clone[i] = this.deepClone(subject, copy, list); - } - } - } - - return clone; - } -} - -class Popup extends CoreFeature{ - constructor(table, element, parent){ - super(table); - - this.element = element; - this.container = this._lookupContainer(); - - this.parent = parent; - - this.reversedX = false; - this.childPopup = null; - this.blurable = false; - this.blurCallback = null; - this.blurEventsBound = false; - this.renderedCallback = null; - - this.visible = false; - this.hideable = true; - - this.element.classList.add("tabulator-popup-container"); - - this.blurEvent = this.hide.bind(this, false); - this.escEvent = this._escapeCheck.bind(this); - - this.destroyBinding = this.tableDestroyed.bind(this); - this.destroyed = false; - } - - tableDestroyed(){ - this.destroyed = true; - this.hide(true); - } - - _lookupContainer(){ - var container = this.table.options.popupContainer; - - if(typeof container === "string"){ - container = document.querySelector(container); - - if(!container){ - console.warn("Menu Error - no container element found matching selector:", this.table.options.popupContainer , "(defaulting to document body)"); - } - }else if (container === true){ - container = this.table.element; - } - - if(container && !this._checkContainerIsParent(container)){ - container = false; - console.warn("Menu Error - container element does not contain this table:", this.table.options.popupContainer , "(defaulting to document body)"); - } - - if(!container){ - container = document.body; - } - - return container; - } - - _checkContainerIsParent(container, element = this.table.element){ - if(container === element){ - return true; - }else { - return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false; - } - } - - renderCallback(callback){ - this.renderedCallback = callback; - } - - containerEventCoords(e){ - var touch = !(e instanceof MouseEvent); - - var x = touch ? e.touches[0].pageX : e.pageX; - var y = touch ? e.touches[0].pageY : e.pageY; - - if(this.container !== document.body){ - let parentOffset = Helpers.elOffset(this.container); - - x -= parentOffset.left; - y -= parentOffset.top; - } - - return {x, y}; - } - - elementPositionCoords(element, position = "right"){ - var offset = Helpers.elOffset(element), - containerOffset, x, y; - - if(this.container !== document.body){ - containerOffset = Helpers.elOffset(this.container); - - offset.left -= containerOffset.left; - offset.top -= containerOffset.top; - } - - switch(position){ - case "right": - x = offset.left + element.offsetWidth; - y = offset.top - 1; - break; - - case "bottom": - x = offset.left; - y = offset.top + element.offsetHeight; - break; - - case "left": - x = offset.left; - y = offset.top - 1; - break; - - case "top": - x = offset.left; - y = offset.top; - break; - - case "center": - x = offset.left + (element.offsetWidth / 2); - y = offset.top + (element.offsetHeight / 2); - break; - - } - - return {x, y, offset}; - } - - show(origin, position){ - var x, y, parentEl, parentOffset, coords; - - if(this.destroyed || this.table.destroyed){ - return this; - } - - if(origin instanceof HTMLElement){ - parentEl = origin; - coords = this.elementPositionCoords(origin, position); - - parentOffset = coords.offset; - x = coords.x; - y = coords.y; - - }else if(typeof origin === "number"){ - parentOffset = {top:0, left:0}; - x = origin; - y = position; - }else { - coords = this.containerEventCoords(origin); - - x = coords.x; - y = coords.y; - - this.reversedX = false; - } - - this.element.style.top = y + "px"; - this.element.style.left = x + "px"; - - this.container.appendChild(this.element); - - if(typeof this.renderedCallback === "function"){ - this.renderedCallback(); - } - - this._fitToScreen(x, y, parentEl, parentOffset, position); - - this.visible = true; - - this.subscribe("table-destroy", this.destroyBinding); - - this.element.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - return this; - } - - _fitToScreen(x, y, parentEl, parentOffset, position){ - var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop; - - //move menu to start on right edge if it is too close to the edge of the screen - if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){ - this.element.style.left = ""; - - if(parentEl){ - this.element.style.right = (this.container.offsetWidth - parentOffset.left) + "px"; - }else { - this.element.style.right = (this.container.offsetWidth - x) + "px"; - } - - this.reversedX = true; - } - - //move menu to start on bottom edge if it is too close to the edge of the screen - if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) { - if(parentEl){ - switch(position){ - case "bottom": - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + "px"; - break; - - default: - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + "px"; - } - - }else { - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + "px"; - } - } - } - - isVisible(){ - return this.visible; - } - - hideOnBlur(callback){ - this.blurable = true; - - if(this.visible){ - setTimeout(() => { - if(this.visible){ - this.table.rowManager.element.addEventListener("scroll", this.blurEvent); - this.subscribe("cell-editing", this.blurEvent); - document.body.addEventListener("click", this.blurEvent); - document.body.addEventListener("contextmenu", this.blurEvent); - document.body.addEventListener("mousedown", this.blurEvent); - window.addEventListener("resize", this.blurEvent); - document.body.addEventListener("keydown", this.escEvent); - - this.blurEventsBound = true; - } - }, 100); - - this.blurCallback = callback; - } - - return this; - } - - _escapeCheck(e){ - if(e.keyCode == 27){ - this.hide(); - } - } - - blockHide(){ - this.hideable = false; - } - - restoreHide(){ - this.hideable = true; - } - - hide(silent = false){ - if(this.visible && this.hideable){ - if(this.blurable && this.blurEventsBound){ - document.body.removeEventListener("keydown", this.escEvent); - document.body.removeEventListener("click", this.blurEvent); - document.body.removeEventListener("contextmenu", this.blurEvent); - document.body.removeEventListener("mousedown", this.blurEvent); - window.removeEventListener("resize", this.blurEvent); - this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); - this.unsubscribe("cell-editing", this.blurEvent); - - this.blurEventsBound = false; - } - - if(this.childPopup){ - this.childPopup.hide(); - } - - if(this.parent){ - this.parent.childPopup = null; - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.visible = false; - - if(this.blurCallback && !silent){ - this.blurCallback(); - } - - this.unsubscribe("table-destroy", this.destroyBinding); - } - - return this; - } - - child(element){ - if(this.childPopup){ - this.childPopup.hide(); - } - - this.childPopup = new Popup(this.table, element, this); - - return this.childPopup; - } -} - -class Module extends CoreFeature{ - - constructor(table, name){ - super(table); - - this._handler = null; - } - - initialize(){ - // setup module when table is initialized, to be overridden in module - } - - - /////////////////////////////////// - ////// Options Registration /////// - /////////////////////////////////// - - registerTableOption(key, value){ - this.table.optionsList.register(key, value); - } - - registerColumnOption(key, value){ - this.table.columnManager.optionsList.register(key, value); - } - - /////////////////////////////////// - /// Public Function Registration /// - /////////////////////////////////// - - registerTableFunction(name, func){ - if(typeof this.table[name] === "undefined"){ - this.table[name] = (...args) => { - this.table.initGuard(name); - - return func(...args); - }; - }else { - console.warn("Unable to bind table function, name already in use", name); - } - } - - registerComponentFunction(component, func, handler){ - return this.table.componentFunctionBinder.bind(component, func, handler); - } - - /////////////////////////////////// - ////////// Data Pipeline ////////// - /////////////////////////////////// - - registerDataHandler(handler, priority){ - this.table.rowManager.registerDataPipelineHandler(handler, priority); - this._handler = handler; - } - - registerDisplayHandler(handler, priority){ - this.table.rowManager.registerDisplayPipelineHandler(handler, priority); - this._handler = handler; - } - - displayRows(adjust){ - var index = this.table.rowManager.displayRows.length - 1, - lookupIndex; - - if(this._handler){ - lookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => { - return item.handler === this._handler; - }); - - if(lookupIndex > -1){ - index = lookupIndex; - } - } - - if(adjust){ - index = index + adjust; - } - - if(this._handler){ - if(index > -1){ - return this.table.rowManager.getDisplayRows(index); - }else { - return this.activeRows(); - } - } - } - - activeRows(){ - return this.table.rowManager.activeRows; - } - - refreshData(renderInPosition, handler){ - if(!handler){ - handler = this._handler; - } - - if(handler){ - this.table.rowManager.refreshActiveData(handler, false, renderInPosition); - } - } - - /////////////////////////////////// - //////// Footer Management //////// - /////////////////////////////////// - - footerAppend(element){ - return this.table.footerManager.append(element); - } - - footerPrepend(element){ - return this.table.footerManager.prepend(element); - } - - footerRemove(element){ - return this.table.footerManager.remove(element); - } - - /////////////////////////////////// - //////// Popups Management //////// - /////////////////////////////////// - - popup(menuEl, menuContainer){ - return new Popup(this.table, menuEl, menuContainer); - } - - /////////////////////////////////// - //////// Alert Management //////// - /////////////////////////////////// - - alert(content, type){ - return this.table.alertManager.alert(content, type); - } - - clearAlert(){ - return this.table.alertManager.clear(); - } - -} - -var defaultAccessors = {}; - -class Accessor extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types - - this.registerColumnOption("accessor"); - this.registerColumnOption("accessorParams"); - this.registerColumnOption("accessorData"); - this.registerColumnOption("accessorDataParams"); - this.registerColumnOption("accessorDownload"); - this.registerColumnOption("accessorDownloadParams"); - this.registerColumnOption("accessorClipboard"); - this.registerColumnOption("accessorClipboardParams"); - this.registerColumnOption("accessorPrint"); - this.registerColumnOption("accessorPrintParams"); - this.registerColumnOption("accessorHtmlOutput"); - this.registerColumnOption("accessorHtmlOutputParams"); - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-retrieve", this.transformRow.bind(this)); - } - - //initialize column accessor - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - accessor; - - if(column.definition[key]){ - accessor = this.lookupAccessor(column.definition[key]); - - if(accessor){ - match = true; - - config[key] = { - accessor:accessor, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.accessor = config; - } - } - - lookupAccessor(value){ - var accessor = false; - - //set column accessor - switch(typeof value){ - case "string": - if(Accessor.accessors[value]){ - accessor = Accessor.accessors[value]; - }else { - console.warn("Accessor Error - No such accessor found, ignoring: ", value); - } - break; - - case "function": - accessor = value; - break; - } - - return accessor; - } - - //apply accessor to row - transformRow(row, type){ - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - rowComponent = row.getComponent(); - - //clone data object with deep copy to isolate internal data from returned result - var data = Helpers.deepClone(row.data || {}); - - this.table.columnManager.traverse(function(column){ - var value, accessor, params, colComponent; - - if(column.modules.accessor){ - - accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false; - - if(accessor){ - value = column.getFieldValue(data); - - if(value != "undefined"){ - colComponent = column.getComponent(); - params = typeof accessor.params === "function" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params; - column.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent)); - } - } - } - }); - - return data; - } -} - -//load defaults -Accessor.moduleName = "accessor"; -Accessor.accessors = defaultAccessors; - -var defaultConfig = { - method: "GET", -}; - -function generateParamsList(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else { - output.push({key:prefix, value:data}); - } - - return output; -} - -function serializeParams(params){ - var output = generateParamsList(params), - encoded = []; - - output.forEach(function(item){ - encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value)); - }); - - return encoded.join("&"); -} - -function urlBuilder(url, config, params){ - if(url){ - if(params && Object.keys(params).length){ - if(!config.method || config.method.toLowerCase() == "get"){ - config.method = "get"; - - url += (url.includes("?") ? "&" : "?") + serializeParams(params); - } - } - } - - return url; -} - -function defaultLoaderPromise(url, config, params){ - var contentType; - - return new Promise((resolve, reject) => { - //set url - url = this.urlGenerator.call(this.table, url, config, params); - - //set body content if not GET request - if(config.method.toUpperCase() != "GET"){ - contentType = typeof this.table.options.ajaxContentType === "object" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType]; - if(contentType){ - - for(var key in contentType.headers){ - if(!config.headers){ - config.headers = {}; - } - - if(typeof config.headers[key] === "undefined"){ - config.headers[key] = contentType.headers[key]; - } - } - - config.body = contentType.body.call(this, url, config, params); - - }else { - console.warn("Ajax Error - Invalid ajaxContentType value:", this.table.options.ajaxContentType); - } - } - - if(url){ - //configure headers - if(typeof config.headers === "undefined"){ - config.headers = {}; - } - - if(typeof config.headers.Accept === "undefined"){ - config.headers.Accept = "application/json"; - } - - if(typeof config.headers["X-Requested-With"] === "undefined"){ - config.headers["X-Requested-With"] = "XMLHttpRequest"; - } - - if(typeof config.mode === "undefined"){ - config.mode = "cors"; - } - - if(config.mode == "cors"){ - if(typeof config.headers["Origin"] === "undefined"){ - config.headers["Origin"] = window.location.origin; - } - - if(typeof config.credentials === "undefined"){ - config.credentials = 'same-origin'; - } - }else { - if(typeof config.credentials === "undefined"){ - config.credentials = 'include'; - } - } - - //send request - fetch(url, config) - .then((response)=>{ - if(response.ok) { - response.json() - .then((data)=>{ - resolve(data); - }).catch((error)=>{ - reject(error); - console.warn("Ajax Load Error - Invalid JSON returned", error); - }); - }else { - console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText); - reject(response); - } - }) - .catch((error)=>{ - console.error("Ajax Load Error - Connection Error: ", error); - reject(error); - }); - }else { - console.warn("Ajax Load Error - No URL Set"); - resolve([]); - } - }); -} - -function generateParamsList$1(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList$1(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList$1(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else { - output.push({key:prefix, value:data}); - } - - return output; -} - -var defaultContentTypeFormatters = { - "json":{ - headers:{ - 'Content-Type': 'application/json', - }, - body:function(url, config, params){ - return JSON.stringify(params); - }, - }, - "form":{ - headers:{ - }, - body:function(url, config, params){ - - var output = generateParamsList$1(params), - form = new FormData(); - - output.forEach(function(item){ - form.append(item.key, item.value); - }); - - return form; - }, - }, -}; - -class Ajax extends Module{ - - constructor(table){ - super(table); - - this.config = {}; //hold config object for ajax request - this.url = ""; //request URL - this.urlGenerator = false; - this.params = false; //request parameters - - this.loaderPromise = false; - - this.registerTableOption("ajaxURL", false); //url for ajax loading - this.registerTableOption("ajaxURLGenerator", false); - this.registerTableOption("ajaxParams", {}); //params for ajax loading - this.registerTableOption("ajaxConfig", "get"); //ajax request type - this.registerTableOption("ajaxContentType", "form"); //ajax request type - this.registerTableOption("ajaxRequestFunc", false); //promise function - - this.registerTableOption("ajaxRequesting", function(){}); - this.registerTableOption("ajaxResponse", false); - - this.contentTypeFormatters = Ajax.contentTypeFormatters; - } - - //initialize setup options - initialize(){ - this.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise; - this.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator; - - if(this.table.options.ajaxURL){ - this.setUrl(this.table.options.ajaxURL); - } - - - this.setDefaultConfig(this.table.options.ajaxConfig); - - this.registerTableFunction("getAjaxUrl", this.getUrl.bind(this)); - - this.subscribe("data-loading", this.requestDataCheck.bind(this)); - this.subscribe("data-params", this.requestParams.bind(this)); - this.subscribe("data-load", this.requestData.bind(this)); - } - - requestParams(data, config, silent, params){ - var ajaxParams = this.table.options.ajaxParams; - - if(ajaxParams){ - if(typeof ajaxParams === "function"){ - ajaxParams = ajaxParams.call(this.table); - } - - params = Object.assign(Object.assign({}, ajaxParams), params); - } - - return params; - } - - requestDataCheck(data, params, config, silent){ - return !!((!data && this.url) || typeof data === "string"); - } - - requestData(url, params, config, silent, previousData){ - var ajaxConfig; - - if(!previousData && this.requestDataCheck(url)){ - if(url){ - this.setUrl(url); - } - - ajaxConfig = this.generateConfig(config); - - return this.sendRequest(this.url, params, ajaxConfig); - }else { - return previousData; - } - } - - setDefaultConfig(config = {}){ - this.config = Object.assign({}, Ajax.defaultConfig); - - if(typeof config == "string"){ - this.config.method = config; - }else { - Object.assign(this.config, config); - } - } - - //load config object - generateConfig(config = {}){ - var ajaxConfig = Object.assign({}, this.config); - - if(typeof config == "string"){ - ajaxConfig.method = config; - }else { - Object.assign(ajaxConfig, config); - } - - return ajaxConfig; - } - - //set request url - setUrl(url){ - this.url = url; - } - - //get request url - getUrl(){ - return this.url; - } - - //send ajax request - sendRequest(url, params, config){ - if(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){ - return this.loaderPromise(url, config, params) - .then((data)=>{ - if(this.table.options.ajaxResponse){ - data = this.table.options.ajaxResponse.call(this.table, url, params, data); - } - - return data; - }); - }else { - return Promise.reject(); - } - } -} - -Ajax.moduleName = "ajax"; - -//load defaults -Ajax.defaultConfig = defaultConfig; -Ajax.defaultURLGenerator = urlBuilder; -Ajax.defaultLoaderPromise = defaultLoaderPromise; -Ajax.contentTypeFormatters = defaultContentTypeFormatters; - -var defaultPasteActions = { - replace:function(data){ - return this.table.setData(data); - }, - update:function(data){ - return this.table.updateOrAddData(data); - }, - insert:function(data){ - return this.table.addData(data); - }, - range:function(data){ - var rows = [], - range = this.table.modules.selectRange.activeRange, - singleCell = false, - bounds, startCell, startRow, rowWidth, dataLength; - - dataLength = data.length; - - if(range){ - bounds = range.getBounds(); - startCell = bounds.start; - - if(bounds.start === bounds.end){ - singleCell = true; - } - - if(startCell){ - rows = this.table.rowManager.activeRows.slice(); - startRow = rows.indexOf(startCell.row); - - if(singleCell){ - rowWidth = data.length; - }else { - rowWidth = (rows.indexOf(bounds.end.row) - startRow) + 1; - } - - - if(startRow >-1){ - this.table.blockRedraw(); - - rows = rows.slice(startRow, startRow + rowWidth); - - rows.forEach((row, i) => { - row.updateData(data[i % dataLength]); - }); - - this.table.restoreRedraw(); - } - } - } - - return rows; - } -}; - -var defaultPasteParsers = { - table:function(clipboard){ - var data = [], - headerFindSuccess = true, - columns = this.table.columnManager.columns, - columnMap = [], - rows = []; - - //get data from clipboard into array of columns and rows. - clipboard = clipboard.split("\n"); - - clipboard.forEach(function(row){ - data.push(row.split("\t")); - }); - - if(data.length && !(data.length === 1 && data[0].length < 2)){ - - //check if headers are present by title - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else { - headerFindSuccess = false; - } - }); - - //check if column headers are present by field - if(!headerFindSuccess){ - headerFindSuccess = true; - columnMap = []; - - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.field && value.trim() && column.field.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else { - headerFindSuccess = false; - } - }); - - if(!headerFindSuccess){ - columnMap = this.table.columnManager.columnsByIndex; - } - } - - //remove header row if found - if(headerFindSuccess){ - data.shift(); - } - - data.forEach(function(item){ - var row = {}; - - item.forEach(function(value, i){ - if(columnMap[i]){ - row[columnMap[i].field] = value; - } - }); - - rows.push(row); - }); - - return rows; - }else { - return false; - } - }, - range:function(clipboard){ - var data = [], - rows = [], - range = this.table.modules.selectRange.activeRange, - singleCell = false, - bounds, startCell, colWidth, columnMap, startCol; - - if(range){ - bounds = range.getBounds(); - startCell = bounds.start; - - if(bounds.start === bounds.end){ - singleCell = true; - } - - if(startCell){ - //get data from clipboard into array of columns and rows. - clipboard = clipboard.split("\n"); - - clipboard.forEach(function(row){ - data.push(row.split("\t")); - }); - - if(data.length){ - columnMap = this.table.columnManager.getVisibleColumnsByIndex(); - startCol = columnMap.indexOf(startCell.column); - - if(startCol > -1){ - if(singleCell){ - colWidth = data[0].length; - }else { - colWidth = (columnMap.indexOf(bounds.end.column) - startCol) + 1; - } - - columnMap = columnMap.slice(startCol, startCol + colWidth); - - data.forEach((item) => { - var row = {}; - var itemLength = item.length; - - columnMap.forEach(function(col, i){ - row[col.field] = item[i % itemLength]; - }); - - rows.push(row); - }); - - return rows; - } - } - } - } - - return false; - } -}; - -class Clipboard extends Module{ - - constructor(table){ - super(table); - - this.mode = true; - this.pasteParser = function(){}; - this.pasteAction = function(){}; - this.customSelection = false; - this.rowRange = false; - this.blocked = true; //block copy actions not originating from this command - - this.registerTableOption("clipboard", false); //enable clipboard - this.registerTableOption("clipboardCopyStyled", true); //formatted table data - this.registerTableOption("clipboardCopyConfig", false); //clipboard config - this.registerTableOption("clipboardCopyFormatter", false); //DEPRECATED - REMOVE in 5.0 - this.registerTableOption("clipboardCopyRowRange", "active"); //restrict clipboard to visible rows only - this.registerTableOption("clipboardPasteParser", "table"); //convert pasted clipboard data to rows - this.registerTableOption("clipboardPasteAction", "insert"); //how to insert pasted data into the table - - this.registerColumnOption("clipboard"); - this.registerColumnOption("titleClipboard"); - } - - initialize(){ - this.mode = this.table.options.clipboard; - - this.rowRange = this.table.options.clipboardCopyRowRange; - - if(this.mode === true || this.mode === "copy"){ - this.table.element.addEventListener("copy", (e) => { - var plain, html, list; - - if(!this.blocked){ - e.preventDefault(); - - if(this.customSelection){ - plain = this.customSelection; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - } - }else { - - list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, "clipboard"); - - html = this.table.modules.export.generateHTMLTable(list); - plain = html ? this.generatePlainContent(list) : ""; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - html = this.table.options.clipboardCopyFormatter("html", html); - } - } - - if (window.clipboardData && window.clipboardData.setData) { - window.clipboardData.setData('Text', plain); - } else if (e.clipboardData && e.clipboardData.setData) { - e.clipboardData.setData('text/plain', plain); - if(html){ - e.clipboardData.setData('text/html', html); - } - } else if (e.originalEvent && e.originalEvent.clipboardData.setData) { - e.originalEvent.clipboardData.setData('text/plain', plain); - if(html){ - e.originalEvent.clipboardData.setData('text/html', html); - } - } - - this.dispatchExternal("clipboardCopied", plain, html); - - this.reset(); - } - }); - } - - if(this.mode === true || this.mode === "paste"){ - this.table.element.addEventListener("paste", (e) => { - this.paste(e); - }); - } - - this.setPasteParser(this.table.options.clipboardPasteParser); - this.setPasteAction(this.table.options.clipboardPasteAction); - - this.registerTableFunction("copyToClipboard", this.copy.bind(this)); - } - - reset(){ - this.blocked = true; - this.customSelection = false; - } - - generatePlainContent (list) { - var output = []; - - list.forEach((row) => { - var rowData = []; - - row.columns.forEach((col) => { - var value = ""; - - if(col){ - - if(row.type === "group"){ - col.value = col.component.getKey(); - } - - if(col.value === null){ - value = ""; - }else { - switch(typeof col.value){ - case "object": - value = JSON.stringify(col.value); - break; - - case "undefined": - value = ""; - break; - - default: - value = col.value; - } - } - } - - rowData.push(value); - }); - - output.push(rowData.join("\t")); - }); - - return output.join("\n"); - } - - copy (range, internal) { - var sel, textRange; - this.blocked = false; - this.customSelection = false; - - - if (this.mode === true || this.mode === "copy") { - - this.rowRange = range || this.table.options.clipboardCopyRowRange; - - if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { - range = document.createRange(); - range.selectNodeContents(this.table.element); - sel = window.getSelection(); - - if (sel.toString() && internal) { - this.customSelection = sel.toString(); - } - - sel.removeAllRanges(); - sel.addRange(range); - } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") { - textRange = document.body.createTextRange(); - textRange.moveToElementText(this.table.element); - textRange.select(); - } - - document.execCommand('copy'); - - if (sel) { - sel.removeAllRanges(); - } - } - } - - //PASTE EVENT HANDLING - setPasteAction(action){ - - switch(typeof action){ - case "string": - this.pasteAction = Clipboard.pasteActions[action]; - - if(!this.pasteAction){ - console.warn("Clipboard Error - No such paste action found:", action); - } - break; - - case "function": - this.pasteAction = action; - break; - } - } - - setPasteParser(parser){ - switch(typeof parser){ - case "string": - this.pasteParser = Clipboard.pasteParsers[parser]; - - if(!this.pasteParser){ - console.warn("Clipboard Error - No such paste parser found:", parser); - } - break; - - case "function": - this.pasteParser = parser; - break; - } - } - - paste(e){ - var data, rowData, rows; - - if(this.checkPasteOrigin(e)){ - - data = this.getPasteData(e); - - rowData = this.pasteParser.call(this, data); - - if(rowData){ - e.preventDefault(); - - if(this.table.modExists("mutator")){ - rowData = this.mutateData(rowData); - } - - rows = this.pasteAction.call(this, rowData); - - this.dispatchExternal("clipboardPasted", data, rowData, rows); - }else { - this.dispatchExternal("clipboardPasteError", data); - } - } - } - - mutateData(data){ - var output = []; - - if(Array.isArray(data)){ - data.forEach((row) => { - output.push(this.table.modules.mutator.transformRow(row, "clipboard")); - }); - }else { - output = data; - } - - return output; - } - - - checkPasteOrigin(e){ - var valid = true; - var blocked = this.confirm("clipboard-paste", [e]); - - if(blocked || !["DIV", "SPAN"].includes(e.target.tagName)){ - valid = false; - } - - return valid; - } - - getPasteData(e){ - var data; - - if (window.clipboardData && window.clipboardData.getData) { - data = window.clipboardData.getData('Text'); - } else if (e.clipboardData && e.clipboardData.getData) { - data = e.clipboardData.getData('text/plain'); - } else if (e.originalEvent && e.originalEvent.clipboardData.getData) { - data = e.originalEvent.clipboardData.getData('text/plain'); - } - - return data; - } -} - -Clipboard.moduleName = "clipboard"; - -//load defaults -Clipboard.pasteActions = defaultPasteActions; -Clipboard.pasteParsers = defaultPasteParsers; - -class CalcComponent{ - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getTable(){ - return this._row.table; - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - _getSelf(){ - return this._row; - } -} - -//public cell object -class CellComponent { - - constructor (cell){ - this._cell = cell; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._cell.table.componentFunctionBinder.handle("cell", target._cell, name); - } - } - }); - } - - getValue(){ - return this._cell.getValue(); - } - - getOldValue(){ - return this._cell.getOldValue(); - } - - getInitialValue(){ - return this._cell.initialValue; - } - - getElement(){ - return this._cell.getElement(); - } - - getRow(){ - return this._cell.row.getComponent(); - } - - getData(transform){ - return this._cell.row.getData(transform); - } - getType(){ - return "cell"; - } - getField(){ - return this._cell.column.getField(); - } - - getColumn(){ - return this._cell.column.getComponent(); - } - - setValue(value, mutate){ - if(typeof mutate == "undefined"){ - mutate = true; - } - - this._cell.setValue(value, mutate); - } - - restoreOldValue(){ - this._cell.setValueActual(this._cell.getOldValue()); - } - - restoreInitialValue(){ - this._cell.setValueActual(this._cell.initialValue); - } - - checkHeight(){ - this._cell.checkHeight(); - } - - getTable(){ - return this._cell.table; - } - - _getSelf(){ - return this._cell; - } -} - -class Cell extends CoreFeature{ - constructor(column, row){ - super(column.table); - - this.table = column.table; - this.column = column; - this.row = row; - this.element = null; - this.value = null; - this.initialValue; - this.oldValue = null; - this.modules = {}; - - this.height = null; - this.width = null; - this.minWidth = null; - - this.component = null; - - this.loaded = false; //track if the cell has been added to the DOM yet - - this.build(); - } - - //////////////// Setup Functions ///////////////// - //generate element - build(){ - this.generateElement(); - - this.setWidth(); - - this._configureCell(); - - this.setValueActual(this.column.getFieldValue(this.row.data)); - - this.initialValue = this.value; - } - - generateElement(){ - this.element = document.createElement('div'); - this.element.className = "tabulator-cell"; - this.element.setAttribute("role", "gridcell"); - } - - _configureCell(){ - var element = this.element, - field = this.column.getField(), - vertAligns = { - top:"flex-start", - bottom:"flex-end", - middle:"center", - }, - hozAligns = { - left:"flex-start", - right:"flex-end", - center:"center", - }; - - //set text alignment - element.style.textAlign = this.column.hozAlign; - - if(this.column.vertAlign){ - element.style.display = "inline-flex"; - - element.style.alignItems = vertAligns[this.column.vertAlign] || ""; - - if(this.column.hozAlign){ - element.style.justifyContent = hozAligns[this.column.hozAlign] || ""; - } - } - - if(field){ - element.setAttribute("tabulator-field", field); - } - - //add class to cell if needed - if(this.column.definition.cssClass){ - var classNames = this.column.definition.cssClass.split(" "); - classNames.forEach((className) => { - element.classList.add(className); - }); - } - - this.dispatch("cell-init", this); - - //hide cell if not visible - if(!this.column.visible){ - this.hide(); - } - } - - //generate cell contents - _generateContents(){ - var val; - - val = this.chain("cell-format", this, null, () => { - return this.element.innerHTML = this.value; - }); - - switch(typeof val){ - case "object": - if(val instanceof Node){ - - //clear previous cell contents - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.element.appendChild(val); - }else { - this.element.innerHTML = ""; - - if(val != null){ - console.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); - } - } - break; - case "undefined": - this.element.innerHTML = ""; - break; - default: - this.element.innerHTML = val; - } - } - - cellRendered(){ - this.dispatch("cell-rendered", this); - } - - //////////////////// Getters //////////////////// - getElement(containerOnly){ - if(!this.loaded){ - this.loaded = true; - if(!containerOnly){ - this.layoutElement(); - } - } - - return this.element; - } - - getValue(){ - return this.value; - } - - getOldValue(){ - return this.oldValue; - } - - //////////////////// Actions //////////////////// - setValue(value, mutate, force){ - var changed = this.setValueProcessData(value, mutate, force); - - if(changed){ - this.dispatch("cell-value-updated", this); - - this.cellRendered(); - - if(this.column.definition.cellEdited){ - this.column.definition.cellEdited.call(this.table, this.getComponent()); - } - - this.dispatchExternal("cellEdited", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - } - } - - setValueProcessData(value, mutate, force){ - var changed = false; - - if(this.value !== value || force){ - - changed = true; - - if(mutate){ - value = this.chain("cell-value-changing", [this, value], null, value); - } - } - - this.setValueActual(value); - - if(changed){ - this.dispatch("cell-value-changed", this); - } - - return changed; - } - - setValueActual(value){ - this.oldValue = this.value; - - this.value = value; - - this.dispatch("cell-value-save-before", this); - - this.column.setFieldValue(this.row.data, value); - - this.dispatch("cell-value-save-after", this); - - if(this.loaded){ - this.layoutElement(); - } - } - - layoutElement(){ - this._generateContents(); - - this.dispatch("cell-layout", this); - } - - setWidth(){ - this.width = this.column.width; - this.element.style.width = this.column.widthStyled; - } - - clearWidth(){ - this.width = ""; - this.element.style.width = ""; - } - - getWidth(){ - return this.width || this.element.offsetWidth; - } - - setMinWidth(){ - this.minWidth = this.column.minWidth; - this.element.style.minWidth = this.column.minWidthStyled; - } - - setMaxWidth(){ - this.maxWidth = this.column.maxWidth; - this.element.style.maxWidth = this.column.maxWidthStyled; - } - - checkHeight(){ - // var height = this.element.css("height"); - this.row.reinitializeHeight(); - } - - clearHeight(){ - this.element.style.height = ""; - this.height = null; - - this.dispatch("cell-height", this, ""); - } - - setHeight(){ - this.height = this.row.height; - this.element.style.height = this.row.heightStyled; - - this.dispatch("cell-height", this, this.row.heightStyled); - } - - getHeight(){ - return this.height || this.element.offsetHeight; - } - - show(){ - this.element.style.display = this.column.vertAlign ? "inline-flex" : ""; - } - - hide(){ - this.element.style.display = "none"; - } - - delete(){ - this.dispatch("cell-delete", this); - - if(!this.table.rowManager.redrawBlock && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.column.deleteCell(this); - this.row.deleteCell(this); - this.calcs = {}; - } - - getIndex(){ - return this.row.getCellIndex(this); - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new CellComponent(this); - } - - return this.component; - } -} - -//public column object -class ColumnComponent { - constructor (column){ - this._column = column; - this.type = "ColumnComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._column.table.componentFunctionBinder.handle("column", target._column, name); - } - } - }); - } - - getElement(){ - return this._column.getElement(); - } - - getDefinition(){ - return this._column.getDefinition(); - } - - getField(){ - return this._column.getField(); - } - - getTitleDownload() { - return this._column.getTitleDownload(); - } - - getCells(){ - var cells = []; - - this._column.cells.forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - isVisible(){ - return this._column.visible; - } - - show(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.show(); - }); - }else { - this._column.show(); - } - } - - hide(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.hide(); - }); - }else { - this._column.hide(); - } - } - - toggle(){ - if(this._column.visible){ - this.hide(); - }else { - this.show(); - } - } - - delete(){ - return this._column.delete(); - } - - getSubColumns(){ - var output = []; - - if(this._column.columns.length){ - this._column.columns.forEach(function(column){ - output.push(column.getComponent()); - }); - } - - return output; - } - - getParentColumn(){ - return this._column.parent instanceof Column ? this._column.parent.getComponent() : false; - } - - _getSelf(){ - return this._column; - } - - scrollTo(position, ifVisible){ - return this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible); - } - - getTable(){ - return this._column.table; - } - - move(to, after){ - var toColumn = this._column.table.columnManager.findColumn(to); - - if(toColumn){ - this._column.table.columnManager.moveColumn(this._column, toColumn, after); - }else { - console.warn("Move Error - No matching column found:", toColumn); - } - } - - getNextColumn(){ - var nextCol = this._column.nextColumn(); - - return nextCol ? nextCol.getComponent() : false; - } - - getPrevColumn(){ - var prevCol = this._column.prevColumn(); - - return prevCol ? prevCol.getComponent() : false; - } - - updateDefinition(updates){ - return this._column.updateDefinition(updates); - } - - getWidth(){ - return this._column.getWidth(); - } - - setWidth(width){ - var result; - - if(width === true){ - result = this._column.reinitializeWidth(true); - }else { - result = this._column.setWidth(width); - } - - this._column.table.columnManager.rerenderColumns(true); - - return result; - } -} - -var defaultColumnOptions = { - "title": undefined, - "field": undefined, - "columns": undefined, - "visible": undefined, - "hozAlign": undefined, - "vertAlign": undefined, - "width": undefined, - "minWidth": 40, - "maxWidth": undefined, - "maxInitialWidth": undefined, - "cssClass": undefined, - "variableHeight": undefined, - "headerVertical": undefined, - "headerHozAlign": undefined, - "headerWordWrap": false, - "editableTitle": undefined, -}; - -class Column extends CoreFeature{ - - constructor(def, parent){ - super(parent.table); - - this.definition = def; //column definition - this.parent = parent; //hold parent object - this.type = "column"; //type of element - this.columns = []; //child columns - this.cells = []; //cells bound to this column - this.element = this.createElement(); //column header element - this.contentElement = false; - this.titleHolderElement = false; - this.titleElement = false; - this.groupElement = this.createGroupElement(); //column group holder element - this.isGroup = false; - this.hozAlign = ""; //horizontal text alignment - this.vertAlign = ""; //vert text alignment - - //multi dimensional filed handling - this.field =""; - this.fieldStructure = ""; - this.getFieldValue = ""; - this.setFieldValue = ""; - - this.titleDownload = null; - this.titleFormatterRendered = false; - - this.mapDefinitions(); - - this.setField(this.definition.field); - - this.modules = {}; //hold module variables; - - this.width = null; //column width - this.widthStyled = ""; //column width pre-styled to improve render efficiency - this.maxWidth = null; //column maximum width - this.maxWidthStyled = ""; //column maximum pre-styled to improve render efficiency - this.maxInitialWidth = null; - this.minWidth = null; //column minimum width - this.minWidthStyled = ""; //column minimum pre-styled to improve render efficiency - this.widthFixed = false; //user has specified a width for this column - - this.visible = true; //default visible state - - this.component = null; - - //initialize column - if(this.definition.columns){ - - this.isGroup = true; - - this.definition.columns.forEach((def, i) => { - var newCol = new Column(def, this); - this.attachColumn(newCol); - }); - - this.checkColumnVisibility(); - }else { - parent.registerColumnField(this); - } - - this._initialize(); - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.setAttribute("role", "columnheader"); - el.setAttribute("aria-sort", "none"); - - switch(this.table.options.columnHeaderVertAlign){ - case "middle": - el.style.justifyContent = "center"; - break; - case "bottom": - el.style.justifyContent = "flex-end"; - break; - } - - return el; - } - - createGroupElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col-group-cols"); - - return el; - } - - mapDefinitions(){ - var defaults = this.table.options.columnDefaults; - - //map columnDefaults onto column definitions - if(defaults){ - for(let key in defaults){ - if(typeof this.definition[key] === "undefined"){ - this.definition[key] = defaults[key]; - } - } - } - - this.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition); - } - - checkDefinition(){ - Object.keys(this.definition).forEach((key) => { - if(Column.defaultOptionList.indexOf(key) === -1){ - console.warn("Invalid column definition option in '" + (this.field || this.definition.title) + "' column:", key); - } - }); - } - - setField(field){ - this.field = field; - this.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : []; - this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData; - this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData; - } - - //register column position with column manager - registerColumnPosition(column){ - this.parent.registerColumnPosition(column); - } - - //register column position with column manager - registerColumnField(column){ - this.parent.registerColumnField(column); - } - - //trigger position registration - reRegisterPosition(){ - if(this.isGroup){ - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - }else { - this.registerColumnPosition(this); - } - } - - //build header element - _initialize(){ - var def = this.definition; - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(def.headerVertical){ - this.element.classList.add("tabulator-col-vertical"); - - if(def.headerVertical === "flip"){ - this.element.classList.add("tabulator-col-vertical-flip"); - } - } - - this.contentElement = this._buildColumnHeaderContent(); - - this.element.appendChild(this.contentElement); - - if(this.isGroup){ - this._buildGroupHeader(); - }else { - this._buildColumnHeader(); - } - - this.dispatch("column-init", this); - } - - //build header element for header - _buildColumnHeader(){ - var def = this.definition; - - this.dispatch("column-layout", this); - - //set column visibility - if(typeof def.visible != "undefined"){ - if(def.visible){ - this.show(true); - }else { - this.hide(true); - } - } - - //assign additional css classes to column header - if(def.cssClass){ - var classNames = def.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - if(def.field){ - this.element.setAttribute("tabulator-field", def.field); - } - - //set min width if present - this.setMinWidth(parseInt(def.minWidth)); - - if (def.maxInitialWidth) { - this.maxInitialWidth = parseInt(def.maxInitialWidth); - } - - if(def.maxWidth){ - this.setMaxWidth(parseInt(def.maxWidth)); - } - - this.reinitializeWidth(); - - //set horizontal text alignment - this.hozAlign = this.definition.hozAlign; - this.vertAlign = this.definition.vertAlign; - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - } - - _buildColumnHeaderContent(){ - var contentElement = document.createElement("div"); - contentElement.classList.add("tabulator-col-content"); - - this.titleHolderElement = document.createElement("div"); - this.titleHolderElement.classList.add("tabulator-col-title-holder"); - - contentElement.appendChild(this.titleHolderElement); - - this.titleElement = this._buildColumnHeaderTitle(); - - this.titleHolderElement.appendChild(this.titleElement); - - return contentElement; - } - - //build title element of column - _buildColumnHeaderTitle(){ - var def = this.definition; - - var titleHolderElement = document.createElement("div"); - titleHolderElement.classList.add("tabulator-col-title"); - - if(def.headerWordWrap){ - titleHolderElement.classList.add("tabulator-col-title-wrap"); - } - - if(def.editableTitle){ - var titleElement = document.createElement("input"); - titleElement.classList.add("tabulator-title-editor"); - - titleElement.addEventListener("click", (e) => { - e.stopPropagation(); - titleElement.focus(); - }); - - titleElement.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - titleElement.addEventListener("change", () => { - def.title = titleElement.value; - this.dispatchExternal("columnTitleChanged", this.getComponent()); - }); - - titleHolderElement.appendChild(titleElement); - - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - titleElement.value = text || (def.title || " "); - }); - }else { - titleElement.value = def.title || " "; - } - - }else { - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - this._formatColumnHeaderTitle(titleHolderElement, text || (def.title || " ")); - }); - }else { - this._formatColumnHeaderTitle(titleHolderElement, def.title || " "); - } - } - - return titleHolderElement; - } - - _formatColumnHeaderTitle(el, title){ - var contents = this.chain("column-format", [this, title, el], null, () => { - return title; - }); - - switch(typeof contents){ - case "object": - if(contents instanceof Node){ - el.appendChild(contents); - }else { - el.innerHTML = ""; - console.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); - } - break; - case "undefined": - el.innerHTML = ""; - break; - default: - el.innerHTML = contents; - } - } - - //build header element for column group - _buildGroupHeader(){ - this.element.classList.add("tabulator-col-group"); - this.element.setAttribute("role", "columngroup"); - this.element.setAttribute("aria-title", this.definition.title); - - //asign additional css classes to column header - if(this.definition.cssClass){ - var classNames = this.definition.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - - this.element.appendChild(this.groupElement); - } - - //flat field lookup - _getFlatData(data){ - return data[this.field]; - } - - //nested field lookup - _getNestedData(data){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length, - output; - - for(let i = 0; i < length; i++){ - - dataObj = dataObj[structure[i]]; - - output = dataObj; - - if(!dataObj){ - break; - } - } - - return output; - } - - //flat field set - _setFlatData(data, value){ - if(this.field){ - data[this.field] = value; - } - } - - //nested field set - _setNestedData(data, value){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length; - - for(let i = 0; i < length; i++){ - - if(i == length -1){ - dataObj[structure[i]] = value; - }else { - if(!dataObj[structure[i]]){ - if(typeof value !== "undefined"){ - dataObj[structure[i]] = {}; - }else { - break; - } - } - - dataObj = dataObj[structure[i]]; - } - } - } - - //attach column to this group - attachColumn(column){ - if(this.groupElement){ - this.columns.push(column); - this.groupElement.appendChild(column.getElement()); - - column.columnRendered(); - }else { - console.warn("Column Warning - Column being attached to another column instead of column group"); - } - } - - //vertically align header in column - verticalAlign(alignment, height){ - - //calculate height of column header and group holder element - var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight); - // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight; - - this.element.style.height = parentHeight + "px"; - - this.dispatch("column-height", this, this.element.style.height); - - if(this.isGroup){ - this.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + "px"; - } - - //vertically align cell contents - // if(!this.isGroup && alignment !== "top"){ - // if(alignment === "bottom"){ - // this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + "px"; - // }else{ - // this.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + "px"; - // } - // } - - this.columns.forEach(function(column){ - column.verticalAlign(alignment); - }); - } - - //clear vertical alignment - clearVerticalAlign(){ - this.element.style.paddingTop = ""; - this.element.style.height = ""; - this.element.style.minHeight = ""; - this.groupElement.style.minHeight = ""; - - this.columns.forEach(function(column){ - column.clearVerticalAlign(); - }); - - this.dispatch("column-height", this, ""); - } - - //// Retrieve Column Information //// - //return column header element - getElement(){ - return this.element; - } - - //return column group element - getGroupElement(){ - return this.groupElement; - } - - //return field name - getField(){ - return this.field; - } - - getTitleDownload() { - return this.titleDownload; - } - - //return the first column in a group - getFirstColumn(){ - if(!this.isGroup){ - return this; - }else { - if(this.columns.length){ - return this.columns[0].getFirstColumn(); - }else { - return false; - } - } - } - - //return the last column in a group - getLastColumn(){ - if(!this.isGroup){ - return this; - }else { - if(this.columns.length){ - return this.columns[this.columns.length -1].getLastColumn(); - }else { - return false; - } - } - } - - //return all columns in a group - getColumns(traverse){ - var columns = []; - - if(traverse){ - this.columns.forEach((column) => { - columns.push(column); - - columns = columns.concat(column.getColumns(true)); - }); - }else { - columns = this.columns; - } - - return columns; - } - - //return all columns in a group - getCells(){ - return this.cells; - } - - //retrieve the top column in a group of columns - getTopColumn(){ - if(this.parent.isGroup){ - return this.parent.getTopColumn(); - }else { - return this; - } - } - - //return column definition object - getDefinition(updateBranches){ - var colDefs = []; - - if(this.isGroup && updateBranches){ - this.columns.forEach(function(column){ - colDefs.push(column.getDefinition(true)); - }); - - this.definition.columns = colDefs; - } - - return this.definition; - } - - //////////////////// Actions //////////////////// - checkColumnVisibility(){ - var visible = false; - - this.columns.forEach(function(column){ - if(column.visible){ - visible = true; - } - }); - - if(visible){ - this.show(); - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - }else { - this.hide(); - } - } - - //show column - show(silent, responsiveToggle){ - if(!this.visible){ - this.visible = true; - - this.element.style.display = ""; - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.show(); - }); - - if(!this.isGroup && this.width === null){ - this.reinitializeWidth(); - } - - this.table.columnManager.verticalAlignHeaders(); - - this.dispatch("column-show", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), true); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - //hide column - hide(silent, responsiveToggle){ - if(this.visible){ - this.visible = false; - - this.element.style.display = "none"; - - this.table.columnManager.verticalAlignHeaders(); - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.hide(); - }); - - this.dispatch("column-hide", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - matchChildWidths(){ - var childWidth = 0; - - if(this.contentElement && this.columns.length){ - this.columns.forEach(function(column){ - if(column.visible){ - childWidth += column.getWidth(); - } - }); - - this.contentElement.style.maxWidth = (childWidth - 1) + "px"; - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - } - } - - removeChild(child){ - var index = this.columns.indexOf(child); - - if(index > -1){ - this.columns.splice(index, 1); - } - - if(!this.columns.length){ - this.delete(); - } - } - - setWidth(width){ - this.widthFixed = true; - this.setWidthActual(width); - } - - setWidthActual(width){ - if(isNaN(width)){ - width = Math.floor((this.table.element.clientWidth/100) * parseInt(width)); - } - - width = Math.max(this.minWidth, width); - - if(this.maxWidth){ - width = Math.min(this.maxWidth, width); - } - - this.width = width; - this.widthStyled = width ? width + "px" : ""; - - this.element.style.width = this.widthStyled; - - if(!this.isGroup){ - this.cells.forEach(function(cell){ - cell.setWidth(); - }); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - this.dispatch("column-width", this); - } - - checkCellHeights(){ - var rows = []; - - this.cells.forEach(function(cell){ - if(cell.row.heightInitialized){ - if(cell.row.getElement().offsetParent !== null){ - rows.push(cell.row); - cell.row.clearCellHeight(); - }else { - cell.row.heightInitialized = false; - } - } - }); - - rows.forEach(function(row){ - row.calcHeight(); - }); - - rows.forEach(function(row){ - row.setCellHeight(); - }); - } - - getWidth(){ - var width = 0; - - if(this.isGroup){ - this.columns.forEach(function(column){ - if(column.visible){ - width += column.getWidth(); - } - }); - }else { - width = this.width; - } - - return width; - } - - getLeftOffset(){ - var offset = this.element.offsetLeft; - - if(this.parent.isGroup){ - offset += this.parent.getLeftOffset(); - } - - return offset; - } - - getHeight(){ - return Math.ceil(this.element.getBoundingClientRect().height); - } - - setMinWidth(minWidth){ - if(this.maxWidth && minWidth > this.maxWidth){ - minWidth = this.maxWidth; - - console.warn("the minWidth ("+ minWidth + "px) for column '" + this.field + "' cannot be bigger that its maxWidth ("+ this.maxWidthStyled + ")"); - } - - this.minWidth = minWidth; - this.minWidthStyled = minWidth ? minWidth + "px" : ""; - - this.element.style.minWidth = this.minWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMinWidth(); - }); - } - - setMaxWidth(maxWidth){ - if(this.minWidth && maxWidth < this.minWidth){ - maxWidth = this.minWidth; - - console.warn("the maxWidth ("+ maxWidth + "px) for column '" + this.field + "' cannot be smaller that its minWidth ("+ this.minWidthStyled + ")"); - } - - this.maxWidth = maxWidth; - this.maxWidthStyled = maxWidth ? maxWidth + "px" : ""; - - this.element.style.maxWidth = this.maxWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMaxWidth(); - }); - } - - delete(){ - return new Promise((resolve, reject) => { - if(this.isGroup){ - this.columns.forEach(function(column){ - column.delete(); - }); - } - - this.dispatch("column-delete", this); - - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.contentElement = false; - this.titleElement = false; - this.groupElement = false; - - if(this.parent.isGroup){ - this.parent.removeChild(this); - } - - this.table.columnManager.deregisterColumn(this); - - this.table.columnManager.rerenderColumns(true); - - this.dispatch("column-deleted", this); - - resolve(); - }); - } - - columnRendered(){ - if(this.titleFormatterRendered){ - this.titleFormatterRendered(); - } - - this.dispatch("column-rendered", this); - } - - //////////////// Cell Management ///////////////// - //generate cell for this column - generateCell(row){ - var cell = new Cell(this, row); - - this.cells.push(cell); - - return cell; - } - - nextColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._nextVisibleColumn(index + 1) : false; - } - - _nextVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._nextVisibleColumn(index + 1); - } - - prevColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._prevVisibleColumn(index - 1) : false; - } - - _prevVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._prevVisibleColumn(index - 1); - } - - reinitializeWidth(force){ - this.widthFixed = false; - - //set width if present - if(typeof this.definition.width !== "undefined" && !force){ - // maxInitialWidth ignored here as width specified - this.setWidth(this.definition.width); - } - - this.dispatch("column-width-fit-before", this); - - this.fitToData(force); - - this.dispatch("column-width-fit-after", this); - } - - //set column width to maximum cell width for non group columns - fitToData(force){ - if(this.isGroup){ - return; - } - - if(!this.widthFixed){ - this.element.style.width = ""; - - this.cells.forEach((cell) => { - cell.clearWidth(); - }); - } - - var maxWidth = this.element.offsetWidth; - - if(!this.width || !this.widthFixed){ - this.cells.forEach((cell) => { - var width = cell.getWidth(); - - if(width > maxWidth){ - maxWidth = width; - } - }); - - if(maxWidth){ - var setTo = maxWidth + 1; - if (this.maxInitialWidth && !force) { - setTo = Math.min(setTo, this.maxInitialWidth); - } - this.setWidthActual(setTo); - } - } - } - - updateDefinition(updates){ - var definition; - - if(!this.isGroup){ - if(!this.parent.isGroup){ - definition = Object.assign({}, this.getDefinition()); - definition = Object.assign(definition, updates); - - return this.table.columnManager.addColumn(definition, false, this) - .then((column) => { - - if(definition.field == this.field){ - this.field = false; //clear field name to prevent deletion of duplicate column from arrays - } - - return this.delete() - .then(() => { - return column.getComponent(); - }); - - }); - }else { - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - }else { - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - } - - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new ColumnComponent(this); - } - - return this.component; - } - - getPosition(){ - return this.table.columnManager.getVisibleColumnsByIndex().indexOf(this) + 1; - } -} - -Column.defaultOptionList = defaultColumnOptions; - -//public row object -class RowComponent { - - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - getIndex(){ - return this._row.getData("data")[this._row.table.options.index]; - } - - getPosition(){ - return this._row.getPosition(); - } - - watchPosition(callback){ - return this._row.watchPosition(callback); - } - - delete(){ - return this._row.delete(); - } - - scrollTo(position, ifVisible){ - return this._row.table.rowManager.scrollToRow(this._row, position, ifVisible); - } - - move(to, after){ - this._row.moveToRow(to, after); - } - - update(data){ - return this._row.updateData(data); - } - - normalizeHeight(){ - this._row.normalizeHeight(true); - } - - _getSelf(){ - return this._row; - } - - reformat(){ - return this._row.reinitialize(); - } - - getTable(){ - return this._row.table; - } - - getNextRow(){ - var row = this._row.nextRow(); - return row ? row.getComponent() : row; - } - - getPrevRow(){ - var row = this._row.prevRow(); - return row ? row.getComponent() : row; - } -} - -class Row extends CoreFeature{ - constructor (data, parent, type = "row"){ - super(parent.table); - - this.parent = parent; - this.data = {}; - this.type = type; //type of element - this.element = false; - this.modules = {}; //hold module variables; - this.cells = []; - this.height = 0; //hold element height - this.heightStyled = ""; //hold element height pre-styled to improve render efficiency - this.manualHeight = false; //user has manually set row height - this.outerHeight = 0; //hold elements outer height - this.initialized = false; //element has been rendered - this.heightInitialized = false; //element has resized cells to fit - this.position = 0; //store position of element in row list - this.positionWatchers = []; - - this.component = null; - - this.created = false; - - this.setData(data); - } - - create(){ - if(!this.created){ - this.created = true; - this.generateElement(); - } - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.setAttribute("role", "row"); - - this.element = el; - } - - getElement(){ - this.create(); - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - generateElement(){ - this.createElement(); - this.dispatch("row-init", this); - } - - generateCells(){ - this.cells = this.table.columnManager.generateCells(this); - } - - //functions to setup on first render - initialize(force, inFragment){ - this.create(); - - if(!this.initialized || force){ - - this.deleteCells(); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.dispatch("row-layout-before", this); - - this.generateCells(); - - this.initialized = true; - - this.table.columnManager.renderer.renderRowCells(this, inFragment); - - if(force){ - this.normalizeHeight(); - } - - this.dispatch("row-layout", this); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - - this.dispatch("row-layout-after", this); - }else { - this.table.columnManager.renderer.rerenderRowCells(this, inFragment); - } - } - - rendered(){ - this.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - - reinitializeHeight(){ - this.heightInitialized = false; - - if(this.element && this.element.offsetParent !== null){ - this.normalizeHeight(true); - } - } - - deinitialize(){ - this.initialized = false; - } - - deinitializeHeight(){ - this.heightInitialized = false; - } - - reinitialize(children){ - this.initialized = false; - this.heightInitialized = false; - - if(!this.manualHeight){ - this.height = 0; - this.heightStyled = ""; - } - - if(this.element && this.element.offsetParent !== null){ - this.initialize(true); - } - - this.dispatch("row-relayout", this); - } - - //get heights when doing bulk row style calcs in virtual DOM - calcHeight(force){ - var maxHeight = 0, - minHeight; - - if(this.table.options.rowHeight){ - this.height = this.table.options.rowHeight; - }else { - minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0; - - this.cells.forEach(function(cell){ - var height = cell.getHeight(); - if(height > maxHeight){ - maxHeight = height; - } - }); - - if(force){ - this.height = Math.max(maxHeight, minHeight); - }else { - this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight); - } - } - - this.heightStyled = this.height ? this.height + "px" : ""; - this.outerHeight = this.element.offsetHeight; - } - - //set of cells - setCellHeight(){ - this.cells.forEach(function(cell){ - cell.setHeight(); - }); - - this.heightInitialized = true; - } - - clearCellHeight(){ - this.cells.forEach(function(cell){ - cell.clearHeight(); - }); - } - - //normalize the height of elements in the row - normalizeHeight(force){ - if(force && !this.table.options.rowHeight){ - this.clearCellHeight(); - } - - this.calcHeight(force); - - this.setCellHeight(); - } - - //set height of rows - setHeight(height, force){ - if(this.height != height || force){ - - this.manualHeight = true; - - this.height = height; - this.heightStyled = height ? height + "px" : ""; - - this.setCellHeight(); - - // this.outerHeight = this.element.outerHeight(); - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - //return rows outer Width - getWidth(){ - return this.element.offsetWidth; - } - - //////////////// Cell Management ///////////////// - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Data Management ///////////////// - setData(data){ - this.data = this.chain("row-data-init-before", [this, data], undefined, data); - - this.dispatch("row-data-init-after", this); - } - - //update the rows data - updateData(updatedData){ - var visible = this.element && Helpers.elVisible(this.element), - tempData = {}, - newRowData; - - return new Promise((resolve, reject) => { - - if(typeof updatedData === "string"){ - updatedData = JSON.parse(updatedData); - } - - this.dispatch("row-data-save-before", this); - - if(this.subscribed("row-data-changing")){ - tempData = Object.assign(tempData, this.data); - tempData = Object.assign(tempData, updatedData); - } - - newRowData = this.chain("row-data-changing", [this, tempData, updatedData], null, updatedData); - - //set data - for (let attrname in newRowData) { - this.data[attrname] = newRowData[attrname]; - } - - this.dispatch("row-data-save-after", this); - - //update affected cells only - for (let attrname in updatedData) { - - let columns = this.table.columnManager.getColumnsByFieldRoot(attrname); - - columns.forEach((column) => { - let cell = this.getCell(column.getField()); - - if(cell){ - let value = column.getFieldValue(newRowData); - if(cell.getValue() !== value){ - cell.setValueProcessData(value); - - if(visible){ - cell.cellRendered(); - } - } - } - }); - } - - //Partial reinitialization if visible - if(visible){ - this.normalizeHeight(true); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - }else { - this.initialized = false; - this.height = 0; - this.heightStyled = ""; - } - - this.dispatch("row-data-changed", this, visible, updatedData); - - //this.reinitialize(); - - this.dispatchExternal("rowUpdated", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - resolve(); - }); - } - - getData(transform){ - if(transform){ - return this.chain("row-data-retrieve", [this, transform], null, this.data); - } - - return this.data; - } - - getCell(column){ - var match = false; - - column = this.table.columnManager.findColumn(column); - - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - match = this.cells.find(function(cell){ - return cell.column === column; - }); - - return match; - } - - getCellIndex(findCell){ - return this.cells.findIndex(function(cell){ - return cell === findCell; - }); - } - - findCell(subject){ - return this.cells.find((cell) => { - return cell.element === subject; - }); - } - - getCells(){ - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - return this.cells; - } - - nextRow(){ - var row = this.table.rowManager.nextDisplayRow(this, true); - return row || false; - } - - prevRow(){ - var row = this.table.rowManager.prevDisplayRow(this, true); - return row || false; - } - - moveToRow(to, before){ - var toRow = this.table.rowManager.findRow(to); - - if(toRow){ - this.table.rowManager.moveRowActual(this, toRow, !before); - this.table.rowManager.refreshActiveData("display", false, true); - }else { - console.warn("Move Error - No matching row found:", to); - } - } - - ///////////////////// Actions ///////////////////// - delete(){ - this.dispatch("row-delete", this); - - this.deleteActual(); - - return Promise.resolve(); - } - - deleteActual(blockRedraw){ - this.detachModules(); - - this.table.rowManager.deleteRow(this, blockRedraw); - - this.deleteCells(); - - this.initialized = false; - this.heightInitialized = false; - this.element = false; - - this.dispatch("row-deleted", this); - } - - detachModules(){ - this.dispatch("row-deleting", this); - } - - deleteCells(){ - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - } - - wipe(){ - this.detachModules(); - this.deleteCells(); - - if(this.element){ - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - this.element = false; - this.modules = {}; - } - - isDisplayed(){ - return this.table.rowManager.getDisplayRows().includes(this); - } - - getPosition(){ - return this.isDisplayed() ? this.position : false; - } - - setPosition(position){ - if(position != this.position){ - this.position = position; - - this.positionWatchers.forEach((callback) => { - callback(this.position); - }); - } - } - - watchPosition(callback){ - this.positionWatchers.push(callback); - - callback(this.position); - } - - getGroup(){ - return this.modules.group || false; - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new RowComponent(this); - } - - return this.component; - } -} - -var defaultCalculations = { - "avg":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2; - - if(values.length){ - output = values.reduce(function(sum, value){ - return Number(sum) + Number(value); - }); - - output = output / values.length; - - output = precision !== false ? output.toFixed(precision) : output; - } - - return parseFloat(output).toString(); - }, - "max":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value > output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "min":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value < output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "sum":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - if(values.length){ - values.forEach(function(value){ - value = Number(value); - - output += !isNaN(value) ? Number(value) : 0; - }); - } - - return precision !== false ? output.toFixed(precision) : output; - }, - "concat":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - output = values.reduce(function(sum, value){ - return String(sum) + String(value); - }); - } - - return output; - }, - "count":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - values.forEach(function(value){ - if(value){ - output ++; - } - }); - } - - return output; - }, - "unique":function(values, data, calcParams){ - var unique = values.filter((value, index) => { - return (values || value === 0) && values.indexOf(value) === index; - }); - - return unique.length; - }, -}; - -class ColumnCalcs extends Module{ - - constructor(table){ - super(table); - - this.topCalcs = []; - this.botCalcs = []; - this.genColumn = false; - this.topElement = this.createElement(); - this.botElement = this.createElement(); - this.topRow = false; - this.botRow = false; - this.topInitialized = false; - this.botInitialized = false; - - this.blocked = false; - this.recalcAfterBlock = false; - - this.registerTableOption("columnCalcs", true); - - this.registerColumnOption("topCalc"); - this.registerColumnOption("topCalcParams"); - this.registerColumnOption("topCalcFormatter"); - this.registerColumnOption("topCalcFormatterParams"); - this.registerColumnOption("bottomCalc"); - this.registerColumnOption("bottomCalcParams"); - this.registerColumnOption("bottomCalcFormatter"); - this.registerColumnOption("bottomCalcFormatterParams"); - } - - createElement (){ - var el = document.createElement("div"); - el.classList.add("tabulator-calcs-holder"); - return el; - } - - initialize(){ - this.genColumn = new Column({field:"value"}, this); - - this.subscribe("cell-value-changed", this.cellValueChanged.bind(this)); - this.subscribe("column-init", this.initializeColumnCheck.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("column-moved", this.recalcActiveRows.bind(this)); - this.subscribe("column-add", this.recalcActiveRows.bind(this)); - this.subscribe("data-refreshed", this.recalcActiveRowsRefresh.bind(this)); - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - - this.subscribe("redraw-blocked", this.blockRedraw.bind(this)); - this.subscribe("redraw-restored", this.restoreRedraw.bind(this)); - - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - - this.registerTableFunction("getCalcResults", this.getResults.bind(this)); - this.registerTableFunction("recalc", this.userRecalc.bind(this)); - - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - - tableRedraw(force){ - this.recalc(this.table.rowManager.activeRows); - - if(force){ - this.redraw(); - } - } - - blockRedraw(){ - this.blocked = true; - this.recalcAfterBlock = false; - } - - - restoreRedraw(){ - this.blocked = false; - - if(this.recalcAfterBlock){ - this.recalcAfterBlock = false; - this.recalcActiveRowsRefresh(); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - userRecalc(){ - this.recalc(this.table.rowManager.activeRows); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - blockCheck(){ - if(this.blocked){ - this.recalcAfterBlock = true; - } - - return this.blocked; - } - - visibleRows(viewable, rows){ - if(this.topRow){ - rows.unshift(this.topRow); - } - - if(this.botRow){ - rows.push(this.botRow); - } - - return rows; - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.recalcRowGroup(row); - }else { - this.recalcActiveRows(); - } - } - - recalcActiveRowsRefresh(){ - if(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){ - this.recalcAll(); - }else { - this.recalcActiveRows(); - } - } - - recalcActiveRows(){ - this.recalc(this.table.rowManager.activeRows); - } - - cellValueChanged(cell){ - if(cell.column.definition.topCalc || cell.column.definition.bottomCalc){ - if(this.table.options.groupBy){ - if(this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both"){ - this.recalcActiveRows(); - } - - if(this.table.options.columnCalcs != "table"){ - this.recalcRowGroup(cell.row); - } - }else { - this.recalcActiveRows(); - } - } - } - - initializeColumnCheck(column){ - if(column.definition.topCalc || column.definition.bottomCalc){ - this.initializeColumn(column); - } - } - - //initialize column calcs - initializeColumn(column){ - var def = column.definition; - - var config = { - topCalcParams:def.topCalcParams || {}, - botCalcParams:def.bottomCalcParams || {}, - }; - - if(def.topCalc){ - - switch(typeof def.topCalc){ - case "string": - if(ColumnCalcs.calculations[def.topCalc]){ - config.topCalc = ColumnCalcs.calculations[def.topCalc]; - }else { - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc); - } - break; - - case "function": - config.topCalc = def.topCalc; - break; - - } - - if(config.topCalc){ - column.modules.columnCalcs = config; - this.topCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeTopRow(); - } - } - - } - - if(def.bottomCalc){ - switch(typeof def.bottomCalc){ - case "string": - if(ColumnCalcs.calculations[def.bottomCalc]){ - config.botCalc = ColumnCalcs.calculations[def.bottomCalc]; - }else { - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc); - } - break; - - case "function": - config.botCalc = def.bottomCalc; - break; - - } - - if(config.botCalc){ - column.modules.columnCalcs = config; - this.botCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeBottomRow(); - } - } - } - - } - - //dummy functions to handle being mock column manager - registerColumnField(){} - - removeCalcs(){ - var changed = false; - - if(this.topInitialized){ - this.topInitialized = false; - this.topElement.parentNode.removeChild(this.topElement); - changed = true; - } - - if(this.botInitialized){ - this.botInitialized = false; - this.footerRemove(this.botElement); - changed = true; - } - - if(changed){ - this.table.rowManager.adjustTableSize(); - } - } - - reinitializeCalcs(){ - if(this.topCalcs.length){ - this.initializeTopRow(); - } - - if(this.botCalcs.length){ - this.initializeBottomRow(); - } - } - - initializeTopRow(){ - var fragment = document.createDocumentFragment(); - - if(!this.topInitialized){ - - fragment.appendChild(document.createElement("br")); - fragment.appendChild(this.topElement); - - this.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling); - this.topInitialized = true; - } - } - - initializeBottomRow(){ - if(!this.botInitialized){ - this.footerPrepend(this.botElement); - this.botInitialized = true; - } - } - - scrollHorizontal(left){ - if(this.botInitialized && this.botRow){ - this.botElement.scrollLeft = left; - } - } - - recalc(rows){ - var data, row; - - if(!this.blockCheck()){ - if(this.topInitialized || this.botInitialized){ - data = this.rowsToData(rows); - - if(this.topInitialized){ - if(this.topRow){ - this.topRow.deleteCells(); - } - - row = this.generateRow("top", data); - this.topRow = row; - while(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild); - this.topElement.appendChild(row.getElement()); - row.initialize(true); - } - - if(this.botInitialized){ - if(this.botRow){ - this.botRow.deleteCells(); - } - - row = this.generateRow("bottom", data); - this.botRow = row; - while(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild); - this.botElement.appendChild(row.getElement()); - row.initialize(true); - } - - this.table.rowManager.adjustTableSize(); - - //set resizable handles - if(this.table.modExists("frozenColumns")){ - this.table.modules.frozenColumns.layout(); - } - } - } - } - - recalcRowGroup(row){ - this.recalcGroup(this.table.modules.groupRows.getRowGroup(row)); - } - - recalcAll(){ - if(this.topCalcs.length || this.botCalcs.length){ - if(this.table.options.columnCalcs !== "group"){ - this.recalcActiveRows(); - } - - if(this.table.options.groupBy && this.table.options.columnCalcs !== "table"){ - - var groups = this.table.modules.groupRows.getChildGroups(); - - groups.forEach((group) => { - this.recalcGroup(group); - }); - } - } - } - - recalcGroup(group){ - var data, rowData; - - if(!this.blockCheck()){ - if(group){ - if(group.calcs){ - if(group.calcs.bottom){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("bottom", data); - - group.calcs.bottom.updateData(rowData); - group.calcs.bottom.reinitialize(); - } - - if(group.calcs.top){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("top", data); - - group.calcs.top.updateData(rowData); - group.calcs.top.reinitialize(); - } - } - } - } - } - - //generate top stats row - generateTopRow(rows){ - return this.generateRow("top", this.rowsToData(rows)); - } - //generate bottom stats row - generateBottomRow(rows){ - return this.generateRow("bottom", this.rowsToData(rows)); - } - - rowsToData(rows){ - var data = []; - - rows.forEach((row) => { - data.push(row.getData()); - - if(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){ - if(row.modules.dataTree && row.modules.dataTree.open){ - var children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row)); - data = data.concat(children); - } - } - }); - - return data; - } - - //generate stats row - generateRow(pos, data){ - var rowData = this.generateRowData(pos, data), - row; - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.disable(); - } - - row = new Row(rowData, this, "calc"); - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.enable(); - } - - row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos); - - row.component = false; - - row.getComponent = () => { - if(!row.component){ - row.component = new CalcComponent(row); - } - - return row.component; - }; - - row.generateCells = () => { - - var cells = []; - - this.table.columnManager.columnsByIndex.forEach((column) => { - - //set field name of mock column - this.genColumn.setField(column.getField()); - this.genColumn.hozAlign = column.hozAlign; - - if(column.definition[pos + "CalcFormatter"] && this.table.modExists("format")){ - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]), - params: column.definition[pos + "CalcFormatterParams"] || {}, - }; - }else { - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter("plaintext"), - params:{} - }; - } - - //ensure css class definition is replicated to calculation cell - this.genColumn.definition.cssClass = column.definition.cssClass; - - //generate cell and assign to correct column - var cell = new Cell(this.genColumn, row); - cell.getElement(); - cell.column = column; - cell.setWidth(); - - column.cells.push(cell); - cells.push(cell); - - if(!column.visible){ - cell.hide(); - } - }); - - row.cells = cells; - }; - - return row; - } - - //generate stats row - generateRowData(pos, data){ - var rowData = {}, - calcs = pos == "top" ? this.topCalcs : this.botCalcs, - type = pos == "top" ? "topCalc" : "botCalc", - params, paramKey; - - calcs.forEach(function(column){ - var values = []; - - if(column.modules.columnCalcs && column.modules.columnCalcs[type]){ - data.forEach(function(item){ - values.push(column.getFieldValue(item)); - }); - - paramKey = type + "Params"; - params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey]; - - column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params)); - } - }); - - return rowData; - } - - hasTopCalcs(){ - return !!(this.topCalcs.length); - } - - hasBottomCalcs(){ - return !!(this.botCalcs.length); - } - - //handle table redraw - redraw(){ - if(this.topRow){ - this.topRow.normalizeHeight(true); - } - if(this.botRow){ - this.botRow.normalizeHeight(true); - } - } - - //return the calculated - getResults(){ - var results = {}, - groups; - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - groups = this.table.modules.groupRows.getGroups(true); - - groups.forEach((group) => { - results[group.getKey()] = this.getGroupResults(group); - }); - }else { - results = { - top: this.topRow ? this.topRow.getData() : {}, - bottom: this.botRow ? this.botRow.getData() : {}, - }; - } - - return results; - } - - //get results from a group - getGroupResults(group){ - var groupObj = group._getSelf(), - subGroups = group.getSubGroups(), - subGroupResults = {}, - results = {}; - - subGroups.forEach((subgroup) => { - subGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup); - }); - - results = { - top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {}, - bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {}, - groups: subGroupResults, - }; - - return results; - } - - adjustForScrollbar(width){ - if(this.botRow){ - if(this.table.rtl){ - this.botElement.style.paddingLeft = width + "px"; - }else { - this.botElement.style.paddingRight = width + "px"; - } - } - } -} - -ColumnCalcs.moduleName = "columnCalcs"; - -//load defaults -ColumnCalcs.calculations = defaultCalculations; - -class DataTree extends Module{ - - constructor(table){ - super(table); - - this.indent = 10; - this.field = ""; - this.collapseEl = null; - this.expandEl = null; - this.branchEl = null; - this.elementField = false; - - this.startOpen = function(){}; - - this.registerTableOption("dataTree", false); //enable data tree - this.registerTableOption("dataTreeFilter", true); //filter child rows - this.registerTableOption("dataTreeSort", true); //sort child rows - this.registerTableOption("dataTreeElementColumn", false); - this.registerTableOption("dataTreeBranchElement", true);//show data tree branch element - this.registerTableOption("dataTreeChildIndent", 9); //data tree child indent in px - this.registerTableOption("dataTreeChildField", "_children");//data tre column field to look for child rows - this.registerTableOption("dataTreeCollapseElement", false);//data tree row collapse element - this.registerTableOption("dataTreeExpandElement", false);//data tree row expand element - this.registerTableOption("dataTreeStartExpanded", false); - this.registerTableOption("dataTreeChildColumnCalcs", false);//include visible data tree rows in column calculations - this.registerTableOption("dataTreeSelectPropagate", false);//selecting a parent row selects its children - - //register component functions - this.registerComponentFunction("row", "treeCollapse", this.collapseRow.bind(this)); - this.registerComponentFunction("row", "treeExpand", this.expandRow.bind(this)); - this.registerComponentFunction("row", "treeToggle", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "getTreeParent", this.getTreeParent.bind(this)); - this.registerComponentFunction("row", "getTreeChildren", this.getRowChildren.bind(this)); - this.registerComponentFunction("row", "addTreeChild", this.addTreeChildRow.bind(this)); - this.registerComponentFunction("row", "isTreeExpanded", this.isRowExpanded.bind(this)); - } - - initialize(){ - if(this.table.options.dataTree){ - var dummyEl = null, - options = this.table.options; - - this.field = options.dataTreeChildField; - this.indent = options.dataTreeChildIndent; - - if(this.options("movableRows")){ - console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"); - } - - if(options.dataTreeBranchElement){ - - if(options.dataTreeBranchElement === true){ - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch"); - }else { - if(typeof options.dataTreeBranchElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeBranchElement; - this.branchEl = dummyEl.firstChild; - }else { - this.branchEl = options.dataTreeBranchElement; - } - } - }else { - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch-empty"); - } - - if(options.dataTreeCollapseElement){ - if(typeof options.dataTreeCollapseElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeCollapseElement; - this.collapseEl = dummyEl.firstChild; - }else { - this.collapseEl = options.dataTreeCollapseElement; - } - }else { - this.collapseEl = document.createElement("div"); - this.collapseEl.classList.add("tabulator-data-tree-control"); - this.collapseEl.tabIndex = 0; - this.collapseEl.innerHTML = "
        "; - } - - if(options.dataTreeExpandElement){ - if(typeof options.dataTreeExpandElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeExpandElement; - this.expandEl = dummyEl.firstChild; - }else { - this.expandEl = options.dataTreeExpandElement; - } - }else { - this.expandEl = document.createElement("div"); - this.expandEl.classList.add("tabulator-data-tree-control"); - this.expandEl.tabIndex = 0; - this.expandEl.innerHTML = "
        "; - } - - - switch(typeof options.dataTreeStartExpanded){ - case "boolean": - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded; - }; - break; - - case "function": - this.startOpen = options.dataTreeStartExpanded; - break; - - default: - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded[index]; - }; - break; - } - - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("row-deleted", this.rowDelete.bind(this),0); - this.subscribe("row-data-changed", this.rowDataChanged.bind(this), 10); - this.subscribe("cell-value-updated", this.cellValueChanged.bind(this)); - this.subscribe("edit-cancelled", this.cellValueChanged.bind(this)); - this.subscribe("column-moving-rows", this.columnMoving.bind(this)); - this.subscribe("table-built", this.initializeElementField.bind(this)); - this.subscribe("table-redrawing", this.tableRedrawing.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 30); - } - } - - tableRedrawing(force){ - var rows; - - if(force){ - rows = this.table.rowManager.getRows(); - - rows.forEach((row) => { - this.reinitializeRowChildren(row); - }); - } - } - - initializeElementField(){ - var firstCol = this.table.columnManager.getFirstVisibleColumn(); - - this.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false); - } - - getRowChildren(row){ - return this.getTreeChildren(row, true); - } - - columnMoving(){ - var rows = []; - - this.table.rowManager.rows.forEach((row) => { - rows = rows.concat(this.getTreeChildren(row, false, true)); - }); - - return rows; - } - - rowDataChanged(row, visible, updatedData){ - if(this.redrawNeeded(updatedData)){ - this.initializeRow(row); - - if(visible){ - this.layoutRow(row); - this.refreshData(true); - } - } - } - - cellValueChanged(cell){ - var field = cell.column.getField(); - - if(field === this.elementField){ - this.layoutRow(cell.row); - } - } - - initializeRow(row){ - var childArray = row.getData()[this.field]; - var isArray = Array.isArray(childArray); - - var children = isArray || (!isArray && typeof childArray === "object" && childArray !== null); - - if(!children && row.modules.dataTree && row.modules.dataTree.branchEl){ - row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl); - } - - if(!children && row.modules.dataTree && row.modules.dataTree.controlEl){ - row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl); - } - - row.modules.dataTree = { - index: row.modules.dataTree ? row.modules.dataTree.index : 0, - open: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false, - controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false, - branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false, - parent: row.modules.dataTree ? row.modules.dataTree.parent : false, - children:children, - }; - } - - reinitializeRowChildren(row){ - var children = this.getTreeChildren(row, false, true); - - children.forEach(function(child){ - child.reinitialize(true); - }); - } - - layoutRow(row){ - var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0], - el = cell.getElement(), - config = row.modules.dataTree; - - if(config.branchEl){ - if(config.branchEl.parentNode){ - config.branchEl.parentNode.removeChild(config.branchEl); - } - config.branchEl = false; - } - - if(config.controlEl){ - if(config.controlEl.parentNode){ - config.controlEl.parentNode.removeChild(config.controlEl); - } - config.controlEl = false; - } - - this.generateControlElement(row, el); - - row.getElement().classList.add("tabulator-tree-level-" + config.index); - - if(config.index){ - if(this.branchEl){ - config.branchEl = this.branchEl.cloneNode(true); - el.insertBefore(config.branchEl, el.firstChild); - - if(this.table.rtl){ - config.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + "px"; - }else { - config.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + "px"; - } - }else { - - if(this.table.rtl){ - el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + "px"; - }else { - el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + "px"; - } - } - } - } - - generateControlElement(row, el){ - var config = row.modules.dataTree, - oldControl = config.controlEl; - - el = el || row.getCells()[0].getElement(); - - if(config.children !== false){ - - if(config.open){ - config.controlEl = this.collapseEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.collapseRow(row); - }); - }else { - config.controlEl = this.expandEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.expandRow(row); - }); - } - - config.controlEl.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - if(oldControl && oldControl.parentNode === el){ - oldControl.parentNode.replaceChild(config.controlEl,oldControl); - }else { - el.insertBefore(config.controlEl, el.firstChild); - } - } - } - - getRows(rows){ - var output = []; - - rows.forEach((row, i) => { - var config, children; - - output.push(row); - - if(row instanceof Row){ - - row.create(); - - config = row.modules.dataTree; - - if(!config.index && config.children !== false){ - children = this.getChildren(row); - - children.forEach((child) => { - child.create(); - output.push(child); - }); - } - } - }); - - return output; - } - - getChildren(row, allChildren){ - var config = row.modules.dataTree, - children = [], - output = []; - - if(config.children !== false && (config.open || allChildren)){ - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else { - children = config.children; - } - - if(this.table.modExists("sort") && this.table.options.dataTreeSort){ - this.table.modules.sort.sort(children); - } - - children.forEach((child) => { - output.push(child); - - var subChildren = this.getChildren(child); - - subChildren.forEach((sub) => { - output.push(sub); - }); - }); - } - - return output; - } - - generateChildren(row){ - var children = []; - - var childArray = row.getData()[this.field]; - - if(!Array.isArray(childArray)){ - childArray = [childArray]; - } - - childArray.forEach((childData) => { - var childRow = new Row(childData || {}, this.table.rowManager); - - childRow.create(); - - childRow.modules.dataTree.index = row.modules.dataTree.index + 1; - childRow.modules.dataTree.parent = row; - - if(childRow.modules.dataTree.children){ - childRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index); - } - children.push(childRow); - }); - - return children; - } - - expandRow(row, silent){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = true; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowExpanded", row.getComponent(), row.modules.dataTree.index); - } - } - - collapseRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = false; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowCollapsed", row.getComponent(), row.modules.dataTree.index); - } - } - - toggleRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - if(config.open){ - this.collapseRow(row); - }else { - this.expandRow(row); - } - } - } - - isRowExpanded(row){ - return row.modules.dataTree.open; - } - - getTreeParent(row){ - return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false; - } - - getTreeParentRoot(row){ - return row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row; - } - - getFilteredTreeChildren(row){ - var config = row.modules.dataTree, - output = [], children; - - if(config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else { - children = config.children; - } - - children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(childRow); - } - }); - } - - return output; - } - - rowDelete(row){ - var parent = row.modules.dataTree.parent, - childIndex; - - if(parent){ - childIndex = this.findChildIndex(row, parent); - - if(childIndex !== false){ - parent.data[this.field].splice(childIndex, 1); - } - - if(!parent.data[this.field].length){ - delete parent.data[this.field]; - } - - this.initializeRow(parent); - this.layoutRow(parent); - } - - this.refreshData(true); - } - - addTreeChildRow(row, data, top, index){ - var childIndex = false; - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(!Array.isArray(row.data[this.field])){ - row.data[this.field] = []; - - row.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index); - } - - if(typeof index !== "undefined"){ - childIndex = this.findChildIndex(index, row); - - if(childIndex !== false){ - row.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data); - } - } - - if(childIndex === false){ - if(top){ - row.data[this.field].unshift(data); - }else { - row.data[this.field].push(data); - } - } - - this.initializeRow(row); - this.layoutRow(row); - - this.refreshData(true); - } - - findChildIndex(subject, parent){ - var match = false; - - if(typeof subject == "object"){ - - if(subject instanceof Row){ - //subject is row element - match = subject.data; - }else if(subject instanceof RowComponent){ - //subject is public row component - match = subject._getSelf().data; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - if(parent.modules.dataTree){ - match = parent.modules.dataTree.children.find((childRow) => { - return childRow instanceof Row ? childRow.element === subject : false; - }); - - if(match){ - match = match.data; - } - } - }else if(subject === null){ - match = false; - } - - }else if(typeof subject == "undefined"){ - match = false; - }else { - //subject should be treated as the index of the row - match = parent.data[this.field].find((row) => { - return row.data[this.table.options.index] == subject; - }); - } - - if(match){ - - if(Array.isArray(parent.data[this.field])){ - match = parent.data[this.field].indexOf(match); - } - - if(match == -1){ - match = false; - } - } - - //catch all for any other type of input - - return match; - } - - getTreeChildren(row, component, recurse){ - var config = row.modules.dataTree, - output = []; - - if(config && config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - config.children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(component ? childRow.getComponent() : childRow); - - if(recurse){ - output = output.concat(this.getTreeChildren(childRow, component, recurse)); - } - } - }); - } - - return output; - } - - getChildField(){ - return this.field; - } - - redrawNeeded(data){ - return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false); - } -} - -DataTree.moduleName = "dataTree"; - -function csv(list, options = {}, setFileContents){ - var delimiter = options.delimiter ? options.delimiter : ",", - fileContents = [], - headers = []; - - list.forEach((row) => { - var item = []; - - switch(row.type){ - case "group": - console.warn("Download Warning - CSV downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - CSV downloader cannot process column calculations"); - break; - - case "header": - row.columns.forEach((col, i) => { - if(col && col.depth === 1){ - headers[i] = typeof col.value == "undefined" || col.value === null ? "" : ('"' + String(col.value).split('"').join('""') + '"'); - } - }); - break; - - case "row": - row.columns.forEach((col) => { - - if(col){ - - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - item.push('"' + String(col.value).split('"').join('""') + '"'); - } - }); - - fileContents.push(item.join(delimiter)); - break; - } - }); - - if(headers.length){ - fileContents.unshift(headers.join(delimiter)); - } - - fileContents = fileContents.join("\n"); - - if(options.bom){ - fileContents = "\ufeff" + fileContents; - } - - setFileContents(fileContents, "text/csv"); -} - -function json(list, options, setFileContents){ - var fileContents = []; - - list.forEach((row) => { - var item = {}; - - switch(row.type){ - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if(col){ - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(item); - break; - } - }); - - fileContents = JSON.stringify(fileContents, null, '\t'); - - setFileContents(fileContents, "application/json"); -} - -function pdf(list, options = {}, setFileContents){ - var header = [], - body = [], - autoTableParams = {}, - rowGroupStyles = options.rowGroupStyles || { - fontStyle: "bold", - fontSize: 12, - cellPadding: 6, - fillColor: 220, - }, - rowCalcStyles = options.rowCalcStyles || { - fontStyle: "bold", - fontSize: 10, - cellPadding: 4, - fillColor: 232, - }, - jsPDFParams = options.jsPDF || {}, - title = options.title ? options.title : ""; - - if(!jsPDFParams.orientation){ - jsPDFParams.orientation = options.orientation || "landscape"; - } - - if(!jsPDFParams.unit){ - jsPDFParams.unit = "pt"; - } - - //parse row list - list.forEach((row) => { - switch(row.type){ - case "header": - header.push(parseRow(row)); - break; - - case "group": - body.push(parseRow(row, rowGroupStyles)); - break; - - case "calc": - body.push(parseRow(row, rowCalcStyles)); - break; - - case "row": - body.push(parseRow(row)); - break; - } - }); - - function parseRow(row, styles){ - var rowData = []; - - row.columns.forEach((col) =>{ - var cell; - - if(col){ - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - cell = { - content:col.value, - colSpan:col.width, - rowSpan:col.height, - }; - - if(styles){ - cell.styles = styles; - } - - rowData.push(cell); - } - }); - - return rowData; - } - - - //configure PDF - var doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables - - if(options.autoTable){ - if(typeof options.autoTable === "function"){ - autoTableParams = options.autoTable(doc) || {}; - }else { - autoTableParams = options.autoTable; - } - } - - if(title){ - autoTableParams.didDrawPage = function(data) { - doc.text(title, 40, 30); - }; - } - - autoTableParams.head = header; - autoTableParams.body = body; - - doc.autoTable(autoTableParams); - - if(options.documentProcessing){ - options.documentProcessing(doc); - } - - setFileContents(doc.output("arraybuffer"), "application/pdf"); -} - -function xlsx(list, options, setFileContents){ - var self = this, - sheetName = options.sheetName || "Sheet1", - workbook = XLSX.utils.book_new(), - tableFeatures = new CoreFeature(this), - compression = 'compress' in options ? options.compress : true, - writeOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression}, - output; - - writeOptions.type = 'binary'; - - workbook.SheetNames = []; - workbook.Sheets = {}; - - function generateSheet(){ - var rows = [], - merges = [], - worksheet = {}, - range = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }}; - - //parse row list - list.forEach((row, i) => { - var rowData = []; - - row.columns.forEach(function(col, j){ - - if(col){ - rowData.push(!(col.value instanceof Date) && typeof col.value === "object" ? JSON.stringify(col.value) : col.value); - - if(col.width > 1 || col.height > -1){ - if(col.height > 1 || col.width > 1){ - merges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}}); - } - } - }else { - rowData.push(""); - } - }); - - rows.push(rowData); - }); - - //convert rows to worksheet - XLSX.utils.sheet_add_aoa(worksheet, rows); - - worksheet['!ref'] = XLSX.utils.encode_range(range); - - if(merges.length){ - worksheet["!merges"] = merges; - } - - return worksheet; - } - - if(options.sheetOnly){ - setFileContents(generateSheet()); - return; - } - - if(options.sheets){ - for(var sheet in options.sheets){ - - if(options.sheets[sheet] === true){ - workbook.SheetNames.push(sheet); - workbook.Sheets[sheet] = generateSheet(); - }else { - - workbook.SheetNames.push(sheet); - - tableFeatures.commsSend(options.sheets[sheet], "download", "intercept",{ - type:"xlsx", - options:{sheetOnly:true}, - active:self.active, - intercept:function(data){ - workbook.Sheets[sheet] = data; - } - }); - } - } - }else { - workbook.SheetNames.push(sheetName); - workbook.Sheets[sheetName] = generateSheet(); - } - - if(options.documentProcessing){ - workbook = options.documentProcessing(workbook); - } - - //convert workbook to binary array - function s2ab(s) { - var buf = new ArrayBuffer(s.length); - var view = new Uint8Array(buf); - for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; - return buf; - } - - output = XLSX.write(workbook, writeOptions); - - setFileContents(s2ab(output), "application/octet-stream"); -} - -function html(list, options, setFileContents){ - if(this.modExists("export", true)){ - setFileContents(this.modules.export.generateHTMLTable(list), "text/html"); - } -} - -function jsonLines (list, options, setFileContents) { - const fileContents = []; - - list.forEach((row) => { - const item = {}; - - switch (row.type) { - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if (col) { - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(JSON.stringify(item)); - break; - } - }); - - setFileContents(fileContents.join("\n"), "application/x-ndjson"); -} - -var defaultDownloaders = { - csv:csv, - json:json, - jsonLines:jsonLines, - pdf:pdf, - xlsx:xlsx, - html:html, -}; - -class Download extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("downloadEncoder", function(data, mimeType){ - return new Blob([data],{type:mimeType}); - }); //function to manipulate download data - this.registerTableOption("downloadReady", undefined); //warn of function deprecation - this.registerTableOption("downloadConfig", {}); //download config - this.registerTableOption("downloadRowRange", "active"); //restrict download to active rows only - - this.registerColumnOption("download"); - this.registerColumnOption("titleDownload"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.registerTableFunction("download", this.download.bind(this)); - this.registerTableFunction("downloadToTab", this.downloadToTab.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheck("downloadReady", "downloadEncoder"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - downloadToTab(type, filename, options, active){ - this.download(type, filename, options, active, true); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //trigger file download - download(type, filename, options, range, interceptCallback){ - var downloadFunc = false; - - function buildLink(data, mime){ - if(interceptCallback){ - if(interceptCallback === true){ - this.triggerDownload(data, mime, type, filename, true); - }else { - interceptCallback(data); - } - - }else { - this.triggerDownload(data, mime, type, filename); - } - } - - if(typeof type == "function"){ - downloadFunc = type; - }else { - if(Download.downloaders[type]){ - downloadFunc = Download.downloaders[type]; - }else { - console.warn("Download Error - No such download type found: ", type); - } - } - - if(downloadFunc){ - var list = this.generateExportList(range); - - downloadFunc.call(this.table, list , options || {}, buildLink.bind(this)); - } - } - - generateExportList(range){ - var list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, "download"); - - //assign group header formatter - var groupHeader = this.table.options.groupHeaderDownload; - - if(groupHeader && !Array.isArray(groupHeader)){ - groupHeader = [groupHeader]; - } - - list.forEach((row) => { - var group; - - if(row.type === "group"){ - group = row.columns[0]; - - if(groupHeader && groupHeader[row.indent]){ - group.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - }); - - return list; - } - - triggerDownload(data, mime, type, filename, newTab){ - var element = document.createElement('a'), - blob = this.table.options.downloadEncoder(data, mime); - - if(blob){ - if(newTab){ - window.open(window.URL.createObjectURL(blob)); - }else { - filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type); - - if(navigator.msSaveOrOpenBlob){ - navigator.msSaveOrOpenBlob(blob, filename); - }else { - element.setAttribute('href', window.URL.createObjectURL(blob)); - - //set file title - element.setAttribute('download', filename); - - //trigger download - element.style.display = 'none'; - document.body.appendChild(element); - element.click(); - - //remove temporary link element - document.body.removeChild(element); - } - } - - this.dispatchExternal("downloadComplete"); - } - } - - commsReceived(table, action, data){ - switch(action){ - case "intercept": - this.download(data.type, "", data.options, data.active, data.intercept); - break; - } - } -} - -Download.moduleName = "download"; - -//load defaults -Download.downloaders = defaultDownloaders; - -function maskInput(el, options){ - var mask = options.mask, - maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A", - maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9", - maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*"; - - function fillSymbols(index){ - var symbol = mask[index]; - if(typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){ - el.value = el.value + "" + symbol; - fillSymbols(index+1); - } - } - - el.addEventListener("keydown", (e) => { - var index = el.value.length, - char = e.key; - - if(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){ - if(index >= mask.length){ - e.preventDefault(); - e.stopPropagation(); - return false; - }else { - switch(mask[index]){ - case maskLetter: - if(char.toUpperCase() == char.toLowerCase()){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskNumber: - if(isNaN(char)){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskWildcard: - break; - - default: - if(char !== mask[index]){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - } - } - } - - return; - }); - - el.addEventListener("keyup", (e) => { - if(e.keyCode > 46){ - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } - } - }); - - - if(!el.placeholder){ - el.placeholder = mask; - } - - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } -} - -//input element -function input(cell, onRendered, success, cancel, editorParams){ - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", editorParams.search ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = typeof cellValue !== "undefined" ? cellValue : ""; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} - -//resizable text area element -function textarea(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "hybrid", - value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""), - input = document.createElement("textarea"), - scrollHeight = 0; - - //create and style input - input.style.display = "block"; - input.style.padding = "2px"; - input.style.height = "100%"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - input.style.whiteSpace = "pre-wrap"; - input.style.resize = "none"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - input.scrollHeight; - input.style.height = input.scrollHeight + "px"; - cell.getRow().normalizeHeight(); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - - setTimeout(function(){ - cell.getRow().normalizeHeight(); - },300); - }else { - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - input.addEventListener("keyup", function(){ - - input.style.height = ""; - - var heightNow = input.scrollHeight; - - input.style.height = heightNow + "px"; - - if(heightNow != scrollHeight){ - scrollHeight = heightNow; - cell.getRow().normalizeHeight(); - } - }); - - input.addEventListener("keydown", function(e){ - - switch(e.keyCode){ - - case 13: - if(e.shiftKey && editorParams.shiftEnterSubmit){ - onChange(); - } - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - - break; - - case 40: //down arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart !== input.value.length)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} - -//input element with type of number -function number(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - input = document.createElement("input"); - - input.setAttribute("type", "number"); - - if(typeof editorParams.max != "undefined"){ - input.setAttribute("max", editorParams.max); - } - - if(typeof editorParams.min != "undefined"){ - input.setAttribute("min", editorParams.min); - } - - if(typeof editorParams.step != "undefined"){ - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - var blurFunc = function(e){ - onChange(); - }; - - onRendered(function () { - if(cell.getType() === "cell"){ - //submit new value on blur - input.removeEventListener("blur", blurFunc); - - input.focus({preventScroll: true}); - input.style.height = "100%"; - - //submit new value on blur - input.addEventListener("blur", blurFunc); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value !== cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} - -//input element with type of number -function range(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", "range"); - - if (typeof editorParams.max != "undefined") { - input.setAttribute("max", editorParams.max); - } - - if (typeof editorParams.min != "undefined") { - input.setAttribute("min", editorParams.min); - } - - if (typeof editorParams.step != "undefined") { - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - onRendered(function () { - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value != cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e){ - onChange(); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - } - }); - - return input; -} - -//input element -function date(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - function convertDate(value){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - return newDatetime.toFormat("yyyy-MM-dd"); - } - - input.type = "date"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.max){ - input.setAttribute("max", inputFormat ? convertDate(editorParams.max) : editorParams.max); - } - - if(editorParams.min){ - input.setAttribute("min", inputFormat ? convertDate(editorParams.min) : editorParams.min); - } - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - cellValue = convertDate(cellValue); - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDate; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDate = DT.fromFormat(String(value), "yyyy-MM-dd"); - - switch(inputFormat){ - case true: - value = luxDate; - break; - - case "iso": - value = luxDate.toISO(); - break; - - default: - value = luxDate.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} - -//input element -function time(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "time"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else { - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("HH:mm"); - - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - console.log("val", cellValue); - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() == "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxTime = DT.fromFormat(String(value), "hh:mm"); - - switch(inputFormat){ - case true: - value = luxTime; - break; - - case "iso": - value = luxTime.toISO(); - break; - - default: - value = luxTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} - -//input element -function datetime(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "datetime-local"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else { - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("yyyy-MM-dd") + "T" + newDatetime.toFormat("HH:mm"); - }else { - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDateTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDateTime = DT.fromISO(String(value)); - - switch(inputFormat){ - case true: - value = luxDateTime; - break; - - case "iso": - value = luxDateTime.toISO(); - break; - - default: - value = luxDateTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else { - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} - -class Edit{ - constructor(editor, cell, onRendered, success, cancel, editorParams){ - this.edit = editor; - this.table = editor.table; - this.cell = cell; - this.params = this._initializeParams(editorParams); - - this.data = []; - this.displayItems = []; - this.currentItems = []; - this.focusedItem = null; - - this.input = this._createInputElement(); - this.listEl = this._createListElement(); - - this.initialValues = null; - - this.isFilter = cell.getType() === "header"; - - this.filterTimeout = null; - this.filtered = false; - this.typing = false; - - this.values = []; - this.popup = null; - - this.listIteration = 0; - - this.lastAction=""; - this.filterTerm=""; - - this.blurable = true; - - this.actions = { - success:success, - cancel:cancel - }; - - this._deprecatedOptionsCheck(); - this._initializeValue(); - - onRendered(this._onRendered.bind(this)); - } - - _deprecatedOptionsCheck(){ - if(this.params.listItemFormatter){ - this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.sortValuesList){ - this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchFunc){ - this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchingPlaceholder){ - this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options"); - } - } - - _initializeValue(){ - var initialValue = this.cell.getValue(); - - if(typeof initialValue === "undefined" && typeof this.params.defaultValue !== "undefined"){ - initialValue = this.params.defaultValue; - } - - this.initialValues = this.params.multiselect ? initialValue : [initialValue]; - - if(this.isFilter){ - this.input.value = this.initialValues ? this.initialValues.join(",") : ""; - this.headerFilterInitialListGen(); - } - } - - _onRendered(){ - var cellEl = this.cell.getElement(); - - function clickStop(e){ - e.stopPropagation(); - } - - if(!this.isFilter){ - this.input.style.height = "100%"; - this.input.focus({preventScroll: true}); - } - - - cellEl.addEventListener("click", clickStop); - - setTimeout(() => { - cellEl.removeEventListener("click", clickStop); - }, 1000); - - this.input.addEventListener("mousedown", this._preventPopupBlur.bind(this)); - } - - _createListElement(){ - var listEl = document.createElement("div"); - listEl.classList.add("tabulator-edit-list"); - - listEl.addEventListener("mousedown", this._preventBlur.bind(this)); - listEl.addEventListener("keydown", this._inputKeyDown.bind(this)); - - return listEl; - } - - _setListWidth(){ - var element = this.isFilter ? this.input : this.cell.getElement(); - - this.listEl.style.minWidth = element.offsetWidth + "px"; - - if(this.params.maxWidth){ - if(this.params.maxWidth === true){ - this.listEl.style.maxWidth = element.offsetWidth + "px"; - }else if(typeof this.params.maxWidth === "number"){ - this.listEl.style.maxWidth = this.params.maxWidth + "px"; - }else { - this.listEl.style.maxWidth = this.params.maxWidth; - } - } - - } - - _createInputElement(){ - var attribs = this.params.elementAttributes; - var input = document.createElement("input"); - - input.setAttribute("type", this.params.clearable ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(!this.params.autocomplete){ - input.style.cursor = "default"; - input.style.caretColor = "transparent"; - // input.readOnly = (this.edit.currentCell != false); - } - - if(attribs && typeof attribs == "object"){ - for (let key in attribs){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + attribs["+" + key]); - }else { - input.setAttribute(key, attribs[key]); - } - } - } - - if(this.params.mask){ - maskInput(input, this.params); - } - - this._bindInputEvents(input); - - return input; - } - - _initializeParams(params){ - var valueKeys = ["values", "valuesURL", "valuesLookup"], - valueCheck; - - params = Object.assign({}, params); - - params.verticalNavigation = params.verticalNavigation || "editor"; - params.placeholderLoading = typeof params.placeholderLoading === "undefined" ? "Searching ..." : params.placeholderLoading; - params.placeholderEmpty = typeof params.placeholderEmpty === "undefined" ? "No Results Found" : params.placeholderEmpty; - params.filterDelay = typeof params.filterDelay === "undefined" ? 300 : params.filterDelay; - - params.emptyValue = Object.keys(params).includes("emptyValue") ? params.emptyValue : ""; - - valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length; - - if(!valueCheck){ - console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"); - }else if(valueCheck > 1){ - console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"); - } - - if(params.autocomplete){ - if(params.multiselect){ - params.multiselect = false; - console.warn("list editor config error - multiselect option is not available when autocomplete is enabled"); - } - }else { - if(params.freetext){ - params.freetext = false; - console.warn("list editor config error - freetext option is only available when autocomplete is enabled"); - } - - if(params.filterFunc){ - params.filterFunc = false; - console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled"); - } - - if(params.filterRemote){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled"); - } - - if(params.mask){ - params.mask = false; - console.warn("list editor config error - mask option is only available when autocomplete is enabled"); - } - - if(params.allowEmpty){ - params.allowEmpty = false; - console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled"); - } - - if(params.listOnEmpty){ - params.listOnEmpty = false; - console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"); - } - } - - if(params.filterRemote && !(typeof params.valuesLookup === "function" || params.valuesURL)){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source"); - } - return params; - } - ////////////////////////////////////// - ////////// Event Handling //////////// - ////////////////////////////////////// - - _bindInputEvents(input){ - input.addEventListener("focus", this._inputFocus.bind(this)); - input.addEventListener("click", this._inputClick.bind(this)); - input.addEventListener("blur", this._inputBlur.bind(this)); - input.addEventListener("keydown", this._inputKeyDown.bind(this)); - input.addEventListener("search", this._inputSearch.bind(this)); - - if(this.params.autocomplete){ - input.addEventListener("keyup", this._inputKeyUp.bind(this)); - } - } - - - _inputFocus(e){ - this.rebuildOptionsList(); - } - - _filter(){ - if(this.params.filterRemote){ - clearTimeout(this.filterTimeout); - - this.filterTimeout = setTimeout(() => { - this.rebuildOptionsList(); - }, this.params.filterDelay); - }else { - this._filterList(); - } - } - - _inputClick(e){ - e.stopPropagation(); - } - - _inputBlur(e){ - if(this.blurable){ - if(this.popup){ - this.popup.hide(); - }else { - this._resolveValue(true); - } - } - } - - _inputSearch(){ - this._clearChoices(); - } - - _inputKeyDown(e){ - switch(e.keyCode){ - - case 38: //up arrow - this._keyUp(e); - break; - - case 40: //down arrow - this._keyDown(e); - break; - - case 37: //left arrow - case 39: //right arrow - this._keySide(e); - break; - - case 13: //enter - this._keyEnter(); - break; - - case 27: //escape - this._keyEsc(); - break; - - case 36: //home - case 35: //end - this._keyHomeEnd(e); - break; - - case 9: //tab - this._keyTab(e); - break; - - default: - this._keySelectLetter(e); - } - } - - _inputKeyUp(e){ - switch(e.keyCode){ - case 38: //up arrow - case 37: //left arrow - case 39: //up arrow - case 40: //right arrow - case 13: //enter - case 27: //escape - break; - - default: - this._keyAutoCompLetter(e); - } - } - - _preventPopupBlur(){ - if(this.popup){ - this.popup.blockHide(); - } - - setTimeout(() =>{ - if(this.popup){ - this.popup.restoreHide(); - } - }, 10); - } - - _preventBlur(){ - this.blurable = false; - - setTimeout(() =>{ - this.blurable = true; - }, 10); - } - - ////////////////////////////////////// - //////// Keyboard Navigation ///////// - ////////////////////////////////////// - - _keyTab(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else { - if(this.focusedItem){ - this._chooseItem(this.focusedItem, true); - } - } - } - - _keyUp(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - this._focusItem(this.displayItems[index - 1]); - } - } - } - - _keyDown(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index < this.displayItems.length - 1)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < this.displayItems.length - 1){ - if(index == -1){ - this._focusItem(this.displayItems[0]); - }else { - this._focusItem(this.displayItems[index + 1]); - } - } - } - } - - _keySide(e){ - if(!this.params.autocomplete){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - } - } - - _keyEnter(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else { - if(this.focusedItem){ - this._chooseItem(this.focusedItem); - } - } - } - - _keyEsc(e){ - this._cancel(); - } - - _keyHomeEnd(e){ - if(this.params.autocomplete){ - //prevent table navigation while using input element - e.stopImmediatePropagation(); - } - } - - _keySelectLetter(e){ - if(!this.params.autocomplete){ - // if(this.edit.currentCell === false){ - e.preventDefault(); - // } - - if(e.keyCode >= 38 && e.keyCode <= 90){ - this._scrollToValue(e.keyCode); - } - } - } - - _keyAutoCompLetter(e){ - this._filter(); - this.lastAction = "typing"; - this.typing = true; - } - - - _scrollToValue(char){ - clearTimeout(this.filterTimeout); - - var character = String.fromCharCode(char).toLowerCase(); - this.filterTerm += character.toLowerCase(); - - var match = this.displayItems.find((item) => { - return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(this.filterTerm); - }); - - if(match){ - this._focusItem(match); - } - - this.filterTimeout = setTimeout(() => { - this.filterTerm = ""; - }, 800); - } - - _focusItem(item){ - this.lastAction = "focus"; - - if(this.focusedItem && this.focusedItem.element){ - this.focusedItem.element.classList.remove("focused"); - } - - this.focusedItem = item; - - if(item && item.element){ - item.element.classList.add("focused"); - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - - ////////////////////////////////////// - /////// Data List Generation ///////// - ////////////////////////////////////// - headerFilterInitialListGen(){ - this._generateOptions(true); - } - - rebuildOptionsList(){ - this._generateOptions() - .then(this._sortOptions.bind(this)) - .then(this._buildList.bind(this)) - .then(this._showList.bind(this)) - .catch((e) => { - if(!Number.isInteger(e)){ - console.error("List generation error", e); - } - }); - } - - _filterList(){ - this._buildList(this._filterOptions()); - this._showList(); - } - - _generateOptions(silent){ - var values = []; - var iteration = ++ this.listIteration; - - this.filtered = false; - - if(this.params.values){ - values = this.params.values; - }else if (this.params.valuesURL){ - values = this._ajaxRequest(this.params.valuesURL, this.input.value); - }else { - if(typeof this.params.valuesLookup === "function"){ - values = this.params.valuesLookup(this.cell, this.input.value); - }else if(this.params.valuesLookup){ - values = this._uniqueColumnValues(this.params.valuesLookupField); - } - } - - if(values instanceof Promise){ - if(!silent){ - this._addPlaceholder(this.params.placeholderLoading); - } - - return values.then() - .then((responseValues) => { - if(this.listIteration === iteration){ - return this._parseList(responseValues); - }else { - return Promise.reject(iteration); - } - }); - }else { - return Promise.resolve(this._parseList(values)); - } - } - - _addPlaceholder(contents){ - var placeholder = document.createElement("div"); - - if(typeof contents === "function"){ - contents = contents(this.cell.getComponent(), this.listEl); - } - - if(contents){ - this._clearList(); - - if(contents instanceof HTMLElement){ - placeholder = contents; - }else { - placeholder.classList.add("tabulator-edit-list-placeholder"); - placeholder.innerHTML = contents; - } - - this.listEl.appendChild(placeholder); - - this._showList(); - } - } - - _ajaxRequest(url, term){ - var params = this.params.filterRemote ? {term:term} : {}; - url = urlBuilder(url, {}, params); - - return fetch(url) - .then((response)=>{ - if(response.ok) { - return response.json() - .catch((error)=>{ - console.warn("List Ajax Load Error - Invalid JSON returned", error); - return Promise.reject(error); - }); - }else { - console.error("List Ajax Load Error - Connection Error: " + response.status, response.statusText); - return Promise.reject(response); - } - }) - .catch((error)=>{ - console.error("List Ajax Load Error - Connection Error: ", error); - return Promise.reject(error); - }); - } - - _uniqueColumnValues(field){ - var output = {}, - data = this.table.getData(this.params.valuesLookup), - column; - - if(field){ - column = this.table.columnManager.getColumnByField(field); - }else { - column = this.cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach((row) => { - var val = column.getFieldValue(row); - - if(val !== null && typeof val !== "undefined" && val !== ""){ - output[val] = true; - } - }); - }else { - console.warn("unable to find matching column to create select lookup list:", field); - output = []; - } - - return Object.keys(output); - } - - - _parseList(inputValues){ - var data = []; - - if(!Array.isArray(inputValues)){ - inputValues = Object.entries(inputValues).map(([key, value]) => { - return { - label:value, - value:key, - }; - }); - } - - inputValues.forEach((value) => { - if(typeof value !== "object"){ - value = { - label:value, - value:value, - }; - } - - this._parseListItem(value, data, 0); - }); - - if(!this.currentItems.length && this.params.freetext){ - this.input.value = this.initialValues; - this.typing = true; - this.lastAction = "typing"; - } - - this.data = data; - - return data; - } - - _parseListItem(option, data, level){ - var item = {}; - - if(option.options){ - item = this._parseListGroup(option, level + 1); - }else { - item = { - label:option.label, - value:option.value, - itemParams:option.itemParams, - elementAttributes: option.elementAttributes, - element:false, - selected:false, - visible:true, - level:level, - original:option, - }; - - if(this.initialValues && this.initialValues.indexOf(option.value) > -1){ - this._chooseItem(item, true); - } - } - - data.push(item); - } - - _parseListGroup(option, level){ - var item = { - label:option.label, - group:true, - itemParams:option.itemParams, - elementAttributes:option.elementAttributes, - element:false, - visible:true, - level:level, - options:[], - original:option, - }; - - option.options.forEach((child) => { - this._parseListItem(child, item.options, level); - }); - - return item; - } - - _sortOptions(options){ - var sorter; - - if(this.params.sort){ - sorter = typeof this.params.sort === "function" ? this.params.sort : this._defaultSortFunction.bind(this); - - this._sortGroup(sorter, options); - } - - return options; - } - - _sortGroup(sorter, options){ - options.sort((a,b) => { - return sorter(a.label, b.label, a.value, b.value, a.original, b.original); - }); - - options.forEach((option) => { - if(option.group){ - this._sortGroup(sorter, option.options); - } - }); - } - - _defaultSortFunction(as, bs){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var emptyAlign = 0; - - if(this.params.sort === "desc"){ - [as, bs] = [bs, as]; - } - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else { - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - return emptyAlign; - } - - _filterOptions(){ - var filterFunc = this.params.filterFunc || this._defaultFilterFunc, - term = this.input.value; - - if(term){ - this.filtered = true; - - this.data.forEach((item) => { - this._filterItem(filterFunc, term, item); - }); - }else { - this.filtered = false; - } - - return this.data; - } - - _filterItem(func, term, item){ - var matches = false; - - if(!item.group){ - item.visible = func(term, item.label, item.value, item.original); - }else { - item.options.forEach((option) => { - if(this._filterItem(func, term, option)){ - matches = true; - } - }); - - item.visible = matches; - } - - return item.visible; - } - - _defaultFilterFunc(term, label, value, item){ - term = String(term).toLowerCase(); - - if(label !== null && typeof label !== "undefined"){ - if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){ - return true; - } - } - - return false; - } - - ////////////////////////////////////// - /////////// Display List ///////////// - ////////////////////////////////////// - - _clearList(){ - while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild); - - this.displayItems = []; - } - - _buildList(data){ - this._clearList(); - - data.forEach((option) => { - this._buildItem(option); - }); - - if(!this.displayItems.length){ - this._addPlaceholder(this.params.placeholderEmpty); - } - } - - _buildItem(item){ - var el = item.element, - contents; - - if(!this.filtered || item.visible){ - - if(!el){ - el = document.createElement("div"); - el.tabIndex = 0; - - contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label; - - if(contents instanceof HTMLElement){ - el.appendChild(contents); - }else { - el.innerHTML = contents; - } - - if(item.group){ - el.classList.add("tabulator-edit-list-group"); - }else { - el.classList.add("tabulator-edit-list-item"); - } - - el.classList.add("tabulator-edit-list-group-level-" + item.level); - - if(item.elementAttributes && typeof item.elementAttributes == "object"){ - for (let key in item.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes["+" + key]); - }else { - el.setAttribute(key, item.elementAttributes[key]); - } - } - } - - if(item.group){ - el.addEventListener("click", this._groupClick.bind(this, item)); - }else { - el.addEventListener("click", this._itemClick.bind(this, item)); - } - - el.addEventListener("mousedown", this._preventBlur.bind(this)); - - item.element = el; - } - - this._styleItem(item); - - this.listEl.appendChild(el); - - if(item.group){ - item.options.forEach((option) => { - this._buildItem(option); - }); - }else { - this.displayItems.push(item); - } - } - } - - _showList(){ - var startVis = this.popup && this.popup.isVisible(); - - if(this.input.parentNode){ - if(this.params.autocomplete && this.input.value === "" && !this.params.listOnEmpty){ - if(this.popup){ - this.popup.hide(true); - } - return; - } - - this._setListWidth(); - - if(!this.popup){ - this.popup = this.edit.popup(this.listEl); - } - - this.popup.show(this.cell.getElement(), "bottom"); - - if(!startVis){ - setTimeout(() => { - this.popup.hideOnBlur(this._resolveValue.bind(this, true)); - }, 10); - } - } - } - - _styleItem(item){ - if(item && item.element){ - if(item.selected){ - item.element.classList.add("active"); - }else { - item.element.classList.remove("active"); - } - } - } - - ////////////////////////////////////// - ///////// User Interaction /////////// - ////////////////////////////////////// - - _itemClick(item, e){ - e.stopPropagation(); - - this._chooseItem(item); - } - - _groupClick(item, e){ - e.stopPropagation(); - } - - - ////////////////////////////////////// - ////// Current Item Management /////// - ////////////////////////////////////// - - _cancel(){ - this.popup.hide(true); - this.actions.cancel(); - } - - _clearChoices(){ - this.typing = true; - - this.currentItems.forEach((item) => { - item.selected = false; - this._styleItem(item); - }); - - this.currentItems = []; - - this.focusedItem = null; - } - - _chooseItem(item, silent){ - var index; - - this.typing = false; - - if(this.params.multiselect){ - index = this.currentItems.indexOf(item); - - if(index > -1){ - this.currentItems.splice(index, 1); - item.selected = false; - }else { - this.currentItems.push(item); - item.selected = true; - } - - this.input.value = this.currentItems.map(item => item.label).join(","); - - this._styleItem(item); - - }else { - this.currentItems = [item]; - item.selected = true; - - this.input.value = item.label; - - this._styleItem(item); - - if(!silent){ - this._resolveValue(); - } - } - - this._focusItem(item); - } - - _resolveValue(blur){ - var output, initialValue; - - if(this.popup){ - this.popup.hide(true); - } - - if(this.params.multiselect){ - output = this.currentItems.map(item => item.value); - }else { - if(blur && this.params.autocomplete && this.typing){ - if(this.params.freetext || (this.params.allowEmpty && this.input.value === "")){ - output = this.input.value; - }else { - this.actions.cancel(); - return; - } - }else { - if(this.currentItems[0]){ - output = this.currentItems[0].value; - }else { - initialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues; - - if(initialValue === null || typeof initialValue === "undefined" || initialValue === ""){ - output = initialValue; - }else { - output = this.params.emptyValue; - } - } - - } - } - - if(output === ""){ - output = this.params.emptyValue; - } - - this.actions.success(output); - - if(this.isFilter){ - this.initialValues = output && !Array.isArray(output) ? [output] : output; - this.currentItems = []; - } - } - -} - -function select(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The select editor has been deprecated, please use the new list editor"); - - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} - -function list(cell, onRendered, success, cancel, editorParams){ - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} - -function autocomplete(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"); - - editorParams.autocomplete = true; - - var list = new Edit(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} - -//star rating -function star(cell, onRendered, success, cancel, editorParams){ - var self = this, - element = cell.getElement(), - value = cell.getValue(), - maxStars = element.getElementsByTagName("svg").length || 5, - size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14, - stars = [], - starsHolder = document.createElement("div"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"); - - - //change star type - function starChange(val){ - stars.forEach(function(star, i){ - if(i < val){ - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-active"); - }else { - star.classList.replace("tabulator-star-inactive", "tabulator-star-active"); - } - - star.innerHTML = ''; - }else { - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-inactive"); - }else { - star.classList.replace("tabulator-star-active", "tabulator-star-inactive"); - } - - star.innerHTML = ''; - } - }); - } - - //build stars - function buildStar(i){ - - var starHolder = document.createElement("span"); - var nextStar = star.cloneNode(true); - - stars.push(nextStar); - - starHolder.addEventListener("mouseenter", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - starChange(i); - }); - - starHolder.addEventListener("mousemove", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - }); - - starHolder.addEventListener("click", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - success(i); - element.blur(); - }); - - starHolder.appendChild(nextStar); - starsHolder.appendChild(starHolder); - - } - - //handle keyboard navigation value change - function changeValue(val){ - value = val; - starChange(val); - } - - //style cell - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - //style holding element - starsHolder.style.verticalAlign = "middle"; - starsHolder.style.display = "inline-block"; - starsHolder.style.padding = "4px"; - - //style star - star.setAttribute("width", size); - star.setAttribute("height", size); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - starsHolder.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //create correct number of stars - for(var i=1;i<= maxStars;i++){ - buildStar(i); - } - - //ensure value does not exceed number of stars - value = Math.min(parseInt(value), maxStars); - - // set initial styling of stars - starChange(value); - - starsHolder.addEventListener("mousemove", function(e){ - starChange(0); - }); - - starsHolder.addEventListener("click", function(e){ - success(0); - }); - - element.addEventListener("blur", function(e){ - cancel(); - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - changeValue(value + 1); - break; - - case 37: //left arrow - changeValue(value - 1); - break; - - case 13: //enter - success(value); - break; - - case 27: //escape - cancel(); - break; - } - }); - - return starsHolder; -} - -//draggable progress bar -function progress(cell, onRendered, success, cancel, editorParams){ - var element = cell.getElement(), - max = typeof editorParams.max === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("max")) || 100) : editorParams.max, - min = typeof editorParams.min === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("min")) || 0) : editorParams.min, - percent = (max - min) / 100, - value = cell.getValue() || 0, - handle = document.createElement("div"), - bar = document.createElement("div"), - mouseDrag, mouseDragWidth; - - //set new value - function updateValue(){ - var style = window.getComputedStyle(element, null); - - var calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue("padding-left")) - parseInt(style.getPropertyValue("padding-right")))/100))) + min; - success(calcVal); - element.setAttribute("aria-valuenow", calcVal); - element.setAttribute("aria-label", value); - } - - //style handle - handle.style.position = "absolute"; - handle.style.right = "0"; - handle.style.top = "0"; - handle.style.bottom = "0"; - handle.style.width = "5px"; - handle.classList.add("tabulator-progress-handle"); - - //style bar - bar.style.display = "inline-block"; - bar.style.position = "relative"; - // bar.style.top = "8px"; - // bar.style.bottom = "8px"; - // bar.style.left = "4px"; - // bar.style.marginRight = "4px"; - bar.style.height = "100%"; - bar.style.backgroundColor = "#488CE9"; - bar.style.maxWidth = "100%"; - bar.style.minWidth = "0%"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - bar.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //style cell - element.style.padding = "4px 4px"; - - //make sure value is in range - value = Math.min(parseFloat(value), max); - value = Math.max(parseFloat(value), min); - - //workout percentage - value = Math.round((value - min) / percent); - // bar.style.right = value + "%"; - bar.style.width = value + "%"; - - element.setAttribute("aria-valuemin", min); - element.setAttribute("aria-valuemax", max); - - bar.appendChild(handle); - - handle.addEventListener("mousedown", function(e){ - mouseDrag = e.screenX; - mouseDragWidth = bar.offsetWidth; - }); - - handle.addEventListener("mouseover", function(){ - handle.style.cursor = "ew-resize"; - }); - - element.addEventListener("mousemove", function(e){ - if(mouseDrag){ - bar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + "px"; - } - }); - - element.addEventListener("mouseup", function(e){ - if(mouseDrag){ - e.stopPropagation(); - e.stopImmediatePropagation(); - - mouseDrag = false; - mouseDragWidth = false; - - updateValue(); - } - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth + element.clientWidth/100) + "px"; - break; - - case 37: //left arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth - element.clientWidth/100) + "px"; - break; - - case 9: //tab - case 13: //enter - updateValue(); - break; - - case 27: //escape - cancel(); - break; - - } - }); - - element.addEventListener("blur", function(){ - cancel(); - }); - - return bar; -} - -//checkbox -function tickCross(cell, onRendered, success, cancel, editorParams){ - var value = cell.getValue(), - input = document.createElement("input"), - tristate = editorParams.tristate, - indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue, - indetermState = false, - trueValueSet = Object.keys(editorParams).includes("trueValue"), - falseValueSet = Object.keys(editorParams).includes("falseValue"); - - input.setAttribute("type", "checkbox"); - input.style.marginTop = "5px"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else { - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - if(tristate && (typeof value === "undefined" || value === indetermValue || value === "")){ - indetermState = true; - input.indeterminate = true; - } - - if(this.table.browser != "firefox" && this.table.browser != "safari"){ //prevent blur issue on mac firefox - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - } - }); - } - - input.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === "true" || value === "True" || value === 1); - - function setValue(blur){ - var checkedValue = input.checked; - - if(trueValueSet && checkedValue){ - checkedValue = editorParams.trueValue; - }else if(falseValueSet && !checkedValue){ - checkedValue = editorParams.falseValue; - } - - if(tristate){ - if(!blur){ - if(input.checked && !indetermState){ - input.checked = false; - input.indeterminate = true; - indetermState = true; - return indetermValue; - }else { - indetermState = false; - return checkedValue; - } - }else { - if(indetermState){ - return indetermValue; - }else { - return checkedValue; - } - } - }else { - return checkedValue; - } - } - - //submit new value on blur - input.addEventListener("change", function(e){ - success(setValue()); - }); - - input.addEventListener("blur", function(e){ - success(setValue(true)); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - if(e.keyCode == 13){ - success(setValue()); - } - if(e.keyCode == 27){ - cancel(); - } - }); - - return input; -} - -var defaultEditors = { - input:input, - textarea:textarea, - number:number, - range:range, - date:date, - time:time, - datetime:datetime, - select:select, - list:list, - autocomplete:autocomplete, - star:star, - progress:progress, - tickCross:tickCross, -}; - -class Edit$1 extends Module{ - - constructor(table){ - super(table); - - this.currentCell = false; //hold currently editing cell - this.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening - this.recursionBlock = false; //prevent focus recursion - this.invalidEdit = false; - this.editedCells = []; - - this.editors = Edit$1.editors; - - this.registerColumnOption("editable"); - this.registerColumnOption("editor"); - this.registerColumnOption("editorParams"); - - this.registerColumnOption("cellEditing"); - this.registerColumnOption("cellEdited"); - this.registerColumnOption("cellEditCancelled"); - - this.registerTableOption("editTriggerEvent", "focus"); - - this.registerTableFunction("getEditedCells", this.getEditedCells.bind(this)); - this.registerTableFunction("clearCellEdited", this.clearCellEdited.bind(this)); - this.registerTableFunction("navigatePrev", this.navigatePrev.bind(this)); - this.registerTableFunction("navigateNext", this.navigateNext.bind(this)); - this.registerTableFunction("navigateLeft", this.navigateLeft.bind(this)); - this.registerTableFunction("navigateRight", this.navigateRight.bind(this)); - this.registerTableFunction("navigateUp", this.navigateUp.bind(this)); - this.registerTableFunction("navigateDown", this.navigateDown.bind(this)); - - this.registerComponentFunction("cell", "isEdited", this.cellIsEdited.bind(this)); - this.registerComponentFunction("cell", "clearEdited", this.clearEdited.bind(this)); - this.registerComponentFunction("cell", "edit", this.editCell.bind(this)); - this.registerComponentFunction("cell", "cancelEdit", this.cellCancelEdit.bind(this)); - - this.registerComponentFunction("cell", "navigatePrev", this.navigatePrev.bind(this)); - this.registerComponentFunction("cell", "navigateNext", this.navigateNext.bind(this)); - this.registerComponentFunction("cell", "navigateLeft", this.navigateLeft.bind(this)); - this.registerComponentFunction("cell", "navigateRight", this.navigateRight.bind(this)); - this.registerComponentFunction("cell", "navigateUp", this.navigateUp.bind(this)); - this.registerComponentFunction("cell", "navigateDown", this.navigateDown.bind(this)); - } - - initialize(){ - this.subscribe("cell-init", this.bindEditor.bind(this)); - this.subscribe("cell-delete", this.clearEdited.bind(this)); - this.subscribe("cell-value-changed", this.updateCellClass.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - this.subscribe("column-delete", this.columnDeleteCheck.bind(this)); - this.subscribe("row-deleting", this.rowDeleteCheck.bind(this)); - this.subscribe("row-layout", this.rowEditableCheck.bind(this)); - this.subscribe("data-refreshing", this.cancelEdit.bind(this)); - this.subscribe("clipboard-paste", this.pasteBlocker.bind(this)); - - this.subscribe("keybinding-nav-prev", this.navigatePrev.bind(this, undefined)); - this.subscribe("keybinding-nav-next", this.keybindingNavigateNext.bind(this)); - - - // this.subscribe("keybinding-nav-left", this.navigateLeft.bind(this, undefined)); - // this.subscribe("keybinding-nav-right", this.navigateRight.bind(this, undefined)); - this.subscribe("keybinding-nav-up", this.navigateUp.bind(this, undefined)); - this.subscribe("keybinding-nav-down", this.navigateDown.bind(this, undefined)); - } - - - /////////////////////////////////// - ///////// Paste Negation ////////// - /////////////////////////////////// - - pasteBlocker(e){ - if(this.currentCell){ - return true; - } - } - - - /////////////////////////////////// - ////// Keybinding Functions /////// - /////////////////////////////////// - - keybindingNavigateNext(e){ - var cell = this.currentCell, - newRow = this.options("tabEndNewRow"); - - if(cell){ - if(!this.navigateNext(cell, e)){ - if(newRow){ - cell.getElement().firstChild.blur(); - - if(!this.invalidEdit){ - - if(newRow === true){ - newRow = this.table.addRow({}); - }else { - if(typeof newRow == "function"){ - newRow = this.table.addRow(newRow(cell.row.getComponent())); - }else { - newRow = this.table.addRow(Object.assign({}, newRow)); - } - } - - newRow.then(() => { - setTimeout(() => { - cell.getComponent().navigateNext(); - }); - }); - } - } - } - } - } - - /////////////////////////////////// - ///////// Cell Functions ////////// - /////////////////////////////////// - - cellIsEdited(cell){ - return !! cell.modules.edit && cell.modules.edit.edited; - } - - cellCancelEdit(cell){ - if(cell === this.currentCell){ - this.table.modules.edit.cancelEdit(); - }else { - console.warn("Cancel Editor Error - This cell is not currently being edited "); - } - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - updateCellClass(cell){ - if(this.allowEdit(cell)) { - cell.getElement().classList.add("tabulator-editable"); - } - else { - cell.getElement().classList.remove("tabulator-editable"); - } - } - - clearCellEdited(cells){ - if(!cells){ - cells = this.table.modules.edit.getEditedCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.table.modules.edit.clearEdited(cell._getSelf()); - }); - } - - navigatePrev(cell = this.currentCell, e){ - var nextCell, prevRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateLeft(); - - if(nextCell){ - return true; - }else { - prevRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(prevRow){ - nextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateNext(cell = this.currentCell, e){ - var nextCell, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateRight(); - - if(nextCell){ - return true; - }else { - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextCell = this.findNextEditableCell(nextRow, -1); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateLeft(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findPrevEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateRight(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findNextEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateUp(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - navigateDown(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - findNextEditableCell(row, index){ - var nextCell = false; - - if(index < row.cells.length-1){ - for(var i = index+1; i < row.cells.length; i++){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - nextCell = cell; - break; - } - } - } - } - - return nextCell; - } - - findPrevEditableCell(row, index){ - var prevCell = false; - - if(index > 0){ - for(var i = index-1; i >= 0; i--){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - prevCell = cell; - break; - } - } - } - } - - return prevCell; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.editor !== "undefined"){ - this.initializeColumn(column); - } - } - - columnDeleteCheck(column){ - if(this.currentCell && this.currentCell.column === column){ - this.cancelEdit(); - } - } - - rowDeleteCheck(row){ - if(this.currentCell && this.currentCell.row === row){ - this.cancelEdit(); - } - } - - rowEditableCheck(row){ - row.getCells().forEach((cell) => { - if(cell.column.modules.edit && typeof cell.column.modules.edit.check === "function"){ - this.updateCellClass(cell); - } - }); - } - - //initialize column editor - initializeColumn(column){ - var config = { - editor:false, - blocked:false, - check:column.definition.editable, - params:column.definition.editorParams || {} - }; - - //set column editor - switch(typeof column.definition.editor){ - case "string": - if(this.editors[column.definition.editor]){ - config.editor = this.editors[column.definition.editor]; - }else { - console.warn("Editor Error - No such editor found: ", column.definition.editor); - } - break; - - case "function": - config.editor = column.definition.editor; - break; - - case "boolean": - if(column.definition.editor === true){ - if(typeof column.definition.formatter !== "function"){ - if(this.editors[column.definition.formatter]){ - config.editor = this.editors[column.definition.formatter]; - }else { - config.editor = this.editors["input"]; - } - }else { - console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter); - } - } - break; - } - - if(config.editor){ - column.modules.edit = config; - } - } - - getCurrentCell(){ - return this.currentCell ? this.currentCell.getComponent() : false; - } - - clearEditor(cancel){ - var cell = this.currentCell, - cellEl; - - this.invalidEdit = false; - - if(cell){ - this.currentCell = false; - - cellEl = cell.getElement(); - - this.dispatch("edit-editor-clear", cell, cancel); - - cellEl.classList.remove("tabulator-editing"); - - while(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild); - - cell.row.getElement().classList.remove("tabulator-editing"); - - cell.table.element.classList.remove("tabulator-editing"); - } - } - - cancelEdit(){ - if(this.currentCell){ - var cell = this.currentCell; - var component = this.currentCell.getComponent(); - - this.clearEditor(true); - cell.setValueActual(cell.getValue()); - cell.cellRendered(); - - if(cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight){ - cell.row.normalizeHeight(true); - } - - if(cell.column.definition.cellEditCancelled){ - cell.column.definition.cellEditCancelled.call(this.table, component); - } - - this.dispatch("edit-cancelled", cell); - this.dispatchExternal("cellEditCancelled", component); - } - } - - //return a formatted value for a cell - bindEditor(cell){ - if(cell.column.modules.edit){ - var self = this, - element = cell.getElement(true); - - this.updateCellClass(cell); - element.setAttribute("tabindex", 0); - - element.addEventListener("mousedown", function(e){ - if (e.button === 2) { - e.preventDefault(); - }else { - self.mouseClick = true; - } - }); - - if(this.options("editTriggerEvent") === "dblclick"){ - element.addEventListener("dblclick", function(e){ - if(!element.classList.contains("tabulator-editing")){ - element.focus({preventScroll: true}); - self.edit(cell, e, false); - } - }); - } - - - if(this.options("editTriggerEvent") === "focus" || this.options("editTriggerEvent") === "click"){ - element.addEventListener("click", function(e){ - if(!element.classList.contains("tabulator-editing")){ - element.focus({preventScroll: true}); - self.edit(cell, e, false); - } - }); - } - - if(this.options("editTriggerEvent") === "focus"){ - element.addEventListener("focus", function(e){ - if(!self.recursionBlock){ - self.edit(cell, e, false); - } - }); - } - } - } - - focusCellNoEvent(cell, block){ - this.recursionBlock = true; - - if(!(block && this.table.browser === "ie")){ - cell.getElement().focus({preventScroll: true}); - } - - this.recursionBlock = false; - } - - editCell(cell, forceEdit){ - this.focusCellNoEvent(cell); - this.edit(cell, false, forceEdit); - } - - focusScrollAdjust(cell){ - if(this.table.rowManager.getRenderMode() == "virtual"){ - var topEdge = this.table.rowManager.element.scrollTop, - bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop, - rowEl = cell.row.getElement(); - - if(rowEl.offsetTop < topEdge){ - this.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop); - }else { - if(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){ - this.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge); - } - } - - var leftEdge = this.table.rowManager.element.scrollLeft, - rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft, - cellEl = cell.getElement(); - - if(this.table.modExists("frozenColumns")){ - leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0); - rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0); - } - - if(this.table.options.renderHorizontal === "virtual"){ - leftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - rightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - } - - if(cellEl.offsetLeft < leftEdge){ - this.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft); - }else { - if(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){ - this.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge); - } - } - } - } - - allowEdit(cell) { - var check = cell.column.modules.edit ? true : false; - - if(cell.column.modules.edit){ - switch(typeof cell.column.modules.edit.check){ - case "function": - if(cell.row.initialized){ - check = cell.column.modules.edit.check(cell.getComponent()); - } - break; - - case "string": - check = !!cell.row.data[cell.column.modules.edit.check]; - break; - - case "boolean": - check = cell.column.modules.edit.check; - break; - } - } - - return check; - } - - edit(cell, e, forceEdit){ - var self = this, - allowEdit = true, - rendered = function(){}, - element = cell.getElement(), - editFinished = false, - cellEditor, component, params; - - //prevent editing if another cell is refusing to leave focus (eg. validation fail) - - if(this.currentCell){ - if(!this.invalidEdit && this.currentCell !== cell){ - this.cancelEdit(); - } - return; - } - - //handle successful value change - function success(value){ - if(self.currentCell === cell && !editFinished){ - var valid = self.chain("edit-success", [cell, value], true, true); - - if(valid === true || self.table.options.validationMode === "highlight"){ - - editFinished = true; - - self.clearEditor(); - - if(!cell.modules.edit){ - cell.modules.edit = {}; - } - - cell.modules.edit.edited = true; - - if(self.editedCells.indexOf(cell) == -1){ - self.editedCells.push(cell); - } - - cell.setValue(value, true); - - return valid === true; - }else { - editFinished = true; - self.invalidEdit = true; - self.focusCellNoEvent(cell, true); - rendered(); - - setTimeout(() => { - editFinished = false; - }, 10); - return false; - } - } - } - - //handle aborted edit - function cancel(){ - // editFinished = true; - - if(self.currentCell === cell && !editFinished){ - self.cancelEdit(); - } - } - - function onRendered(callback){ - rendered = callback; - } - - if(!cell.column.modules.edit.blocked){ - if(e){ - e.stopPropagation(); - } - - allowEdit = this.allowEdit(cell); - - if(allowEdit || forceEdit){ - self.cancelEdit(); - - self.currentCell = cell; - - this.focusScrollAdjust(cell); - - component = cell.getComponent(); - - if(this.mouseClick){ - this.mouseClick = false; - - if(cell.column.definition.cellClick){ - cell.column.definition.cellClick.call(this.table, e, component); - } - } - - if(cell.column.definition.cellEditing){ - cell.column.definition.cellEditing.call(this.table, component); - } - - this.dispatch("cell-editing", cell); - this.dispatchExternal("cellEditing", component); - - params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params; - - cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params); - - //if editor returned, add to DOM, if false, abort edit - if(this.currentCell && cellEditor !== false){ - if(cellEditor instanceof Node){ - element.classList.add("tabulator-editing"); - cell.row.getElement().classList.add("tabulator-editing"); - cell.table.element.classList.add("tabulator-editing"); - while(element.firstChild) element.removeChild(element.firstChild); - element.appendChild(cellEditor); - - //trigger onRendered Callback - rendered(); - - //prevent editing from triggering rowClick event - var children = element.children; - - for (var i = 0; i < children.length; i++) { - children[i].addEventListener("click", function(e){ - e.stopPropagation(); - }); - } - }else { - console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor); - this.blur(element); - return false; - } - }else { - this.blur(element); - return false; - } - - return true; - }else { - this.mouseClick = false; - this.blur(element); - return false; - } - }else { - this.mouseClick = false; - this.blur(element); - return false; - } - } - - blur(element){ - if(!this.confirm("edit-blur", [element]) ){ - element.blur(); - } - } - - getEditedCells(){ - var output = []; - - this.editedCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearEdited(cell){ - var editIndex; - - if(cell.modules.edit && cell.modules.edit.edited){ - cell.modules.edit.edited = false; - - this.dispatch("edit-edited-clear", cell); - } - - editIndex = this.editedCells.indexOf(cell); - - if(editIndex > -1){ - this.editedCells.splice(editIndex, 1); - } - } -} - -Edit$1.moduleName = "edit"; - -//load defaults -Edit$1.editors = defaultEditors; - -class ExportRow{ - constructor(type, columns, component, indent){ - this.type = type; - this.columns = columns; - this.component = component || false; - this.indent = indent || 0; - } -} - -class ExportColumn{ - constructor(value, component, width, height, depth){ - this.value = value; - this.component = component || false; - this.width = width; - this.height = height; - this.depth = depth; - } -} - -class Export extends Module{ - - constructor(table){ - super(table); - - this.config = {}; - this.cloneTableStyle = true; - this.colVisProp = ""; - - this.registerTableOption("htmlOutputConfig", false); //html output config - - this.registerColumnOption("htmlOutput"); - this.registerColumnOption("titleHtmlOutput"); - } - - initialize(){ - this.registerTableFunction("getHtml", this.getHtml.bind(this)); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - generateExportList(config, style, range, colVisProp){ - this.cloneTableStyle = style; - this.config = config || {}; - this.colVisProp = colVisProp; - - var headers, body; - - if (range === 'range') { - var columns = this.table.modules.selectRange.selectedColumns(); - headers = this.config.columnHeaders !== false - ? this.headersToExportRows(this.generateColumnGroupHeaders(columns)) - : []; - body = this.bodyToExportRows(this.rowLookup(range), this.table.modules.selectRange.selectedColumns(true)); - } else { - headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : []; - body = this.bodyToExportRows(this.rowLookup(range)); - } - - return headers.concat(body); - } - - generateTable(config, style, range, colVisProp){ - var list = this.generateExportList(config, style, range, colVisProp); - - return this.generateTableElement(list); - } - - rowLookup(range){ - var rows = []; - - if(typeof range == "function"){ - range.call(this.table).forEach((row) =>{ - row = this.table.rowManager.findRow(row); - - if(row){ - rows.push(row); - } - }); - }else { - switch(range){ - case true: - case "visible": - rows = this.table.rowManager.getVisibleRows(false, true); - break; - - case "all": - rows = this.table.rowManager.rows; - break; - - case "selected": - rows = this.table.modules.selectRow.selectedRows; - break; - - case "range": - rows = this.table.modules.selectRange.selectedRows(); - break; - - case "active": - default: - if(this.table.options.pagination){ - rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2); - }else { - rows = this.table.rowManager.getDisplayRows(); - } - } - } - - return Object.assign([], rows); - } - - generateColumnGroupHeaders(columns){ - var output = []; - - if (!columns) { - columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex; - } - - columns.forEach((column) => { - var colData = this.processColumnGroup(column); - - if(colData){ - output.push(colData); - } - }); - - return output; - } - - processColumnGroup(column){ - var subGroups = column.columns, - maxDepth = 0, - title = column.definition["title" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title; - - var groupData = { - title:title, - column:column, - depth:1, - }; - - if(subGroups.length){ - groupData.subGroups = []; - groupData.width = 0; - - subGroups.forEach((subGroup) => { - var subGroupData = this.processColumnGroup(subGroup); - - if(subGroupData){ - groupData.width += subGroupData.width; - groupData.subGroups.push(subGroupData); - - if(subGroupData.depth > maxDepth){ - maxDepth = subGroupData.depth; - } - } - }); - - groupData.depth += maxDepth; - - if(!groupData.width){ - return false; - } - }else { - if(this.columnVisCheck(column)){ - groupData.width = 1; - }else { - return false; - } - } - - return groupData; - } - - columnVisCheck(column){ - var visProp = column.definition[this.colVisProp]; - - if(typeof visProp === "function"){ - visProp = visProp.call(this.table, column.getComponent()); - } - - return visProp !== false && (column.visible || (!column.visible && visProp)); - } - - headersToExportRows(columns){ - var headers = [], - headerDepth = 0, - exportRows = []; - - function parseColumnGroup(column, level){ - - var depth = headerDepth - level; - - if(typeof headers[level] === "undefined"){ - headers[level] = []; - } - - column.height = column.subGroups ? 1 : (depth - column.depth) + 1; - - headers[level].push(column); - - if(column.height > 1){ - for(let i = 1; i < column.height; i ++){ - - if(typeof headers[level + i] === "undefined"){ - headers[level + i] = []; - } - - headers[level + i].push(false); - } - } - - if(column.width > 1){ - for(let i = 1; i < column.width; i ++){ - headers[level].push(false); - } - } - - if(column.subGroups){ - column.subGroups.forEach(function(subGroup){ - parseColumnGroup(subGroup, level+1); - }); - } - } - - //calculate maximum header depth - columns.forEach(function(column){ - if(column.depth > headerDepth){ - headerDepth = column.depth; - } - }); - - columns.forEach(function(column){ - parseColumnGroup(column,0); - }); - - headers.forEach((header) => { - var columns = []; - - header.forEach((col) => { - if(col){ - let title = typeof col.title === "undefined" ? "" : col.title; - columns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth)); - }else { - columns.push(null); - } - }); - - exportRows.push(new ExportRow("header", columns)); - }); - - return exportRows; - } - - bodyToExportRows(rows, columns = []){ - var exportRows = []; - - if (columns.length === 0) { - this.table.columnManager.columnsByIndex.forEach((column) => { - if (this.columnVisCheck(column)) { - columns.push(column.getComponent()); - } - }); - } - - if(this.config.columnCalcs !== false && this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized){ - rows.unshift(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized){ - rows.push(this.table.modules.columnCalcs.botRow); - } - } - - rows = rows.filter((row) => { - switch(row.type){ - case "group": - return this.config.rowGroups !== false; - - case "calc": - return this.config.columnCalcs !== false; - - case "row": - return !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent); - } - - return true; - }); - - rows.forEach((row, i) => { - var rowData = row.getData(this.colVisProp); - var exportCols = []; - var indent = 0; - - switch(row.type){ - case "group": - indent = row.level; - exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1)); - break; - - case "calc" : - case "row" : - columns.forEach((col) => { - exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1)); - }); - - if(this.table.options.dataTree && this.config.dataTree !== false){ - indent = row.modules.dataTree.index; - } - break; - } - - exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent)); - }); - - return exportRows; - } - - generateTableElement(list){ - var table = document.createElement("table"), - headerEl = document.createElement("thead"), - bodyEl = document.createElement("tbody"), - styles = this.lookupTableStyles(), - rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))], - setup = {}; - - setup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter; - - if(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists("columnCalcs")){ - setup.treeElementField = this.table.modules.dataTree.elementField; - } - - //assign group header formatter - setup.groupHeader = this.table.options["groupHeader" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))]; - - if(setup.groupHeader && !Array.isArray(setup.groupHeader)){ - setup.groupHeader = [setup.groupHeader]; - } - - table.classList.add("tabulator-print-table"); - - this.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - - - if(list.length > 1000){ - console.warn("It may take a long time to render an HTML table with more than 1000 rows"); - } - - list.forEach((row, i) => { - let rowEl; - - switch(row.type){ - case "header": - headerEl.appendChild(this.generateHeaderElement(row, setup, styles)); - break; - - case "group": - bodyEl.appendChild(this.generateGroupElement(row, setup, styles)); - break; - - case "calc": - bodyEl.appendChild(this.generateCalcElement(row, setup, styles)); - break; - - case "row": - rowEl = this.generateRowElement(row, setup, styles); - - this.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"]); - bodyEl.appendChild(rowEl); - break; - } - }); - - if(headerEl.innerHTML){ - table.appendChild(headerEl); - } - - table.appendChild(bodyEl); - - - this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]); - return table; - } - - lookupTableStyles(){ - var styles = {}; - - //lookup row styles - if(this.cloneTableStyle && window.getComputedStyle){ - styles.oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"); - styles.evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"); - styles.calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs"); - styles.firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"); - styles.firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0]; - - if(styles.firstRow){ - styles.styleCells = styles.firstRow.getElementsByClassName("tabulator-cell"); - styles.firstCell = styles.styleCells[0]; - styles.lastCell = styles.styleCells[styles.styleCells.length - 1]; - } - } - - return styles; - } - - generateHeaderElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - row.columns.forEach((column) => { - if(column){ - var cellEl = document.createElement("th"); - var classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(" ") : []; - - cellEl.colSpan = column.width; - cellEl.rowSpan = column.height; - - cellEl.innerHTML = column.value; - - if(this.cloneTableStyle){ - cellEl.style.boxSizing = "border-box"; - } - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - this.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - this.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - if(column.component._column.visible){ - this.mapElementStyles(column.component.getElement(), cellEl, ["width"]); - }else { - if(column.component._column.definition.width){ - cellEl.style.width = column.component._column.definition.width + "px"; - } - } - - if(column.component._column.parent){ - this.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]); - } - - rowEl.appendChild(cellEl); - } - }); - - return rowEl; - } - - generateGroupElement(row, setup, styles){ - - var rowEl = document.createElement("tr"), - cellEl = document.createElement("td"), - group = row.columns[0]; - - rowEl.classList.add("tabulator-print-table-row"); - - if(setup.groupHeader && setup.groupHeader[row.indent]){ - group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - }else { - if(setup.groupHeader !== false){ - group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - - cellEl.colSpan = group.width; - cellEl.innerHTML = group.value; - - rowEl.classList.add("tabulator-print-table-group"); - rowEl.classList.add("tabulator-group-level-" + row.indent); - - if(group.component.isVisible()){ - rowEl.classList.add("tabulator-group-visible"); - } - - this.mapElementStyles(styles.firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - this.mapElementStyles(styles.firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - rowEl.appendChild(cellEl); - - return rowEl; - } - - generateCalcElement(row, setup, styles){ - var rowEl = this.generateRowElement(row, setup, styles); - - rowEl.classList.add("tabulator-print-table-calcs"); - this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - - return rowEl; - } - - generateRowElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - rowEl.classList.add("tabulator-print-table-row"); - - row.columns.forEach((col, i) => { - if(col){ - var cellEl = document.createElement("td"), - column = col.component._column, - table = this.table, - index = table.columnManager.findColumnIndex(column), - value = col.value, - cellStyle; - - var cellWrapper = { - modules:{}, - getValue:function(){ - return value; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return cellEl; - }, - getType:function(){ - return "cell"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getData:function(){ - return row.component.getData(); - }, - getRow:function(){ - return row.component; - }, - getTable:function(){ - return table; - }, - getComponent:function(){ - return cellWrapper; - }, - column:column, - }; - - var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : []; - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - if(this.table.modExists("format") && this.config.formatCells !== false){ - value = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp); - }else { - switch(typeof value){ - case "object": - value = value !== null ? JSON.stringify(value) : ""; - break; - - case "undefined": - value = ""; - break; - } - } - - if(value instanceof Node){ - cellEl.appendChild(value); - }else { - cellEl.innerHTML = value; - } - - cellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell; - - if(cellStyle){ - this.mapElementStyles(cellStyle, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "text-align"]); - - if(column.definition.align){ - cellEl.style.textAlign = column.definition.align; - } - } - - if(this.table.options.dataTree && this.config.dataTree !== false){ - if((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){ - if(row.component._row.modules.dataTree.controlEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild); - } - if(row.component._row.modules.dataTree.branchEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild); - } - } - } - - rowEl.appendChild(cellEl); - - if(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){ - cellWrapper.modules.format.renderedCallback(); - } - } - }); - - if(setup.rowFormatter && row.type === "row" && this.config.formatCells !== false){ - let formatComponent = Object.assign(row.component); - - formatComponent.getElement = function(){return rowEl;}; - - setup.rowFormatter(row.component); - } - - return rowEl; - } - - generateHTMLTable(list){ - var holder = document.createElement("div"); - - holder.appendChild(this.generateTableElement(list)); - - return holder.innerHTML; - } - - getHtml(visible, style, config, colVisProp){ - var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput"); - - return this.generateHTMLTable(list); - } - - mapElementStyles(from, to, props){ - if(this.cloneTableStyle && from && to){ - - var lookup = { - "background-color" : "backgroundColor", - "color" : "fontColor", - "width" : "width", - "font-weight" : "fontWeight", - "font-family" : "fontFamily", - "font-size" : "fontSize", - "text-align" : "textAlign", - "border-top" : "borderTop", - "border-left" : "borderLeft", - "border-right" : "borderRight", - "border-bottom" : "borderBottom", - "padding-top" : "paddingTop", - "padding-left" : "paddingLeft", - "padding-right" : "paddingRight", - "padding-bottom" : "paddingBottom", - }; - - if(window.getComputedStyle){ - var fromStyle = window.getComputedStyle(from); - - props.forEach(function(prop){ - if(!to.style[lookup[prop]]){ - to.style[lookup[prop]] = fromStyle.getPropertyValue(prop); - } - }); - } - } - } -} - -Export.moduleName = "export"; - -var defaultFilters = { - - //equal to - "=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal == filterVal ? true : false; - }, - - //less than - "<":function(filterVal, rowVal, rowData, filterParams){ - return rowVal < filterVal ? true : false; - }, - - //less than or equal to - "<=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal <= filterVal ? true : false; - }, - - //greater than - ">":function(filterVal, rowVal, rowData, filterParams){ - return rowVal > filterVal ? true : false; - }, - - //greater than or equal to - ">=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal >= filterVal ? true : false; - }, - - //not equal to - "!=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal != filterVal ? true : false; - }, - - "regex":function(filterVal, rowVal, rowData, filterParams){ - - if(typeof filterVal == "string"){ - filterVal = new RegExp(filterVal); - } - - return filterVal.test(rowVal); - }, - - //contains the string - "like":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1; - } - else { - return false; - } - } - }, - - //contains the keywords - "keywords":function(filterVal, rowVal, rowData, filterParams){ - var keywords = filterVal.toLowerCase().split(typeof filterParams.separator === "undefined" ? " " : filterParams.separator), - value = String(rowVal === null || typeof rowVal === "undefined" ? "" : rowVal).toLowerCase(), - matches = []; - - keywords.forEach((keyword) =>{ - if(value.includes(keyword)){ - matches.push(true); - } - }); - - return filterParams.matchAll ? matches.length === keywords.length : !!matches.length; - }, - - //starts with the string - "starts":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase()); - } - else { - return false; - } - } - }, - - //ends with the string - "ends":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else { - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase()); - } - else { - return false; - } - } - }, - - //in array - "in":function(filterVal, rowVal, rowData, filterParams){ - if(Array.isArray(filterVal)){ - return filterVal.length ? filterVal.indexOf(rowVal) > -1 : true; - }else { - console.warn("Filter Error - filter value is not an array:", filterVal); - return false; - } - }, -}; - -class Filter extends Module{ - - constructor(table){ - super(table); - - this.filterList = []; //hold filter list - this.headerFilters = {}; //hold column filters - this.headerFilterColumns = []; //hold columns that use header filters - - this.prevHeaderFilterChangeCheck = ""; - this.prevHeaderFilterChangeCheck = "{}"; - - this.changed = false; //has filtering changed since last render - this.tableInitialized = false; - - this.registerTableOption("filterMode", "local"); //local or remote filtering - - this.registerTableOption("initialFilter", false); //initial filtering criteria - this.registerTableOption("initialHeaderFilter", false); //initial header filtering criteria - this.registerTableOption("headerFilterLiveFilterDelay", 300); //delay before updating column after user types in header filter - this.registerTableOption("placeholderHeaderFilter", false); //placeholder when header filter is empty - - this.registerColumnOption("headerFilter"); - this.registerColumnOption("headerFilterPlaceholder"); - this.registerColumnOption("headerFilterParams"); - this.registerColumnOption("headerFilterEmptyCheck"); - this.registerColumnOption("headerFilterFunc"); - this.registerColumnOption("headerFilterFuncParams"); - this.registerColumnOption("headerFilterLiveFilter"); - - this.registerTableFunction("searchRows", this.searchRows.bind(this)); - this.registerTableFunction("searchData", this.searchData.bind(this)); - - this.registerTableFunction("setFilter", this.userSetFilter.bind(this)); - this.registerTableFunction("refreshFilter", this.userRefreshFilter.bind(this)); - this.registerTableFunction("addFilter", this.userAddFilter.bind(this)); - this.registerTableFunction("getFilters", this.getFilters.bind(this)); - this.registerTableFunction("setHeaderFilterFocus", this.userSetHeaderFilterFocus.bind(this)); - this.registerTableFunction("getHeaderFilterValue", this.userGetHeaderFilterValue.bind(this)); - this.registerTableFunction("setHeaderFilterValue", this.userSetHeaderFilterValue.bind(this)); - this.registerTableFunction("getHeaderFilters", this.getHeaderFilters.bind(this)); - this.registerTableFunction("removeFilter", this.userRemoveFilter.bind(this)); - this.registerTableFunction("clearFilter", this.userClearFilter.bind(this)); - this.registerTableFunction("clearHeaderFilter", this.userClearHeaderFilter.bind(this)); - - this.registerComponentFunction("column", "headerFilterFocus", this.setHeaderFilterFocus.bind(this)); - this.registerComponentFunction("column", "reloadHeaderFilter", this.reloadHeaderFilter.bind(this)); - this.registerComponentFunction("column", "getHeaderFilterValue", this.getHeaderFilterValue.bind(this)); - this.registerComponentFunction("column", "setHeaderFilterValue", this.setHeaderFilterValue.bind(this)); - } - - initialize(){ - this.subscribe("column-init", this.initializeColumnHeaderFilter.bind(this)); - this.subscribe("column-width-fit-before", this.hideHeaderFilterElements.bind(this)); - this.subscribe("column-width-fit-after", this.showHeaderFilterElements.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.subscribe("placeholder", this.generatePlaceholder.bind(this)); - - if(this.table.options.filterMode === "remote"){ - this.subscribe("data-params", this.remoteFilterParams.bind(this)); - } - - this.registerDataHandler(this.filter.bind(this), 10); - } - - tableBuilt(){ - if(this.table.options.initialFilter){ - this.setFilter(this.table.options.initialFilter); - } - - if(this.table.options.initialHeaderFilter){ - this.table.options.initialHeaderFilter.forEach((item) => { - - var column = this.table.columnManager.findColumn(item.field); - - if(column){ - this.setHeaderFilterValue(column, item.value); - }else { - console.warn("Column Filter Error - No matching column found:", item.field); - return false; - } - }); - } - - this.tableInitialized = true; - } - - remoteFilterParams(data, config, silent, params){ - params.filter = this.getFilters(true, true); - return params; - } - - generatePlaceholder(text){ - if(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){ - return this.table.options.placeholderHeaderFilter; - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - //set standard filters - userSetFilter(field, type, value, params){ - this.setFilter(field, type, value, params); - this.refreshFilter(); - } - - //set standard filters - userRefreshFilter(){ - this.refreshFilter(); - } - - //add filter to array - userAddFilter(field, type, value, params){ - this.addFilter(field, type, value, params); - this.refreshFilter(); - } - - userSetHeaderFilterFocus(field){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterFocus(column); - }else { - console.warn("Column Filter Focus Error - No matching column found:", field); - return false; - } - } - - userGetHeaderFilterValue(field) { - var column = this.table.columnManager.findColumn(field); - - if(column){ - return this.getHeaderFilterValue(column); - }else { - console.warn("Column Filter Error - No matching column found:", field); - } - } - - userSetHeaderFilterValue(field, value){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterValue(column, value); - }else { - console.warn("Column Filter Error - No matching column found:", field); - return false; - } - } - - //remove filter from array - userRemoveFilter(field, type, value){ - this.removeFilter(field, type, value); - this.refreshFilter(); - } - - //clear filters - userClearFilter(all){ - this.clearFilter(all); - this.refreshFilter(); - } - - //clear header filters - userClearHeaderFilter(){ - this.clearHeaderFilter(); - this.refreshFilter(); - } - - - //search for specific row components - searchRows(field, type, value){ - return this.search("rows", field, type, value); - } - - //search for specific data - searchData(field, type, value){ - return this.search("data", field, type, value); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnHeaderFilter(column){ - var def = column.definition; - - if(def.headerFilter){ - this.initializeColumn(column); - } - } - - //initialize column header filter - initializeColumn(column, value){ - var self = this, - field = column.getField(); - - //handle successfully value change - function success(value){ - var filterType = (column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text") || column.modules.filter.tagType == "textarea" ? "partial" : "match", - type = "", - filterChangeCheck = "", - filterFunc; - - if(typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value){ - - column.modules.filter.prevSuccess = value; - - if(!column.modules.filter.emptyFunc(value)){ - column.modules.filter.value = value; - - switch(typeof column.definition.headerFilterFunc){ - case "string": - if(Filter.filters[column.definition.headerFilterFunc]){ - type = column.definition.headerFilterFunc; - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params); - }; - }else { - console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc); - } - break; - - case "function": - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return column.definition.headerFilterFunc(value, fieldVal, data, params); - }; - - type = filterFunc; - break; - } - - if(!filterFunc){ - switch(filterType){ - case "partial": - filterFunc = function(data){ - var colVal = column.getFieldValue(data); - - if(typeof colVal !== 'undefined' && colVal !== null){ - return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1; - }else { - return false; - } - }; - type = "like"; - break; - - default: - filterFunc = function(data){ - return column.getFieldValue(data) == value; - }; - type = "="; - } - } - - self.headerFilters[field] = {value:value, func:filterFunc, type:type}; - }else { - delete self.headerFilters[field]; - } - - column.modules.filter.value = value; - - filterChangeCheck = JSON.stringify(self.headerFilters); - - if(self.prevHeaderFilterChangeCheck !== filterChangeCheck){ - self.prevHeaderFilterChangeCheck = filterChangeCheck; - - self.trackChanges(); - self.refreshFilter(); - } - } - - return true; - } - - column.modules.filter = { - success:success, - attrType:false, - tagType:false, - emptyFunc:false, - }; - - this.generateHeaderFilterElement(column); - } - - generateHeaderFilterElement(column, initialValue, reinitialize){ - var self = this, - success = column.modules.filter.success, - field = column.getField(), - filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback; - - column.modules.filter.value = initialValue; - - //handle aborted edit - function cancel(){} - - function onRendered(callback){ - onRenderedCallback = callback; - } - - if(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){ - column.contentElement.removeChild(column.modules.filter.headerElement.parentNode); - } - - if(field){ - - //set empty value function - column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){ - return !value && value !== 0; - }; - - filterElement = document.createElement("div"); - filterElement.classList.add("tabulator-header-filter"); - - //set column editor - switch(typeof column.definition.headerFilter){ - case "string": - if(self.table.modules.edit.editors[column.definition.headerFilter]){ - editor = self.table.modules.edit.editors[column.definition.headerFilter]; - - if((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else { - console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor); - } - break; - - case "function": - editor = column.definition.headerFilter; - break; - - case "boolean": - if(column.modules.edit && column.modules.edit.editor){ - editor = column.modules.edit.editor; - }else { - if(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){ - editor = self.table.modules.edit.editors[column.definition.formatter]; - - if((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else { - editor = self.table.modules.edit.editors["input"]; - } - } - break; - } - - if(editor){ - - cellWrapper = { - getValue:function(){ - return typeof initialValue !== "undefined" ? initialValue : ""; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return filterElement; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - getType:() => { - return "header"; - }, - getRow:function(){ - return { - normalizeHeight:function(){ - - } - }; - } - }; - - params = column.definition.headerFilterParams || {}; - - params = typeof params === "function" ? params.call(self.table, cellWrapper) : params; - - editorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params); - - if(!editorElement){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false"); - return; - } - - if(!(editorElement instanceof Node)){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement); - return; - } - - //set Placeholder Text - self.langBind("headerFilters|columns|" + column.definition.field, function(value){ - editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : (column.definition.headerFilterPlaceholder || self.langText("headerFilters|default"))); - }); - - //focus on element on click - editorElement.addEventListener("click", function(e){ - e.stopPropagation(); - editorElement.focus(); - }); - - editorElement.addEventListener("focus", (e) => { - var left = this.table.columnManager.contentsElement.scrollLeft; - - var headerPos = this.table.rowManager.element.scrollLeft; - - if(left !== headerPos){ - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - - //live update filters as user types - typingTimer = false; - - searchTrigger = function(e){ - if(typingTimer){ - clearTimeout(typingTimer); - } - - typingTimer = setTimeout(function(){ - success(editorElement.value); - },self.table.options.headerFilterLiveFilterDelay); - }; - - column.modules.filter.headerElement = editorElement; - column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "" ; - column.modules.filter.tagType = editorElement.tagName.toLowerCase(); - - if(column.definition.headerFilterLiveFilter !== false){ - - if ( - !( - column.definition.headerFilter === 'autocomplete' || - column.definition.headerFilter === 'tickCross' || - ((column.definition.editor === 'autocomplete' || - column.definition.editor === 'tickCross') && - column.definition.headerFilter === true) - ) - ) { - editorElement.addEventListener("keyup", searchTrigger); - editorElement.addEventListener("search", searchTrigger); - - - //update number filtered columns on change - if(column.modules.filter.attrType == "number"){ - editorElement.addEventListener("change", function(e){ - success(editorElement.value); - }); - } - - //change text inputs to search inputs to allow for clearing of field - if(column.modules.filter.attrType == "text" && this.table.browser !== "ie"){ - editorElement.setAttribute("type", "search"); - // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click - } - - } - - //prevent input and select elements from propagating click to column sorters etc - if(column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea"){ - editorElement.addEventListener("mousedown",function(e){ - e.stopPropagation(); - }); - } - } - - filterElement.appendChild(editorElement); - - column.contentElement.appendChild(filterElement); - - if(!reinitialize){ - self.headerFilterColumns.push(column); - } - - if(onRenderedCallback){ - onRenderedCallback(); - } - } - }else { - console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title); - } - } - - //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode) - hideHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = 'none'; - } - }); - } - - //show all header filter elements (used to ensure correct column widths in "fitData" layout mode) - showHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = ''; - } - }); - } - - //programmatically set focus of header filter - setHeaderFilterFocus(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.focus(); - }else { - console.warn("Column Filter Focus Error - No header filter set on column:", column.getField()); - } - } - - //programmatically get value of header filter - getHeaderFilterValue(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - return column.modules.filter.value; - } else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - - //programmatically set value of header filter - setHeaderFilterValue(column, value){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, value, true); - column.modules.filter.success(value); - }else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - reloadHeaderFilter(column){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, column.modules.filter.value, true); - }else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - refreshFilter(){ - if(this.tableInitialized){ - if(this.table.options.filterMode === "remote"){ - this.reloadData(null, false, false); - }else { - this.refreshData(true); - } - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the filters has changed since last use - trackChanges(){ - this.changed = true; - this.dispatch("filter-changed"); - } - - //check if the filters has changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //set standard filters - setFilter(field, type, value, params){ - this.filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - this.addFilter(field); - } - - //add filter to array - addFilter(field, type, value, params){ - var changed = false; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - this.filterList.push(filter); - changed = true; - } - }); - - if(changed){ - this.trackChanges(); - } - } - - findFilter(filter){ - var column; - - if(Array.isArray(filter)){ - return this.findSubFilters(filter); - } - - var filterFunc = false; - - if(typeof filter.field == "function"){ - filterFunc = function(data){ - return filter.field(data, filter.type || {});// pass params to custom filter function - }; - }else { - - if(Filter.filters[filter.type]){ - - column = this.table.columnManager.getColumnByField(filter.field); - - if(column){ - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {}); - }; - }else { - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {}); - }; - } - - - }else { - console.warn("Filter Error - No such filter type found, ignoring: ", filter.type); - } - } - - filter.func = filterFunc; - - return filter.func ? filter : false; - } - - findSubFilters(filters){ - var output = []; - - filters.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - output.push(filter); - } - }); - - return output.length ? output : false; - } - - //get all filters - getFilters(all, ajax){ - var output = []; - - if(all){ - output = this.getHeaderFilters(); - } - - if(ajax){ - output.forEach(function(item){ - if(typeof item.type == "function"){ - item.type = "function"; - } - }); - } - - output = output.concat(this.filtersToArray(this.filterList, ajax)); - - return output; - } - - //filter to Object - filtersToArray(filterList, ajax){ - var output = []; - - filterList.forEach((filter) => { - var item; - - if(Array.isArray(filter)){ - output.push(this.filtersToArray(filter, ajax)); - }else { - item = {field:filter.field, type:filter.type, value:filter.value}; - - if(ajax){ - if(typeof item.type == "function"){ - item.type = "function"; - } - } - - output.push(item); - } - }); - - return output; - } - - //get all filters - getHeaderFilters(){ - var output = []; - - for(var key in this.headerFilters){ - output.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value}); - } - - return output; - } - - //remove filter from array - removeFilter(field, type, value){ - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - var index = -1; - - if(typeof filter.field == "object"){ - index = this.filterList.findIndex((element) => { - return filter === element; - }); - }else { - index = this.filterList.findIndex((element) => { - return filter.field === element.field && filter.type === element.type && filter.value === element.value; - }); - } - - if(index > -1){ - this.filterList.splice(index, 1); - }else { - console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type); - } - }); - - this.trackChanges(); - } - - //clear filters - clearFilter(all){ - this.filterList = []; - - if(all){ - this.clearHeaderFilter(); - } - - this.trackChanges(); - } - - //clear header filters - clearHeaderFilter(){ - this.headerFilters = {}; - this.prevHeaderFilterChangeCheck = "{}"; - - this.headerFilterColumns.forEach((column) => { - if(typeof column.modules.filter.value !== "undefined"){ - delete column.modules.filter.value; - } - column.modules.filter.prevSuccess = undefined; - this.reloadHeaderFilter(column); - }); - - this.trackChanges(); - } - - //search data and return matching rows - search (searchType, field, type, value){ - var activeRows = [], - filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - filterList.push(filter); - } - }); - - this.table.rowManager.rows.forEach((row) => { - var match = true; - - filterList.forEach((filter) => { - if(!this.filterRecurse(filter, row.getData())){ - match = false; - } - }); - - if(match){ - activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent()); - } - - }); - - return activeRows; - } - - //filter row array - filter(rowList, filters){ - var activeRows = [], - activeRowComponents = []; - - if(this.subscribedExternal("dataFiltering")){ - this.dispatchExternal("dataFiltering", this.getFilters(true)); - } - - if(this.table.options.filterMode !== "remote" && (this.filterList.length || Object.keys(this.headerFilters).length)){ - - rowList.forEach((row) => { - if(this.filterRow(row)){ - activeRows.push(row); - } - }); - - }else { - activeRows = rowList.slice(0); - } - - if(this.subscribedExternal("dataFiltered")){ - - activeRows.forEach((row) => { - activeRowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataFiltered", this.getFilters(true), activeRowComponents); - } - - return activeRows; - } - - //filter individual row - filterRow(row, filters){ - var match = true, - data = row.getData(); - - this.filterList.forEach((filter) => { - if(!this.filterRecurse(filter, data)){ - match = false; - } - }); - - - for(var field in this.headerFilters){ - if(!this.headerFilters[field].func(data)){ - match = false; - } - } - - return match; - } - - filterRecurse(filter, data){ - var match = false; - - if(Array.isArray(filter)){ - filter.forEach((subFilter) => { - if(this.filterRecurse(subFilter, data)){ - match = true; - } - }); - }else { - match = filter.func(data); - } - - return match; - } -} - -Filter.moduleName = "filter"; - -//load defaults -Filter.filters = defaultFilters; - -function plaintext(cell, formatterParams, onRendered){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); -} - -function html$1(cell, formatterParams, onRendered){ - return cell.getValue(); -} - -function textarea$1(cell, formatterParams, onRendered){ - cell.getElement().style.whiteSpace = "pre-wrap"; - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); -} - -function money(cell, formatterParams, onRendered){ - var floatVal = parseFloat(cell.getValue()), - sign = "", - number, integer, decimal, rgx, value; - - var decimalSym = formatterParams.decimal || "."; - var thousandSym = formatterParams.thousand || ","; - var negativeSign = formatterParams.negativeSign || "-"; - var symbol = formatterParams.symbol || ""; - var after = !!formatterParams.symbolAfter; - var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2; - - if(isNaN(floatVal)){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - if(floatVal < 0){ - floatVal = Math.abs(floatVal); - sign = negativeSign; - } - - number = precision !== false ? floatVal.toFixed(precision) : floatVal; - number = String(number).split("."); - - integer = number[0]; - decimal = number.length > 1 ? decimalSym + number[1] : ""; - - if (formatterParams.thousand !== false) { - rgx = /(\d+)(\d{3})/; - - while (rgx.test(integer)){ - integer = integer.replace(rgx, "$1" + thousandSym + "$2"); - } - } - - value = integer + decimal; - - if(sign === true){ - value = "(" + value + ")"; - return after ? value + symbol : symbol + value; - }else { - return after ? sign + value + symbol : sign + symbol + value; - } -} - -function link(cell, formatterParams, onRendered){ - var value = cell.getValue(), - urlPrefix = formatterParams.urlPrefix || "", - download = formatterParams.download, - label = value, - el = document.createElement("a"), - data; - - function labelTraverse(path, data){ - var item = path.shift(), - value = data[item]; - - if(path.length && typeof value === "object"){ - return labelTraverse(path, value); - } - - return value; - } - - if(formatterParams.labelField){ - data = cell.getData(); - label = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data); - } - - if(formatterParams.label){ - switch(typeof formatterParams.label){ - case "string": - label = formatterParams.label; - break; - - case "function": - label = formatterParams.label(cell); - break; - } - } - - if(label){ - if(formatterParams.urlField){ - data = cell.getData(); - - value = Helpers.retrieveNestedData(this.table.options.nestedFieldSeparator, formatterParams.urlField, data); - } - - if(formatterParams.url){ - switch(typeof formatterParams.url){ - case "string": - value = formatterParams.url; - break; - - case "function": - value = formatterParams.url(cell); - break; - } - } - - el.setAttribute("href", urlPrefix + value); - - if(formatterParams.target){ - el.setAttribute("target", formatterParams.target); - } - - if(formatterParams.download){ - - if(typeof download == "function"){ - download = download(cell); - }else { - download = download === true ? "" : download; - } - - el.setAttribute("download", download); - } - - el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label)); - - return el; - }else { - return " "; - } -} - -function image(cell, formatterParams, onRendered){ - var el = document.createElement("img"), - src = cell.getValue(); - - if(formatterParams.urlPrefix){ - src = formatterParams.urlPrefix + cell.getValue(); - } - - if(formatterParams.urlSuffix){ - src = src + formatterParams.urlSuffix; - } - - el.setAttribute("src", src); - - switch(typeof formatterParams.height){ - case "number": - el.style.height = formatterParams.height + "px"; - break; - - case "string": - el.style.height = formatterParams.height; - break; - } - - switch(typeof formatterParams.width){ - case "number": - el.style.width = formatterParams.width + "px"; - break; - - case "string": - el.style.width = formatterParams.width; - break; - } - - el.addEventListener("load", function(){ - cell.getRow().normalizeHeight(); - }); - - return el; -} - -function tickCross$1(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - empty = formatterParams.allowEmpty, - truthy = formatterParams.allowTruthy, - trueValueSet = Object.keys(formatterParams).includes("trueValue"), - tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '', - cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : ''; - - if((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")))){ - element.setAttribute("aria-checked", true); - return tick || ""; - }else { - if(empty && (value === "null" || value === "" || value === null || typeof value === "undefined")){ - element.setAttribute("aria-checked", "mixed"); - return ""; - }else { - element.setAttribute("aria-checked", false); - return cross || ""; - } - } -} - -function datetime$1(cell, formatterParams, onRendered){ - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var outputFormat = formatterParams.outputFormat || "dd/MM/yyyy HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if(newDatetime.isValid){ - if(formatterParams.timezone){ - newDatetime = newDatetime.setZone(formatterParams.timezone); - } - - return newDatetime.toFormat(outputFormat); - }else { - if(invalid === true || !value){ - return value; - }else if(typeof invalid === "function"){ - return invalid(value); - }else { - return invalid; - } - } - }else { - console.error("Format Error - 'datetime' formatter is dependant on luxon.js"); - } -} - -function datetimediff (cell, formatterParams, onRendered) { - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false; - var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : "days"; - var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false; - var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : DT.now(); - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else { - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if (newDatetime.isValid){ - if(humanize){ - return newDatetime.diff(date, unit).toHuman() + (suffix ? " " + suffix : ""); - }else { - return parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? " " + suffix : ""); - } - } else { - - if (invalid === true) { - return value; - } else if (typeof invalid === "function") { - return invalid(value); - } else { - return invalid; - } - } - }else { - console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js"); - } -} - -function lookup (cell, formatterParams, onRendered) { - var value = cell.getValue(); - - if (typeof formatterParams[value] === "undefined") { - console.warn('Missing display value for ' + value); - return value; - } - - return formatterParams[value]; -} - -function star$1(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5, - stars = document.createElement("span"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"), - starActive = '', - starInactive = ''; - - //style stars holder - stars.style.verticalAlign = "middle"; - - //style star - star.setAttribute("width", "14"); - star.setAttribute("height", "14"); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - value = value && !isNaN(value) ? parseInt(value) : 0; - - value = Math.max(0, Math.min(value, maxStars)); - - for(var i=1;i<= maxStars;i++){ - var nextStar = star.cloneNode(true); - nextStar.innerHTML = i <= value ? starActive : starInactive; - - stars.appendChild(nextStar); - } - - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - element.setAttribute("aria-label", value); - - return stars; -} - -function traffic(cell, formatterParams, onRendered){ - var value = this.sanitizeHTML(cell.getValue()) || 0, - el = document.createElement("span"), - max = formatterParams && formatterParams.max ? formatterParams.max : 100, - min = formatterParams && formatterParams.min ? formatterParams.min : 0, - colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"], - color = "#666666", - percent, percentValue; - - if(isNaN(value) || typeof cell.getValue() === "undefined"){ - return; - } - - el.classList.add("tabulator-traffic-light"); - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set color - switch(typeof colors){ - case "string": - color = colors; - break; - case "function": - color = colors(value); - break; - case "object": - if(Array.isArray(colors)){ - var unit = 100 / colors.length; - var index = Math.floor(percentValue / unit); - - index = Math.min(index, colors.length - 1); - index = Math.max(index, 0); - color = colors[index]; - break; - } - } - - el.style.backgroundColor = color; - - return el; -} - -function progress$1(cell, formatterParams = {}, onRendered){ //progress bar - var value = this.sanitizeHTML(cell.getValue()) || 0, - element = cell.getElement(), - max = formatterParams.max ? formatterParams.max : 100, - min = formatterParams.min ? formatterParams.min : 0, - legendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : "center", - percent, percentValue, color, legend, legendColor; - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set bar color - switch(typeof formatterParams.color){ - case "string": - color = formatterParams.color; - break; - case "function": - color = formatterParams.color(value); - break; - case "object": - if(Array.isArray(formatterParams.color)){ - let unit = 100 / formatterParams.color.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.color.length - 1); - index = Math.max(index, 0); - color = formatterParams.color[index]; - break; - } - default: - color = "#2DC214"; - } - - //generate legend - switch(typeof formatterParams.legend){ - case "string": - legend = formatterParams.legend; - break; - case "function": - legend = formatterParams.legend(value); - break; - case "boolean": - legend = value; - break; - default: - legend = false; - } - - //set legend color - switch(typeof formatterParams.legendColor){ - case "string": - legendColor = formatterParams.legendColor; - break; - case "function": - legendColor = formatterParams.legendColor(value); - break; - case "object": - if(Array.isArray(formatterParams.legendColor)){ - let unit = 100 / formatterParams.legendColor.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.legendColor.length - 1); - index = Math.max(index, 0); - legendColor = formatterParams.legendColor[index]; - } - break; - default: - legendColor = "#000"; - } - - element.style.minWidth = "30px"; - element.style.position = "relative"; - - element.setAttribute("aria-label", percentValue); - - var barEl = document.createElement("div"); - barEl.style.display = "inline-block"; - barEl.style.width = percentValue + "%"; - barEl.style.backgroundColor = color; - barEl.style.height = "100%"; - - barEl.setAttribute('data-max', max); - barEl.setAttribute('data-min', min); - - var barContainer = document.createElement("div"); - barContainer.style.position = "relative"; - barContainer.style.width = "100%"; - barContainer.style.height = "100%"; - - if(legend){ - var legendEl = document.createElement("div"); - legendEl.style.position = "absolute"; - legendEl.style.top = 0; - legendEl.style.left = 0; - legendEl.style.textAlign = legendAlign; - legendEl.style.width = "100%"; - legendEl.style.color = legendColor; - legendEl.innerHTML = legend; - } - - onRendered(function(){ - - //handle custom element needed if formatter is to be included in printed/downloaded output - if(!(cell instanceof CellComponent)){ - var holderEl = document.createElement("div"); - holderEl.style.position = "absolute"; - holderEl.style.top = "4px"; - holderEl.style.bottom = "4px"; - holderEl.style.left = "4px"; - holderEl.style.right = "4px"; - - element.appendChild(holderEl); - - element = holderEl; - } - - element.appendChild(barContainer); - barContainer.appendChild(barEl); - - if(legend){ - barContainer.appendChild(legendEl); - } - }); - - return ""; -} - -function color(cell, formatterParams, onRendered){ - cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue()); - return ""; -} - -function buttonTick(cell, formatterParams, onRendered){ - return ''; -} - -function buttonCross(cell, formatterParams, onRendered){ - return ''; -} - -function rownum(cell, formatterParams, onRendered){ - var content = document.createElement("span"); - var row = cell.getRow(); - var table = cell.getTable(); - - row.watchPosition((position) => { - if (formatterParams.relativeToPage) { - position += table.modules.page.getPageSize() * (table.modules.page.getPage() - 1); - } - content.innerText = position; - }); - - return content; -} - -function handle(cell, formatterParams, onRendered){ - cell.getElement().classList.add("tabulator-row-handle"); - return "
        "; -} - -function responsiveCollapse(cell, formatterParams, onRendered){ - var el = document.createElement("div"), - config = cell.getRow()._row.modules.responsiveLayout; - - el.classList.add("tabulator-responsive-collapse-toggle"); - - el.innerHTML = ` - - - - - - -`; - - cell.getElement().classList.add("tabulator-row-handle"); - - function toggleList(isOpen){ - var collapseEl = config.element; - - config.open = isOpen; - - if(collapseEl){ - - if(config.open){ - el.classList.add("open"); - collapseEl.style.display = ''; - }else { - el.classList.remove("open"); - collapseEl.style.display = 'none'; - } - } - } - - el.addEventListener("click", function(e){ - e.stopImmediatePropagation(); - toggleList(!config.open); - cell.getTable().rowManager.adjustTableSize(); - }); - - toggleList(config.open); - - return el; -} - -function rowSelection(cell, formatterParams, onRendered){ - var checkbox = document.createElement("input"); - var blocked = false; - - checkbox.type = 'checkbox'; - - checkbox.setAttribute("aria-label", "Select Row"); - - if(this.table.modExists("selectRow", true)){ - - checkbox.addEventListener("click", (e) => { - e.stopPropagation(); - }); - - if(typeof cell.getRow == 'function'){ - var row = cell.getRow(); - - if(row instanceof RowComponent){ - - checkbox.addEventListener("change", (e) => { - if(this.table.options.selectableRowsRangeMode === "click"){ - if(!blocked){ - row.toggleSelect(); - }else { - blocked = false; - } - }else { - row.toggleSelect(); - } - }); - - if(this.table.options.selectableRowsRangeMode === "click"){ - checkbox.addEventListener("click", (e) => { - blocked = true; - this.table.modules.selectRow.handleComplexRowClick(row._row, e); - }); - } - - checkbox.checked = row.isSelected && row.isSelected(); - this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox); - }else { - checkbox = ""; - } - }else { - checkbox.addEventListener("change", (e) => { - if(this.table.modules.selectRow.selectedRows.length){ - this.table.deselectRow(); - }else { - this.table.selectRow(formatterParams.rowRange); - } - }); - - this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox); - } - } - - return checkbox; -} - -var defaultFormatters = { - plaintext:plaintext, - html:html$1, - textarea:textarea$1, - money:money, - link:link, - image:image, - tickCross:tickCross$1, - datetime:datetime$1, - datetimediff:datetimediff, - lookup:lookup, - star:star$1, - traffic:traffic, - progress:progress$1, - color:color, - buttonTick:buttonTick, - buttonCross:buttonCross, - rownum:rownum, - handle:handle, - responsiveCollapse:responsiveCollapse, - rowSelection:rowSelection, -}; - -class Format extends Module{ - - constructor(table){ - super(table); - - this.registerColumnOption("formatter"); - this.registerColumnOption("formatterParams"); - - this.registerColumnOption("formatterPrint"); - this.registerColumnOption("formatterPrintParams"); - this.registerColumnOption("formatterClipboard"); - this.registerColumnOption("formatterClipboardParams"); - this.registerColumnOption("formatterHtmlOutput"); - this.registerColumnOption("formatterHtmlOutputParams"); - this.registerColumnOption("titleFormatter"); - this.registerColumnOption("titleFormatterParams"); - } - - initialize(){ - this.subscribe("cell-format", this.formatValue.bind(this)); - this.subscribe("cell-rendered", this.cellRendered.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-format", this.formatHeader.bind(this)); - } - - //initialize column formatter - initializeColumn(column){ - column.modules.format = this.lookupFormatter(column, ""); - - if(typeof column.definition.formatterPrint !== "undefined"){ - column.modules.format.print = this.lookupFormatter(column, "Print"); - } - - if(typeof column.definition.formatterClipboard !== "undefined"){ - column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard"); - } - - if(typeof column.definition.formatterHtmlOutput !== "undefined"){ - column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput"); - } - } - - lookupFormatter(column, type){ - var config = {params:column.definition["formatter" + type + "Params"] || {}}, - formatter = column.definition["formatter" + type]; - - //set column formatter - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - config.formatter = Format.formatters[formatter]; - }else { - console.warn("Formatter Error - No such formatter found: ", formatter); - config.formatter = Format.formatters.plaintext; - } - break; - - case "function": - config.formatter = formatter; - break; - - default: - config.formatter = Format.formatters.plaintext; - break; - } - - return config; - } - - cellRendered(cell){ - if(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){ - cell.modules.format.renderedCallback(); - cell.modules.format.rendered = true; - } - } - - //return a formatted value for a column header - formatHeader(column, title, el){ - var formatter, params, onRendered, mockCell; - - if(column.definition.titleFormatter){ - formatter = this.getFormatter(column.definition.titleFormatter); - - onRendered = (callback) => { - column.titleFormatterRendered = callback; - }; - - mockCell = { - getValue:function(){ - return title; - }, - getElement:function(){ - return el; - }, - getType:function(){ - return "header"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - } - }; - - params = column.definition.titleFormatterParams || {}; - - params = typeof params === "function" ? params() : params; - - return formatter.call(this, mockCell, params, onRendered); - }else { - return title; - } - } - - - //return a formatted value for a cell - formatValue(cell){ - var component = cell.getComponent(), - params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return cell.column.modules.format.formatter.call(this, component, params, onRendered); - } - - formatExportValue(cell, type){ - var formatter = cell.column.modules.format[type], - params; - - if(formatter){ - params = typeof formatter.params === "function" ? formatter.params(cell.getComponent()) : formatter.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return formatter.formatter.call(this, cell.getComponent(), params, onRendered); - - }else { - return this.formatValue(cell); - } - } - - sanitizeHTML(value){ - if(value){ - var entityMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/', - '`': '`', - '=': '=' - }; - - return String(value).replace(/[&<>"'`=/]/g, function (s) { - return entityMap[s]; - }); - }else { - return value; - } - } - - emptyToSpace(value){ - return value === null || typeof value === "undefined" || value === "" ? " " : value; - } - - //get formatter for cell - getFormatter(formatter){ - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - formatter = Format.formatters[formatter]; - }else { - console.warn("Formatter Error - No such formatter found: ", formatter); - formatter = Format.formatters.plaintext; - } - break; - - case "function": - //Custom formatter Function, do nothing - break; - - default: - formatter = Format.formatters.plaintext; - break; - } - - return formatter; - } -} - -Format.moduleName = "format"; - -//load defaults -Format.formatters = defaultFormatters; - -class FrozenColumns extends Module{ - - constructor(table){ - super(table); - - this.leftColumns = []; - this.rightColumns = []; - this.initializationMode = "left"; - this.active = false; - this.blocked = true; - - this.registerColumnOption("frozen"); - } - - //reset initial state - reset(){ - this.initializationMode = "left"; - this.leftColumns = []; - this.rightColumns = []; - this.active = false; - } - - initialize(){ - this.subscribe("cell-layout", this.layoutCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-width", this.layout.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("table-layout", this.layout.bind(this)); - this.subscribe("columns-loading", this.reset.bind(this)); - - this.subscribe("column-add", this.reinitializeColumns.bind(this)); - this.subscribe("column-deleted", this.reinitializeColumns.bind(this)); - this.subscribe("column-hide", this.reinitializeColumns.bind(this)); - this.subscribe("column-show", this.reinitializeColumns.bind(this)); - this.subscribe("columns-loaded", this.reinitializeColumns.bind(this)); - - this.subscribe("table-redraw", this.layout.bind(this)); - this.subscribe("layout-refreshing", this.blockLayout.bind(this)); - this.subscribe("layout-refreshed", this.unblockLayout.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - } - - blockLayout(){ - this.blocked = true; - } - - unblockLayout(){ - this.blocked = false; - } - - layoutCell(cell){ - this.layoutElement(cell.element, cell.column); - } - - reinitializeColumns(){ - this.reset(); - - this.table.columnManager.columnsByIndex.forEach((column) => { - this.initializeColumn(column); - }); - - this.layout(); - } - - //initialize specific column - initializeColumn(column){ - var config = {margin:0, edge:false}; - - if(!column.isGroup){ - if(this.frozenCheck(column)){ - config.position = this.initializationMode; - - if(this.initializationMode == "left"){ - this.leftColumns.push(column); - }else { - this.rightColumns.unshift(column); - } - - this.active = true; - - column.modules.frozen = config; - }else { - this.initializationMode = "right"; - } - } - } - - frozenCheck(column){ - if(column.parent.isGroup && column.definition.frozen){ - console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"); - } - - if(column.parent.isGroup){ - return this.frozenCheck(column.parent); - }else { - return column.definition.frozen; - } - } - - //layout calculation rows - layoutCalcRows(){ - if(this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){ - this.layoutRow(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){ - this.layoutRow(this.table.modules.columnCalcs.botRow); - } - - if(this.table.modExists("groupRows")){ - this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()); - } - } - } - - layoutGroupCalcs(groups){ - groups.forEach((group) => { - if(group.calcs.top){ - this.layoutRow(group.calcs.top); - } - - if(group.calcs.bottom){ - this.layoutRow(group.calcs.bottom); - } - - if(group.groupList && group.groupList.length){ - this.layoutGroupCalcs(group.groupList); - } - }); - } - - //calculate column positions and layout headers - layoutColumnPosition(allCells){ - var leftParents = []; - - var leftMargin = 0; - var rightMargin = 0; - - this.leftColumns.forEach((column, i) => { - column.modules.frozen.marginValue = leftMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - leftMargin += column.getWidth(); - } - - if(i == this.leftColumns.length - 1){ - column.modules.frozen.edge = true; - }else { - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - var parentEl = this.getColGroupParentElement(column); - if(!leftParents.includes(parentEl)){ - this.layoutElement(parentEl, column); - leftParents.push(parentEl); - } - - parentEl.classList.toggle("tabulator-frozen-left", column.modules.frozen.edge && column.modules.frozen.position === "left"); - parentEl.classList.toggle("tabulator-frozen-right", column.modules.frozen.edge && column.modules.frozen.position === "right"); - }else { - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - - this.rightColumns.forEach((column, i) => { - - column.modules.frozen.marginValue = rightMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - rightMargin += column.getWidth(); - } - - if(i == this.rightColumns.length - 1){ - column.modules.frozen.edge = true; - }else { - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - this.layoutElement(this.getColGroupParentElement(column), column); - }else { - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - } - - getColGroupParentElement(column){ - return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement(); - } - - //layout columns appropriately - layout(){ - if(this.active && !this.blocked){ - //calculate left columns - this.layoutColumnPosition(); - - this.reinitializeRows(); - - this.layoutCalcRows(); - } - } - - reinitializeRows(){ - var visibleRows = this.table.rowManager.getVisibleRows(true); - var otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - - visibleRows.forEach((row) =>{ - if(row.type === "row"){ - this.layoutRow(row); - } - }); - } - - layoutRow(row){ - if(this.table.options.layout === "fitDataFill" && this.rightColumns.length){ - this.table.rowManager.getTableElement().style.minWidth = "calc(100% - " + this.rightMargin + ")"; - } - - this.leftColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - - this.rightColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - } - - layoutElement(element, column){ - var position; - - if(column.modules.frozen && element){ - element.style.position = "sticky"; - - if(this.table.rtl){ - position = column.modules.frozen.position === "left" ? "right" : "left"; - }else { - position = column.modules.frozen.position; - } - - element.style[position] = column.modules.frozen.margin; - - element.classList.add("tabulator-frozen"); - - element.classList.toggle("tabulator-frozen-left", column.modules.frozen.edge && column.modules.frozen.position === "left"); - element.classList.toggle("tabulator-frozen-right", column.modules.frozen.edge && column.modules.frozen.position === "right"); - } - } - - adjustForScrollbar(width){ - if(this.rightColumns.length){ - this.table.columnManager.getContentsElement().style.width = "calc(100% - " + width + "px)"; - } - } - - _calcSpace(columns, index){ - var width = 0; - - for (let i = 0; i < index; i++){ - if(columns[i].visible){ - width += columns[i].getWidth(); - } - } - - return width; - } -} - -FrozenColumns.moduleName = "frozenColumns"; - -class FrozenRows extends Module{ - - constructor(table){ - super(table); - - this.topElement = document.createElement("div"); - this.rows = []; - - //register component functions - this.registerComponentFunction("row", "freeze", this.freezeRow.bind(this)); - this.registerComponentFunction("row", "unfreeze", this.unfreezeRow.bind(this)); - this.registerComponentFunction("row", "isFrozen", this.isRowFrozen.bind(this)); - - //register table options - this.registerTableOption("frozenRowsField", "id"); //field to choose frozen rows by - this.registerTableOption("frozenRows", false); //holder for frozen row identifiers - } - - initialize(){ - var fragment = document.createDocumentFragment(); - - this.rows = []; - - this.topElement.classList.add("tabulator-frozen-rows-holder"); - - fragment.appendChild(document.createElement("br")); - fragment.appendChild(this.topElement); - - // this.table.columnManager.element.append(this.topElement); - this.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling); - - this.subscribe("row-deleting", this.detachRow.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 10); - - if(this.table.options.frozenRows){ - this.subscribe("data-processed", this.initializeRows.bind(this)); - this.subscribe("row-added", this.initializeRow.bind(this)); - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - } - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - initializeRows(){ - this.table.rowManager.getRows().forEach((row) => { - this.initializeRow(row); - }); - } - - initializeRow(row){ - var frozenRows = this.table.options.frozenRows, - rowType = typeof frozenRows; - - if(rowType === "number"){ - if(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){ - this.freezeRow(row); - } - }else if(rowType === "function"){ - if(frozenRows.call(this.table, row.getComponent())){ - this.freezeRow(row); - } - }else if(Array.isArray(frozenRows)){ - if(frozenRows.includes(row.data[this.options("frozenRowsField")])){ - this.freezeRow(row); - } - } - } - - isRowFrozen(row){ - var index = this.rows.indexOf(row); - return index > -1; - } - - isFrozen(){ - return !!this.rows.length; - } - - visibleRows(viewable, rows){ - this.rows.forEach((row) => { - rows.push(row); - }); - - return rows; - } - - //filter frozen rows out of display data - getRows(rows){ - var output = rows.slice(0); - - this.rows.forEach(function(row){ - var index = output.indexOf(row); - - if(index > -1){ - output.splice(index, 1); - } - }); - - return output; - } - - freezeRow(row){ - if(!row.modules.frozen){ - row.modules.frozen = true; - this.topElement.appendChild(row.getElement()); - row.initialize(); - row.normalizeHeight(); - - this.rows.push(row); - - this.refreshData(false, "display"); - - this.table.rowManager.adjustTableSize(); - - this.styleRows(); - - }else { - console.warn("Freeze Error - Row is already frozen"); - } - } - - unfreezeRow(row){ - if(row.modules.frozen){ - - row.modules.frozen = false; - - this.detachRow(row); - - this.table.rowManager.adjustTableSize(); - - this.refreshData(false, "display"); - - if(this.rows.length){ - this.styleRows(); - } - - }else { - console.warn("Freeze Error - Row is already unfrozen"); - } - } - - detachRow(row){ - var index = this.rows.indexOf(row); - - if(index > -1){ - var rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - - this.rows.splice(index, 1); - } - } - - styleRows(row){ - this.rows.forEach((row, i) => { - this.table.rowManager.styleRow(row, i); - }); - } -} - -FrozenRows.moduleName = "frozenRows"; - -//public group object -class GroupComponent { - constructor (group){ - this._group = group; - this.type = "GroupComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else { - return target._group.groupManager.table.componentFunctionBinder.handle("group", target._group, name); - } - } - }); - } - - getKey(){ - return this._group.key; - } - - getField(){ - return this._group.field; - } - - getElement(){ - return this._group.element; - } - - getRows(){ - return this._group.getRows(true); - } - - getSubGroups(){ - return this._group.getSubGroups(true); - } - - getParentGroup(){ - return this._group.parent ? this._group.parent.getComponent() : false; - } - - isVisible(){ - return this._group.visible; - } - - show(){ - this._group.show(); - } - - hide(){ - this._group.hide(); - } - - toggle(){ - this._group.toggleVisibility(); - } - - scrollTo(position, ifVisible){ - return this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible); - } - - _getSelf(){ - return this._group; - } - - getTable(){ - return this._group.groupManager.table; - } -} - -//Group functions -class Group{ - - constructor(groupManager, parent, level, key, field, generator, oldGroup){ - this.groupManager = groupManager; - this.parent = parent; - this.key = key; - this.level = level; - this.field = field; - this.hasSubGroups = level < (groupManager.groupIDLookups.length - 1); - this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow; - this.type = "group"; //type of element - this.old = oldGroup; - this.rows = []; - this.groups = []; - this.groupList = []; - this.generator = generator; - this.element = false; - this.elementContents = false; - this.height = 0; - this.outerHeight = 0; - this.initialized = false; - this.calcs = {}; - this.initialized = false; - this.modules = {}; - this.arrowElement = false; - - this.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0]); - - this.component = null; - - this.createElements(); - this.addBindings(); - - this.createValueGroups(); - } - - wipe(elementsOnly){ - if(!elementsOnly){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - }else { - this.rows.forEach((row) => { - if(row.modules){ - delete row.modules.group; - } - }); - } - } - - this.element = false; - this.arrowElement = false; - this.elementContents = false; - } - - createElements(){ - var arrow = document.createElement("div"); - arrow.classList.add("tabulator-arrow"); - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-row"); - this.element.classList.add("tabulator-group"); - this.element.classList.add("tabulator-group-level-" + this.level); - this.element.setAttribute("role", "rowgroup"); - - this.arrowElement = document.createElement("div"); - this.arrowElement.classList.add("tabulator-group-toggle"); - this.arrowElement.appendChild(arrow); - - //setup movable rows - if(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")){ - this.groupManager.table.modules.moveRow.initializeGroupHeader(this); - } - } - - createValueGroups(){ - var level = this.level + 1; - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - this.groupManager.allowedValues[level].forEach((value) => { - this._createGroup(value, level); - }); - } - } - - addBindings(){ - var toggleElement; - - if(this.groupManager.table.options.groupToggleElement){ - toggleElement = this.groupManager.table.options.groupToggleElement == "arrow" ? this.arrowElement : this.element; - - toggleElement.addEventListener("click", (e) => { - if(this.groupManager.table.options.groupToggleElement === "arrow"){ - e.stopPropagation(); - e.stopImmediatePropagation(); - } - - //allow click event to propagate before toggling visibility - setTimeout(() => { - this.toggleVisibility(); - }); - }); - } - } - - _createGroup(groupID, level){ - var groupKey = level + "_" + groupID; - var 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); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - _addRowToGroup(row){ - - var level = this.level + 1; - - if(this.hasSubGroups){ - var groupID = this.groupManager.groupIDLookups[level].func(row.getData()), - groupKey = level + "_" + groupID; - - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - }else { - if(!this.groups[groupKey]){ - this._createGroup(groupID, level); - } - - this.groups[groupKey].addRow(row); - } - } - } - - _addRow(row){ - this.rows.push(row); - row.modules.group = this; - } - - insertRow(row, to, after){ - var data = this.conformRowData({}); - - row.updateData(data); - - var toIndex = this.rows.indexOf(to); - - if(toIndex > -1){ - if(after){ - this.rows.splice(toIndex+1, 0, row); - }else { - this.rows.splice(toIndex, 0, row); - } - }else { - if(after){ - this.rows.push(row); - }else { - this.rows.unshift(row); - } - } - - row.modules.group = this; - - // this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - - this.groupManager.updateGroupRows(true); - } - - scrollHeader(left){ - if(this.arrowElement){ - this.arrowElement.style.marginLeft = left; - - this.groupList.forEach(function(child){ - child.scrollHeader(left); - }); - } - } - - getRowIndex(row){} - - //update row data to match grouping constraints - conformRowData(data){ - if(this.field){ - data[this.field] = this.key; - }else { - console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"); - } - - if(this.parent){ - data = this.parent.conformRowData(data); - } - - return data; - } - - removeRow(row){ - var index = this.rows.indexOf(row); - var el = row.getElement(); - - if(index > -1){ - this.rows.splice(index, 1); - } - - if(!this.groupManager.table.options.groupValues && !this.rows.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else { - this.groupManager.removeGroup(this); - } - - this.groupManager.updateGroupRows(true); - - }else { - - if(el.parentNode){ - el.parentNode.removeChild(el); - } - - if(!this.groupManager.blockRedraw){ - this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - } - - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - - if(!this.groupList.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else { - this.groupManager.removeGroup(this); - } - } - } - } - - getHeadersAndRows(){ - var output = []; - - output.push(this); - - this._visSet(); - - - if(this.calcs.top){ - this.calcs.top.detachElement(); - this.calcs.top.deleteCells(); - } - - if(this.calcs.bottom){ - this.calcs.bottom.detachElement(); - this.calcs.bottom.deleteCells(); - } - - - - if(this.visible){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - output = output.concat(group.getHeadersAndRows()); - }); - - }else { - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - - output = output.concat(this.rows); - - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - }else { - if(!this.groupList.length && this.groupManager.table.options.columnCalcs != "table"){ - - if(this.groupManager.table.modExists("columnCalcs")){ - if(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - } - - if(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - } - } - - } - - return output; - } - - getData(visible, transform){ - var output = []; - - this._visSet(); - - if(!visible || (visible && this.visible)){ - this.rows.forEach((row) => { - output.push(row.getData(transform || "data")); - }); - } - - return output; - } - - getRowCount(){ - var count = 0; - - if(this.groupList.length){ - this.groupList.forEach((group) => { - count += group.getRowCount(); - }); - }else { - count = this.rows.length; - } - return count; - } - - - toggleVisibility(){ - if(this.visible){ - this.hide(); - }else { - this.show(); - } - } - - hide(){ - this.visible = false; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.remove("tabulator-group-visible"); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - row.detachElement(); - }); - }); - - }else { - this.rows.forEach((row) => { - var rowEl = row.getElement(); - rowEl.parentNode.removeChild(rowEl); - }); - } - - this.groupManager.updateGroupRows(true); - - }else { - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), false); - } - - show(){ - this.visible = true; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.add("tabulator-group-visible"); - - var prev = this.generateElement(); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - }); - - }else { - this.rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - } - - this.groupManager.updateGroupRows(true); - }else { - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), true); - } - - _visSet(){ - var data = []; - - if(typeof this.visible == "function"){ - - this.rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent()); - } - } - - getRowGroup(row){ - var match = false; - if(this.groupList.length){ - this.groupList.forEach(function(group){ - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - }else { - if(this.rows.find(function(item){ - return item === row; - })){ - match = this; - } - } - - return match; - } - - getSubGroups(component){ - var output = []; - - this.groupList.forEach(function(child){ - output.push(component ? child.getComponent() : child); - }); - - return output; - } - - getRows(component, includeChildren){ - var output = []; - - if(includeChildren && this.groupList.length){ - this.groupList.forEach((group) => { - output = output.concat(group.getRows(component, includeChildren)); - }); - }else { - this.rows.forEach(function(row){ - output.push(component ? row.getComponent() : row); - }); - } - - return output; - } - - generateGroupHeaderContents(){ - var data = []; - - var rows = this.getRows(false, true); - - rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent()); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(typeof this.elementContents === "string"){ - this.element.innerHTML = this.elementContents; - }else { - this.element.appendChild(this.elementContents); - } - - this.element.insertBefore(this.arrowElement, this.element.firstChild); - } - - getPath(path = []) { - path.unshift(this.key); - if(this.parent) { - this.parent.getPath(path); - } - return path; - } - - ////////////// Standard Row Functions ////////////// - - getElement(){ - return this.elementContents ? this.element : this.generateElement(); - } - - generateElement(){ - this.addBindings = false; - - this._visSet(); - - if(this.visible){ - this.element.classList.add("tabulator-group-visible"); - }else { - this.element.classList.remove("tabulator-group-visible"); - } - - for(var i = 0; i < this.element.childNodes.length; ++i){ - this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]); - } - - this.generateGroupHeaderContents(); - - // this.addBindings(); - - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - //normalize the height of elements in the row - normalizeHeight(){ - this.setHeight(this.element.clientHeight); - } - - initialize(force){ - if(!this.initialized || force){ - this.normalizeHeight(); - this.initialized = true; - } - } - - reinitialize(){ - this.initialized = false; - this.height = 0; - - if(Helpers.elVisible(this.element)){ - this.initialize(true); - } - } - - setHeight(height){ - if(this.height != height){ - this.height = height; - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - getGroup(){ - return this; - } - - reinitializeHeight(){} - - calcHeight(){} - - setCellHeight(){} - - clearCellHeight(){} - - deinitializeHeight(){} - - rendered(){} - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new GroupComponent(this); - } - - return this.component; - } -} - -class GroupRows extends Module{ - - constructor(table){ - super(table); - - this.groupIDLookups = false; //enable table grouping and set field to group by - this.startOpen = [function(){return false;}]; //starting state of group - this.headerGenerator = [function(){return "";}]; - this.groupList = []; //ordered list of groups - this.allowedValues = false; - this.groups = {}; //hold row groups - - this.displayHandler = this.getRows.bind(this); - - this.blockRedraw = false; - - //register table options - this.registerTableOption("groupBy", false); //enable table grouping and set field to group by - this.registerTableOption("groupStartOpen", true); //starting state of group - this.registerTableOption("groupValues", false); - this.registerTableOption("groupUpdateOnCellEdit", false); - this.registerTableOption("groupHeader", false); //header generation function - this.registerTableOption("groupHeaderPrint", null); - this.registerTableOption("groupHeaderClipboard", null); - this.registerTableOption("groupHeaderHtmlOutput", null); - this.registerTableOption("groupHeaderDownload", null); - this.registerTableOption("groupToggleElement", "arrow"); - this.registerTableOption("groupClosedShowCalcs", false); - - //register table functions - this.registerTableFunction("setGroupBy", this.setGroupBy.bind(this)); - this.registerTableFunction("setGroupValues", this.setGroupValues.bind(this)); - this.registerTableFunction("setGroupStartOpen", this.setGroupStartOpen.bind(this)); - this.registerTableFunction("setGroupHeader", this.setGroupHeader.bind(this)); - this.registerTableFunction("getGroups", this.userGetGroups.bind(this)); - this.registerTableFunction("getGroupedData", this.userGetGroupedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "getGroup", this.rowGetGroup.bind(this)); - } - - //initialize group configuration - initialize(){ - this.subscribe("table-destroy", this._blockRedrawing.bind(this)); - this.subscribe("rows-wipe", this._blockRedrawing.bind(this)); - this.subscribe("rows-wiped", this._restore_redrawing.bind(this)); - - if(this.table.options.groupBy){ - if(this.table.options.groupUpdateOnCellEdit){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0); - } - - this.subscribe("table-built", this.configureGroupSetup.bind(this)); - - this.subscribe("row-deleting", this.rowDeleting.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this)); - this.subscribe("rows-wipe", this.wipe.bind(this)); - this.subscribe("rows-added", this.rowsUpdated.bind(this)); - this.subscribe("row-moving", this.rowMoving.bind(this)); - this.subscribe("row-adding-index", this.rowAddingIndex.bind(this)); - - this.subscribe("rows-sample", this.rowSample.bind(this)); - - this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this)); - - this.registerDisplayHandler(this.displayHandler, 20); - - this.initialized = true; - } - } - - _blockRedrawing(){ - this.blockRedraw = true; - } - - _restore_redrawing(){ - this.blockRedraw = false; - } - - configureGroupSetup(){ - if(this.table.options.groupBy){ - var groupBy = this.table.options.groupBy, - startOpen = this.table.options.groupStartOpen, - groupHeader = this.table.options.groupHeader; - - this.allowedValues = this.table.options.groupValues; - - if(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){ - console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"); - } - - this.headerGenerator = [function(){return "";}]; - this.startOpen = [function(){return false;}]; //starting state of group - - this.langBind("groups|item", (langValue, lang) => { - this.headerGenerator[0] = (value, count, data) => { //header layout function - return (typeof value === "undefined" ? "" : value) + "(" + count + " " + ((count === 1) ? langValue : lang.groups.items) + ")"; - }; - }); - - this.groupIDLookups = []; - - if(groupBy){ - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both"){ - this.table.modules.columnCalcs.removeCalcs(); - } - }else { - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group"){ - - var cols = this.table.columnManager.getRealColumns(); - - cols.forEach((col) => { - if(col.definition.topCalc){ - this.table.modules.columnCalcs.initializeTopRow(); - } - - if(col.definition.bottomCalc){ - this.table.modules.columnCalcs.initializeBottomRow(); - } - }); - } - } - - if(!Array.isArray(groupBy)){ - groupBy = [groupBy]; - } - - groupBy.forEach((group, i) => { - var lookupFunc, column; - - if(typeof group == "function"){ - lookupFunc = group; - }else { - column = this.table.columnManager.getColumnByField(group); - - if(column){ - lookupFunc = function(data){ - return column.getFieldValue(data); - }; - }else { - lookupFunc = function(data){ - return data[group]; - }; - } - } - - this.groupIDLookups.push({ - field: typeof group === "function" ? false : group, - func:lookupFunc, - values:this.allowedValues ? this.allowedValues[i] : false, - }); - }); - - if(startOpen){ - if(!Array.isArray(startOpen)){ - startOpen = [startOpen]; - } - - startOpen.forEach((level) => { - }); - - this.startOpen = startOpen; - } - - if(groupHeader){ - this.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader]; - } - }else { - this.groupList = []; - this.groups = {}; - } - } - - rowSample(rows, prevValue){ - if(this.table.options.groupBy){ - var group = this.getGroups(false)[0]; - - prevValue.push(group.getRows(false)[0]); - } - - return prevValue; - } - - virtualRenderFill(){ - var el = this.table.rowManager.tableElement; - var rows = this.table.rowManager.getVisibleRows(); - - if(this.table.options.groupBy){ - rows = rows.filter((row) => { - return row.type !== "group"; - }); - - el.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + "px" : ""; - }else { - return rows; - } - } - - rowAddingIndex(row, index, top){ - if(this.table.options.groupBy){ - this.assignRowToGroup(row); - - var groupRows = row.modules.group.rows; - - if(groupRows.length > 1){ - if(!index || (index && groupRows.indexOf(index) == -1)){ - if(top){ - if(groupRows[0] !== row){ - index = groupRows[0]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - }else { - if(groupRows[groupRows.length -1] !== row){ - index = groupRows[groupRows.length -1]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - }else { - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - - return index; - } - } - - trackChanges(){ - this.dispatch("group-changed"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - setGroupBy(groups){ - this.table.options.groupBy = groups; - - if(!this.initialized){ - this.initialize(); - } - - this.configureGroupSetup(); - - if(!groups && this.table.modExists("columnCalcs") && this.table.options.columnCalcs === true){ - this.table.modules.columnCalcs.reinitializeCalcs(); - } - - this.refreshData(); - - this.trackChanges(); - } - - setGroupValues(groupValues){ - this.table.options.groupValues = groupValues; - this.configureGroupSetup(); - this.refreshData(); - - this.trackChanges(); - } - - setGroupStartOpen(values){ - this.table.options.groupStartOpen = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else { - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - setGroupHeader(values){ - this.table.options.groupHeader = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else { - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - userGetGroups(values){ - return this.getGroups(true); - } - - // get grouped table data in the same format as getData() - userGetGroupedData(){ - return this.table.options.groupBy ? this.getGroupedData() : this.getData(); - } - - - /////////////////////////////////////// - ///////// Component Functions ///////// - /////////////////////////////////////// - - rowGetGroup(row){ - return row.modules.group ? row.modules.group.getComponent() : false; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - rowMoving(from, to, after){ - if(this.table.options.groupBy){ - if(!after && to instanceof Group){ - to = this.table.rowManager.prevDisplayRow(from) || to; - } - - var toGroup = to instanceof Group ? to : to.modules.group; - var fromGroup = from instanceof Group ? from : from.modules.group; - - if(toGroup === fromGroup){ - this.table.rowManager.moveRowInArray(toGroup.rows, from, to, after); - }else { - if(fromGroup){ - fromGroup.removeRow(from); - } - - toGroup.insertRow(from, to, after); - } - } - } - - - rowDeleting(row){ - //remove from group - if(this.table.options.groupBy && row.modules.group){ - row.modules.group.removeRow(row); - } - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.updateGroupRows(true); - } - } - - cellUpdated(cell){ - if(this.table.options.groupBy){ - this.reassignRowToGroup(cell.row); - } - } - - //return appropriate rows with group headers - getRows(rows){ - if(this.table.options.groupBy && this.groupIDLookups.length){ - - this.dispatchExternal("dataGrouping"); - - this.generateGroups(rows); - - if(this.subscribedExternal("dataGrouped")){ - this.dispatchExternal("dataGrouped", this.getGroups(true)); - } - - return this.updateGroupRows(); - - }else { - return rows.slice(0); - } - } - - getGroups(component){ - var groupComponents = []; - - this.groupList.forEach(function(group){ - groupComponents.push(component ? group.getComponent() : group); - }); - - return groupComponents; - } - - getChildGroups(group){ - var groupComponents = []; - - if(!group){ - group = this; - } - - group.groupList.forEach((child) => { - if(child.groupList.length){ - groupComponents = groupComponents.concat(this.getChildGroups(child)); - }else { - groupComponents.push(child); - } - }); - - return groupComponents; - } - - wipe(){ - if(this.table.options.groupBy){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - - this.groupList = []; - this.groups = {}; - } - } - - pullGroupListData(groupList) { - var groupListData = []; - - groupList.forEach((group) => { - var groupHeader = {}; - groupHeader.level = 0; - groupHeader.rowCount = 0; - groupHeader.headerContent = ""; - var childData = []; - - if (group.hasSubGroups) { - childData = this.pullGroupListData(group.groupList); - - groupHeader.level = group.level; - groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers - groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group); - - groupListData.push(groupHeader); - groupListData = groupListData.concat(childData); - } - - else { - groupHeader.level = group.level; - groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group); - groupHeader.rowCount = group.getRows().length; - - groupListData.push(groupHeader); - - group.getRows().forEach((row) => { - groupListData.push(row.getData("data")); - }); - } - }); - - return groupListData; - } - - getGroupedData(){ - - return this.pullGroupListData(this.groupList); - } - - getRowGroup(row){ - var match = false; - - if(this.options("dataTree")){ - row = this.table.modules.dataTree.getTreeParentRoot(row); - } - - this.groupList.forEach((group) => { - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - - return match; - } - - countGroups(){ - return this.groupList.length; - } - - generateGroups(rows){ - var oldGroups = this.groups; - - this.groups = {}; - this.groupList = []; - - if(this.allowedValues && this.allowedValues[0]){ - this.allowedValues[0].forEach((value) => { - this.createGroup(value, 0, oldGroups); - }); - - rows.forEach((row) => { - this.assignRowToExistingGroup(row, oldGroups); - }); - }else { - rows.forEach((row) => { - this.assignRowToGroup(row, oldGroups); - }); - } - - Object.values(oldGroups).forEach((group) => { - group.wipe(true); - }); - } - - - createGroup(groupID, level, oldGroups){ - var groupKey = level + "_" + groupID, - group; - - oldGroups = oldGroups || []; - - group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - assignRowToExistingGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - groupKey = "0_" + groupID; - - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - } - - assignRowToGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - newGroupNeeded = !this.groups["0_" + groupID]; - - if(newGroupNeeded){ - this.createGroup(groupID, 0, oldGroups); - } - - this.groups["0_" + groupID].addRow(row); - - return !newGroupNeeded; - } - - reassignRowToGroup(row){ - if(row.type === "row"){ - var oldRowGroup = row.modules.group, - oldGroupPath = oldRowGroup.getPath(), - newGroupPath = this.getExpectedPath(row), - samePath; - - // figure out if new group path is the same as old group path - samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => { - return element === newGroupPath[index]; - }); - - // refresh if they new path and old path aren't the same (aka the row's groupings have changed) - if(!samePath) { - oldRowGroup.removeRow(row); - this.assignRowToGroup(row, this.groups); - this.refreshData(true); - } - } - } - - getExpectedPath(row) { - var groupPath = [], rowData = row.getData(); - - this.groupIDLookups.forEach((groupId) => { - groupPath.push(groupId.func(rowData)); - }); - - return groupPath; - } - - updateGroupRows(force){ - var output = []; - - if(!this.blockRedraw){ - this.groupList.forEach((group) => { - output = output.concat(group.getHeadersAndRows()); - }); - - if(force){ - this.refreshData(true); - } - } - - return output; - } - - scrollHeaders(left){ - if(this.table.options.groupBy){ - if(this.table.options.renderHorizontal === "virtual"){ - left -= this.table.columnManager.renderer.vDomPadLeft; - } - - left = left + "px"; - - this.groupList.forEach((group) => { - group.scrollHeader(left); - }); - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - } - } - - checkBasicModeGroupHeaderWidth(){ - var element = this.table.rowManager.tableElement, - onlyGroupHeaders = true; - - this.table.rowManager.getDisplayRows().forEach((row, index) =>{ - this.table.rowManager.styleRow(row, index); - element.appendChild(row.getElement()); - row.initialize(true); - - if(row.type !== "group"){ - onlyGroupHeaders = false; - } - }); - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else { - element.style.minWidth = ""; - } - } - -} - -GroupRows.moduleName = "groupRows"; - -var defaultUndoers = { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.oldValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - action.component.deleteActual(); - - this.table.rowManager.checkPlaceholder(); - }, - - rowDelete: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - - this.table.rowManager.checkPlaceholder(); - }, - - rowMove: function(action){ - var after = (action.data.posFrom - action.data.posTo) > 0; - - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, -}; - -var defaultRedoers = { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.newValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - - this.table.rowManager.checkPlaceholder(); - }, - - rowDelete:function(action){ - action.component.deleteActual(); - - this.table.rowManager.checkPlaceholder(); - }, - - rowMove: function(action){ - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, -}; - -class History extends Module{ - - constructor(table){ - super(table); - - this.history = []; - this.index = -1; - - this.registerTableOption("history", false); //enable edit history - } - - initialize(){ - if(this.table.options.history){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("cell-delete", this.clearComponentHistory.bind(this)); - this.subscribe("row-delete", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clear.bind(this)); - this.subscribe("row-added", this.rowAdded.bind(this)); - this.subscribe("row-move", this.rowMoved.bind(this)); - } - - this.registerTableFunction("undo", this.undo.bind(this)); - this.registerTableFunction("redo", this.redo.bind(this)); - this.registerTableFunction("getHistoryUndoSize", this.getHistoryUndoSize.bind(this)); - this.registerTableFunction("getHistoryRedoSize", this.getHistoryRedoSize.bind(this)); - this.registerTableFunction("clearHistory", this.clear.bind(this)); - } - - rowMoved(from, to, after){ - this.action("rowMove", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after}); - } - - rowAdded(row, data, pos, index){ - this.action("rowAdd", row, {data:data, pos:pos, index:index}); - } - - rowDeleted(row){ - var index, rows; - - if(this.table.options.groupBy){ - - rows = row.getComponent().getGroup()._getSelf().rows; - index = rows.indexOf(row); - - if(index){ - index = rows[index-1]; - } - }else { - index = row.table.rowManager.getRowIndex(row); - - if(index){ - index = row.table.rowManager.rows[index-1]; - } - } - - this.action("rowDelete", row, {data:row.getData(), pos:!index, index:index}); - } - - cellUpdated(cell){ - this.action("cellEdit", cell, {oldValue:cell.oldValue, newValue:cell.value}); - } - - clear(){ - this.history = []; - this.index = -1; - } - - action(type, component, data){ - this.history = this.history.slice(0, this.index + 1); - - this.history.push({ - type:type, - component:component, - data:data, - }); - - this.index ++; - } - - getHistoryUndoSize(){ - return this.index + 1; - } - - getHistoryRedoSize(){ - return this.history.length - (this.index + 1); - } - - clearComponentHistory(component){ - var index = this.history.findIndex(function(item){ - return item.component === component; - }); - - if(index > -1){ - this.history.splice(index, 1); - if(index <= this.index){ - this.index--; - } - - this.clearComponentHistory(component); - } - } - - undo(){ - if(this.index > -1){ - let action = this.history[this.index]; - - History.undoers[action.type].call(this, action); - - this.index--; - - this.dispatchExternal("historyUndo", action.type, action.component.getComponent(), action.data); - - return true; - }else { - console.warn(this.options("history") ? "History Undo Error - No more history to undo" : "History module not enabled"); - return false; - } - } - - redo(){ - if(this.history.length-1 > this.index){ - - this.index++; - - let action = this.history[this.index]; - - History.redoers[action.type].call(this, action); - - this.dispatchExternal("historyRedo", action.type, action.component.getComponent(), action.data); - - return true; - }else { - console.warn(this.options("history") ? "History Redo Error - No more history to redo" : "History module not enabled"); - return false; - } - } - - //rebind rows to new element after deletion - _rebindRow(oldRow, newRow){ - this.history.forEach(function(action){ - if(action.component instanceof Row){ - if(action.component === oldRow){ - action.component = newRow; - } - }else if(action.component instanceof Cell){ - if(action.component.row === oldRow){ - var field = action.component.column.getField(); - - if(field){ - action.component = newRow.getCell(field); - } - - } - } - }); - } -} - -History.moduleName = "history"; - -//load defaults -History.undoers = defaultUndoers; -History.redoers = defaultRedoers; - -class HtmlTableImport extends Module{ - - constructor(table){ - super(table); - - this.fieldIndex = []; - this.hasIndex = false; - } - - initialize(){ - this.tableElementCheck(); - } - - tableElementCheck(){ - if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){ - if(this.table.originalElement.childNodes.length){ - this.parseTable(); - }else { - console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."); - } - } - } - - parseTable(){ - var element = this.table.originalElement, - options = this.table.options, - headers = element.getElementsByTagName("th"), - rows = element.getElementsByTagName("tbody")[0], - data = []; - - this.hasIndex = false; - - this.dispatchExternal("htmlImporting"); - - rows = rows ? rows.getElementsByTagName("tr") : []; - - //check for Tabulator inline options - this._extractOptions(element, options); - - if(headers.length){ - this._extractHeaders(headers, rows); - }else { - this._generateBlankHeaders(headers, rows); - } - - //iterate through table rows and build data set - for(var index = 0; index < rows.length; index++){ - var row = rows[index], - cells = row.getElementsByTagName("td"), - item = {}; - - //create index if the don't exist in table - if(!this.hasIndex){ - item[options.index] = index; - } - - for(var i = 0; i < cells.length; i++){ - var cell = cells[i]; - if(typeof this.fieldIndex[i] !== "undefined"){ - item[this.fieldIndex[i]] = cell.innerHTML; - } - } - - //add row data to item - data.push(item); - } - - options.data = data; - - this.dispatchExternal("htmlImported"); - } - - //extract tabulator attribute options - _extractOptions(element, options, defaultOptions){ - var attributes = element.attributes; - var optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options); - var optionsList = {}; - - optionsArr.forEach((item) => { - optionsList[item.toLowerCase()] = item; - }); - - for(var index in attributes){ - var attrib = attributes[index]; - var name; - - if(attrib && typeof attrib == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0){ - name = attrib.name.replace("tabulator-", ""); - - if(typeof optionsList[name] !== "undefined"){ - options[optionsList[name]] = this._attribValue(attrib.value); - } - } - } - } - - //get value of attribute - _attribValue(value){ - if(value === "true"){ - return true; - } - - if(value === "false"){ - return false; - } - - return value; - } - - //find column if it has already been defined - _findCol(title){ - var match = this.table.options.columns.find((column) => { - return column.title === title; - }); - - return match || false; - } - - //extract column from headers - _extractHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - exists = false, - col = this._findCol(header.textContent), - width; - - if(col){ - exists = true; - }else { - col = {title:header.textContent.trim()}; - } - - if(!col.field) { - col.field = header.textContent.trim().toLowerCase().replaceAll(" ", "_"); - } - - width = header.getAttribute("width"); - - if(width && !col.width) { - col.width = width; - } - - //check for Tabulator inline options - this._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults); - - this.fieldIndex[index] = col.field; - - if(col.field == this.table.options.index){ - this.hasIndex = true; - } - - if(!exists){ - this.table.options.columns.push(col); - } - - } - } - - //generate blank headers - _generateBlankHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - col = {title:"", field:"col" + index}; - - this.fieldIndex[index] = col.field; - - var width = header.getAttribute("width"); - - if(width){ - col.width = width; - } - - this.table.options.columns.push(col); - } - } -} - -HtmlTableImport.moduleName = "htmlTableImport"; - -function csvImporter(input){ - var data = [], - row = 0, - col = 0, - inQuote = false; - - //Iterate over each character - for (let index = 0; index < input.length; index++) { - let char = input[index], - nextChar = input[index+1]; - - //Initialize empty row - if(!data[row]){ - data[row] = []; - } - - //Initialize empty column - if(!data[row][col]){ - data[row][col] = ""; - } - - //Handle quotation mark inside string - if (char == '"' && inQuote && nextChar == '"') { - data[row][col] += char; - index++; - continue; - } - - //Begin / End Quote - if (char == '"') { - inQuote = !inQuote; - continue; - } - - //Next column (if not in quote) - if (char == ',' && !inQuote) { - col++; - continue; - } - - //New row if new line and not in quote (CRLF) - if (char == '\r' && nextChar == '\n' && !inQuote) { - col = 0; - row++; - index++; - continue; - } - - //New row if new line and not in quote (CR or LF) - if ((char == '\r' || char == '\n') && !inQuote) { - col = 0; - row++; - continue; - } - - //Normal Character, append to column - data[row][col] += char; - } - - return data; -} - -function json$1(input){ - try { - return JSON.parse(input); - } catch(e) { - console.warn("JSON Import Error - File contents is invalid JSON", e); - return Promise.reject(); - } -} - -function arrayImporter(input){ - return input; -} - -var defaultImporters = { - csv:csvImporter, - json:json$1, - array:arrayImporter, -}; - -class Import extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("importFormat"); - this.registerTableOption("importReader", "text"); - } - - initialize(){ - this.registerTableFunction("import", this.importFromFile.bind(this)); - - if(this.table.options.importFormat){ - this.subscribe("data-loading", this.loadDataCheck.bind(this), 10); - this.subscribe("data-load", this.loadData.bind(this), 10); - } - } - - loadDataCheck(data){ - return this.table.options.importFormat && (typeof data === "string" || (Array.isArray(data) && data.length && Array.isArray(data))); - } - - loadData(data, params, config, silent, previousData){ - return this.importData(this.lookupImporter(), data) - .then(this.structureData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import data"); - return Promise.reject(err); - }); - } - - lookupImporter(importFormat){ - var importer; - - if(!importFormat){ - importFormat = this.table.options.importFormat; - } - - if(typeof importFormat === "string"){ - importer = Import.importers[importFormat]; - }else { - importer = importFormat; - } - - if(!importer){ - console.error("Import Error - Importer not found:", importFormat); - } - - return importer; - } - - importFromFile(importFormat, extension){ - var importer = this.lookupImporter(importFormat); - - if(importer){ - return this.pickFile(extension) - .then(this.importData.bind(this, importer)) - .then(this.structureData.bind(this)) - .then(this.setData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import file"); - return Promise.reject(err); - }); - } - } - - pickFile(extensions){ - return new Promise((resolve, reject) => { - var input = document.createElement("input"); - input.type = "file"; - input.accept = extensions; - - input.addEventListener("change", (e) => { - var file = input.files[0], - reader = new FileReader(); - - switch(this.table.options.importReader){ - case "buffer": - reader.readAsArrayBuffer(file); - break; - - case "binary": - reader.readAsBinaryString(file); - break; - - case "url": - reader.readAsDataURL(file); - break; - - case "text": - default: - reader.readAsText(file); - } - - reader.onload = (e) => { - resolve(reader.result); - }; - - reader.onerror = (e) => { - console.warn("File Load Error - Unable to read file"); - reject(); - }; - }); - - input.click(); - }); - } - - importData(importer, fileContents){ - var data = importer.call(this.table, fileContents); - - if(data instanceof Promise){ - return data; - }else { - return data ? Promise.resolve(data) : Promise.reject(); - } - } - - structureData(parsedData){ - var data = []; - - if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){ - if(this.table.options.autoColumns){ - data = this.structureArrayToObject(parsedData); - }else { - data = this.structureArrayToColumns(parsedData); - } - - return data; - }else { - return parsedData; - } - } - - structureArrayToObject(parsedData){ - var columns = parsedData.shift(); - - var data = parsedData.map((values) => { - var row = {}; - - columns.forEach((key, i) => { - row[key] = values[i]; - }); - - return row; - }); - - return data; - } - - structureArrayToColumns(parsedData){ - var data = [], - columns = this.table.getColumns(); - - //remove first row if it is the column names - if(columns[0] && parsedData[0][0]){ - if(columns[0].getDefinition().title === parsedData[0][0]){ - parsedData.shift(); - } - } - - //convert row arrays to objects - parsedData.forEach((rowData) => { - var row = {}; - - rowData.forEach((value, index) => { - var column = columns[index]; - - if(column){ - row[column.getField()] = value; - } - }); - - data.push(row); - }); - - return data; - } - - setData(data){ - return this.table.setData(data); - } -} - -Import.moduleName = "import"; - -//load defaults -Import.importers = defaultImporters; - -class Interaction extends Module{ - - constructor(table){ - super(table); - - this.eventMap = { - //row events - rowClick:"row-click", - rowDblClick:"row-dblclick", - rowContext:"row-contextmenu", - rowMouseEnter:"row-mouseenter", - rowMouseLeave:"row-mouseleave", - rowMouseOver:"row-mouseover", - rowMouseOut:"row-mouseout", - rowMouseMove:"row-mousemove", - rowMouseDown:"row-mousedown", - rowMouseUp:"row-mouseup", - rowTap:"row", - rowDblTap:"row", - rowTapHold:"row", - - //cell events - cellClick:"cell-click", - cellDblClick:"cell-dblclick", - cellContext:"cell-contextmenu", - cellMouseEnter:"cell-mouseenter", - cellMouseLeave:"cell-mouseleave", - cellMouseOver:"cell-mouseover", - cellMouseOut:"cell-mouseout", - cellMouseMove:"cell-mousemove", - cellMouseDown:"cell-mousedown", - cellMouseUp:"cell-mouseup", - cellTap:"cell", - cellDblTap:"cell", - cellTapHold:"cell", - - //column header events - headerClick:"column-click", - headerDblClick:"column-dblclick", - headerContext:"column-contextmenu", - headerMouseEnter:"column-mouseenter", - headerMouseLeave:"column-mouseleave", - headerMouseOver:"column-mouseover", - headerMouseOut:"column-mouseout", - headerMouseMove:"column-mousemove", - headerMouseDown:"column-mousedown", - headerMouseUp:"column-mouseup", - headerTap:"column", - headerDblTap:"column", - headerTapHold:"column", - - //group header - groupClick:"group-click", - groupDblClick:"group-dblclick", - groupContext:"group-contextmenu", - groupMouseEnter:"group-mouseenter", - groupMouseLeave:"group-mouseleave", - groupMouseOver:"group-mouseover", - groupMouseOut:"group-mouseout", - groupMouseMove:"group-mousemove", - groupMouseDown:"group-mousedown", - groupMouseUp:"group-mouseup", - groupTap:"group", - groupDblTap:"group", - groupTapHold:"group", - }; - - this.subscribers = {}; - - this.touchSubscribers = {}; - - this.columnSubscribers = {}; - - this.touchWatchers = { - row:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - cell:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - column:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - group:{ - tap:null, - tapDbl:null, - tapHold:null, - } - }; - - this.registerColumnOption("headerClick"); - this.registerColumnOption("headerDblClick"); - this.registerColumnOption("headerContext"); - this.registerColumnOption("headerMouseEnter"); - this.registerColumnOption("headerMouseLeave"); - this.registerColumnOption("headerMouseOver"); - this.registerColumnOption("headerMouseOut"); - this.registerColumnOption("headerMouseMove"); - this.registerColumnOption("headerMouseDown"); - this.registerColumnOption("headerMouseUp"); - this.registerColumnOption("headerTap"); - this.registerColumnOption("headerDblTap"); - this.registerColumnOption("headerTapHold"); - - this.registerColumnOption("cellClick"); - this.registerColumnOption("cellDblClick"); - this.registerColumnOption("cellContext"); - this.registerColumnOption("cellMouseEnter"); - this.registerColumnOption("cellMouseLeave"); - this.registerColumnOption("cellMouseOver"); - this.registerColumnOption("cellMouseOut"); - this.registerColumnOption("cellMouseMove"); - this.registerColumnOption("cellMouseDown"); - this.registerColumnOption("cellMouseUp"); - this.registerColumnOption("cellTap"); - this.registerColumnOption("cellDblTap"); - this.registerColumnOption("cellTapHold"); - - } - - initialize(){ - this.initializeExternalEvents(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("cell-dblclick", this.cellContentsSelectionFixer.bind(this)); - this.subscribe("scroll-horizontal", this.clearTouchWatchers.bind(this)); - this.subscribe("scroll-vertical", this.clearTouchWatchers.bind(this)); - } - - clearTouchWatchers(){ - var types = Object.values(this.touchWatchers); - - types.forEach((type) => { - for(let key in type){ - type[key] = null; - } - }); - } - - cellContentsSelectionFixer(e, cell){ - var range; - - if(this.table.modExists("edit")){ - if (this.table.modules.edit.currentCell === cell){ - return; //prevent instant selection of editor content - } - } - - e.preventDefault(); - - try{ - if (document.selection) { // IE - range = document.body.createTextRange(); - range.moveToElementText(cell.getElement()); - range.select(); - } else if (window.getSelection) { - range = document.createRange(); - range.selectNode(cell.getElement()); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(range); - } - }catch(e){} - } - - initializeExternalEvents(){ - for(let key in this.eventMap){ - this.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key)); - } - } - - subscriptionChanged(key, added){ - if(added){ - if(!this.subscribers[key]){ - if(this.eventMap[key].includes("-")){ - this.subscribers[key] = this.handle.bind(this, key); - this.subscribe(this.eventMap[key], this.subscribers[key]); - }else { - this.subscribeTouchEvents(key); - } - } - }else { - if(this.eventMap[key].includes("-")){ - if(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){ - this.unsubscribe(this.eventMap[key], this.subscribers[key]); - delete this.subscribers[key]; - } - }else { - this.unsubscribeTouchEvents(key); - } - } - } - - - subscribeTouchEvents(key){ - var type = this.eventMap[key]; - - if(!this.touchSubscribers[type + "-touchstart"]){ - this.touchSubscribers[type + "-touchstart"] = this.handleTouch.bind(this, type, "start"); - this.touchSubscribers[type + "-touchend"] = this.handleTouch.bind(this, type, "end"); - - this.subscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.subscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - } - - this.subscribers[key] = true; - } - - unsubscribeTouchEvents(key){ - var noTouch = true, - type = this.eventMap[key]; - - if(this.subscribers[key] && !this.subscribedExternal(key)){ - delete this.subscribers[key]; - - for(let i in this.eventMap){ - if(this.eventMap[i] === type){ - if(this.subscribers[i]){ - noTouch = false; - } - } - } - - if(noTouch){ - this.unsubscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.unsubscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - - delete this.touchSubscribers[type + "-touchstart"]; - delete this.touchSubscribers[type + "-touchend"]; - } - } - } - - initializeColumn(column){ - var def = column.definition; - - for(let key in this.eventMap){ - if(def[key]){ - this.subscriptionChanged(key, true); - - if(!this.columnSubscribers[key]){ - this.columnSubscribers[key] = []; - } - - this.columnSubscribers[key].push(column); - } - } - } - - handle(action, e, component){ - this.dispatchEvent(action, e, component); - } - - handleTouch(type, action, e, component){ - var watchers = this.touchWatchers[type]; - - if(type === "column"){ - type = "header"; - } - - switch(action){ - case "start": - watchers.tap = true; - - clearTimeout(watchers.tapHold); - - watchers.tapHold = setTimeout(() => { - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - - watchers.tap = null; - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "TapHold", e, component); - }, 1000); - break; - - case "end": - if(watchers.tap){ - - watchers.tap = null; - this.dispatchEvent(type + "Tap", e, component); - } - - if(watchers.tapDbl){ - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "DblTap", e, component); - }else { - watchers.tapDbl = setTimeout(() => { - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - }, 300); - } - - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - break; - } - } - - dispatchEvent(action, e, component){ - var componentObj = component.getComponent(), - callback; - - if(this.columnSubscribers[action]){ - - if(component instanceof Cell){ - callback = component.column.definition[action]; - }else if(component instanceof Column){ - callback = component.definition[action]; - } - - if(callback){ - callback(e, componentObj); - } - } - - this.dispatchExternal(action, e, componentObj); - } -} - -Interaction.moduleName = "interaction"; - -var defaultBindings = { - navPrev:"shift + 9", - navNext:9, - navUp:38, - navDown:40, - navLeft:37, - navRight:39, - scrollPageUp:33, - scrollPageDown:34, - scrollToStart:36, - scrollToEnd:35, - undo:["ctrl + 90", "meta + 90"], - redo:["ctrl + 89", "meta + 89"], - copyToClipboard:["ctrl + 67", "meta + 67"], - - rangeJumpUp:["ctrl + 38", "meta + 38"], - rangeJumpDown:["ctrl + 40", "meta + 40"], - rangeJumpLeft:["ctrl + 37", "meta + 37"], - rangeJumpRight:["ctrl + 39", "meta + 39"], - rangeExpandUp:"shift + 38", - rangeExpandDown:"shift + 40", - rangeExpandLeft:"shift + 37", - rangeExpandRight:"shift + 39", - rangeExpandJumpUp:["ctrl + shift + 38", "meta + shift + 38"], - rangeExpandJumpDown:["ctrl + shift + 40", "meta + shift + 40"], - rangeExpandJumpLeft:["ctrl + shift + 37", "meta + shift + 37"], - rangeExpandJumpRight:["ctrl + shift + 39", "meta + shift + 39"], -}; - -var defaultActions = { - keyBlock:function(e){ - e.stopPropagation(); - e.preventDefault(); - }, - scrollPageUp:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop - rowManager.element.clientHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos >= 0){ - rowManager.element.scrollTop = newPos; - }else { - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - } - - this.table.element.focus(); - }, - scrollPageDown:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop + rowManager.element.clientHeight, - scrollMax = rowManager.element.scrollHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos <= scrollMax){ - rowManager.element.scrollTop = newPos; - }else { - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - } - - this.table.element.focus(); - - }, - scrollToStart:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - - this.table.element.focus(); - }, - scrollToEnd:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - - this.table.element.focus(); - }, - navPrev:function(e){ - this.dispatch("keybinding-nav-prev", e); - }, - - navNext:function(e){ - this.dispatch("keybinding-nav-next", e); - }, - - navLeft:function(e){ - this.dispatch("keybinding-nav-left", e); - }, - - navRight:function(e){ - this.dispatch("keybinding-nav-right", e); - }, - - navUp:function(e){ - this.dispatch("keybinding-nav-up", e); - }, - - navDown:function(e){ - this.dispatch("keybinding-nav-down", e); - }, - - rangeJumpLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", true, false); - }, - rangeJumpRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", true, false); - }, - rangeJumpUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", true, false); - }, - rangeJumpDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", true, false); - }, - rangeExpandLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", false, true); - }, - rangeExpandRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", false, true); - }, - rangeExpandUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", false, true); - }, - rangeExpandDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", false, true); - }, - rangeExpandJumpLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", true, true); - }, - rangeExpandJumpRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", true, true); - }, - rangeExpandJumpUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", true, true); - }, - rangeExpandJumpDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", true, true); - }, - - undo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.undo(); - } - } - }, - - redo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.redo(); - } - } - }, - - copyToClipboard:function(e){ - if(!this.table.modules.edit.currentCell){ - if(this.table.modExists("clipboard", true)){ - this.table.modules.clipboard.copy(false, true); - } - } - }, -}; - -class Keybindings extends Module{ - - constructor(table){ - super(table); - - this.watchKeys = null; - this.pressedKeys = null; - this.keyupBinding = false; - this.keydownBinding = false; - - this.registerTableOption("keybindings", {}); //array for keybindings - this.registerTableOption("tabEndNewRow", false); //create new row when tab to end of table - } - - initialize(){ - var bindings = this.table.options.keybindings, - mergedBindings = {}; - - this.watchKeys = {}; - this.pressedKeys = []; - - if(bindings !== false){ - Object.assign(mergedBindings, Keybindings.bindings); - Object.assign(mergedBindings, bindings); - - this.mapBindings(mergedBindings); - this.bindEvents(); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - - mapBindings(bindings){ - for(let key in bindings){ - if(Keybindings.actions[key]){ - if(bindings[key]){ - if(typeof bindings[key] !== "object"){ - bindings[key] = [bindings[key]]; - } - - bindings[key].forEach((binding) => { - var bindingList = Array.isArray(binding) ? binding : [binding]; - - bindingList.forEach((item) => { - this.mapBinding(key, item); - }); - }); - } - }else { - console.warn("Key Binding Error - no such action:", key); - } - } - } - - mapBinding(action, symbolsList){ - var binding = { - action: Keybindings.actions[action], - keys: [], - ctrl: false, - shift: false, - meta: false, - }; - - var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+"); - - symbols.forEach((symbol) => { - switch(symbol){ - case "ctrl": - binding.ctrl = true; - break; - - case "shift": - binding.shift = true; - break; - - case "meta": - binding.meta = true; - break; - - default: - symbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol); - binding.keys.push(symbol); - - if(!this.watchKeys[symbol]){ - this.watchKeys[symbol] = []; - } - - this.watchKeys[symbol].push(binding); - } - }); - } - - bindEvents(){ - var self = this; - - this.keyupBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - self.pressedKeys.push(code); - - bindings.forEach(function(binding){ - self.checkBinding(e, binding); - }); - } - }; - - this.keydownBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - var index = self.pressedKeys.indexOf(code); - - if(index > -1){ - self.pressedKeys.splice(index, 1); - } - } - }; - - this.table.element.addEventListener("keydown", this.keyupBinding); - - this.table.element.addEventListener("keyup", this.keydownBinding); - } - - clearBindings(){ - if(this.keyupBinding){ - this.table.element.removeEventListener("keydown", this.keyupBinding); - } - - if(this.keydownBinding){ - this.table.element.removeEventListener("keyup", this.keydownBinding); - } - } - - checkBinding(e, binding){ - var match = true; - - if(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){ - binding.keys.forEach((key) => { - var index = this.pressedKeys.indexOf(key); - - if(index == -1){ - match = false; - } - }); - - if(match){ - binding.action.call(this, e); - } - - return true; - } - - return false; - } -} - -Keybindings.moduleName = "keybindings"; - -//load defaults -Keybindings.bindings = defaultBindings; -Keybindings.actions = defaultActions; - -class Menu extends Module{ - - constructor(table){ - super(table); - - this.menuContainer = null; - this.nestedMenuBlock = false; - - this.currentComponent = null; - this.rootPopup = null; - - this.columnSubscribers = {}; - - this.registerTableOption("menuContainer", undefined); //deprecated - - this.registerTableOption("rowContextMenu", false); - this.registerTableOption("rowClickMenu", false); - this.registerTableOption("rowDblClickMenu", false); - this.registerTableOption("groupContextMenu", false); - this.registerTableOption("groupClickMenu", false); - this.registerTableOption("groupDblClickMenu", false); - - this.registerColumnOption("headerContextMenu"); - this.registerColumnOption("headerClickMenu"); - this.registerColumnOption("headerDblClickMenu"); - this.registerColumnOption("headerMenu"); - this.registerColumnOption("headerMenuIcon"); - this.registerColumnOption("contextMenu"); - this.registerColumnOption("clickMenu"); - this.registerColumnOption("dblClickMenu"); - - } - - initialize(){ - this.deprecatedOptionsCheck(); - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - if(!this.deprecationCheck("menuContainer", "popupContainer")){ - this.table.options.popupContainer = this.table.options.menuContainer; - } - } - - initializeRowWatchers(){ - if(this.table.options.rowContextMenu){ - this.subscribe("row-contextmenu", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - this.table.on("rowTapHold", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - } - - if(this.table.options.rowClickMenu){ - this.subscribe("row-click", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu)); - } - - if(this.table.options.rowDblClickMenu){ - this.subscribe("row-dblclick", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextMenu){ - this.subscribe("group-contextmenu", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - this.table.on("groupTapHold", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - } - - if(this.table.options.groupClickMenu){ - this.subscribe("group-click", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu)); - } - - if(this.table.options.groupDblClickMenu){ - this.subscribe("group-dblclick", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){ - this.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, "headerContextMenu"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextMenu); - this.table.on("headerTapHold", this.loadMenuTableColumnEvent.bind(this, "headerContextMenu")); - } - - if(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){ - this.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerClickMenu"); - this.subscribe("column-click", this.columnSubscribers.headerClickMenu); - } - - if(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){ - this.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerDblClickMenu"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickMenu); - } - - if(def.headerMenu){ - this.initializeColumnHeaderMenu(column); - } - - //handle cell events - if(def.contextMenu && !this.columnSubscribers.contextMenu){ - this.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, "contextMenu"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextMenu); - this.table.on("cellTapHold", this.loadMenuTableCellEvent.bind(this, "contextMenu")); - } - - if(def.clickMenu && !this.columnSubscribers.clickMenu){ - this.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, "clickMenu"); - this.subscribe("cell-click", this.columnSubscribers.clickMenu); - } - - if(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){ - this.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, "dblClickMenu"); - this.subscribe("cell-dblclick", this.columnSubscribers.dblClickMenu); - } - } - - initializeColumnHeaderMenu(column){ - var icon = column.definition.headerMenuIcon, - headerMenuEl; - - headerMenuEl = document.createElement("span"); - headerMenuEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerMenuEl.appendChild(icon); - }else { - headerMenuEl.innerHTML = icon; - } - }else { - headerMenuEl.innerHTML = "⋮"; - } - - headerMenuEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadMenuEvent(column.definition.headerMenu, e, column); - }); - - column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild); - } - - loadMenuTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadMenuEvent(cell.column.definition[option], e, cell); - } - } - - loadMenuTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadMenuEvent(column.definition[option], e, column); - } - } - - loadMenuEvent(menu, e, component){ - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - menu = typeof menu == "function" ? menu.call(this.table, e, component.getComponent()) : menu; - - this.loadMenu(e, component, menu); - } - - loadMenu(e, component, menu, parentEl, parentPopup){ - var touch = !(e instanceof MouseEvent), - menuEl = document.createElement("div"), - popup; - - menuEl.classList.add("tabulator-menu"); - - if(!touch){ - e.preventDefault(); - } - - //abort if no menu set - if(!menu || !menu.length){ - return; - } - - if(!parentEl){ - if(this.nestedMenuBlock){ - //abort if child menu already open - if(this.rootPopup){ - return; - } - }else { - this.nestedMenuBlock = setTimeout(() => { - this.nestedMenuBlock = false; - }, 100); - } - - if(this.rootPopup){ - this.rootPopup.hide(); - } - - this.rootPopup = popup = this.popup(menuEl); - - }else { - popup = parentPopup.child(menuEl); - } - - menu.forEach((item) => { - var itemEl = document.createElement("div"), - label = item.label, - disabled = item.disabled; - - if(item.separator){ - itemEl.classList.add("tabulator-menu-separator"); - }else { - itemEl.classList.add("tabulator-menu-item"); - - if(typeof label == "function"){ - label = label.call(this.table, component.getComponent()); - } - - if(label instanceof Node){ - itemEl.appendChild(label); - }else { - itemEl.innerHTML = label; - } - - if(typeof disabled == "function"){ - disabled = disabled.call(this.table, component.getComponent()); - } - - if(disabled){ - itemEl.classList.add("tabulator-menu-item-disabled"); - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - }); - }else { - if(item.menu && item.menu.length){ - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.loadMenu(e, component, item.menu, itemEl, popup); - }); - }else { - if(item.action){ - itemEl.addEventListener("click", (e) => { - item.action(e, component.getComponent()); - }); - } - } - } - - if(item.menu && item.menu.length){ - itemEl.classList.add("tabulator-menu-item-submenu"); - } - } - - menuEl.appendChild(itemEl); - }); - - menuEl.addEventListener("click", (e) => { - if(this.rootPopup){ - this.rootPopup.hide(); - } - }); - - popup.show(parentEl || e); - - if(popup === this.rootPopup){ - this.rootPopup.hideOnBlur(() => { - this.rootPopup = null; - - if(this.currentComponent){ - this.dispatch("menu-closed", menu, popup); - this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); - this.currentComponent = null; - } - }); - - this.currentComponent = component; - - this.dispatch("menu-opened", menu, popup); - this.dispatchExternal("menuOpened", component.getComponent()); - } - } -} - -Menu.moduleName = "menu"; - -class MoveColumns extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating column header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving column - this.toCol = false; //destination column - this.toColAfter = false; //position of moving column relative to the destination column - this.startX = 0; //starting position within header element - this.autoScrollMargin = 40; //auto scroll on edge when within margin - this.autoScrollStep = 5; //auto scroll distance in pixels - this.autoScrollTimeout = false; //auto scroll timeout - this.touchMove = false; - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - - this.registerTableOption("movableColumns", false); //enable movable columns - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.classList.add("tabulator-col-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableColumns){ - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("alert-show", this.abortMove.bind(this)); - } - } - - abortMove(){ - clearTimeout(this.checkTimeout); - } - - initializeColumn(column){ - var self = this, - config = {}, - colEl; - - if(!column.modules.frozen && !column.isGroup){ - colEl = column.getElement(); - - config.mousemove = function(e){ - if(column.parent === self.moving.parent){ - if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){ - if(self.toCol !== column || !self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling); - self.moveColumn(column, true); - } - }else { - if(self.toCol !== column || self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl); - self.moveColumn(column, false); - } - } - } - }.bind(self); - - colEl.addEventListener("mousedown", function(e){ - self.touchMove = false; - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, column); - }, self.checkPeriod); - } - }); - - colEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - self.bindTouchEvents(column); - } - - column.modules.moveColumn = config; - } - - bindTouchEvents(column){ - var colEl = column.getElement(), - startXMove = false, //shifting center position of the cell - nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast; - - colEl.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextCol = column.nextColumn(); - nextColWidth = nextCol ? nextCol.getWidth()/2 : 0; - prevCol = column.prevColumn(); - prevColWidth = prevCol ? prevCol.getWidth()/2 : 0; - nextColWidthLast = 0; - prevColWidthLast = 0; - startXMove = false; - - this.startMove(e, column); - }, this.checkPeriod); - }, {passive: true}); - - colEl.addEventListener("touchmove", (e) => { - var diff, moveToCol; - - if(this.moving){ - this.moveHover(e); - - if(!startXMove){ - startXMove = e.touches[0].pageX; - } - - diff = e.touches[0].pageX - startXMove; - - if(diff > 0){ - if(nextCol && diff - nextColWidthLast > nextColWidth){ - moveToCol = nextCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling); - this.moveColumn(moveToCol, true); - } - } - }else { - if(prevCol && -diff - prevColWidthLast > prevColWidth){ - moveToCol = prevCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement()); - this.moveColumn(moveToCol, false); - } - } - } - - if(moveToCol){ - nextCol = moveToCol.nextColumn(); - nextColWidthLast = nextColWidth; - nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0; - prevCol = moveToCol.prevColumn(); - prevColWidthLast = prevColWidth; - prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0; - } - } - }, {passive: true}); - - colEl.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - } - }); - } - - startMove(e, column){ - var element = column.getElement(), - headerElement = this.table.columnManager.getContentsElement(), - headersElement = this.table.columnManager.getHeadersElement(); - - this.moving = column; - this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = column.getWidth() + "px"; - this.placeholderElement.style.height = column.getHeight() + "px"; - - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - headerElement.appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + "px"; - - if(!this.touchMove){ - this._bindMouseMove(); - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - } - - this.moveHover(e); - } - - _bindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - moveColumn(column, after){ - var movingCells = this.moving.getCells(); - - this.toCol = column; - this.toColAfter = after; - - if(after){ - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling); - } - }); - }else { - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl); - } - }); - } - } - - endMove(e){ - if(e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toCol){ - this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter); - } - - this.moving = false; - this.toCol = false; - this.toColAfter = false; - - if(!this.touchMove){ - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - } - } - } - - moveHover(e){ - var columnHolder = this.table.columnManager.getContentsElement(), - scrollLeft = columnHolder.scrollLeft, - xPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft, - scrollPos; - - this.hoverElement.style.left = (xPos - this.startX) + "px"; - - if(xPos - scrollLeft < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.max(0,scrollLeft-5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - - if(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - } -} - -MoveColumns.moduleName = "moveColumn"; - -class MoveRows extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating row header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving row - this.toRow = false; //destination row - this.toRowAfter = false; //position of moving row relative to the destination row - this.hasHandle = false; //row has handle instead of fully movable row - this.startY = 0; //starting Y position within header element - this.startX = 0; //starting X position within header element - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - this.tableRowDropEvent = false; - - this.touchMove = false; - - this.connection = false; - this.connectionSelectorsTables = false; - this.connectionSelectorsElements = false; - this.connectionElements = []; - this.connections = []; - - this.connectedTable = false; - this.connectedRow = false; - - this.registerTableOption("movableRows", false); //enable movable rows - this.registerTableOption("movableRowsConnectedTables", false); //tables for movable rows to be connected to - this.registerTableOption("movableRowsConnectedElements", false); //other elements for movable rows to be connected to - this.registerTableOption("movableRowsSender", false); - this.registerTableOption("movableRowsReceiver", "insert"); - - this.registerColumnOption("rowHandle"); - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.classList.add("tabulator-row-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableRows){ - this.connectionSelectorsTables = this.table.options.movableRowsConnectedTables; - this.connectionSelectorsElements = this.table.options.movableRowsConnectedElements; - - this.connection = this.connectionSelectorsTables || this.connectionSelectorsElements; - - this.subscribe("cell-init", this.initializeCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - } - } - - initializeGroupHeader(group){ - var self = this, - config = {}; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, group); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl; - - if(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){ - if(self.toRow !== group || !self.toRowAfter){ - rowEl = group.getElement(); - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(group, true); - } - }else { - if(self.toRow !== group || self.toRowAfter){ - rowEl = group.getElement(); - if(rowEl.previousSibling){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(group, false); - } - } - } - }.bind(self); - - group.modules.moveRow = config; - } - - initializeRow(row){ - var self = this, - config = {}, - rowEl; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, row); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl = row.getElement(); - - if(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){ - if(self.toRow !== row || !self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(row, true); - } - }else { - if(self.toRow !== row || self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(row, false); - } - } - }.bind(self); - - - if(!this.hasHandle){ - - rowEl = row.getElement(); - - rowEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, row); - }, self.checkPeriod); - } - }); - - rowEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(row, row.getElement()); - } - - row.modules.moveRow = config; - } - - initializeColumn(column){ - if(column.definition.rowHandle && this.table.options.movableRows !== false){ - this.hasHandle = true; - } - } - - initializeCell(cell){ - if(cell.column.definition.rowHandle && this.table.options.movableRows !== false){ - var self = this, - cellEl = cell.getElement(true); - - cellEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, cell.row); - }, self.checkPeriod); - } - }); - - cellEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(cell.row, cellEl); - } - } - - bindTouchEvents(row, element){ - var startYMove = false, //shifting center position of the cell - nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast; - - element.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextRow = row.nextRow(); - nextRowHeight = nextRow ? nextRow.getHeight()/2 : 0; - prevRow = row.prevRow(); - prevRowHeight = prevRow ? prevRow.getHeight()/2 : 0; - nextRowHeightLast = 0; - prevRowHeightLast = 0; - startYMove = false; - - this.startMove(e, row); - }, this.checkPeriod); - }, {passive: true}); - this.moving, this.toRow, this.toRowAfter; - element.addEventListener("touchmove", (e) => { - - var diff, moveToRow; - - if(this.moving){ - e.preventDefault(); - - this.moveHover(e); - - if(!startYMove){ - startYMove = e.touches[0].pageY; - } - - diff = e.touches[0].pageY - startYMove; - - if(diff > 0){ - if(nextRow && diff - nextRowHeightLast > nextRowHeight){ - moveToRow = nextRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling); - this.moveRow(moveToRow, true); - } - } - }else { - if(prevRow && -diff - prevRowHeightLast > prevRowHeight){ - moveToRow = prevRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement()); - this.moveRow(moveToRow, false); - } - } - } - - if(moveToRow){ - nextRow = moveToRow.nextRow(); - nextRowHeightLast = nextRowHeight; - nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0; - prevRow = moveToRow.prevRow(); - prevRowHeightLast = prevRowHeight; - prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0; - } - } - }); - - element.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - this.touchMove = false; - } - }); - } - - _bindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - startMove(e, row){ - var element = row.getElement(); - - this.setStartPosition(e, row); - - this.moving = row; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = row.getWidth() + "px"; - this.placeholderElement.style.height = row.getHeight() + "px"; - - if(!this.connection){ - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - }else { - this.table.element.classList.add("tabulator-movingrow-sending"); - this.connectToTables(row); - } - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - if(this.connection){ - document.body.appendChild(this.hoverElement); - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - this.hoverElement.style.width = this.table.element.clientWidth + "px"; - this.hoverElement.style.whiteSpace = "nowrap"; - this.hoverElement.style.overflow = "hidden"; - this.hoverElement.style.pointerEvents = "none"; - }else { - this.table.rowManager.getTableElement().appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - - this._bindMouseMove(); - } - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - - this.dispatchExternal("rowMoving", row.getComponent()); - - this.moveHover(e); - } - - setStartPosition(e, row){ - var pageX = this.touchMove ? e.touches[0].pageX : e.pageX, - pageY = this.touchMove ? e.touches[0].pageY : e.pageY, - element, position; - - element = row.getElement(); - if(this.connection){ - position = element.getBoundingClientRect(); - - this.startX = position.left - pageX + window.pageXOffset; - this.startY = position.top - pageY + window.pageYOffset; - }else { - this.startY = (pageY - element.getBoundingClientRect().top); - } - } - - endMove(e){ - if(!e || e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - if(!this.connection){ - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - } - - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toRow){ - this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter); - }else { - this.dispatchExternal("rowMoveCancelled", this.moving.getComponent()); - } - - this.moving = false; - this.toRow = false; - this.toRowAfter = false; - - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - - if(this.connection){ - this.table.element.classList.remove("tabulator-movingrow-sending"); - this.disconnectFromTables(); - } - } - } - - moveRow(row, after){ - this.toRow = row; - this.toRowAfter = after; - } - - moveHover(e){ - if(this.connection){ - this.moveHoverConnections.call(this, e); - }else { - this.moveHoverTable.call(this, e); - } - } - - moveHoverTable(e){ - var rowHolder = this.table.rowManager.getElement(), - scrollTop = rowHolder.scrollTop, - yPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop; - - this.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + "px"; - } - - moveHoverConnections(e){ - this.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + "px"; - this.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + "px"; - } - - elementRowDrop(e, element, row){ - this.dispatchExternal("movableRowsElementDrop", e, element, row ? row.getComponent() : false); - } - - //establish connection with other tables - connectToTables(row){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStart", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "connect", { - row:row, - }); - } - - if(this.connectionSelectorsElements){ - - this.connectionElements = []; - - if(!Array.isArray(this.connectionSelectorsElements)){ - this.connectionSelectorsElements = [this.connectionSelectorsElements]; - } - - this.connectionSelectorsElements.forEach((query) => { - if(typeof query === "string"){ - this.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query))); - }else { - this.connectionElements.push(query); - } - }); - - this.connectionElements.forEach((element) => { - var dropEvent = (e) => { - this.elementRowDrop(e, element, this.moving); - }; - - element.addEventListener("mouseup", dropEvent); - element.tabulatorElementDropEvent = dropEvent; - - element.classList.add("tabulator-movingrow-receiving"); - }); - } - } - - //disconnect from other tables - disconnectFromTables(){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStop", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "disconnect"); - } - - this.connectionElements.forEach((element) => { - element.classList.remove("tabulator-movingrow-receiving"); - element.removeEventListener("mouseup", element.tabulatorElementDropEvent); - delete element.tabulatorElementDropEvent; - }); - } - - //accept incomming connection - connect(table, row){ - if(!this.connectedTable){ - this.connectedTable = table; - this.connectedRow = row; - - this.table.element.classList.add("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) => { - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.tableRowDropEvent = this.tableRowDrop.bind(this); - - this.table.element.addEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStart", row, table); - - return true; - }else { - console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable); - return false; - } - } - - //close incoming connection - disconnect(table){ - if(table === this.connectedTable){ - this.connectedTable = false; - this.connectedRow = false; - - this.table.element.classList.remove("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) =>{ - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.table.element.removeEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStop", table); - }else { - console.warn("Move Row Error - trying to disconnect from non connected table"); - } - } - - dropComplete(table, row, success){ - var sender = false; - - if(success){ - - switch(typeof this.table.options.movableRowsSender){ - case "string": - sender = this.senders[this.table.options.movableRowsSender]; - break; - - case "function": - sender = this.table.options.movableRowsSender; - break; - } - - if(sender){ - sender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table); - }else { - if(this.table.options.movableRowsSender){ - console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender); - } - } - - this.dispatchExternal("movableRowsSent", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - }else { - this.dispatchExternal("movableRowsSentFailed", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - } - - this.endMove(); - } - - tableRowDrop(e, row){ - var receiver = false, - success = false; - - e.stopImmediatePropagation(); - - switch(typeof this.table.options.movableRowsReceiver){ - case "string": - receiver = this.receivers[this.table.options.movableRowsReceiver]; - break; - - case "function": - receiver = this.table.options.movableRowsReceiver; - break; - } - - if(receiver){ - success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else { - console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver); - } - - if(success){ - this.dispatchExternal("movableRowsReceived", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else { - this.dispatchExternal("movableRowsReceivedFailed", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - } - - this.commsSend(this.connectedTable, "moveRow", "dropcomplete", { - row:row, - success:success, - }); - } - - commsReceived(table, action, data){ - switch(action){ - case "connect": - return this.connect(table, data.row); - - case "disconnect": - return this.disconnect(table); - - case "dropcomplete": - return this.dropComplete(table, data.row, data.success); - } - } -} - -MoveRows.prototype.receivers = { - insert:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData(), undefined, toRow); - return true; - }, - - add:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData()); - return true; - }, - - update:function(fromRow, toRow, fromTable){ - if(toRow){ - toRow.update(fromRow.getData()); - return true; - } - - return false; - }, - - replace:function(fromRow, toRow, fromTable){ - if(toRow){ - this.table.addRow(fromRow.getData(), undefined, toRow); - toRow.delete(); - return true; - } - - return false; - }, -}; - -MoveRows.prototype.senders = { - delete:function(fromRow, toRow, toTable){ - fromRow.delete(); - } -}; - -MoveRows.moduleName = "moveRow"; - -var defaultMutators = {}; - -class Mutator extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of mutation types - this.enabled = true; - - this.registerColumnOption("mutator"); - this.registerColumnOption("mutatorParams"); - this.registerColumnOption("mutatorData"); - this.registerColumnOption("mutatorDataParams"); - this.registerColumnOption("mutatorEdit"); - this.registerColumnOption("mutatorEditParams"); - this.registerColumnOption("mutatorClipboard"); - this.registerColumnOption("mutatorClipboardParams"); - this.registerColumnOption("mutateLink"); - } - - initialize(){ - this.subscribe("cell-value-changing", this.transformCell.bind(this)); - this.subscribe("cell-value-changed", this.mutateLink.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-init-before", this.rowDataChanged.bind(this)); - this.subscribe("row-data-changing", this.rowDataChanged.bind(this)); - } - - rowDataChanged(row, tempData, updatedData){ - return this.transformRow(tempData, "data", updatedData); - } - - //initialize column mutator - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - mutator; - - if(column.definition[key]){ - mutator = this.lookupMutator(column.definition[key]); - - if(mutator){ - match = true; - - config[key] = { - mutator:mutator, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.mutate = config; - } - } - - lookupMutator(value){ - var mutator = false; - - //set column mutator - switch(typeof value){ - case "string": - if(Mutator.mutators[value]){ - mutator = Mutator.mutators[value]; - }else { - console.warn("Mutator Error - No such mutator found, ignoring: ", value); - } - break; - - case "function": - mutator = value; - break; - } - - return mutator; - } - - //apply mutator to row - transformRow(data, type, updatedData){ - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - value; - - if(this.enabled){ - - this.table.columnManager.traverse((column) => { - var mutator, params, component; - - if(column.modules.mutate){ - mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false; - - if(mutator){ - value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data); - - if((type == "data" && !updatedData)|| typeof value !== "undefined"){ - component = column.getComponent(); - params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params; - column.setFieldValue(data, mutator.mutator(value, data, type, params, component)); - } - } - } - }); - } - - return data; - } - - //apply mutator to new cell value - transformCell(cell, value){ - if(cell.column.modules.mutate){ - var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false, - tempData = {}; - - if(mutator){ - tempData = Object.assign(tempData, cell.row.getData()); - cell.column.setFieldValue(tempData, value); - return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent()); - } - } - - return value; - } - - mutateLink(cell){ - var links = cell.column.definition.mutateLink; - - if(links){ - if(!Array.isArray(links)){ - links = [links]; - } - - links.forEach((link) => { - var linkCell = cell.row.getCell(link); - - if(linkCell){ - linkCell.setValue(linkCell.getValue(), true, true); - } - }); - } - } - - enable(){ - this.enabled = true; - } - - disable(){ - this.enabled = false; - } -} - -Mutator.moduleName = "mutator"; - -//load defaults -Mutator.mutators = defaultMutators; - -function rows(pageSize, currentRow, currentPage, totalRows, totalPages){ - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|rows", (value) => { - rowsEl.innerHTML = value; - }); - - if(totalRows){ - valueEl.innerHTML = " " + currentRow + "-" + Math.min((currentRow + pageSize - 1), totalRows) + " "; - - totalEl.innerHTML = " " + totalRows + " "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - }else { - valueEl.innerHTML = " 0 "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(rowsEl); - } - - return el; -} - -function pages(pageSize, currentRow, currentPage, totalRows, totalPages){ - - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - valueEl.innerHTML = " " + currentPage + " "; - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - totalEl.innerHTML = " " + totalPages + " "; - - this.table.modules.localize.langBind("pagination|counter|pages", (value) => { - rowsEl.innerHTML = value; - }); - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - - return el; -} - -var defaultPageCounters = { - rows:rows, - pages:pages, -}; - -class Page extends Module{ - - constructor(table){ - super(table); - - this.mode = "local"; - this.progressiveLoad = false; - - this.element = null; - this.pageCounterElement = null; - this.pageCounter = null; - - this.size = 0; - this.page = 1; - this.count = 5; - this.max = 1; - - this.remoteRowCountEstimate = null; - - this.initialLoad = true; - this.dataChanging = false; //flag to check if data is being changed by this module - - this.pageSizes = []; - - this.registerTableOption("pagination", false); //set pagination type - this.registerTableOption("paginationMode", "local"); //local or remote pagination - this.registerTableOption("paginationSize", false); //set number of rows to a page - this.registerTableOption("paginationInitialPage", 1); //initial page to show on load - this.registerTableOption("paginationCounter", false); // set pagination counter - this.registerTableOption("paginationCounterElement", false); // set pagination counter - this.registerTableOption("paginationButtonCount", 5); // set count of page button - this.registerTableOption("paginationSizeSelector", false); //add pagination size selector element - this.registerTableOption("paginationElement", false); //element to hold pagination numbers - // this.registerTableOption("paginationDataSent", {}); //pagination data sent to the server - // this.registerTableOption("paginationDataReceived", {}); //pagination data received from the server - this.registerTableOption("paginationAddRow", "page"); //add rows on table or page - - this.registerTableOption("progressiveLoad", false); //progressive loading - this.registerTableOption("progressiveLoadDelay", 0); //delay between requests - this.registerTableOption("progressiveLoadScrollMargin", 0); //margin before scroll begins - - this.registerTableFunction("setMaxPage", this.setMaxPage.bind(this)); - this.registerTableFunction("setPage", this.setPage.bind(this)); - this.registerTableFunction("setPageToRow", this.userSetPageToRow.bind(this)); - this.registerTableFunction("setPageSize", this.userSetPageSize.bind(this)); - this.registerTableFunction("getPageSize", this.getPageSize.bind(this)); - this.registerTableFunction("previousPage", this.previousPage.bind(this)); - this.registerTableFunction("nextPage", this.nextPage.bind(this)); - this.registerTableFunction("getPage", this.getPage.bind(this)); - this.registerTableFunction("getPageMax", this.getPageMax.bind(this)); - - //register component functions - this.registerComponentFunction("row", "pageTo", this.setPageToRow.bind(this)); - } - - initialize(){ - if(this.table.options.pagination){ - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("footer-redraw", this.footerRedraw.bind(this)); - - if(this.table.options.paginationAddRow == "page"){ - this.subscribe("row-adding-position", this.rowAddingPosition.bind(this)); - } - - if(this.table.options.paginationMode === "remote"){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - } - - if(this.table.options.progressiveLoad){ - console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"); - } - - this.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40); - this.registerDisplayHandler(this.getRows.bind(this), 50); - - this.createElements(); - this.initializePageCounter(); - this.initializePaginator(); - }else if(this.table.options.progressiveLoad){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - - this.initializeProgressive(this.table.options.progressiveLoad); - - if(this.table.options.progressiveLoad === "scroll"){ - this.subscribe("scroll-vertical", this.scrollVertical.bind(this)); - } - } - } - - rowAddingPosition(row, top){ - var rowManager = this.table.rowManager, - displayRows = rowManager.getDisplayRows(), - index; - - if(top){ - if(displayRows.length){ - index = displayRows[0]; - }else { - if(rowManager.activeRows.length){ - index = rowManager.activeRows[rowManager.activeRows.length-1]; - top = false; - } - } - }else { - if(displayRows.length){ - index = displayRows[displayRows.length - 1]; - top = displayRows.length < this.size ? false : true; - } - } - - return {index, top}; - } - - calculatePageSizes(){ - var testElRow, testElCell; - - if(this.table.options.paginationSize){ - this.size = this.table.options.paginationSize; - }else { - testElRow = document.createElement("div"); - testElRow.classList.add("tabulator-row"); - testElRow.style.visibility = "hidden"; - - testElCell = document.createElement("div"); - testElCell.classList.add("tabulator-cell"); - testElCell.innerHTML = "Page Row Test"; - - testElRow.appendChild(testElCell); - - this.table.rowManager.getTableElement().appendChild(testElRow); - - this.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight); - - this.table.rowManager.getTableElement().removeChild(testElRow); - } - - this.dispatchExternal("pageSizeChanged", this.size); - - this.generatePageSizeSelectList(); - } - - initialLoadComplete(){ - this.initialLoad = false; - } - - remotePageParams(data, config, silent, params){ - if(!this.initialLoad){ - if((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){ - this.reset(true); - } - } - - //configure request params - params.page = this.page; - - //set page size if defined - if(this.size){ - params.size = this.size; - } - - return params; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetPageToRow(row){ - if(this.table.options.pagination){ - row = this.table.rowManager.findRow(row); - - if(row){ - return this.setPageToRow(row); - } - } - - return Promise.reject(); - } - - userSetPageSize(size){ - if(this.table.options.pagination){ - this.setPageSize(size); - return this.setPage(1); - }else { - return false; - } - } - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - scrollVertical(top, dir){ - var element, diff, margin; - if(!dir && !this.table.dataLoader.loading){ - element = this.table.rowManager.getElement(); - diff = element.scrollHeight - element.clientHeight - top; - margin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2); - - if(diff < margin){ - this.nextPage() - .catch(() => {}); //consume the exception thrown when on the last page - } - } - } - - restOnRenderBefore(rows, renderInPosition){ - if(!renderInPosition){ - if(this.mode === "local"){ - this.reset(); - } - } - - return rows; - } - - rowsUpdated(){ - this.refreshData(true, "all"); - } - - createElements(){ - var button; - - this.element = document.createElement("span"); - this.element.classList.add("tabulator-paginator"); - - this.pagesElement = document.createElement("span"); - this.pagesElement.classList.add("tabulator-pages"); - - button = document.createElement("button"); - button.classList.add("tabulator-page"); - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - button.setAttribute("aria-label", ""); - button.setAttribute("title", ""); - - this.firstBut = button.cloneNode(true); - this.firstBut.setAttribute("data-page", "first"); - - this.prevBut = button.cloneNode(true); - this.prevBut.setAttribute("data-page", "prev"); - - this.nextBut = button.cloneNode(true); - this.nextBut.setAttribute("data-page", "next"); - - this.lastBut = button.cloneNode(true); - this.lastBut.setAttribute("data-page", "last"); - - if(this.table.options.paginationSizeSelector){ - this.pageSizeSelect = document.createElement("select"); - this.pageSizeSelect.classList.add("tabulator-page-size"); - } - } - - generatePageSizeSelectList(){ - var pageSizes = []; - - if(this.pageSizeSelect){ - - if(Array.isArray(this.table.options.paginationSizeSelector)){ - pageSizes = this.table.options.paginationSizeSelector; - this.pageSizes = pageSizes; - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes.unshift(this.size); - } - }else { - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes = []; - - for (let i = 1; i < 5; i++){ - pageSizes.push(this.size * i); - } - - this.pageSizes = pageSizes; - }else { - pageSizes = this.pageSizes; - } - } - - while(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild); - - pageSizes.forEach((item) => { - var itemEl = document.createElement("option"); - itemEl.value = item; - - if(item === true){ - this.langBind("pagination|all", function(value){ - itemEl.innerHTML = value; - }); - }else { - itemEl.innerHTML = item; - } - - - - this.pageSizeSelect.appendChild(itemEl); - }); - - this.pageSizeSelect.value = this.size; - } - } - - initializePageCounter(){ - var counter = this.table.options.paginationCounter, - pageCounter = null; - - if(counter){ - if(typeof counter === "function"){ - pageCounter = counter; - }else { - pageCounter = Page.pageCounters[counter]; - } - - if(pageCounter){ - this.pageCounter = pageCounter; - - this.pageCounterElement = document.createElement("span"); - this.pageCounterElement.classList.add("tabulator-page-counter"); - }else { - console.warn("Pagination Error - No such page counter found: ", counter); - } - } - } - - //setup pagination - initializePaginator(hidden){ - var pageSelectLabel, paginationCounterHolder; - - if(!hidden){ - //build pagination element - - //bind localizations - this.langBind("pagination|first", (value) => { - this.firstBut.innerHTML = value; - }); - - this.langBind("pagination|first_title", (value) => { - this.firstBut.setAttribute("aria-label", value); - this.firstBut.setAttribute("title", value); - }); - - this.langBind("pagination|prev", (value) => { - this.prevBut.innerHTML = value; - }); - - this.langBind("pagination|prev_title", (value) => { - this.prevBut.setAttribute("aria-label", value); - this.prevBut.setAttribute("title", value); - }); - - this.langBind("pagination|next", (value) => { - this.nextBut.innerHTML = value; - }); - - this.langBind("pagination|next_title", (value) => { - this.nextBut.setAttribute("aria-label", value); - this.nextBut.setAttribute("title", value); - }); - - this.langBind("pagination|last", (value) => { - this.lastBut.innerHTML = value; - }); - - this.langBind("pagination|last_title", (value) => { - this.lastBut.setAttribute("aria-label", value); - this.lastBut.setAttribute("title", value); - }); - - //click bindings - this.firstBut.addEventListener("click", () => { - this.setPage(1); - }); - - this.prevBut.addEventListener("click", () => { - this.previousPage(); - }); - - this.nextBut.addEventListener("click", () => { - this.nextPage(); - }); - - this.lastBut.addEventListener("click", () => { - this.setPage(this.max); - }); - - if(this.table.options.paginationElement){ - this.element = this.table.options.paginationElement; - } - - if(this.pageSizeSelect){ - pageSelectLabel = document.createElement("label"); - - this.langBind("pagination|page_size", (value) => { - this.pageSizeSelect.setAttribute("aria-label", value); - this.pageSizeSelect.setAttribute("title", value); - pageSelectLabel.innerHTML = value; - }); - - this.element.appendChild(pageSelectLabel); - this.element.appendChild(this.pageSizeSelect); - - this.pageSizeSelect.addEventListener("change", (e) => { - this.setPageSize(this.pageSizeSelect.value == "true" ? true : this.pageSizeSelect.value); - this.setPage(1); - }); - } - - //append to DOM - this.element.appendChild(this.firstBut); - this.element.appendChild(this.prevBut); - this.element.appendChild(this.pagesElement); - this.element.appendChild(this.nextBut); - this.element.appendChild(this.lastBut); - - if(!this.table.options.paginationElement){ - if(this.table.options.paginationCounter){ - - if(this.table.options.paginationCounterElement){ - if(this.table.options.paginationCounterElement instanceof HTMLElement){ - this.table.options.paginationCounterElement.appendChild(this.pageCounterElement); - }else if(typeof this.table.options.paginationCounterElement === "string"){ - paginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement); - - if(paginationCounterHolder){ - paginationCounterHolder.appendChild(this.pageCounterElement); - }else { - console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:", this.table.options.paginationCounterElement); - } - } - }else { - this.footerAppend(this.pageCounterElement); - } - - } - - this.footerAppend(this.element); - } - - this.page = this.table.options.paginationInitialPage; - this.count = this.table.options.paginationButtonCount; - } - - //set default values - this.mode = this.table.options.paginationMode; - } - - initializeProgressive(mode){ - this.initializePaginator(true); - this.mode = "progressive_" + mode; - this.progressiveLoad = true; - } - - trackChanges(){ - this.dispatch("page-changed"); - } - - //calculate maximum page from number of rows - setMaxRows(rowCount){ - if(!rowCount){ - this.max = 1; - }else { - this.max = this.size === true ? 1 : Math.ceil(rowCount/this.size); - } - - if(this.page > this.max){ - this.page = this.max; - } - } - - //reset to first page without triggering action - reset(force){ - if(!this.initialLoad){ - if(this.mode == "local" || force){ - this.page = 1; - this.trackChanges(); - } - } - } - - //set the maximum page - setMaxPage(max){ - - max = parseInt(max); - - this.max = max || 1; - - if(this.page > this.max){ - this.page = this.max; - this.trigger(); - } - } - - //set current page number - setPage(page){ - switch(page){ - case "first": - return this.setPage(1); - - case "prev": - return this.previousPage(); - - case "next": - return this.nextPage(); - - case "last": - return this.setPage(this.max); - } - - page = parseInt(page); - - if((page > 0 && page <= this.max) || this.mode !== "local"){ - this.page = page; - - this.trackChanges(); - - return this.trigger(); - }else { - console.warn("Pagination Error - Requested page is out of range of 1 - " + this.max + ":", page); - return Promise.reject(); - } - } - - setPageToRow(row){ - var rows = this.displayRows(-1); - var index = rows.indexOf(row); - - if(index > -1){ - var page = this.size === true ? 1 : Math.ceil((index + 1) / this.size); - - return this.setPage(page); - }else { - console.warn("Pagination Error - Requested row is not visible"); - return Promise.reject(); - } - } - - setPageSize(size){ - if(size !== true){ - size = parseInt(size); - } - - if(size > 0){ - this.size = size; - this.dispatchExternal("pageSizeChanged", size); - } - - if(this.pageSizeSelect){ - // this.pageSizeSelect.value = size; - this.generatePageSizeSelectList(); - } - - this.trackChanges(); - } - - _setPageCounter(totalRows, size, currentRow){ - var content; - - if(this.pageCounter){ - - if(this.mode === "remote"){ - size = this.size; - currentRow = ((this.page - 1) * this.size) + 1; - totalRows = this.remoteRowCountEstimate; - } - - content = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max); - - switch(typeof content){ - case "object": - if(content instanceof Node){ - - //clear previous cell contents - while(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild); - - this.pageCounterElement.appendChild(content); - }else { - this.pageCounterElement.innerHTML = ""; - - if(content != null){ - console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:", content); - } - } - break; - case "undefined": - this.pageCounterElement.innerHTML = ""; - break; - default: - this.pageCounterElement.innerHTML = content; - } - } - } - - //setup the pagination buttons - _setPageButtons(){ - let leftSize = Math.floor((this.count-1) / 2); - let rightSize = Math.ceil((this.count-1) / 2); - let min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1); - let max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max); - - while(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild); - - if(this.page == 1){ - this.firstBut.disabled = true; - this.prevBut.disabled = true; - }else { - this.firstBut.disabled = false; - this.prevBut.disabled = false; - } - - if(this.page == this.max){ - this.lastBut.disabled = true; - this.nextBut.disabled = true; - }else { - this.lastBut.disabled = false; - this.nextBut.disabled = false; - } - - for(let i = min; i <= max; i++){ - if(i>0 && i <= this.max){ - this.pagesElement.appendChild(this._generatePageButton(i)); - } - } - - this.footerRedraw(); - } - - _generatePageButton(page){ - var button = document.createElement("button"); - - button.classList.add("tabulator-page"); - if(page == this.page){ - button.classList.add("active"); - } - - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - - this.langBind("pagination|page_title", (value) => { - button.setAttribute("aria-label", value + " " + page); - button.setAttribute("title", value + " " + page); - }); - - button.setAttribute("data-page", page); - button.textContent = page; - - button.addEventListener("click", (e) => { - this.setPage(page); - }); - - return button; - } - - //previous page - previousPage(){ - if(this.page > 1){ - this.page--; - - this.trackChanges(); - - return this.trigger(); - - }else { - console.warn("Pagination Error - Previous page would be less than page 1:", 0); - return Promise.reject(); - } - } - - //next page - nextPage(){ - if(this.page < this.max){ - this.page++; - - this.trackChanges(); - - return this.trigger(); - - }else { - if(!this.progressiveLoad){ - console.warn("Pagination Error - Next page would be greater than maximum page of " + this.max + ":", this.max + 1); - } - return Promise.reject(); - } - } - - //return current page number - getPage(){ - return this.page; - } - - //return max page number - getPageMax(){ - return this.max; - } - - getPageSize(size){ - return this.size; - } - - getMode(){ - return this.mode; - } - - //return appropriate rows for current page - getRows(data){ - var actualRowPageSize = 0, - output, start, end, actualStartRow; - - var actualRows = data.filter((row) => { - return row.type === "row"; - }); - - if(this.mode == "local"){ - output = []; - - this.setMaxRows(data.length); - - if(this.size === true){ - start = 0; - end = data.length; - }else { - start = this.size * (this.page - 1); - end = start + parseInt(this.size); - } - - this._setPageButtons(); - - for(let i = start; i < end; i++){ - let row = data[i]; - - if(row){ - output.push(row); - - if(row.type === "row"){ - if(!actualStartRow){ - actualStartRow = row; - } - - actualRowPageSize++; - } - } - } - - this._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0); - - return output; - }else { - this._setPageButtons(); - this._setPageCounter(actualRows.length); - - return data.slice(0); - } - } - - trigger(){ - var left; - - switch(this.mode){ - case "local": - left = this.table.rowManager.scrollLeft; - - this.refreshData(); - this.table.rowManager.scrollHorizontal(left); - - this.dispatchExternal("pageLoaded", this.getPage()); - - return Promise.resolve(); - - case "remote": - this.dataChanging = true; - return this.reloadData(null) - .finally(() => { - this.dataChanging = false; - }); - - case "progressive_load": - case "progressive_scroll": - return this.reloadData(null, true); - - default: - console.warn("Pagination Error - no such pagination mode:", this.mode); - return Promise.reject(); - } - } - - _parseRemoteData(data){ - var margin; - - if(typeof data.last_page === "undefined"){ - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").last_page || "last_page") + "' property"); - } - - if(data.data){ - this.max = parseInt(data.last_page) || 1; - - this.remoteRowCountEstimate = typeof data.last_row !== "undefined" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0)); - - if(this.progressiveLoad){ - switch(this.mode){ - case "progressive_load": - - if(this.page == 1){ - this.table.rowManager.setData(data.data, false, this.page == 1); - }else { - this.table.rowManager.addRows(data.data); - } - - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }, this.table.options.progressiveLoadDelay); - } - break; - - case "progressive_scroll": - data = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data); - - this.table.rowManager.setData(data, this.page !== 1, this.page == 1); - - margin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2); - - if(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){ - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }); - } - } - break; - } - - return false; - }else { - // left = this.table.rowManager.scrollLeft; - this.dispatchExternal("pageLoaded", this.getPage()); - // this.table.rowManager.scrollHorizontal(left); - // this.table.columnManager.scrollHorizontal(left); - } - - }else { - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").data || "data") + "' property"); - } - - return data.data; - } - - //handle the footer element being redrawn - footerRedraw(){ - var footer = this.table.footerManager.containerElement; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - }else { - this.pagesElement.style.display = ''; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - } - } - } -} - -Page.moduleName = "page"; - -//load defaults -Page.pageCounters = defaultPageCounters; - -// read persistance information from storage -var defaultReaders = { - local:function(id, type){ - var data = localStorage.getItem(id + "-" + type); - - return data ? JSON.parse(data) : false; - }, - cookie:function(id, type){ - var cookie = document.cookie, - key = id + "-" + type, - cookiePos = cookie.indexOf(key + "="), - end, data; - - //if cookie exists, decode and load column data into tabulator - if(cookiePos > -1){ - cookie = cookie.slice(cookiePos); - - end = cookie.indexOf(";"); - - if(end > -1){ - cookie = cookie.slice(0, end); - } - - data = cookie.replace(key + "=", ""); - } - - return data ? JSON.parse(data) : false; - } -}; - -//write persistence information to storage -var defaultWriters = { - local:function(id, type, data){ - localStorage.setItem(id + "-" + type, JSON.stringify(data)); - }, - cookie:function(id, type, data){ - var expireDate = new Date(); - - expireDate.setDate(expireDate.getDate() + 10000); - - document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString(); - } -}; - -class Persistence extends Module{ - - constructor(table){ - super(table); - - this.mode = ""; - this.id = ""; - // this.persistProps = ["field", "width", "visible"]; - this.defWatcherBlock = false; - this.config = {}; - this.readFunc = false; - this.writeFunc = false; - - this.registerTableOption("persistence", false); - this.registerTableOption("persistenceID", ""); //key for persistent storage - this.registerTableOption("persistenceMode", true); //mode for storing persistence information - this.registerTableOption("persistenceReaderFunc", false); //function for handling persistence data reading - this.registerTableOption("persistenceWriterFunc", false); //function for handling persistence data writing - } - - // Test for whether localStorage is available for use. - localStorageTest() { - var testKey = "_tabulator_test"; - - try { - window.localStorage.setItem( testKey, testKey); - window.localStorage.removeItem( testKey ); - return true; - } catch(e) { - return false; - } - } - - //setup parameters - initialize(){ - if(this.table.options.persistence){ - //determine persistent layout storage type - var mode = this.table.options.persistenceMode, - id = this.table.options.persistenceID, - retrievedData; - - this.mode = mode !== true ? mode : (this.localStorageTest() ? "local" : "cookie"); - - if(this.table.options.persistenceReaderFunc){ - if(typeof this.table.options.persistenceReaderFunc === "function"){ - this.readFunc = this.table.options.persistenceReaderFunc; - }else { - if(Persistence.readers[this.table.options.persistenceReaderFunc]){ - this.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc]; - }else { - console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc); - } - } - }else { - if(Persistence.readers[this.mode]){ - this.readFunc = Persistence.readers[this.mode]; - }else { - console.warn("Persistence Read Error - invalid reader set", this.mode); - } - } - - if(this.table.options.persistenceWriterFunc){ - if(typeof this.table.options.persistenceWriterFunc === "function"){ - this.writeFunc = this.table.options.persistenceWriterFunc; - }else { - if(Persistence.writers[this.table.options.persistenceWriterFunc]){ - this.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc]; - }else { - console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc); - } - } - }else { - if(Persistence.writers[this.mode]){ - this.writeFunc = Persistence.writers[this.mode]; - }else { - console.warn("Persistence Write Error - invalid writer set", this.mode); - } - } - - //set storage tag - this.id = "tabulator-" + (id || (this.table.element.getAttribute("id") || "")); - - this.config = { - sort:this.table.options.persistence === true || this.table.options.persistence.sort, - filter:this.table.options.persistence === true || this.table.options.persistence.filter, - headerFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter, - group:this.table.options.persistence === true || this.table.options.persistence.group, - page:this.table.options.persistence === true || this.table.options.persistence.page, - columns:this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns, - }; - - //load pagination data if needed - if(this.config.page){ - retrievedData = this.retrieveData("page"); - - if(retrievedData){ - if(typeof retrievedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)){ - this.table.options.paginationSize = retrievedData.paginationSize; - } - - if(typeof retrievedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)){ - this.table.options.paginationInitialPage = retrievedData.paginationInitialPage; - } - } - } - - //load group data if needed - if(this.config.group){ - retrievedData = this.retrieveData("group"); - - if(retrievedData){ - if(typeof retrievedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)){ - this.table.options.groupBy = retrievedData.groupBy; - } - if(typeof retrievedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)){ - this.table.options.groupStartOpen = retrievedData.groupStartOpen; - } - if(typeof retrievedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)){ - this.table.options.groupHeader = retrievedData.groupHeader; - } - } - } - - if(this.config.columns){ - this.table.options.columns = this.load("columns", this.table.options.columns); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.save.bind(this, "columns")); - this.subscribe("column-hide", this.save.bind(this, "columns")); - this.subscribe("column-moved", this.save.bind(this, "columns")); - } - - this.subscribe("table-built", this.tableBuilt.bind(this), 0); - - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - - this.subscribe("filter-changed", this.eventSave.bind(this, "filter")); - this.subscribe("filter-changed", this.eventSave.bind(this, "headerFilter")); - this.subscribe("sort-changed", this.eventSave.bind(this, "sort")); - this.subscribe("group-changed", this.eventSave.bind(this, "group")); - this.subscribe("page-changed", this.eventSave.bind(this, "page")); - this.subscribe("column-resized", this.eventSave.bind(this, "columns")); - this.subscribe("column-width", this.eventSave.bind(this, "columns")); - this.subscribe("layout-refreshed", this.eventSave.bind(this, "columns")); - } - - this.registerTableFunction("getColumnLayout", this.getColumnLayout.bind(this)); - this.registerTableFunction("setColumnLayout", this.setColumnLayout.bind(this)); - } - - eventSave(type){ - if(this.config[type]){ - this.save(type); - } - } - - tableBuilt(){ - var sorters, filters, headerFilters; - - if(this.config.sort){ - sorters = this.load("sort"); - - if(!sorters === false){ - this.table.options.initialSort = sorters; - } - } - - if(this.config.filter){ - filters = this.load("filter"); - - if(!filters === false){ - this.table.options.initialFilter = filters; - } - } - if(this.config.headerFilter){ - headerFilters = this.load("headerFilter"); - - if(!headerFilters === false){ - this.table.options.initialHeaderFilter = headerFilters; - } - } - - } - - tableRedraw(force){ - if(force && this.config.columns){ - this.save("columns"); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - getColumnLayout(){ - return this.parseColumns(this.table.columnManager.getColumns()); - } - - setColumnLayout(layout){ - this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout, true)); - return true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumn(column){ - var def, keys; - - if(this.config.columns){ - this.defWatcherBlock = true; - - def = column.getDefinition(); - - keys = this.config.columns === true ? Object.keys(def) : this.config.columns; - - keys.forEach((key)=>{ - var props = Object.getOwnPropertyDescriptor(def, key); - var value = def[key]; - - if(props){ - Object.defineProperty(def, key, { - set: (newValue) => { - value = newValue; - - if(!this.defWatcherBlock){ - this.save("columns"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - if(props.get){ - props.get(); - } - return value; - } - }); - } - }); - - this.defWatcherBlock = false; - } - } - - //load saved definitions - load(type, current){ - var data = this.retrieveData(type); - - if(current){ - data = data ? this.mergeDefinition(current, data) : current; - } - - return data; - } - - //retrieve data from memory - retrieveData(type){ - return this.readFunc ? this.readFunc(this.id, type) : false; - } - - //merge old and new column definitions - mergeDefinition(oldCols, newCols, mergeAllNew){ - var output = []; - - newCols = newCols || []; - - newCols.forEach((column, to) => { - var from = this._findColumn(oldCols, column), - keys; - - if(from){ - if(mergeAllNew){ - keys = Object.keys(column); - }else if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(from); - keys.push("width"); - }else { - keys = this.config.columns; - } - - keys.forEach((key)=>{ - if(key !== "columns" && typeof column[key] !== "undefined"){ - from[key] = column[key]; - } - }); - - if(from.columns){ - from.columns = this.mergeDefinition(from.columns, column.columns); - } - - output.push(from); - } - }); - - oldCols.forEach((column, i) => { - var from = this._findColumn(newCols, column); - - if (!from) { - if(output.length>i){ - output.splice(i, 0, column); - }else { - output.push(column); - } - } - }); - - return output; - } - - //find matching columns - _findColumn(columns, subject){ - var type = subject.columns ? "group" : (subject.field ? "field" : "object"); - - return columns.find(function(col){ - switch(type){ - case "group": - return col.title === subject.title && col.columns.length === subject.columns.length; - - case "field": - return col.field === subject.field; - - case "object": - return col === subject; - } - }); - } - - //save data - save(type){ - var data = {}; - - switch(type){ - case "columns": - data = this.parseColumns(this.table.columnManager.getColumns()); - break; - - case "filter": - data = this.table.modules.filter.getFilters(); - break; - - case "headerFilter": - data = this.table.modules.filter.getHeaderFilters(); - break; - - case "sort": - data = this.validateSorters(this.table.modules.sort.getSort()); - break; - - case "group": - data = this.getGroupConfig(); - break; - - case "page": - data = this.getPageConfig(); - break; - } - - if(this.writeFunc){ - this.writeFunc(this.id, type, data); - } - - } - - //ensure sorters contain no function data - validateSorters(data){ - data.forEach(function(item){ - item.column = item.field; - delete item.field; - }); - - return data; - } - - getGroupConfig(){ - var data = {}; - - if(this.config.group){ - if(this.config.group === true || this.config.group.groupBy){ - data.groupBy = this.table.options.groupBy; - } - - if(this.config.group === true || this.config.group.groupStartOpen){ - data.groupStartOpen = this.table.options.groupStartOpen; - } - - if(this.config.group === true || this.config.group.groupHeader){ - data.groupHeader = this.table.options.groupHeader; - } - } - - return data; - } - - getPageConfig(){ - var data = {}; - - if(this.config.page){ - if(this.config.page === true || this.config.page.size){ - data.paginationSize = this.table.modules.page.getPageSize(); - } - - if(this.config.page === true || this.config.page.page){ - data.paginationInitialPage = this.table.modules.page.getPage(); - } - } - - return data; - } - - - //parse columns for data to store - parseColumns(columns){ - var definitions = [], - excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"]; - - columns.forEach((column) => { - var defStore = {}, - colDef = column.getDefinition(), - keys; - - if(column.isGroup){ - defStore.title = colDef.title; - defStore.columns = this.parseColumns(column.getColumns()); - }else { - defStore.field = column.getField(); - - if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(colDef); - keys.push("width"); - keys.push("visible"); - }else { - keys = this.config.columns; - } - - keys.forEach((key)=>{ - switch(key){ - case "width": - defStore.width = column.getWidth(); - break; - case "visible": - defStore.visible = column.visible; - break; - - default: - if(typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1){ - defStore[key] = colDef[key]; - } - } - }); - } - - definitions.push(defStore); - }); - - return definitions; - } -} - -Persistence.moduleName = "persistence"; - -Persistence.moduleInitOrder = -10; - -//load defaults -Persistence.readers = defaultReaders; -Persistence.writers = defaultWriters; - -class Popup$1 extends Module{ - - constructor(table){ - super(table); - - this.columnSubscribers = {}; - - this.registerTableOption("rowContextPopup", false); - this.registerTableOption("rowClickPopup", false); - this.registerTableOption("rowDblClickPopup", false); - this.registerTableOption("groupContextPopup", false); - this.registerTableOption("groupClickPopup", false); - this.registerTableOption("groupDblClickPopup", false); - - this.registerColumnOption("headerContextPopup"); - this.registerColumnOption("headerClickPopup"); - this.registerColumnOption("headerDblClickPopup"); - this.registerColumnOption("headerPopup"); - this.registerColumnOption("headerPopupIcon"); - this.registerColumnOption("contextPopup"); - this.registerColumnOption("clickPopup"); - this.registerColumnOption("dblClickPopup"); - - this.registerComponentFunction("cell", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("column", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("row", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("group", "popup", this._componentPopupCall.bind(this)); - - } - - initialize(){ - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - _componentPopupCall(component, contents, position){ - this.loadPopupEvent(contents, null, component, position); - } - - initializeRowWatchers(){ - if(this.table.options.rowContextPopup){ - this.subscribe("row-contextmenu", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - this.table.on("rowTapHold", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - } - - if(this.table.options.rowClickPopup){ - this.subscribe("row-click", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup)); - } - - if(this.table.options.rowDblClickPopup){ - this.subscribe("row-dblclick", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextPopup){ - this.subscribe("group-contextmenu", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - this.table.on("groupTapHold", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - } - - if(this.table.options.groupClickPopup){ - this.subscribe("group-click", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup)); - } - - if(this.table.options.groupDblClickPopup){ - this.subscribe("group-dblclick", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){ - this.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, "headerContextPopup"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextPopup); - this.table.on("headerTapHold", this.loadPopupTableColumnEvent.bind(this, "headerContextPopup")); - } - - if(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){ - this.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerClickPopup"); - this.subscribe("column-click", this.columnSubscribers.headerClickPopup); - - - }if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){ - this.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerDblClickPopup"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickPopup); - } - - if(def.headerPopup){ - this.initializeColumnHeaderPopup(column); - } - - //handle cell events - if(def.contextPopup && !this.columnSubscribers.contextPopup){ - this.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, "contextPopup"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextPopup); - this.table.on("cellTapHold", this.loadPopupTableCellEvent.bind(this, "contextPopup")); - } - - if(def.clickPopup && !this.columnSubscribers.clickPopup){ - this.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, "clickPopup"); - this.subscribe("cell-click", this.columnSubscribers.clickPopup); - } - - if(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){ - this.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, "dblClickPopup"); - this.subscribe("cell-click", this.columnSubscribers.dblClickPopup); - } - } - - initializeColumnHeaderPopup(column){ - var icon = column.definition.headerPopupIcon, - headerPopupEl; - - headerPopupEl = document.createElement("span"); - headerPopupEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerPopupEl.appendChild(icon); - }else { - headerPopupEl.innerHTML = icon; - } - }else { - headerPopupEl.innerHTML = "⋮"; - } - - headerPopupEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadPopupEvent(column.definition.headerPopup, e, column); - }); - - column.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild); - } - - loadPopupTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadPopupEvent(cell.column.definition[option], e, cell); - } - } - - loadPopupTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadPopupEvent(column.definition[option], e, column); - } - } - - loadPopupEvent(contents, e, component, position){ - var renderedCallback; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - contents = typeof contents == "function" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents; - - this.loadPopup(e, component, contents, renderedCallback, position); - } - - loadPopup(e, component, contents, renderedCallback, position){ - var touch = !(e instanceof MouseEvent), - contentsEl, popup; - - if(contents instanceof HTMLElement){ - contentsEl = contents; - }else { - contentsEl = document.createElement("div"); - contentsEl.innerHTML = contents; - } - - contentsEl.classList.add("tabulator-popup"); - - contentsEl.addEventListener("click", (e) =>{ - e.stopPropagation(); - }); - - if(!touch){ - e.preventDefault(); - } - - popup = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - popup.renderCallback(renderedCallback); - } - - if(e){ - popup.show(e); - }else { - popup.show(component.getElement(), position || "center"); - } - - - popup.hideOnBlur(() => { - this.dispatchExternal("popupClosed", component.getComponent()); - }); - - - - this.dispatchExternal("popupOpened", component.getComponent()); - } -} - -Popup$1.moduleName = "popup"; - -class Print extends Module{ - - constructor(table){ - super(table); - - this.element = false; - this.manualBlock = false; - this.beforeprintEventHandler = null; - this.afterprintEventHandler = null; - - this.registerTableOption("printAsHtml", false); //enable print as html - this.registerTableOption("printFormatter", false); //printing page formatter - this.registerTableOption("printHeader", false); //page header contents - this.registerTableOption("printFooter", false); //page footer contents - this.registerTableOption("printStyled", true); //enable print as html styling - this.registerTableOption("printRowRange", "visible"); //restrict print to visible rows only - this.registerTableOption("printConfig", {}); //print config options - - this.registerColumnOption("print"); - this.registerColumnOption("titlePrint"); - } - - initialize(){ - if(this.table.options.printAsHtml){ - this.beforeprintEventHandler = this.replaceTable.bind(this); - this.afterprintEventHandler = this.cleanup.bind(this); - - window.addEventListener("beforeprint", this.beforeprintEventHandler ); - window.addEventListener("afterprint", this.afterprintEventHandler); - this.subscribe("table-destroy", this.destroy.bind(this)); - } - - this.registerTableFunction("print", this.printFullscreen.bind(this)); - } - - destroy(){ - if(this.table.options.printAsHtml){ - window.removeEventListener( "beforeprint", this.beforeprintEventHandler ); - window.removeEventListener( "afterprint", this.afterprintEventHandler ); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - replaceTable(){ - if(!this.manualBlock){ - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-table"); - - this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print")); - - this.table.element.style.display = "none"; - - this.table.element.parentNode.insertBefore(this.element, this.table.element); - } - } - - cleanup(){ - document.body.classList.remove("tabulator-print-fullscreen-hide"); - - if(this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - this.table.element.style.display = ""; - } - } - - printFullscreen(visible, style, config){ - var scrollX = window.scrollX, - scrollY = window.scrollY, - headerEl = document.createElement("div"), - footerEl = document.createElement("div"), - tableEl = this.table.modules.export.generateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, "print"), - headerContent, footerContent; - - this.manualBlock = true; - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-fullscreen"); - - if(this.table.options.printHeader){ - headerEl.classList.add("tabulator-print-header"); - - headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader; - - if(typeof headerContent == "string"){ - headerEl.innerHTML = headerContent; - }else { - headerEl.appendChild(headerContent); - } - - this.element.appendChild(headerEl); - } - - this.element.appendChild(tableEl); - - if(this.table.options.printFooter){ - footerEl.classList.add("tabulator-print-footer"); - - footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter; - - - if(typeof footerContent == "string"){ - footerEl.innerHTML = footerContent; - }else { - footerEl.appendChild(footerContent); - } - - this.element.appendChild(footerEl); - } - - document.body.classList.add("tabulator-print-fullscreen-hide"); - document.body.appendChild(this.element); - - if(this.table.options.printFormatter){ - this.table.options.printFormatter(this.element, tableEl); - } - - window.print(); - - this.cleanup(); - - window.scrollTo(scrollX, scrollY); - - this.manualBlock = false; - } -} - -Print.moduleName = "print"; - -class ReactiveData extends Module{ - - constructor(table){ - super(table); - - this.data = false; - this.blocked = false; //block reactivity while performing update - this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with - this.currentVersion = 0; - - this.registerTableOption("reactiveData", false); //enable data reactivity - } - - initialize(){ - if(this.table.options.reactiveData){ - this.subscribe("cell-value-save-before", this.block.bind(this, "cellsave")); - this.subscribe("cell-value-save-after", this.unblock.bind(this, "cellsave")); - this.subscribe("row-data-save-before", this.block.bind(this, "rowsave")); - this.subscribe("row-data-save-after", this.unblock.bind(this, "rowsave")); - this.subscribe("row-data-init-after", this.watchRow.bind(this)); - this.subscribe("data-processing", this.watchData.bind(this)); - this.subscribe("table-destroy", this.unwatchData.bind(this)); - } - } - - watchData(data){ - var self = this, - version; - - this.currentVersion ++; - - version = this.currentVersion; - - this.unwatchData(); - - this.data = data; - - //override array push function - this.origFuncs.push = data.push; - - Object.defineProperty(this.data, "push", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-push"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, false); - }); - - result = self.origFuncs.push.apply(data, arguments); - - self.unblock("data-push"); - } - - return result; - } - }); - - //override array unshift function - this.origFuncs.unshift = data.unshift; - - Object.defineProperty(this.data, "unshift", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-unshift"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, true); - }); - - result = self.origFuncs.unshift.apply(data, arguments); - - self.unblock("data-unshift"); - } - - return result; - } - }); - - - //override array shift function - this.origFuncs.shift = data.shift; - - Object.defineProperty(this.data, "shift", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-shift"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[0]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.shift.call(data); - - self.unblock("data-shift"); - } - - return result; - } - }); - - //override array pop function - this.origFuncs.pop = data.pop; - - Object.defineProperty(this.data, "pop", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-pop"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.pop.call(data); - - self.unblock("data-pop"); - } - - return result; - } - }); - - - //override array splice function - this.origFuncs.splice = data.splice; - - Object.defineProperty(this.data, "splice", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - start = args[0] < 0 ? data.length + args[0] : args[0], - end = args[1], - newRows = args[2] ? args.slice(2) : false, - startRow, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-splice"); - //add new rows - if(newRows){ - startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false; - - if(startRow){ - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, startRow, true); - }); - }else { - newRows = newRows.slice().reverse(); - - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, false, true); - }); - } - } - - //delete removed rows - if(end !== 0){ - var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end); - - oldRows.forEach((rowData, i) => { - var row = self.table.rowManager.getRowFromDataObject(rowData); - - if(row){ - row.deleteActual(i !== oldRows.length - 1); - } - }); - } - - if(newRows || end !== 0){ - self.table.rowManager.reRenderInPosition(); - } - - result = self.origFuncs.splice.apply(data, arguments); - - self.unblock("data-splice"); - } - - return result ; - } - }); - } - - unwatchData(){ - if(this.data !== false){ - for(var key in this.origFuncs){ - Object.defineProperty(this.data, key, { - enumerable: true, - configurable:true, - writable:true, - value: this.origFuncs.key, - }); - } - } - } - - watchRow(row){ - var data = row.getData(); - - for(var key in data){ - this.watchKey(row, data, key); - } - - if(this.table.options.dataTree){ - this.watchTreeChildren(row); - } - } - - watchTreeChildren (row){ - var self = this, - childField = row.getData()[this.table.options.dataTreeChildField], - origFuncs = {}; - - if(childField){ - - origFuncs.push = childField.push; - - Object.defineProperty(childField, "push", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-push"); - - var result = origFuncs.push.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-push"); - } - - return result; - } - }); - - origFuncs.unshift = childField.unshift; - - Object.defineProperty(childField, "unshift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-unshift"); - - var result = origFuncs.unshift.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-unshift"); - } - - return result; - } - }); - - origFuncs.shift = childField.shift; - - Object.defineProperty(childField, "shift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-shift"); - - var result = origFuncs.shift.call(childField); - this.rebuildTree(row); - - self.unblock("tree-shift"); - } - - return result; - } - }); - - origFuncs.pop = childField.pop; - - Object.defineProperty(childField, "pop", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-pop"); - - var result = origFuncs.pop.call(childField); - this.rebuildTree(row); - - self.unblock("tree-pop"); - } - - return result; - } - }); - - origFuncs.splice = childField.splice; - - Object.defineProperty(childField, "splice", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-splice"); - - var result = origFuncs.splice.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-splice"); - } - - return result; - } - }); - } - } - - rebuildTree(row){ - this.table.modules.dataTree.initializeRow(row); - this.table.modules.dataTree.layoutRow(row); - this.table.rowManager.refreshActiveData("tree", false, true); - } - - watchKey(row, data, key){ - var self = this, - props = Object.getOwnPropertyDescriptor(data, key), - value = data[key], - version = this.currentVersion; - - Object.defineProperty(data, key, { - set: (newValue) => { - value = newValue; - if(!self.blocked && version === self.currentVersion){ - self.block("key"); - - var update = {}; - update[key] = newValue; - row.updateData(update); - - self.unblock("key"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - - if(props.get){ - props.get(); - } - - return value; - } - }); - } - - unwatchRow(row){ - var data = row.getData(); - - for(var key in data){ - Object.defineProperty(data, key, { - value:data[key], - }); - } - } - - block(key){ - if(!this.blocked){ - this.blocked = key; - } - } - - unblock(key){ - if(this.blocked === key){ - this.blocked = false; - } - } -} - -ReactiveData.moduleName = "reactiveData"; - -class ResizeColumns extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startX = false; - this.startWidth = false; - this.latestX = false; - this.handle = null; - this.initialNextColumn = null; - this.nextColumn = null; - - this.initialized = false; - this.registerColumnOption("resizable", true); - this.registerTableOption("resizableColumnFit", false); - } - - initialize(){ - this.subscribe("column-rendered", this.layoutColumnHeader.bind(this)); - } - - initializeEventWatchers(){ - if(!this.initialized){ - - this.subscribe("cell-rendered", this.layoutCellHandles.bind(this)); - this.subscribe("cell-delete", this.deInitializeComponent.bind(this)); - - this.subscribe("cell-height", this.resizeHandle.bind(this)); - this.subscribe("column-moved", this.columnLayoutUpdated.bind(this)); - - this.subscribe("column-hide", this.deInitializeColumn.bind(this)); - this.subscribe("column-show", this.columnLayoutUpdated.bind(this)); - this.subscribe("column-width", this.columnWidthUpdated.bind(this)); - - this.subscribe("column-delete", this.deInitializeComponent.bind(this)); - this.subscribe("column-height", this.resizeHandle.bind(this)); - - this.initialized = true; - } - } - - - layoutCellHandles(cell){ - if(cell.row.type === "row"){ - this.deInitializeComponent(cell); - this.initializeColumn("cell", cell, cell.column, cell.element); - } - } - - layoutColumnHeader(column){ - if(column.definition.resizable){ - this.initializeEventWatchers(); - this.deInitializeComponent(column); - this.initializeColumn("header", column, column, column.element); - } - } - - columnLayoutUpdated(column){ - var prev = column.prevColumn(); - - this.reinitializeColumn(column); - - if(prev){ - this.reinitializeColumn(prev); - } - } - - columnWidthUpdated(column){ - if(column.modules.frozen){ - if(this.table.modules.frozenColumns.leftColumns.includes(column)){ - this.table.modules.frozenColumns.leftColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - }else if(this.table.modules.frozenColumns.rightColumns.includes(column)){ - this.table.modules.frozenColumns.rightColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - } - } - } - - frozenColumnOffset(column){ - var offset = false; - - if(column.modules.frozen){ - offset = column.modules.frozen.marginValue; - - if(column.modules.frozen.position === "left"){ - offset += column.getWidth() - 3; - }else { - if(offset){ - offset -= 3; - } - } - } - - return offset !== false ? offset + "px" : false; - } - - reinitializeColumn(column){ - var frozenOffset = this.frozenColumnOffset(column); - - column.cells.forEach((cell) => { - if(cell.modules.resize && cell.modules.resize.handleEl){ - if(frozenOffset){ - cell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - cell.modules.resize.handleEl.style["z-index"] = 11; - } - - cell.element.after(cell.modules.resize.handleEl); - } - }); - - if(column.modules.resize && column.modules.resize.handleEl){ - if(frozenOffset){ - column.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - } - - column.element.after(column.modules.resize.handleEl); - } - } - - initializeColumn(type, component, column, element){ - var self = this, - variableHeight = false, - mode = column.definition.resizable, - config = {}, - nearestColumn = column.getLastColumn(); - - //set column resize mode - if(type === "header"){ - variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight; - config = {variableHeight:variableHeight}; - } - - if((mode === true || mode == type) && this._checkResizability(nearestColumn)){ - - var handle = document.createElement('span'); - handle.className = "tabulator-col-resize-handle"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startColumn = column; - self.initialNextColumn = self.nextColumn = nearestColumn.nextColumn(); - self._mouseDown(e, nearestColumn, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - //resize column on double click - handle.addEventListener("dblclick", (e) => { - var oldWidth = nearestColumn.getWidth(); - - e.stopPropagation(); - nearestColumn.reinitializeWidth(true); - - if(oldWidth !== nearestColumn.getWidth()){ - self.dispatch("column-resized", nearestColumn); - self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent()); - } - }); - - if(column.modules.frozen){ - handle.style.position = "sticky"; - handle.style[column.modules.frozen.position] = this.frozenColumnOffset(column); - } - - config.handleEl = handle; - - if(element.parentNode && column.visible){ - element.after(handle); - } - } - - component.modules.resize = config; - } - - deInitializeColumn(column){ - this.deInitializeComponent(column); - - column.cells.forEach((cell) => { - this.deInitializeComponent(cell); - }); - } - - deInitializeComponent(component){ - var handleEl; - - if(component.modules.resize){ - handleEl = component.modules.resize.handleEl; - - if(handleEl && handleEl.parentElement){ - handleEl.parentElement.removeChild(handleEl); - } - } - } - - resizeHandle(component, height){ - if(component.modules.resize && component.modules.resize.handleEl){ - component.modules.resize.handleEl.style.height = height; - } - } - - _checkResizability(column){ - return column.definition.resizable; - } - - _mouseDown(e, column, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - var x = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX, - startDiff = x - self.startX, - moveDiff = x - self.latestX, - blockedBefore, blockedAfter; - - self.latestX = x; - - if(self.table.rtl){ - startDiff = -startDiff; - moveDiff = -moveDiff; - } - - blockedBefore = column.width == column.minWidth || column.width == column.maxWidth; - - column.setWidth(self.startWidth + startDiff); - - blockedAfter = column.width == column.minWidth || column.width == column.maxWidth; - - if(moveDiff < 0){ - self.nextColumn = self.initialNextColumn; - } - - if(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){ - let colWidth = self.nextColumn.getWidth(); - - if(moveDiff > 0){ - if(colWidth <= self.nextColumn.minWidth){ - self.nextColumn = self.nextColumn.nextColumn(); - } - } - - if(self.nextColumn){ - self.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff); - } - } - - self.table.columnManager.rerenderColumns(true); - - if(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - } - - function mouseUp(e){ - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = false; - } - - if(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - - document.body.removeEventListener("mouseup", mouseUp); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - if(self.startWidth !== column.getWidth()){ - self.table.columnManager.verticalAlignHeaders(); - - self.dispatch("column-resized", column); - self.table.externalEvents.dispatch("columnResized", column.getComponent()); - } - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = true; - } - - self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX; - self.latestX = self.startX; - self.startWidth = column.getWidth(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } -} - -ResizeColumns.moduleName = "resizeColumns"; - -class ResizeRows extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startY = false; - this.startHeight = false; - this.handle = null; - this.prevHandle = null; - - this.registerTableOption("resizableRows", false); //resizable rows - } - - initialize(){ - if(this.table.options.resizableRows){ - this.subscribe("row-layout-after", this.initializeRow.bind(this)); - } - } - - initializeRow(row){ - var self = this, - rowEl = row.getElement(); - - var handle = document.createElement('div'); - handle.className = "tabulator-row-resize-handle"; - - var prevHandle = document.createElement('div'); - prevHandle.className = "tabulator-row-resize-handle prev"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startRow = row; - self._mouseDown(e, row, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - prevHandle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var prevHandleDown = function(e){ - var prevRow = self.table.rowManager.prevDisplayRow(row); - - if(prevRow){ - self.startRow = prevRow; - self._mouseDown(e, prevRow, prevHandle); - } - }; - - prevHandle.addEventListener("mousedown",prevHandleDown); - prevHandle.addEventListener("touchstart",prevHandleDown, {passive: true}); - - rowEl.appendChild(handle); - rowEl.appendChild(prevHandle); - } - - _mouseDown(e, row, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY)); - } - - function mouseUp(e){ - - // //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = false; - // } - - document.body.removeEventListener("mouseup", mouseMove); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - self.dispatchExternal("rowResized", row.getComponent()); - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = true; - // } - - self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY; - self.startHeight = row.getHeight(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } -} - -ResizeRows.moduleName = "resizeRows"; - -class ResizeTable extends Module{ - - constructor(table){ - super(table); - - this.binding = false; - this.visibilityObserver = false; - this.resizeObserver = false; - this.containerObserver = false; - - this.tableHeight = 0; - this.tableWidth = 0; - this.containerHeight = 0; - this.containerWidth = 0; - - this.autoResize = false; - - this.visible = false; - - this.initialized = false; - this.initialRedraw = false; - - this.registerTableOption("autoResize", true); //auto resize table - } - - initialize(){ - if(this.table.options.autoResize){ - var table = this.table, - tableStyle; - - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - if(typeof IntersectionObserver !== "undefined" && typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual"){ - - this.initializeVisibilityObserver(); - - this.autoResize = true; - - this.resizeObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){ - this.tableHeight = nodeHeight; - this.tableWidth = nodeWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - this.redrawTable(); - } - } - }); - - this.resizeObserver.observe(table.element); - - tableStyle = window.getComputedStyle(table.element); - - if(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))){ - - this.containerObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){ - this.containerHeight = nodeHeight; - this.containerWidth = nodeWidth; - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - } - - this.redrawTable(); - } - }); - - this.containerObserver.observe(this.table.element.parentNode); - } - - this.subscribe("table-resize", this.tableResized.bind(this)); - - }else { - this.binding = function(){ - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - table.columnManager.rerenderColumns(true); - table.redraw(); - } - }; - - window.addEventListener("resize", this.binding); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - } - - initializeVisibilityObserver(){ - this.visibilityObserver = new IntersectionObserver((entries) => { - this.visible = entries[0].isIntersecting; - - if(!this.initialized){ - this.initialized = true; - this.initialRedraw = !this.visible; - }else { - if(this.visible){ - this.redrawTable(this.initialRedraw); - this.initialRedraw = false; - } - } - }); - - this.visibilityObserver.observe(this.table.element); - } - - redrawTable(force){ - if(this.initialized && this.visible){ - this.table.columnManager.rerenderColumns(true); - this.table.redraw(force); - } - } - - tableResized(){ - this.table.rowManager.redraw(); - } - - clearBindings(){ - if(this.binding){ - window.removeEventListener("resize", this.binding); - } - - if(this.resizeObserver){ - this.resizeObserver.unobserve(this.table.element); - } - - if(this.visibilityObserver){ - this.visibilityObserver.unobserve(this.table.element); - } - - if(this.containerObserver){ - this.containerObserver.unobserve(this.table.element.parentNode); - } - } -} - -ResizeTable.moduleName = "resizeTable"; - -class ResponsiveLayout extends Module{ - - constructor(table){ - super(table); - - this.columns = []; - this.hiddenColumns = []; - this.mode = ""; - this.index = 0; - this.collapseFormatter = []; - this.collapseStartOpen = true; - this.collapseHandleColumn = false; - - this.registerTableOption("responsiveLayout", false); //responsive layout flags - this.registerTableOption("responsiveLayoutCollapseStartOpen", true); //start showing collapsed data - this.registerTableOption("responsiveLayoutCollapseUseFormatters", true); //responsive layout collapse formatter - this.registerTableOption("responsiveLayoutCollapseFormatter", false); //responsive layout collapse formatter - - this.registerColumnOption("responsive"); - } - - //generate responsive columns list - initialize(){ - if(this.table.options.responsiveLayout){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.updateColumnVisibility.bind(this)); - this.subscribe("column-hide", this.updateColumnVisibility.bind(this)); - this.subscribe("columns-loaded", this.initializeResponsivity.bind(this)); - this.subscribe("column-moved", this.initializeResponsivity.bind(this)); - this.subscribe("column-add", this.initializeResponsivity.bind(this)); - this.subscribe("column-delete", this.initializeResponsivity.bind(this)); - - this.subscribe("table-redrawing", this.tableRedraw.bind(this)); - - if(this.table.options.responsiveLayout === "collapse"){ - this.subscribe("row-data-changed", this.generateCollapsedRowContent.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout", this.layoutRow.bind(this)); - } - } - } - - tableRedraw(force){ - if(["fitColumns", "fitDataStretch"].indexOf(this.layoutMode()) === -1){ - if(!force){ - this.update(); - } - } - } - - initializeResponsivity(){ - var columns = []; - - this.mode = this.table.options.responsiveLayout; - this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData; - this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen; - this.hiddenColumns = []; - - //determine level of responsivity for each column - this.table.columnManager.columnsByIndex.forEach((column, i) => { - if(column.modules.responsive){ - if(column.modules.responsive.order && column.modules.responsive.visible){ - column.modules.responsive.index = i; - columns.push(column); - - if(!column.visible && this.mode === "collapse"){ - this.hiddenColumns.push(column); - } - } - } - }); - - //sort list by responsivity - columns = columns.reverse(); - columns = columns.sort((a, b) => { - var diff = b.modules.responsive.order - a.modules.responsive.order; - return diff || (b.modules.responsive.index - a.modules.responsive.index); - }); - - this.columns = columns; - - if(this.mode === "collapse"){ - this.generateCollapsedContent(); - } - - //assign collapse column - for (let col of this.table.columnManager.columnsByIndex){ - if(col.definition.formatter == "responsiveCollapse"){ - this.collapseHandleColumn = col; - break; - } - } - - if(this.collapseHandleColumn){ - if(this.hiddenColumns.length){ - this.collapseHandleColumn.show(); - }else { - this.collapseHandleColumn.hide(); - } - } - } - - //define layout information - initializeColumn(column){ - var def = column.getDefinition(); - - column.modules.responsive = {order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible:def.visible === false ? false : true}; - } - - initializeRow(row){ - var el; - - if(row.type !== "calc"){ - el = document.createElement("div"); - el.classList.add("tabulator-responsive-collapse"); - - row.modules.responsiveLayout = { - element:el, - open:this.collapseStartOpen, - }; - - if(!this.collapseStartOpen){ - el.style.display = 'none'; - } - } - } - - layoutRow(row){ - var rowEl = row.getElement(); - - if(row.modules.responsiveLayout){ - rowEl.appendChild(row.modules.responsiveLayout.element); - this.generateCollapsedRowContent(row); - } - } - - //update column visibility - updateColumnVisibility(column, responsiveToggle){ - if(!responsiveToggle && column.modules.responsive){ - column.modules.responsive.visible = column.visible; - this.initializeResponsivity(); - } - } - - hideColumn(column){ - var colCount = this.hiddenColumns.length; - - column.hide(false, true); - - if(this.mode === "collapse"){ - this.hiddenColumns.unshift(column); - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !colCount){ - this.collapseHandleColumn.show(); - } - } - } - - showColumn(column){ - var index; - - column.show(false, true); - //set column width to prevent calculation loops on uninitialized columns - column.setWidth(column.getWidth()); - - if(this.mode === "collapse"){ - index = this.hiddenColumns.indexOf(column); - - if(index > -1){ - this.hiddenColumns.splice(index, 1); - } - - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !this.hiddenColumns.length){ - this.collapseHandleColumn.hide(); - } - } - } - - //redraw columns to fit space - update(){ - var working = true; - - while(working){ - - let width = this.table.modules.layout.getMode() == "fitColumns" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth(); - - let diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width; - - if(diff < 0){ - //table is too wide - let column = this.columns[this.index]; - - if(column){ - this.hideColumn(column); - this.index ++; - }else { - working = false; - } - - }else { - - //table has spare space - let column = this.columns[this.index -1]; - - if(column){ - if(diff > 0){ - if(diff >= column.getWidth()){ - this.showColumn(column); - this.index --; - }else { - working = false; - } - }else { - working = false; - } - }else { - working = false; - } - } - - if(!this.table.rowManager.activeRowsCount){ - this.table.rowManager.renderEmptyScroll(); - } - } - } - - generateCollapsedContent(){ - var rows = this.table.rowManager.getDisplayRows(); - - rows.forEach((row) => { - this.generateCollapsedRowContent(row); - }); - } - - generateCollapsedRowContent(row){ - var el, contents; - - if(row.modules.responsiveLayout){ - el = row.modules.responsiveLayout.element; - - while(el.firstChild) el.removeChild(el.firstChild); - - contents = this.collapseFormatter(this.generateCollapsedRowData(row)); - if(contents){ - el.appendChild(contents); - } - } - } - - generateCollapsedRowData(row){ - var data = row.getData(), - output = [], - mockCellComponent; - - this.hiddenColumns.forEach((column) => { - var value = column.getFieldValue(data); - - if(column.definition.title && column.field){ - if(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){ - - mockCellComponent = { - value:false, - data:{}, - getValue:function(){ - return value; - }, - getData:function(){ - return data; - }, - getType:function(){ - return "cell"; - }, - getElement:function(){ - return document.createElement("div"); - }, - getRow:function(){ - return row.getComponent(); - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - }; - - function onRendered(callback){ - callback(); - } - - output.push({ - field: column.field, - title: column.definition.title, - value: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered) - }); - }else { - output.push({ - field: column.field, - title: column.definition.title, - value: value - }); - } - } - }); - - return output; - } - - formatCollapsedData(data){ - var list = document.createElement("table"); - - data.forEach(function(item){ - var row = document.createElement("tr"); - var titleData = document.createElement("td"); - var valueData = document.createElement("td"); - var node_content; - - var titleHighlight = document.createElement("strong"); - titleData.appendChild(titleHighlight); - this.langBind("columns|" + item.field, function(text){ - titleHighlight.innerHTML = text || item.title; - }); - - if(item.value instanceof Node){ - node_content = document.createElement("div"); - node_content.appendChild(item.value); - valueData.appendChild(node_content); - }else { - valueData.innerHTML = item.value; - } - - row.appendChild(titleData); - row.appendChild(valueData); - list.appendChild(row); - }, this); - - return Object.keys(data).length ? list : ""; - } -} - -ResponsiveLayout.moduleName = "responsiveLayout"; - -class SelectRow extends Module{ - - constructor(table){ - super(table); - - this.selecting = false; //flag selecting in progress - this.lastClickedRow = false; //last clicked row - this.selectPrev = []; //hold previously selected element for drag drop selection - this.selectedRows = []; //hold selected rows - this.headerCheckboxElement = null; // hold header select element - - this.registerTableOption("selectableRows", "highlight"); //highlight rows on hover - this.registerTableOption("selectableRowsRangeMode", "drag"); //highlight rows on hover - this.registerTableOption("selectableRowsRollingSelection", true); //roll selection once maximum number of selectable rows is reached - this.registerTableOption("selectableRowsPersistence", true); // maintain selection when table view is updated - this.registerTableOption("selectableRowsCheck", function(data, row){return true;}); //check whether row is selectable - - this.registerTableFunction("selectRow", this.selectRows.bind(this)); - this.registerTableFunction("deselectRow", this.deselectRows.bind(this)); - this.registerTableFunction("toggleSelectRow", this.toggleRow.bind(this)); - this.registerTableFunction("getSelectedRows", this.getSelectedRows.bind(this)); - this.registerTableFunction("getSelectedData", this.getSelectedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "select", this.selectRows.bind(this)); - this.registerComponentFunction("row", "deselect", this.deselectRows.bind(this)); - this.registerComponentFunction("row", "toggleSelect", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "isSelected", this.isRowSelected.bind(this)); - } - - initialize(){ - - this.deprecatedOptionsCheck(); - - if(this.table.options.selectableRows === "highlight" && this.table.options.selectableRange){ - this.table.options.selectableRows = false; - } - - if(this.table.options.selectableRows !== false){ - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-deleting", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clearSelectionData.bind(this)); - this.subscribe("rows-retrieve", this.rowRetrieve.bind(this)); - - if(this.table.options.selectableRows && !this.table.options.selectableRowsPersistence){ - this.subscribe("data-refreshing", this.deselectRows.bind(this)); - } - } - } - - deprecatedOptionsCheck(){ - this.deprecationCheck("selectable", "selectableRows", true); - this.deprecationCheck("selectableRollingSelection", "selectableRowsRollingSelection", true); - this.deprecationCheck("selectableRangeMode", "selectableRowsRangeMode", true); - this.deprecationCheck("selectablePersistence", "selectableRowsPersistence", true); - this.deprecationCheck("selectableCheck", "selectableRowsCheck", true); - } - - rowRetrieve(type, prevValue){ - return type === "selected" ? this.selectedRows : prevValue; - } - - rowDeleted(row){ - this._deselectRow(row, true); - } - - clearSelectionData(silent){ - var prevSelected = this.selectedRows.length; - - this.selecting = false; - this.lastClickedRow = false; - this.selectPrev = []; - this.selectedRows = []; - - if(prevSelected && silent !== true){ - this._rowSelectionChanged(); - } - } - - initializeRow(row){ - var self = this, - selectable = self.checkRowSelectability(row), - element = row.getElement(); - - // trigger end of row selection - var endSelect = function(){ - - setTimeout(function(){ - self.selecting = false; - }, 50); - - document.body.removeEventListener("mouseup", endSelect); - }; - - row.modules.select = {selected:false}; - - element.classList.toggle("tabulator-selectable", selectable); - element.classList.toggle("tabulator-unselectable", !selectable); - - //set row selection class - if(self.checkRowSelectability(row)){ - if(self.table.options.selectableRows && self.table.options.selectableRows != "highlight"){ - if(self.table.options.selectableRowsRangeMode === "click"){ - element.addEventListener("click", this.handleComplexRowClick.bind(this, row)); - }else { - element.addEventListener("click", function(e){ - if(!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()){ - self.table._clearSelection(); - } - - if(!self.selecting){ - self.toggleRow(row); - } - }); - - element.addEventListener("mousedown", function(e){ - if(e.shiftKey){ - self.table._clearSelection(); - - self.selecting = true; - - self.selectPrev = []; - - document.body.addEventListener("mouseup", endSelect); - document.body.addEventListener("keyup", endSelect); - - self.toggleRow(row); - - return false; - } - }); - - element.addEventListener("mouseenter", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.toggleRow(row); - - if(self.selectPrev[1] == row){ - self.toggleRow(self.selectPrev[0]); - } - } - }); - - element.addEventListener("mouseout", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.selectPrev.unshift(row); - } - }); - } - } - } - } - - handleComplexRowClick(row, e){ - if(e.shiftKey){ - this.table._clearSelection(); - this.lastClickedRow = this.lastClickedRow || row; - - var lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow); - var rowIdx = this.table.rowManager.getDisplayRowIndex(row); - - var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx; - var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx; - - var rows = this.table.rowManager.getDisplayRows().slice(0); - var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1); - - if(e.ctrlKey || e.metaKey){ - toggledRows.forEach((toggledRow)=>{ - if(toggledRow !== this.lastClickedRow){ - - if(this.table.options.selectableRows !== true && !this.isRowSelected(row)){ - if(this.selectedRows.length < this.table.options.selectableRows){ - this.toggleRow(toggledRow); - } - }else { - this.toggleRow(toggledRow); - } - } - }); - this.lastClickedRow = row; - }else { - this.deselectRows(undefined, true); - - if(this.table.options.selectableRows !== true){ - if(toggledRows.length > this.table.options.selectableRows){ - toggledRows = toggledRows.slice(0, this.table.options.selectableRows); - } - } - - this.selectRows(toggledRows); - } - this.table._clearSelection(); - } - else if(e.ctrlKey || e.metaKey){ - this.toggleRow(row); - this.lastClickedRow = row; - }else { - this.deselectRows(undefined, true); - this.selectRows(row); - this.lastClickedRow = row; - } - } - - checkRowSelectability(row){ - if(row && row.type === "row"){ - return this.table.options.selectableRowsCheck.call(this.table, row.getComponent()); - } - - return false; - } - - //toggle row selection - toggleRow(row){ - if(this.checkRowSelectability(row)){ - if(row.modules.select && row.modules.select.selected){ - this._deselectRow(row); - }else { - this._selectRow(row); - } - } - } - - //select a number of rows - selectRows(rows){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = this.table.rowManager.rows; - break; - - case "number": - rowMatch = this.table.rowManager.findRow(rows); - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._selectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(false, changes); - } - }else { - if(rowMatch){ - this._selectRow(rowMatch, false, true); - } - } - } - - //select an individual row - _selectRow(rowInfo, silent, force){ - //handle max row count - if(!isNaN(this.table.options.selectableRows) && this.table.options.selectableRows !== true && !force){ - if(this.selectedRows.length >= this.table.options.selectableRows){ - if(this.table.options.selectableRowsRollingSelection){ - this._deselectRow(this.selectedRows[0]); - }else { - return false; - } - } - } - - var row = this.table.rowManager.findRow(rowInfo); - - if(row){ - if(this.selectedRows.indexOf(row) == -1){ - row.getElement().classList.add("tabulator-selected"); - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = true; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = true; - } - - this.selectedRows.push(row); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, true); - } - - this.dispatchExternal("rowSelected", row.getComponent()); - - this._rowSelectionChanged(silent, row); - - return row; - } - }else { - if(!silent){ - console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - isRowSelected(row){ - return this.selectedRows.indexOf(row) !== -1; - } - - //deselect a number of rows - deselectRows(rows, silent){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = Object.assign([], this.selectedRows); - break; - - case "number": - rowMatch = this.table.rowManager.findRow(rows); - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._deselectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(silent, [], changes); - } - }else { - if(rowMatch){ - this._deselectRow(rowMatch, silent, true); - } - } - } - - //deselect an individual row - _deselectRow(rowInfo, silent){ - var self = this, - row = self.table.rowManager.findRow(rowInfo), - index, element; - - if(row){ - index = self.selectedRows.findIndex(function(selectedRow){ - return selectedRow == row; - }); - - if(index > -1){ - - element = row.getElement(); - - if(element){ - element.classList.remove("tabulator-selected"); - } - - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = false; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = false; - } - self.selectedRows.splice(index, 1); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, false); - } - - this.dispatchExternal("rowDeselected", row.getComponent()); - - self._rowSelectionChanged(silent, undefined, row); - - return row; - } - }else { - if(!silent){ - console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - getSelectedData(){ - var data = []; - - this.selectedRows.forEach(function(row){ - data.push(row.getData()); - }); - - return data; - } - - getSelectedRows(){ - var rows = []; - - this.selectedRows.forEach(function(row){ - rows.push(row.getComponent()); - }); - - return rows; - } - - _rowSelectionChanged(silent, selected = [], deselected = []){ - if(this.headerCheckboxElement){ - if(this.selectedRows.length === 0){ - this.headerCheckboxElement.checked = false; - this.headerCheckboxElement.indeterminate = false; - } else if(this.table.rowManager.rows.length === this.selectedRows.length){ - this.headerCheckboxElement.checked = true; - this.headerCheckboxElement.indeterminate = false; - } else { - this.headerCheckboxElement.indeterminate = true; - this.headerCheckboxElement.checked = false; - } - } - - if(!silent){ - if(!Array.isArray(selected)){ - selected = [selected]; - } - - selected = selected.map(row => row.getComponent()); - - if(!Array.isArray(deselected)){ - deselected = [deselected]; - } - - deselected = deselected.map(row => row.getComponent()); - - this.dispatchExternal("rowSelectionChanged", this.getSelectedData(), this.getSelectedRows(), selected, deselected); - } - } - - registerRowSelectCheckbox (row, element) { - if(!row._row.modules.select){ - row._row.modules.select = {}; - } - - row._row.modules.select.checkboxEl = element; - } - - registerHeaderSelectCheckbox (element) { - this.headerCheckboxElement = element; - } - - childRowSelection(row, select){ - var children = this.table.modules.dataTree.getChildren(row, true); - - if(select){ - for(let child of children){ - this._selectRow(child, true); - } - }else { - for(let child of children){ - this._deselectRow(child, true); - } - } - } -} - -SelectRow.moduleName = "selectRow"; - -//sort numbers -function number$1(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var decimal = params.decimalSeparator; - var thousand = params.thousandSeparator; - var emptyAlign = 0; - - a = String(a); - b = String(b); - - if(thousand){ - a = a.split(thousand).join(""); - b = b.split(thousand).join(""); - } - - if(decimal){ - a = a.split(decimal).join("."); - b = b.split(decimal).join("."); - } - - a = parseFloat(a); - b = parseFloat(b); - - //handle non numeric values - if(isNaN(a)){ - emptyAlign = isNaN(b) ? 0 : -1; - }else if(isNaN(b)){ - emptyAlign = 1; - }else { - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} - -//sort strings -function string(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - var locale; - - //handle empty values - if(!a){ - emptyAlign = !b ? 0 : -1; - }else if(!b){ - emptyAlign = 1; - }else { - //compare valid values - switch(typeof params.locale){ - case "boolean": - if(params.locale){ - locale = this.langLocale(); - } - break; - case "string": - locale = params.locale; - break; - } - - return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} - -//sort datetime -function datetime$2(a, b, aRow, bRow, column, dir, params){ - var DT = window.DateTime || luxon.DateTime; - var format = params.format || "dd/MM/yyyy HH:mm:ss", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - if(typeof DT != "undefined"){ - if(!DT.isDateTime(a)){ - if(format === "iso"){ - a = DT.fromISO(String(a)); - }else { - a = DT.fromFormat(String(a), format); - } - } - - if(!DT.isDateTime(b)){ - if(format === "iso"){ - b = DT.fromISO(String(b)); - }else { - b = DT.fromFormat(String(b), format); - } - } - - if(!a.isValid){ - emptyAlign = !b.isValid ? 0 : -1; - }else if(!b.isValid){ - emptyAlign = 1; - }else { - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - - }else { - console.error("Sort Error - 'datetime' sorter is dependant on luxon.js"); - } -} - -//sort date -function date$1(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "dd/MM/yyyy"; - } - - return datetime$2.call(this, a, b, aRow, bRow, column, dir, params); -} - -//sort times -function time$1(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "HH:mm"; - } - - return datetime$2.call(this, a, b, aRow, bRow, column, dir, params); -} - -//sort booleans -function boolean(a, b, aRow, bRow, column, dir, params){ - var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0; - var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0; - - return el1 - el2; -} - -//sort if element contains any data -function array(a, b, aRow, bRow, column, dir, params){ - var type = params.type || "length", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - function calc(value){ - var result; - - switch(type){ - case "length": - result = value.length; - break; - - case "sum": - result = value.reduce(function(c, d){ - return c + d; - }); - break; - - case "max": - result = Math.max.apply(null, value) ; - break; - - case "min": - result = Math.min.apply(null, value) ; - break; - - case "avg": - result = value.reduce(function(c, d){ - return c + d; - }) / value.length; - break; - } - - return result; - } - - //handle non array values - if(!Array.isArray(a)){ - emptyAlign = !Array.isArray(b) ? 0 : -1; - }else if(!Array.isArray(b)){ - emptyAlign = 1; - }else { - return calc(b) - calc(a); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} - -//sort if element contains any data -function exists(a, b, aRow, bRow, column, dir, params){ - var el1 = typeof a == "undefined" ? 0 : 1; - var el2 = typeof b == "undefined" ? 0 : 1; - - return el1 - el2; -} - -//sort alpha numeric strings -function alphanum(as, bs, aRow, bRow, column, dir, params){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else { - - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} - -var defaultSorters = { - number:number$1, - string:string, - date:date$1, - time:time$1, - datetime:datetime$2, - boolean:boolean, - array:array, - exists:exists, - alphanum:alphanum -}; - -class Sort extends Module{ - - constructor(table){ - super(table); - - this.sortList = []; //holder current sort - this.changed = false; //has the sort changed since last render - - this.registerTableOption("sortMode", "local"); //local or remote sorting - - this.registerTableOption("initialSort", false); //initial sorting criteria - this.registerTableOption("columnHeaderSortMulti", true); //multiple or single column sorting - this.registerTableOption("sortOrderReverse", false); //reverse internal sort ordering - this.registerTableOption("headerSortElement", "
        "); //header sort element - this.registerTableOption("headerSortClickElement", "header"); //element which triggers sort when clicked - - this.registerColumnOption("sorter"); - this.registerColumnOption("sorterParams"); - - this.registerColumnOption("headerSort", true); - this.registerColumnOption("headerSortStartingDir"); - this.registerColumnOption("headerSortTristate"); - - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.registerDataHandler(this.sort.bind(this), 20); - - this.registerTableFunction("setSort", this.userSetSort.bind(this)); - this.registerTableFunction("getSorters", this.getSort.bind(this)); - this.registerTableFunction("clearSort", this.clearSort.bind(this)); - - if(this.table.options.sortMode === "remote"){ - this.subscribe("data-params", this.remoteSortParams.bind(this)); - } - } - - tableBuilt(){ - if(this.table.options.initialSort){ - this.setSort(this.table.options.initialSort); - } - } - - remoteSortParams(data, config, silent, params){ - var sorters = this.getSort(); - - sorters.forEach((item) => { - delete item.column; - }); - - params.sort = sorters; - - return params; - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetSort(sortList, dir){ - this.setSort(sortList, dir); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - clearSort(){ - this.clear(); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //initialize column header for sorting - initializeColumn(column){ - var sorter = false, - colEl, - arrowEl; - - switch(typeof column.definition.sorter){ - case "string": - if(Sort.sorters[column.definition.sorter]){ - sorter = Sort.sorters[column.definition.sorter]; - }else { - console.warn("Sort Error - No such sorter found: ", column.definition.sorter); - } - break; - - case "function": - sorter = column.definition.sorter; - break; - } - - column.modules.sort = { - sorter:sorter, dir:"none", - params:column.definition.sorterParams || {}, - startingDir:column.definition.headerSortStartingDir || "asc", - tristate: column.definition.headerSortTristate, - }; - - if(column.definition.headerSort !== false){ - - colEl = column.getElement(); - - colEl.classList.add("tabulator-sortable"); - - arrowEl = document.createElement("div"); - arrowEl.classList.add("tabulator-col-sorter"); - - switch(this.table.options.headerSortClickElement){ - case "icon": - arrowEl.classList.add("tabulator-col-sorter-element"); - break; - case "header": - colEl.classList.add("tabulator-col-sorter-element"); - break; - default: - colEl.classList.add("tabulator-col-sorter-element"); - break; - } - - switch(this.table.options.headerSortElement){ - case "function": - //do nothing - break; - - case "object": - arrowEl.appendChild(this.table.options.headerSortElement); - break; - - default: - arrowEl.innerHTML = this.table.options.headerSortElement; - } - - //create sorter arrow - column.titleHolderElement.appendChild(arrowEl); - - column.modules.sort.element = arrowEl; - - this.setColumnHeaderSortIcon(column, "none"); - - if(this.table.options.headerSortClickElement === "icon"){ - arrowEl.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - } - - //sort on click - (this.table.options.headerSortClickElement === "icon" ? arrowEl : colEl).addEventListener("click", (e) => { - var dir = "", - sorters=[], - match = false; - - if(column.modules.sort){ - if(column.modules.sort.tristate){ - if(column.modules.sort.dir == "none"){ - dir = column.modules.sort.startingDir; - }else { - if(column.modules.sort.dir == column.modules.sort.startingDir){ - dir = column.modules.sort.dir == "asc" ? "desc" : "asc"; - }else { - dir = "none"; - } - } - }else { - switch(column.modules.sort.dir){ - case "asc": - dir = "desc"; - break; - - case "desc": - dir = "asc"; - break; - - default: - dir = column.modules.sort.startingDir; - } - } - - if (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) { - sorters = this.getSort(); - - match = sorters.findIndex((sorter) => { - return sorter.field === column.getField(); - }); - - if(match > -1){ - sorters[match].dir = dir; - - match = sorters.splice(match, 1)[0]; - if(dir != "none"){ - sorters.push(match); - } - }else { - if(dir != "none"){ - sorters.push({column:column, dir:dir}); - } - } - - //add to existing sort - this.setSort(sorters); - }else { - if(dir == "none"){ - this.clear(); - }else { - //sort by column only - this.setSort(column, dir); - } - - } - - // this.table.rowManager.sorterRefresh(!this.sortList.length); - this.refreshSort(); - } - }); - } - } - - refreshSort(){ - if(this.table.options.sortMode === "remote"){ - this.reloadData(null, false, false); - }else { - this.refreshData(true); - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the sorters have changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //return current sorters - getSort(){ - var self = this, - sorters = []; - - self.sortList.forEach(function(item){ - if(item.column){ - sorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir}); - } - }); - - return sorters; - } - - //change sort list and trigger sort - setSort(sortList, dir){ - var self = this, - newSortList = []; - - if(!Array.isArray(sortList)){ - sortList = [{column: sortList, dir:dir}]; - } - - sortList.forEach(function(item){ - var column; - - column = self.table.columnManager.findColumn(item.column); - - if(column){ - item.column = column; - newSortList.push(item); - self.changed = true; - }else { - console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column); - } - - }); - - self.sortList = newSortList; - - this.dispatch("sort-changed"); - } - - //clear sorters - clear(){ - this.setSort([]); - } - - //find appropriate sorter for column - findSorter(column){ - var row = this.table.rowManager.activeRows[0], - sorter = "string", - field, value; - - if(row){ - row = row.getData(); - field = column.getField(); - - if(field){ - - value = column.getFieldValue(row); - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else { - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - } - } - break; - } - } - } - - return Sort.sorters[sorter]; - } - - //work through sort list sorting data - sort(data){ - var self = this, - sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList, - sortListActual = [], - rowComponents = []; - - if(this.subscribedExternal("dataSorting")){ - this.dispatchExternal("dataSorting", self.getSort()); - } - - self.clearColumnHeaders(); - - if(this.table.options.sortMode !== "remote"){ - - //build list of valid sorters and trigger column specific callbacks before sort begins - sortList.forEach(function(item, i){ - var sortObj; - - if(item.column){ - sortObj = item.column.modules.sort; - - if(sortObj){ - - //if no sorter has been defined, take a guess - if(!sortObj.sorter){ - sortObj.sorter = self.findSorter(item.column); - } - - item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params; - - sortListActual.push(item); - } - - self.setColumnHeader(item.column, item.dir); - } - }); - - //sort data - if (sortListActual.length) { - self._sortItems(data, sortListActual); - } - - }else { - sortList.forEach(function(item, i){ - self.setColumnHeader(item.column, item.dir); - }); - } - - if(this.subscribedExternal("dataSorted")){ - data.forEach((row) => { - rowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataSorted", self.getSort(), rowComponents); - } - - return data; - } - - //clear sort arrows on columns - clearColumnHeaders(){ - this.table.columnManager.getRealColumns().forEach((column) => { - if(column.modules.sort){ - column.modules.sort.dir = "none"; - column.getElement().setAttribute("aria-sort", "none"); - this.setColumnHeaderSortIcon(column, "none"); - } - }); - } - - //set the column header sort direction - setColumnHeader(column, dir){ - column.modules.sort.dir = dir; - column.getElement().setAttribute("aria-sort", dir === "asc" ? "ascending" : "descending"); - this.setColumnHeaderSortIcon(column, dir); - } - - setColumnHeaderSortIcon(column, dir){ - var sortEl = column.modules.sort.element, - arrowEl; - - if(column.definition.headerSort && typeof this.table.options.headerSortElement === "function"){ - while(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild); - - arrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir); - - if(typeof arrowEl === "object"){ - sortEl.appendChild(arrowEl); - }else { - sortEl.innerHTML = arrowEl; - } - } - } - - //sort each item in sort list - _sortItems(data, sortList){ - var sorterCount = sortList.length - 1; - - data.sort((a, b) => { - var result; - - for(var i = sorterCount; i>= 0; i--){ - let sortItem = sortList[i]; - - result = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params); - - if(result !== 0){ - break; - } - } - - return result; - }); - } - - //process individual rows for a sort function on active data - _sortRow(a, b, column, dir, params){ - var el1Comp, el2Comp; - - //switch elements depending on search direction - var el1 = dir == "asc" ? a : b; - var el2 = dir == "asc" ? b : a; - - a = column.getFieldValue(el1.getData()); - b = column.getFieldValue(el2.getData()); - - a = typeof a !== "undefined" ? a : ""; - b = typeof b !== "undefined" ? b : ""; - - el1Comp = el1.getComponent(); - el2Comp = el2.getComponent(); - - return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params); - } -} - -Sort.moduleName = "sort"; - -//load defaults -Sort.sorters = defaultSorters; - -class RangeComponent { - constructor(range) { - this._range = range; - - return new Proxy(this, { - get: function (target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - } else { - return target._range.table.componentFunctionBinder.handle("range", target._range, name); - } - }, - }); - } - - getElement() { - return this._range.element; - } - - getData() { - return this._range.getData(); - } - - getCells() { - return this._range.getCells(true); - } - - getStructuredCells() { - return this._range.getStructuredCells(); - } - - getRows() { - return this._range.getRows().map((row) => row.getComponent()); - } - - getColumns() { - return this._range.getColumns().map((column) => column.getComponent()); - } - - getBounds() { - return this._range.getBounds(); - } - - getTopEdge() { - return this._range.top; - } - - getBottomEdge() { - return this._range.bottom; - } - - getLeftEdge() { - return this._range.left; - } - - getRightEdge() { - return this._range.right; - } - - setBounds(start, end){ - if(this._range.destroyedGuard("setBounds")){ - this._range.setBounds(start ? start._cell : start, end ? end._cell : end); - } - } - - setStartBound(start){ - if(this._range.destroyedGuard("setStartBound")){ - this._range.setEndBound(start ? start._cell : start); - this._range.rangeManager.layoutElement(); - } - } - - setEndBound(end){ - if(this._range.destroyedGuard("setEndBound")){ - this._range.setEndBound(end ? end._cell : end); - this._range.rangeManager.layoutElement(); - } - } - - clearValues(){ - if(this._range.destroyedGuard("clearValues")){ - this._range.clearValues(); - } - } - - remove(){ - if(this._range.destroyedGuard("remove")){ - this._range.destroy(true); - } - } -} - -class Range extends CoreFeature{ - constructor(table, rangeManager, start, end) { - super(table); - - this.rangeManager = rangeManager; - this.element = null; - this.initialized = false; - this.initializing = { - start:false, - end:false, - }; - this.destroyed = false; - - this.top = 0; - this.bottom = 0; - this.left = 0; - this.right = 0; - - this.table = table; - this.start = {row:0, col:0}; - this.end = {row:0, col:0}; - - if(this.rangeManager.rowHeader){ - this.left = 1; - this.right = 1; - this.start.col = 1; - this.end.col = 1; - } - - this.initElement(); - - setTimeout(() => { - this.initBounds(start, end); - }); - } - - initElement(){ - this.element = document.createElement("div"); - this.element.classList.add("tabulator-range"); - } - - initBounds(start, end){ - this._updateMinMax(); - - if(start){ - this.setBounds(start, end || start); - } - } - - /////////////////////////////////// - /////// Boundary Setup /////// - /////////////////////////////////// - - setStart(row, col) { - if(this.start.row !== row || this.start.col !== col){ - this.start.row = row; - this.start.col = col; - - this.initializing.start = true; - this._updateMinMax(); - } - } - - setEnd(row, col) { - if(this.end.row !== row || this.end.col !== col){ - this.end.row = row; - this.end.col = col; - - this.initializing.end = true; - this._updateMinMax(); - } - } - - setBounds(start, end, visibleRows){ - if(start){ - this.setStartBound(start); - } - - this.setEndBound(end || start); - this.rangeManager.layoutElement(visibleRows); - } - - setStartBound(element){ - var row, col; - - if (element.type === "column") { - if(this.rangeManager.columnSelection){ - this.setStart(0, element.getPosition() - 1); - } - }else { - row = element.row.position - 1; - col = element.column.getPosition() - 1; - - if (element.column === this.rangeManager.rowHeader) { - this.setStart(row, 1); - } else { - this.setStart(row, col); - } - } - } - - setEndBound(element){ - var rowsCount = this._getTableRows().length, - row, col, isRowHeader; - - if (element.type === "column") { - if(this.rangeManager.columnSelection){ - if (this.rangeManager.selecting === "column") { - this.setEnd(rowsCount - 1, element.getPosition() - 1); - } else if (this.rangeManager.selecting === "cell") { - this.setEnd(0, element.getPosition() - 1); - } - } - }else { - row = element.row.position - 1; - col = element.column.getPosition() - 1; - isRowHeader = element.column === this.rangeManager.rowHeader; - - if (this.rangeManager.selecting === "row") { - this.setEnd(row, this._getTableColumns().length - 1); - } else if (this.rangeManager.selecting !== "row" && isRowHeader) { - this.setEnd(row, 0); - } else if (this.rangeManager.selecting === "column") { - this.setEnd(rowsCount - 1, col); - } else { - this.setEnd(row, col); - } - } - } - - _updateMinMax() { - this.top = Math.min(this.start.row, this.end.row); - this.bottom = Math.max(this.start.row, this.end.row); - this.left = Math.min(this.start.col, this.end.col); - this.right = Math.max(this.start.col, this.end.col); - - if(this.initialized){ - this.dispatchExternal("rangeChanged", this.getComponent()); - }else { - if(this.initializing.start && this.initializing.end){ - this.initialized = true; - this.dispatchExternal("rangeAdded", this.getComponent()); - } - } - } - - _getTableColumns() { - return this.table.columnManager.getVisibleColumnsByIndex(); - } - - _getTableRows() { - return this.table.rowManager.getDisplayRows(); - } - - /////////////////////////////////// - /////// Rendering /////// - /////////////////////////////////// - - layout() { - var _vDomTop = this.table.rowManager.renderer.vDomTop, - _vDomBottom = this.table.rowManager.renderer.vDomBottom, - _vDomLeft = this.table.columnManager.renderer.leftCol, - _vDomRight = this.table.columnManager.renderer.rightCol, - top, bottom, left, right, topLeftCell, bottomRightCell; - - if (_vDomTop == null) { - _vDomTop = 0; - } - - if (_vDomBottom == null) { - _vDomBottom = Infinity; - } - - if (_vDomLeft == null) { - _vDomLeft = 0; - } - - if (_vDomRight == null) { - _vDomRight = Infinity; - } - - if (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) { - top = Math.max(this.top, _vDomTop); - bottom = Math.min(this.bottom, _vDomBottom); - left = Math.max(this.left, _vDomLeft); - right = Math.min(this.right, _vDomRight); - - topLeftCell = this.rangeManager.getCell(top, left); - bottomRightCell = this.rangeManager.getCell(bottom, right); - - this.element.classList.add("tabulator-range-active"); - // this.element.classList.toggle("tabulator-range-active", this === this.rangeManager.activeRange); - - this.element.style.left = topLeftCell.row.getElement().offsetLeft + topLeftCell.getElement().offsetLeft + "px"; - this.element.style.top = topLeftCell.row.getElement().offsetTop + "px"; - this.element.style.width = bottomRightCell.getElement().offsetLeft + bottomRightCell.getElement().offsetWidth - topLeftCell.getElement().offsetLeft + "px"; - this.element.style.height = bottomRightCell.row.getElement().offsetTop + bottomRightCell.row.getElement().offsetHeight - topLeftCell.row.getElement().offsetTop + "px"; - } - } - - atTopLeft(cell) { - return cell.row.position - 1 === this.top && cell.column.getPosition() - 1 === this.left; - } - - atBottomRight(cell) { - return cell.row.position - 1 === this.bottom && cell.column.getPosition() - 1 === this.right; - } - - occupies(cell) { - return this.occupiesRow(cell.row) && this.occupiesColumn(cell.column); - } - - occupiesRow(row) { - return this.top <= row.position - 1 && row.position - 1 <= this.bottom; - } - - occupiesColumn(col) { - return this.left <= col.getPosition() - 1 && col.getPosition() - 1 <= this.right; - } - - overlaps(left, top, right, bottom) { - if ((this.left > right || left > this.right) || (this.top > bottom || top > this.bottom)){ - return false; - } - - return true; - } - - getData() { - var data = [], - rows = this.getRows(), - columns = this.getColumns(); - - rows.forEach((row) => { - var rowData = row.getData(), - result = {}; - - columns.forEach((column) => { - result[column.field] = rowData[column.field]; - }); - - data.push(result); - }); - - return data; - } - - getCells(structured, component) { - var cells = [], - rows = this.getRows(), - columns = this.getColumns(); - - if (structured) { - cells = rows.map((row) => { - var arr = []; - - row.getCells().forEach((cell) => { - if (columns.includes(cell.column)) { - arr.push(component ? cell.getComponent() : cell); - } - }); - - return arr; - }); - } else { - rows.forEach((row) => { - row.getCells().forEach((cell) => { - if (columns.includes(cell.column)) { - cells.push(component ? cell.getComponent() : cell); - } - }); - }); - } - - return cells; - } - - getStructuredCells() { - return this.getCells(true, true); - } - - getRows() { - return this._getTableRows().slice(this.top, this.bottom + 1); - } - - getColumns() { - return this._getTableColumns().slice(this.left, this.right + 1); - } - - clearValues(){ - var cells = this.getCells(); - var clearValue = this.table.options.selectableRangeClearCellsValue; - - this.table.blockRedraw(); - - cells.forEach((cell) => { - cell.setValue(clearValue); - }); - - this.table.restoreRedraw(); - - } - - getBounds(component){ - var cells = this.getCells(false, component), - output = { - start:null, - end:null, - }; - - if(cells.length){ - output.start = cells[0]; - output.end = cells[cells.length - 1]; - }else { - console.warn("No bounds defined on range"); - } - - return output; - } - - getComponent() { - if (!this.component) { - this.component = new RangeComponent(this); - } - return this.component; - } - - destroy(notify) { - this.destroyed = true; - - this.element.remove(); - - if(notify){ - this.rangeManager.rangeRemoved(this); - } - - if(this.initialized){ - this.dispatchExternal("rangeRemoved", this.getComponent()); - } - } - - destroyedGuard(func){ - if(this.destroyed){ - console.warn("You cannot call the " + func + " function on a destroyed range"); - } - - return !this.destroyed; - } -} - -class SelectRange extends Module { - constructor(table) { - super(table); - - this.selecting = "cell"; - this.mousedown = false; - this.ranges = []; - this.overlay = null; - this.rowHeader = null; - this.layoutChangeTimeout = null; - this.columnSelection = false; - this.rowSelection = false; - this.maxRanges = 0; - this.activeRange = false; - this.blockKeydown = false; - - this.keyDownEvent = this._handleKeyDown.bind(this); - this.mouseUpEvent = this._handleMouseUp.bind(this); - - this.registerTableOption("selectableRange", false); //enable selectable range - this.registerTableOption("selectableRangeColumns", false); //enable selectable range - this.registerTableOption("selectableRangeRows", false); //enable selectable range - this.registerTableOption("selectableRangeClearCells", false); //allow clearing of active range - this.registerTableOption("selectableRangeClearCellsValue", undefined); //value for cleared active range - - this.registerTableFunction("getRangesData", this.getRangesData.bind(this)); - this.registerTableFunction("getRanges", this.getRanges.bind(this)); - this.registerTableFunction("addRange", this.addRangeFromComponent.bind(this)); - - this.registerComponentFunction("cell", "getRanges", this.cellGetRanges.bind(this)); - this.registerComponentFunction("row", "getRanges", this.rowGetRanges.bind(this)); - this.registerComponentFunction("column", "getRanges", this.colGetRanges.bind(this)); - } - - /////////////////////////////////// - /////// Initialization /////// - /////////////////////////////////// - - initialize() { - if (this.options("selectableRange")) { - if(!this.options("selectableRows")){ - - this.maxRanges = this.options("selectableRange"); - - this.initializeTable(); - this.initializeWatchers(); - }else { - console.warn("SelectRange functionality cannot be used in conjunction with row selection"); - } - } - } - - - initializeTable() { - this.overlay = document.createElement("div"); - this.overlay.classList.add("tabulator-range-overlay"); - - this.rangeContainer = document.createElement("div"); - this.rangeContainer.classList.add("tabulator-range-container"); - - this.activeRangeCellElement = document.createElement("div"); - this.activeRangeCellElement.classList.add("tabulator-range-cell-active"); - - this.overlay.appendChild(this.rangeContainer); - this.overlay.appendChild(this.activeRangeCellElement); - - this.table.rowManager.element.addEventListener("keydown", this.keyDownEvent); - - this.resetRanges(); - - this.table.rowManager.element.appendChild(this.overlay); - this.table.columnManager.element.setAttribute("tabindex", 0); - this.table.element.classList.add("tabulator-ranges"); - } - - initializeWatchers() { - this.columnSelection = this.options("selectableRangeColumns"); - this.rowSelection = this.options("selectableRangeRows"); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-mousedown", this.handleColumnMouseDown.bind(this)); - this.subscribe("column-mousemove", this.handleColumnMouseMove.bind(this)); - this.subscribe("column-resized", this.handleColumnResized.bind(this)); - this.subscribe("column-width", this.layoutChange.bind(this)); - this.subscribe("column-height", this.layoutChange.bind(this)); - this.subscribe("column-resized", this.layoutChange.bind(this)); - this.subscribe("columns-loaded", this.updateHeaderColumn.bind(this)); - - this.subscribe("cell-height", this.layoutChange.bind(this)); - this.subscribe("cell-rendered", this.renderCell.bind(this)); - this.subscribe("cell-mousedown", this.handleCellMouseDown.bind(this)); - this.subscribe("cell-mousemove", this.handleCellMouseMove.bind(this)); - this.subscribe("cell-click", this.handleCellClick.bind(this)); - this.subscribe("cell-editing", this.handleEditingCell.bind(this)); - - this.subscribe("page-changed", this.redraw.bind(this)); - - this.subscribe("scroll-vertical", this.layoutChange.bind(this)); - this.subscribe("scroll-horizontal", this.layoutChange.bind(this)); - - this.subscribe("data-destroy", this.tableDestroyed.bind(this)); - this.subscribe("data-processed", this.resetRanges.bind(this)); - - this.subscribe("table-layout", this.layoutElement.bind(this)); - this.subscribe("table-redraw", this.redraw.bind(this)); - this.subscribe("table-destroy", this.tableDestroyed.bind(this)); - - this.subscribe("edit-editor-clear", this.finishEditingCell.bind(this)); - this.subscribe("edit-blur", this.restoreFocus.bind(this)); - - this.subscribe("keybinding-nav-prev", this.keyNavigate.bind(this, "left")); - this.subscribe("keybinding-nav-next", this.keyNavigate.bind(this, "right")); - this.subscribe("keybinding-nav-left", this.keyNavigate.bind(this, "left")); - this.subscribe("keybinding-nav-right", this.keyNavigate.bind(this, "right")); - this.subscribe("keybinding-nav-up", this.keyNavigate.bind(this, "up")); - this.subscribe("keybinding-nav-down", this.keyNavigate.bind(this, "down")); - this.subscribe("keybinding-nav-range", this.keyNavigateRange.bind(this)); - } - - - initializeColumn(column) { - if(this.columnSelection && column.definition.headerSort && this.options("headerSortClickElement") !== "icon"){ - console.warn("Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'."); - } - - if (column.modules.edit) ; - } - - updateHeaderColumn(){ - if(this.rowSelection){ - this.rowHeader = this.table.columnManager.getVisibleColumnsByIndex()[0]; - - if(this.rowHeader){ - this.rowHeader.definition.cssClass = this.rowHeader.definition.cssClass + " tabulator-range-row-header"; - - if(this.rowHeader.definition.headerSort){ - console.warn("Using column headerSort with selectableRangeRows option may result in unpredictable behavior"); - } - - if(this.rowHeader.definition.editor){ - console.warn("Using column editor with selectableRangeRows option may result in unpredictable behavior"); - } - } - } - } - - /////////////////////////////////// - /////// Table Functions /////// - /////////////////////////////////// - - getRanges(){ - return this.ranges.map((range) => range.getComponent()); - } - - getRangesData() { - return this.ranges.map((range) => range.getData()); - } - - addRangeFromComponent(start, end){ - start = start ? start._cell : null; - end = end ? end._cell : null; - - return this.addRange(start, end); - } - - /////////////////////////////////// - /////// Component Functions /////// - /////////////////////////////////// - - cellGetRanges(cell){ - var ranges = []; - - if (cell.column === this.rowHeader) { - ranges = this.ranges.filter((range) => range.occupiesRow(cell.row)); - } else { - ranges = this.ranges.filter((range) => range.occupies(cell)); - } - - return ranges.map((range) => range.getComponent()); - } - - rowGetRanges(row){ - var ranges = this.ranges.filter((range) => range.occupiesRow(row)); - - return ranges.map((range) => range.getComponent()); - } - - colGetRanges(col){ - var ranges = this.ranges.filter((range) => range.occupiesColumn(col)); - - return ranges.map((range) => range.getComponent()); - } - - /////////////////////////////////// - ////////// Event Handlers ///////// - /////////////////////////////////// - - _handleMouseUp(e){ - this.mousedown = false; - document.removeEventListener("mouseup", this.mouseUpEvent); - } - - _handleKeyDown(e) { - if (!this.blockKeydown && (!this.table.modules.edit || (this.table.modules.edit && !this.table.modules.edit.currentCell))) { - if (e.key === "Enter") { - // is editing a cell? - if (this.table.modules.edit && this.table.modules.edit.currentCell) { - return; - } - - this.table.modules.edit.editCell(this.getActiveCell()); - - e.preventDefault(); - } - - if ((e.key === "Backspace" || e.key === "Delete") && this.options("selectableRangeClearCells")) { - if(this.activeRange){ - this.activeRange.clearValues(); - } - } - } - } - - initializeFocus(cell){ - var range; - - try{ - if (document.selection) { // IE - range = document.body.createTextRange(); - range.moveToElementText(cell.getElement()); - range.select(); - } else if (window.getSelection) { - range = document.createRange(); - range.selectNode(cell.getElement()); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(range); - } - }catch(e){} - } - - restoreFocus(element){ - this.table.rowManager.element.focus(); - - return true; - } - - /////////////////////////////////// - ////// Column Functionality /////// - /////////////////////////////////// - - handleColumnResized(column) { - var selected; - - if (this.selecting !== "column" && this.selecting !== "all") { - return; - } - - selected = this.ranges.some((range) => range.occupiesColumn(column)); - - if (!selected) { - return; - } - - this.ranges.forEach((range) => { - var selectedColumns = range.getColumns(true); - - selectedColumns.forEach((selectedColumn) => { - if (selectedColumn !== column) { - selectedColumn.setWidth(column.width); - } - }); - }); - } - - handleColumnMouseDown(event, column) { - if (event.button === 2 && (this.selecting === "column" || this.selecting === "all") && this.activeRange.occupiesColumn(column)) { - return; - } - - this.mousedown = true; - - document.addEventListener("mouseup", this.mouseUpEvent); - - this.newSelection(event, column); - } - - handleColumnMouseMove(e, column) { - if (column === this.rowHeader || !this.mousedown || this.selecting === 'all') { - return; - } - - this.activeRange.setBounds(false, column, true); - } - - /////////////////////////////////// - //////// Cell Functionality /////// - /////////////////////////////////// - - renderCell(cell) { - var el = cell.getElement(), - rangeIdx = this.ranges.findIndex((range) => range.occupies(cell)); - - el.classList.toggle("tabulator-range-selected", rangeIdx !== -1); - el.classList.toggle("tabulator-range-only-cell-selected", this.ranges.length === 1 && this.ranges[0].atTopLeft(cell) && this.ranges[0].atBottomRight(cell)); - - el.dataset.range = rangeIdx; - } - - handleCellMouseDown(event, cell) { - if (event.button === 2 && (this.activeRange.occupies(cell) || ((this.selecting === "row" || this.selecting === "all") && this.activeRange.occupiesRow(cell.row)))) { - return; - } - - this.mousedown = true; - - document.addEventListener("mouseup", this.mouseUpEvent); - - this.newSelection(event, cell); - } - - handleCellMouseMove(e, cell) { - if (!this.mousedown || this.selecting === "all") { - return; - } - - this.activeRange.setBounds(false, cell, true); - } - - handleCellClick(e, cell){ - this.initializeFocus(cell); - } - - handleEditingCell(cell) { - if(this.activeRange){ - this.activeRange.setBounds(cell); - } - } - - finishEditingCell() { - this.blockKeydown = true; - this.table.rowManager.element.focus(); - - setTimeout(() => { - this.blockKeydown = false; - }, 10); - } - - /////////////////////////////////// - /////// Navigation /////// - /////////////////////////////////// - - keyNavigate(dir, e){ - if(this.navigate(false, false, dir)){ - e.preventDefault(); - } - } - - keyNavigateRange(e, dir, jump, expand){ - if(this.navigate(jump, expand, dir)){ - e.preventDefault(); - } - } - - navigate(jump, expand, dir) { - var moved = false, - range, rangeEdge, nextRow, nextCol, row, column; - - // Don't navigate while editing - if (this.table.modules.edit && this.table.modules.edit.currentCell) { - return false; - } - - // If there are more than 1 range, use the active range and destroy the others - if (this.ranges.length > 1) { - this.ranges = this.ranges.filter((range) => { - if (range === this.activeRange) { - range.setEnd(range.start.row, range.start.col); - return true; - } - range.destroy(); - return false; - }); - } - - range = this.activeRange; - - rangeEdge = expand ? range.end : range.start; - nextRow = rangeEdge.row; - nextCol = rangeEdge.col; - - if(jump){ - switch(dir){ - case "left": - nextCol = this.findJumpCellLeft(range.start.row, rangeEdge.col); - break; - case "right": - nextCol = this.findJumpCellRight(range.start.row, rangeEdge.col); - break; - case "up": - nextRow = this.findJumpCellUp(rangeEdge.row, range.start.col); - break; - case "down": - nextRow = this.findJumpCellDown(rangeEdge.row, range.start.col); - break; - } - }else { - if(expand){ - if ((this.selecting === 'row' && (dir === 'left' || dir === 'right')) || (this.selecting === 'column' && (dir === 'up' || dir === 'down'))) { - return; - } - } - - switch(dir){ - case "left": - nextCol = Math.max(nextCol - 1, 0); - break; - case "right": - nextCol = Math.min(nextCol + 1, this.getTableColumns().length - 1); - break; - case "up": - nextRow = Math.max(nextRow - 1, 0); - break; - case "down": - nextRow = Math.min(nextRow + 1, this.getTableRows().length - 1); - break; - } - } - - moved = nextCol !== rangeEdge.col || nextRow !== rangeEdge.row; - - if(!expand){ - range.setStart(nextRow, nextCol); - } - - range.setEnd(nextRow, nextCol); - - if(!expand){ - this.selecting = "cell"; - } - - if (moved) { - row = this.getRowByRangePos(range.end.row); - column = this.getColumnByRangePos(range.end.col); - - if ((dir === 'left' || dir === 'right') && column.getElement().parentNode === null) { - column.getComponent().scrollTo(undefined, false); - } else if ((dir === 'up' || dir === 'down') && row.getElement().parentNode === null) { - row.getComponent().scrollTo(undefined, false); - } else { - // Use faster autoScroll when the elements are on the DOM - this.autoScroll(range, row.getElement(), column.getElement()); - } - - this.layoutElement(); - - return true; - } - } - - rangeRemoved(removed){ - this.ranges = this.ranges.filter((range) => range !== removed); - - if(this.activeRange === removed){ - if(this.ranges.length){ - this.activeRange = this.ranges[this.ranges.length - 1]; - }else { - this.addRange(); - } - } - - this.layoutElement(); - } - - findJumpCell(cells, reverse, emptyStart, emptySide){ - var nextCell; - - if(reverse){ - cells = cells.reverse(); - } - - for(let currentCell of cells){ - let currentValue = currentCell.getValue(); - - if(emptyStart){ - nextCell = currentCell; - if(currentValue){ - break; - } - }else { - if(emptySide){ - nextCell = currentCell; - - if(currentValue){ - break; - } - }else { - if(currentValue){ - nextCell = currentCell; - }else { - break; - } - } - } - } - - return nextCell; - } - - findJumpCellLeft(rowPos, colPos){ - var row = this.getRowByRangePos(rowPos), - cells = row.cells.filter((cell) => cell.column.visible), - isStartingCellEmpty = !cells[colPos].getValue(), - isLeftOfStartingCellEmpty = cells[colPos] ? !cells[colPos].getValue() : false, - jumpCol = colPos, - targetCells = this.rowHeader ? cells.slice(1, colPos) : cells.slice(0, colPos), - nextCell = this.findJumpCell(targetCells, true, isStartingCellEmpty, isLeftOfStartingCellEmpty); - - if(nextCell){ - jumpCol = nextCell.column.getPosition() - 1; - } - - return jumpCol; - } - - findJumpCellRight(rowPos, colPos){ - var row = this.getRowByRangePos(rowPos), - cells = row.cells.filter((cell) => cell.column.visible), - isStartingCellEmpty = !cells[colPos].getValue(), - isRightOfStartingCellEmpty = cells[colPos + 1] ? !cells[colPos + 1].getValue() : false, - jumpCol = colPos, - nextCell = this.findJumpCell(cells.slice(colPos + 1, cells.length), false, isStartingCellEmpty, isRightOfStartingCellEmpty); - - if(nextCell){ - jumpCol = nextCell.column.getPosition() - 1; - } - - return jumpCol; - } - - findJumpCellUp(rowPos, colPos) { - var column = this.getColumnByRangePos(colPos), - cells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)), - isStartingCellEmpty = !cells[rowPos].getValue(), - isTopOfStartingCellEmpty = cells[rowPos - 1] ? !cells[rowPos - 1].getValue() : false, - jumpRow = rowPos, - nextCell = this.findJumpCell(cells.slice(0, jumpRow), true, isStartingCellEmpty, isTopOfStartingCellEmpty); - - if(nextCell){ - jumpRow = nextCell.row.position - 1; - } - - return jumpRow; - } - - findJumpCellDown(rowPos, colPos) { - var column = this.getColumnByRangePos(colPos), - cells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)), - isStartingCellEmpty = !cells[rowPos].getValue(), - isBottomOfStartingCellEmpty = cells[rowPos + 1] ? !cells[rowPos + 1].getValue() : false, - jumpRow = rowPos, - nextCell = this.findJumpCell(cells.slice(jumpRow + 1, cells.length), false, isStartingCellEmpty, isBottomOfStartingCellEmpty); - - if(nextCell){ - jumpRow = nextCell.row.position - 1; - } - - return jumpRow; - } - - /////////////////////////////////// - /////// Selection /////// - /////////////////////////////////// - newSelection(event, element) { - var range; - - if (element.type === "column") { - if(!this.columnSelection){ - return; - } - - if (element === this.rowHeader) { - range = this.resetRanges(); - this.selecting = "all"; - - var topLeftCell, bottomRightCell = this.getCell(-1, -1); - - if(this.rowHeader){ - topLeftCell = this.getCell(0, 1); - }else { - topLeftCell = this.getCell(0, 0); - } - - range.setBounds(topLeftCell, bottomRightCell); - return; - } else { - this.selecting = "column"; - } - } else if (element.column === this.rowHeader) { - this.selecting = "row"; - } else { - this.selecting = "cell"; - } - - if (event.shiftKey) { - this.activeRange.setBounds(false, element); - } else if (event.ctrlKey) { - this.addRange().setBounds(element); - } else { - this.resetRanges().setBounds(element); - } - } - - autoScroll(range, row, column) { - var tableHolder = this.table.rowManager.element, - rowHeader, rect, view, withinHorizontalView, withinVerticalView; - - if (typeof row === 'undefined') { - row = this.getRowByRangePos(range.end.row).getElement(); - } - - if (typeof column === 'undefined') { - column = this.getColumnByRangePos(range.end.col).getElement(); - } - - if (this.rowHeader) { - rowHeader = this.rowHeader.getElement(); - } - - rect = { - left: column.offsetLeft, - right: column.offsetLeft + column.offsetWidth, - top: row.offsetTop, - bottom: row.offsetTop + row.offsetHeight, - }; - - view = { - left: tableHolder.scrollLeft, - right: Math.ceil(tableHolder.scrollLeft + tableHolder.clientWidth), - top: tableHolder.scrollTop, - bottom: tableHolder.scrollTop + tableHolder.offsetHeight - this.table.rowManager.scrollbarWidth, - }; - - if (rowHeader) { - view.left += rowHeader.offsetWidth; - } - - withinHorizontalView = view.left < rect.left && rect.left < view.right && view.left < rect.right && rect.right < view.right; - - withinVerticalView = view.top < rect.top && rect.top < view.bottom && view.top < rect.bottom && rect.bottom < view.bottom; - - if (!withinHorizontalView) { - if (rect.left < view.left) { - tableHolder.scrollLeft = rect.left; - if (rowHeader) { - tableHolder.scrollLeft -= rowHeader.offsetWidth; - } - } else if (rect.right > view.right) { - tableHolder.scrollLeft = rect.right - tableHolder.clientWidth; - } - } - - if (!withinVerticalView) { - if (rect.top < view.top) { - tableHolder.scrollTop = rect.top; - } else if (rect.bottom > view.bottom) { - tableHolder.scrollTop = rect.bottom - tableHolder.clientHeight; - } - } - } - - - /////////////////////////////////// - /////// Layout /////// - /////////////////////////////////// - - layoutChange(){ - this.overlay.style.visibility = "hidden"; - clearTimeout(this.layoutChangeTimeout); - this.layoutChangeTimeout = setTimeout(this.layoutRanges.bind(this), 200); - } - - redraw(force) { - if (force) { - this.selecting = 'cell'; - this.resetRanges(); - this.layoutElement(); - } - } - - layoutElement(visibleRows) { - var rows; - - if (visibleRows) { - rows = this.table.rowManager.getVisibleRows(true); - } else { - rows = this.table.rowManager.getRows(); - } - - rows.forEach((row) => { - if (row.type === "row") { - this.layoutRow(row); - row.cells.forEach((cell) => this.renderCell(cell)); - } - }); - - this.getTableColumns().forEach((column) => { - this.layoutColumn(column); - }); - - this.layoutRanges(); - } - - layoutRow(row) { - var el = row.getElement(), - selected = false, - occupied = this.ranges.some((range) => range.occupiesRow(row)); - - if (this.selecting === "row") { - selected = occupied; - } else if (this.selecting === "all") { - selected = true; - } - - el.classList.toggle("tabulator-range-selected", selected); - el.classList.toggle("tabulator-range-highlight", occupied); - } - - layoutColumn(column) { - var el = column.getElement(), - selected = false, - occupied = this.ranges.some((range) => range.occupiesColumn(column)); - - if (this.selecting === "column") { - selected = occupied; - } else if (this.selecting === "all") { - selected = true; - } - - el.classList.toggle("tabulator-range-selected", selected); - el.classList.toggle("tabulator-range-highlight", occupied); - } - - layoutRanges() { - var activeCell; - - if (!this.table.initialized) { - return; - } - - activeCell = this.getActiveCell(); - - if (!activeCell) { - return; - } - - this.activeRangeCellElement.style.left = activeCell.row.getElement().offsetLeft + activeCell.getElement().offsetLeft + "px"; - this.activeRangeCellElement.style.top = activeCell.row.getElement().offsetTop + "px"; - this.activeRangeCellElement.style.width = activeCell.getElement().offsetLeft + activeCell.getElement().offsetWidth - activeCell.getElement().offsetLeft + "px"; - this.activeRangeCellElement.style.height = activeCell.row.getElement().offsetTop + activeCell.row.getElement().offsetHeight - activeCell.row.getElement().offsetTop + "px"; - - this.ranges.forEach((range) => range.layout()); - - this.overlay.style.visibility = "visible"; - } - - - /////////////////////////////////// - /////// Helper Functions /////// - /////////////////////////////////// - - getCell(rowIdx, colIdx) { - var row; - - if (colIdx < 0) { - colIdx = this.getTableColumns().length + colIdx; - if (colIdx < 0) { - return null; - } - } - - if (rowIdx < 0) { - rowIdx = this.getTableRows().length + rowIdx; - } - - row = this.table.rowManager.getRowFromPosition(rowIdx + 1); - - return row ? row.getCells(false, true).filter((cell) => cell.column.visible)[colIdx] : null; - } - - - getActiveCell() { - return this.getCell(this.activeRange.start.row, this.activeRange.start.col); - } - - getRowByRangePos(pos) { - return this.getTableRows()[pos]; - } - - getColumnByRangePos(pos) { - return this.getTableColumns()[pos]; - } - - getTableRows() { - return this.table.rowManager.getDisplayRows(); - } - - getTableColumns() { - return this.table.columnManager.getVisibleColumnsByIndex(); - } - - addRange(start, end) { - var range; - - if(this.maxRanges !== true && this.ranges.length >= this.maxRanges){ - this.ranges.shift().destroy(); - } - - range = new Range(this.table, this, start, end); - - this.activeRange = range; - this.ranges.push(range); - this.rangeContainer.appendChild(range.element); - - return range; - } - - resetRanges() { - var range, cell; - - this.ranges.forEach((range) => range.destroy()); - this.ranges = []; - - range = this.addRange(); - - if(this.table.rowManager.activeRows.length){ - cell = this.table.rowManager.activeRows[0].cells[this.rowHeader ? 1 : 0]; - - if(cell){ - range.setBounds(cell); - this.initializeFocus(cell); - } - } - - return range; - } - - tableDestroyed(){ - document.removeEventListener("mouseup", this.mouseUpEvent); - this.table.rowManager.element.removeEventListener("keydown", this.keyDownEvent); - } - - selectedRows(component) { - return component ? this.activeRange.getRows().map((row) => row.getComponent()) : this.activeRange.getRows(); - } - - selectedColumns(component) { - return component ? this.activeRange.getColumns().map((col) => col.getComponent()) : this.activeRange.getColumns(); - } -} - -SelectRange.moduleName = "selectRange"; - -class Tooltip extends Module{ - - constructor(table){ - super(table); - - this.tooltipSubscriber = null, - this.headerSubscriber = null, - - this.timeout = null; - this.popupInstance = null; - - this.registerTableOption("tooltipGenerationMode", undefined); //deprecated - this.registerTableOption("tooltipDelay", 300); - - this.registerColumnOption("tooltip"); - this.registerColumnOption("headerTooltip"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheckMsg("tooltipGenerationMode", "This option is no longer needed as tooltips are always generated on hover now"); - } - - initializeColumn(column){ - if(column.definition.headerTooltip && !this.headerSubscriber){ - this.headerSubscriber = true; - - this.subscribe("column-mousemove", this.mousemoveCheck.bind(this, "headerTooltip")); - this.subscribe("column-mouseout", this.mouseoutCheck.bind(this, "headerTooltip")); - } - - if(column.definition.tooltip && !this.tooltipSubscriber){ - this.tooltipSubscriber = true; - - this.subscribe("cell-mousemove", this.mousemoveCheck.bind(this, "tooltip")); - this.subscribe("cell-mouseout", this.mouseoutCheck.bind(this, "tooltip")); - } - } - - mousemoveCheck(action, e, component){ - var tooltip = action === "tooltip" ? component.column.definition.tooltip : component.definition.headerTooltip; - - if(tooltip){ - this.clearPopup(); - this.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay); - } - } - - mouseoutCheck(action, e, component){ - if(!this.popupInstance){ - this.clearPopup(); - } - } - - clearPopup(action, e, component){ - clearTimeout(this.timeout); - this.timeout = null; - - if(this.popupInstance){ - this.popupInstance.hide(); - } - } - - loadTooltip(e, component, tooltip){ - var contentsEl, renderedCallback, coords; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(typeof tooltip === "function"){ - tooltip = tooltip(e, component.getComponent(), onRendered); - } - - if(tooltip instanceof HTMLElement){ - contentsEl = tooltip; - }else { - contentsEl = document.createElement("div"); - - if(tooltip === true){ - if(component instanceof Cell){ - tooltip = component.value; - }else { - if(component.definition.field){ - this.langBind("columns|" + component.definition.field, (value) => { - contentsEl.innerHTML = tooltip = value || component.definition.title; - }); - }else { - tooltip = component.definition.title; - } - } - } - - contentsEl.innerHTML = tooltip; - } - - if(tooltip || tooltip === 0 || tooltip === false){ - contentsEl.classList.add("tabulator-tooltip"); - - contentsEl.addEventListener("mousemove", e => e.preventDefault()); - - this.popupInstance = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - this.popupInstance.renderCallback(renderedCallback); - } - - coords = this.popupInstance.containerEventCoords(e); - - this.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => { - this.dispatchExternal("TooltipClosed", component.getComponent()); - this.popupInstance = null; - }); - - this.dispatchExternal("TooltipOpened", component.getComponent()); - } - } -} - -Tooltip.moduleName = "tooltip"; - -var defaultValidators = { - //is integer - integer: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && Math.floor(value) === value; - }, - - //is float - float: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && value % 1 !== 0; - }, - - //must be a number - numeric: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return !isNaN(value); - }, - - //must be a string - string: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return isNaN(value); - }, - - //must be alphanumeric - alphanumeric: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - var reg = new RegExp(/^[a-z0-9]+$/i); - - return reg.test(value); - }, - - //maximum value - max: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) <= parameters; - }, - - //minimum value - min: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) >= parameters; - }, - - //starts with value - starts: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().startsWith(String(parameters).toLowerCase()); - }, - - //ends with value - ends: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().endsWith(String(parameters).toLowerCase()); - }, - - - //minimum string length - minLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length >= parameters; - }, - - //maximum string length - maxLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length <= parameters; - }, - - //in provided value list - in: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - if(typeof parameters == "string"){ - parameters = parameters.split("|"); - } - - return parameters.indexOf(value) > -1; - }, - - //must match provided regex - regex: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var reg = new RegExp(parameters); - - return reg.test(value); - }, - - //value must be unique in this column - unique: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var unique = true; - - var cellData = cell.getData(); - var column = cell.getColumn()._getSelf(); - - this.table.rowManager.rows.forEach(function(row){ - var data = row.getData(); - - if(data !== cellData){ - if(value == column.getFieldValue(data)){ - unique = false; - } - } - }); - - return unique; - }, - - //must have a value - required:function(cell, value, parameters){ - return value !== "" && value !== null && typeof value !== "undefined"; - }, -}; - -class Validate extends Module{ - - constructor(table){ - super(table); - - this.invalidCells = []; - - this.registerTableOption("validationMode", "blocking"); - - this.registerColumnOption("validator"); - - this.registerTableFunction("getInvalidCells", this.getInvalidCells.bind(this)); - this.registerTableFunction("clearCellValidation", this.userClearCellValidation.bind(this)); - this.registerTableFunction("validate", this.userValidate.bind(this)); - - this.registerComponentFunction("cell", "isValid", this.cellIsValid.bind(this)); - this.registerComponentFunction("cell", "clearValidation", this.clearValidation.bind(this)); - this.registerComponentFunction("cell", "validate", this.cellValidate.bind(this)); - - this.registerComponentFunction("column", "validate", this.columnValidate.bind(this)); - this.registerComponentFunction("row", "validate", this.rowValidate.bind(this)); - } - - - initialize(){ - this.subscribe("cell-delete", this.clearValidation.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - - this.subscribe("edit-success", this.editValidate.bind(this)); - this.subscribe("edit-editor-clear", this.editorClear.bind(this)); - this.subscribe("edit-edited-clear", this.editedClear.bind(this)); - } - - /////////////////////////////////// - ///////// Event Handling ////////// - /////////////////////////////////// - - editValidate(cell, value, previousValue){ - var valid = this.table.options.validationMode !== "manual" ? this.validate(cell.column.modules.validate, cell, value) : true; - - // allow time for editor to make render changes then style cell - if(valid !== true){ - setTimeout(() => { - cell.getElement().classList.add("tabulator-validation-fail"); - this.dispatchExternal("validationFailed", cell.getComponent(), value, valid); - }); - } - - return valid; - } - - editorClear(cell, cancelled){ - if(cancelled){ - if(cell.column.modules.validate){ - this.cellValidate(cell); - } - } - - cell.getElement().classList.remove("tabulator-validation-fail"); - } - - editedClear(cell){ - if(cell.modules.validate){ - cell.modules.validate.invalid = false; - } - } - - /////////////////////////////////// - ////////// Cell Functions ///////// - /////////////////////////////////// - - cellIsValid(cell){ - return cell.modules.validate ? (cell.modules.validate.invalid || true) : true; - } - - cellValidate(cell){ - return this.validate(cell.column.modules.validate, cell, cell.getValue()); - } - - /////////////////////////////////// - ///////// Column Functions //////// - /////////////////////////////////// - - columnValidate(column){ - var invalid = []; - - column.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ////////// Row Functions ////////// - /////////////////////////////////// - - rowValidate(row){ - var invalid = []; - - row.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - userClearCellValidation(cells){ - if(!cells){ - cells = this.getInvalidCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.clearValidation(cell._getSelf()); - }); - } - - userValidate(cells){ - var output = []; - - //clear row data - this.table.rowManager.rows.forEach((row) => { - row = row.getComponent(); - - var valid = row.validate(); - - if(valid !== true){ - output = output.concat(valid); - } - }); - - return output.length ? output : true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.validator !== "undefined"){ - this.initializeColumn(column); - } - } - - //validate - initializeColumn(column){ - var self = this, - config = [], - validator; - - if(column.definition.validator){ - - if(Array.isArray(column.definition.validator)){ - column.definition.validator.forEach((item) => { - validator = self._extractValidator(item); - - if(validator){ - config.push(validator); - } - }); - - }else { - validator = this._extractValidator(column.definition.validator); - - if(validator){ - config.push(validator); - } - } - - column.modules.validate = config.length ? config : false; - } - } - - _extractValidator(value){ - var type, params, pos; - - switch(typeof value){ - case "string": - pos = value.indexOf(':'); - - if(pos > -1){ - type = value.substring(0,pos); - params = value.substring(pos+1); - }else { - type = value; - } - - return this._buildValidator(type, params); - - case "function": - return this._buildValidator(value); - - case "object": - return this._buildValidator(value.type, value.parameters); - } - } - - _buildValidator(type, params){ - - var func = typeof type == "function" ? type : Validate.validators[type]; - - if(!func){ - console.warn("Validator Setup Error - No matching validator found:", type); - return false; - }else { - return { - type:typeof type == "function" ? "function" : type, - func:func, - params:params, - }; - } - } - - validate(validators, cell, value){ - var self = this, - failedValidators = [], - invalidIndex = this.invalidCells.indexOf(cell); - - if(validators){ - validators.forEach((item) => { - if(!item.func.call(self, cell.getComponent(), value, item.params)){ - failedValidators.push({ - type:item.type, - parameters:item.params - }); - } - }); - } - - if(!cell.modules.validate){ - cell.modules.validate = {}; - } - - if(!failedValidators.length){ - cell.modules.validate.invalid = false; - cell.getElement().classList.remove("tabulator-validation-fail"); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - }else { - cell.modules.validate.invalid = failedValidators; - - if(this.table.options.validationMode !== "manual"){ - cell.getElement().classList.add("tabulator-validation-fail"); - } - - if(invalidIndex == -1){ - this.invalidCells.push(cell); - } - } - - return failedValidators.length ? failedValidators : true; - } - - getInvalidCells(){ - var output = []; - - this.invalidCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearValidation(cell){ - var invalidIndex; - - if(cell.modules.validate && cell.modules.validate.invalid){ - - cell.getElement().classList.remove("tabulator-validation-fail"); - cell.modules.validate.invalid = false; - - invalidIndex = this.invalidCells.indexOf(cell); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - } - } -} - -Validate.moduleName = "validate"; - -//load defaults -Validate.validators = defaultValidators; - -var modules = /*#__PURE__*/Object.freeze({ - __proto__: null, - AccessorModule: Accessor, - AjaxModule: Ajax, - ClipboardModule: Clipboard, - ColumnCalcsModule: ColumnCalcs, - DataTreeModule: DataTree, - DownloadModule: Download, - EditModule: Edit$1, - ExportModule: Export, - FilterModule: Filter, - FormatModule: Format, - FrozenColumnsModule: FrozenColumns, - FrozenRowsModule: FrozenRows, - GroupRowsModule: GroupRows, - HistoryModule: History, - HtmlTableImportModule: HtmlTableImport, - ImportModule: Import, - InteractionModule: Interaction, - KeybindingsModule: Keybindings, - MenuModule: Menu, - MoveColumnsModule: MoveColumns, - MoveRowsModule: MoveRows, - MutatorModule: Mutator, - PageModule: Page, - PersistenceModule: Persistence, - PopupModule: Popup$1, - PrintModule: Print, - ReactiveDataModule: ReactiveData, - ResizeColumnsModule: ResizeColumns, - ResizeRowsModule: ResizeRows, - ResizeTableModule: ResizeTable, - ResponsiveLayoutModule: ResponsiveLayout, - SelectRowModule: SelectRow, - SortModule: Sort, - SelectRangeModule: SelectRange, - TooltipModule: Tooltip, - ValidateModule: Validate -}); - -var defaultOptions = { - - debugEventsExternal:false, //flag to console log events - debugEventsInternal:false, //flag to console log events - debugInvalidOptions:true, //allow toggling of invalid option warnings - debugInvalidComponentFuncs:true, //allow toggling of invalid component warnings - debugInitialization:true, //allow toggling of pre initialization function call warnings - debugDeprecation:true, //allow toggling of deprecation warnings - - height:false, //height of tabulator - minHeight:false, //minimum height of tabulator - maxHeight:false, //maximum height of tabulator - - columnHeaderVertAlign:"top", //vertical alignment of column headers - - popupContainer:false, - - columns:[],//store for colum header info - columnDefaults:{}, //store column default props - - data:false, //default starting data - - autoColumns:false, //build columns from data row structure - autoColumnsDefinitions:false, - - nestedFieldSeparator:".", //separator for nested data - - footerElement:false, //hold footer element - - index:"id", //filed for row index - - textDirection:"auto", - - addRowPos:"bottom", //position to insert blank rows, top|bottom - - headerVisible:true, //hide header - - renderVertical:"virtual", - renderHorizontal:"basic", - renderVerticalBuffer:0, // set virtual DOM buffer size - - scrollToRowPosition:"top", - scrollToRowIfVisible:true, - - scrollToColumnPosition:"left", - scrollToColumnIfVisible:true, - - rowFormatter:false, - rowFormatterPrint:null, - rowFormatterClipboard:null, - rowFormatterHtmlOutput:null, - - rowHeight:null, - - placeholder:false, - - dataLoader:true, - dataLoaderLoading:false, - dataLoaderError:false, - dataLoaderErrorTimeout:3000, - - dataSendParams:{}, - - dataReceiveParams:{}, -}; - -class OptionsList { - constructor(table, msgType, defaults = {}){ - this.table = table; - this.msgType = msgType; - this.registeredDefaults = Object.assign({}, defaults); - } - - register(option, value){ - this.registeredDefaults[option] = value; - } - - generate(defaultOptions, userOptions = {}){ - var output = Object.assign({}, this.registeredDefaults), - warn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true; - - Object.assign(output, defaultOptions); - - for (let key in userOptions){ - if(!output.hasOwnProperty(key)){ - if(warn){ - console.warn("Invalid " + this.msgType + " option:", key); - } - - output[key] = userOptions.key; - } - } - - - for (let key in output){ - if(key in userOptions){ - output[key] = userOptions[key]; - }else { - if(Array.isArray(output[key])){ - output[key] = Object.assign([], output[key]); - }else if(typeof output[key] === "object" && output[key] !== null){ - output[key] = Object.assign({}, output[key]); - }else if (typeof output[key] === "undefined"){ - delete output[key]; - } - } - } - - return output; - } -} - -class Renderer extends CoreFeature{ - constructor(table){ - super(table); - - this.elementVertical = table.rowManager.element; - this.elementHorizontal = table.columnManager.element; - this.tableElement = table.rowManager.tableElement; - - this.verticalFillMode = "fit"; // used by row manager to determine how to size the render area ("fit" - fits container to the contents, "fill" - fills the container without resizing it) - } - - - /////////////////////////////////// - /////// Internal Bindings ///////// - /////////////////////////////////// - - initialize(){ - //initialize core functionality - } - - clearRows(){ - //clear down existing rows layout - } - - clearColumns(){ - //clear down existing columns layout - } - - - reinitializeColumnWidths(columns){ - //resize columns to fit data - } - - - renderRows(){ - //render rows from a clean slate - } - - renderColumns(){ - //render columns from a clean slate - } - - rerenderRows(callback){ - // rerender rows and keep position - if(callback){ - callback(); - } - } - - rerenderColumns(update, blockRedraw){ - //rerender columns - } - - renderRowCells(row){ - //render the cells in a row - } - - rerenderRowCells(row, force){ - //rerender the cells in a row - } - - scrollColumns(left, dir){ - //handle horizontal scrolling - } - - scrollRows(top, dir){ - //handle vertical scrolling - } - - resize(){ - //container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION) - } - - scrollToRow(row){ - //scroll to a specific row - } - - scrollToRowNearestTop(row){ - //determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom - } - - visibleRows(includingBuffer){ - //return the visible rows - return []; - } - - /////////////////////////////////// - //////// Helper Functions ///////// - /////////////////////////////////// - - rows(){ - return this.table.rowManager.getDisplayRows(); - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else { - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - /////////////////////////////////// - /////// External Triggers ///////// - /////// (DO NOT OVERRIDE) ///////// - /////////////////////////////////// - - clear(){ - //clear down existing layout - this.clearRows(); - this.clearColumns(); - } - - render(){ - //render from a clean slate - this.renderRows(); - this.renderColumns(); - } - - rerender(callback){ - // rerender and keep position - this.rerenderRows(); - this.rerenderColumns(); - } - - scrollToRowPosition(row, position, ifVisible){ - var rowIndex = this.rows().indexOf(row), - rowEl = row.getElement(), - offset = 0; - - return new Promise((resolve, reject) => { - if(rowIndex > -1){ - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToRowIfVisible; - } - - //check row visibility - if(!ifVisible){ - if(Helpers.elVisible(rowEl)){ - offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top; - - if(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){ - resolve(); - return false; - } - } - } - - if(typeof position === "undefined"){ - position = this.table.options.scrollToRowPosition; - } - - if(position === "nearest"){ - position = this.scrollToRowNearestTop(row) ? "top" : "bottom"; - } - - //scroll to row - this.scrollToRow(row); - - //align to correct position - switch(position){ - case "middle": - case "center": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2); - }else { - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2); - } - - break; - - case "bottom": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight; - }else { - this.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight; - } - - break; - - case "top": - this.elementVertical.scrollTop = rowEl.offsetTop; - break; - } - - resolve(); - - }else { - console.warn("Scroll Error - Row not visible"); - reject("Scroll Error - Row not visible"); - } - }); - } -} - -class BasicHorizontal extends Renderer{ - constructor(table){ - super(table); - } - - renderRowCells(row, inFragment) { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - if(!inFragment){ - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - reinitializeColumnWidths(columns){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - } -} - -class VirtualDomHorizontal extends Renderer{ - constructor(table){ - super(table); - - this.leftCol = 0; - this.rightCol = 0; - this.scrollLeft = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - - this.fitDataColAvg = 0; - - this.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen - - this.visibleRows = null; - - this.initialized = false; - this.isFitData = false; - - this.columns = []; - } - - initialize(){ - this.compatibilityCheck(); - this.layoutCheck(); - this.vertScrollListen(); - } - - compatibilityCheck(){ - if(this.options("layout") == "fitDataTable"){ - console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"); - } - - if(this.options("responsiveLayout")){ - console.warn("Horizontal Virtual DOM is not compatible with responsive columns"); - } - - if(this.options("rtl")){ - console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction"); - } - } - - layoutCheck(){ - this.isFitData = this.options("layout").startsWith('fitData'); - } - - vertScrollListen(){ - this.subscribe("scroll-vertical", this.clearVisRowCache.bind(this)); - this.subscribe("data-refreshed", this.clearVisRowCache.bind(this)); - } - - clearVisRowCache(){ - this.visibleRows = null; - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - renderColumns(row, force){ - this.dataChange(); - } - - - scrollColumns(left, dir){ - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer)); - } - } - - calcWindowBuffer(){ - var buffer = this.elementVertical.clientWidth; - - this.table.columnManager.columnsByIndex.forEach((column) => { - if(column.visible){ - var width = column.getWidth(); - - if(width > buffer){ - buffer = width; - } - } - }); - - this.windowBuffer = buffer * 2; - } - - rerenderColumns(update, blockRedraw){ - var old = { - cols:this.columns, - leftCol:this.leftCol, - rightCol:this.rightCol, - }, - colPos = 0; - - if(update && !this.initialized){ - return; - } - - this.clear(); - - this.calcWindowBuffer(); - - this.scrollLeft = this.elementVertical.scrollLeft; - - this.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer; - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - this.table.columnManager.columnsByIndex.forEach((column) => { - var config = {}, - width; - - if(column.visible){ - if(!column.modules.frozen){ - width = column.getWidth(); - - config.leftPos = colPos; - config.rightPos = colPos + width; - - config.width = width; - - if (this.isFitData) { - config.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true; - } - - if((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){ - //column is visible - - if(this.leftCol == -1){ - this.leftCol = this.columns.length; - this.vDomPadLeft = colPos; - } - - this.rightCol = this.columns.length; - }else { - // column is hidden - if(this.leftCol !== -1){ - this.vDomPadRight += width; - } - } - - this.columns.push(column); - - column.modules.vdomHoz = config; - - colPos += width; - } - } - }); - - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - - this.initialized = true; - - if(!blockRedraw){ - if(!update || this.reinitChanged(old)){ - this.reinitializeRows(); - } - } - - this.elementVertical.scrollLeft = this.scrollLeft; - } - - renderRowCells(row){ - if(this.initialized){ - this.initializeRow(row); - }else { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - rerenderRowCells(row, force){ - this.reinitializeRow(row, force); - } - - reinitializeColumnWidths(columns){ - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.columns[i].reinitializeWidth(); - } - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - deinitialize(){ - this.initialized = false; - } - - clear(){ - this.columns = []; - - this.leftCol = -1; - this.rightCol = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - } - - dataChange(){ - var change = false, - row, rowEl; - - if(this.isFitData){ - this.table.columnManager.columnsByIndex.forEach((column) => { - if(!column.definition.width && column.visible){ - change = true; - } - }); - - if(change && this.table.rowManager.getDisplayRows().length){ - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - row = this.chain("rows-sample", [1], [], () => { - return this.table.rowManager.getDisplayRows(); - })[0]; - - if(row){ - rowEl = row.getElement(); - - row.generateCells(); - - this.tableElement.appendChild(rowEl); - - for(let colEnd = 0; colEnd < row.cells.length; colEnd++){ - let cell = row.cells[colEnd]; - rowEl.appendChild(cell.getElement()); - - cell.column.reinitializeWidth(); - } - - rowEl.parentNode.removeChild(rowEl); - - this.rerenderColumns(false, true); - } - } - }else { - if(this.options("layout") === "fitColumns"){ - this.layoutRefresh(); - this.rerenderColumns(false, true); - } - } - } - - reinitChanged(old){ - var match = true; - - if(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){ - return true; - } - - old.cols.forEach((col, i) => { - if(col !== this.columns[i]){ - match = false; - } - }); - - return !match; - } - - reinitializeRows(){ - var visibleRows = this.getVisibleRows(), - otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - visibleRows.forEach((row) => { - this.reinitializeRow(row, true); - }); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - } - - getVisibleRows(){ - if (!this.visibleRows){ - this.visibleRows = this.table.rowManager.getVisibleRows(); - } - - return this.visibleRows; - } - - scroll(diff){ - this.vDomScrollPosLeft += diff; - this.vDomScrollPosRight += diff; - - if(Math.abs(diff) > (this.windowBuffer / 2)){ - this.rerenderColumns(); - }else { - if(diff > 0){ - //scroll right - this.addColRight(); - this.removeColLeft(); - }else { - //scroll left - this.addColLeft(); - this.removeColRight(); - } - } - } - - colPositionAdjust (start, end, diff){ - for(let i = start; i < end; i++){ - let column = this.columns[i]; - - column.modules.vdomHoz.leftPos += diff; - column.modules.vdomHoz.rightPos += diff; - } - } - - addColRight(){ - var changes = false, - working = true; - - while(working){ - - let column = this.columns[this.rightCol + 1]; - - if(column){ - if(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling); - cell.cellRendered(); - } - }); - - this.fitDataColActualWidthCheck(column); - - this.rightCol++; // Don't move this below the >= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - - if(this.rightCol >= (this.columns.length - 1)){ - this.vDomPadRight = 0; - }else { - this.vDomPadRight -= column.getWidth(); - } - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - addColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol - 1]; - - if(column){ - if(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement()); - cell.cellRendered(); - } - }); - - this.leftCol--; // don't move this below the <= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - - if(this.leftCol <= 0){ // replicating logic in addColRight - this.vDomPadLeft = 0; - }else { - this.vDomPadLeft -= column.getWidth(); - } - - let diff = this.fitDataColActualWidthCheck(column); - - if(diff){ - this.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff; - this.vDomPadRight -= diff; - } - - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - removeColRight(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.rightCol]; - - if(column){ - if(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColRight", ex.message); - } - } - }); - - this.vDomPadRight += column.getWidth(); - this.rightCol --; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - removeColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol]; - - if(column){ - if(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColLeft", ex.message); - } - } - }); - - this.vDomPadLeft += column.getWidth(); - this.leftCol ++; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - }else { - working = false; - } - }else { - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - fitDataColActualWidthCheck(column){ - var newWidth, widthDiff; - - if(column.modules.vdomHoz.fitDataCheck){ - column.reinitializeWidth(); - - newWidth = column.getWidth(); - widthDiff = newWidth - column.modules.vdomHoz.width; - - if(widthDiff){ - column.modules.vdomHoz.rightPos += widthDiff; - column.modules.vdomHoz.width = newWidth; - this.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff); - } - - column.modules.vdomHoz.fitDataCheck = false; - } - - return widthDiff; - } - - initializeRow(row){ - if(row.type !== "group"){ - row.modules.vdomHoz = { - leftCol:this.leftCol, - rightCol:this.rightCol, - }; - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.leftColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.appendCell(row, this.columns[i]); - } - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.rightColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - } - } - - appendCell(row, column){ - if(column && column.visible){ - let cell = row.getCell(column); - - row.getElement().appendChild(cell.getElement()); - cell.cellRendered(); - } - } - - reinitializeRow(row, force){ - if(row.type !== "group"){ - if(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){ - - var rowEl = row.getElement(); - while(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild); - - this.initializeRow(row); - } - } - } -} - -class ColumnManager extends CoreFeature { - - constructor (table){ - super(table); - - this.blockHozScrollEvent = false; - this.headersElement = null; - this.contentsElement = null; - this.element = null ; //containing element - this.columns = []; // column definition object - this.columnsByIndex = []; //columns by index - this.columnsByField = {}; //columns by field - this.scrollLeft = 0; - this.optionsList = new OptionsList(this.table, "column definition", defaultColumnOptions); - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockUpdate = null; //store latest redraw update only status - - this.renderer = null; - } - - ////////////// Setup Functions ///////////////// - - initialize(){ - this.initializeRenderer(); - - this.headersElement = this.createHeadersElement(); - this.contentsElement = this.createHeaderContentsElement(); - this.element = this.createHeaderElement(); - - this.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild); - this.element.insertBefore(this.contentsElement, this.element.firstChild); - - this.initializeScrollWheelWatcher(); - - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("scrollbar-vertical", this.padVerticalScrollbar.bind(this)); - } - - padVerticalScrollbar(width){ - if(this.table.rtl){ - this.headersElement.style.marginLeft = width + "px"; - }else { - this.headersElement.style.marginRight = width + "px"; - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": VirtualDomHorizontal, - "basic": BasicHorizontal, - }; - - if(typeof this.table.options.renderHorizontal === "string"){ - renderClass = renderers[this.table.options.renderHorizontal]; - }else { - renderClass = this.table.options.renderHorizontal; - } - - if(renderClass){ - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - }else { - console.error("Unable to find matching renderer:", this.table.options.renderHorizontal); - } - } - - - createHeadersElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-headers"); - el.setAttribute("role", "row"); - - return el; - } - - createHeaderContentsElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header-contents"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - createHeaderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header"); - el.setAttribute("role", "rowgroup"); - - if(!this.table.options.headerVisible){ - el.classList.add("tabulator-header-hidden"); - } - - return el; - } - - //return containing element - getElement(){ - return this.element; - } - - //return containing contents element - getContentsElement(){ - return this.contentsElement; - } - - - //return header containing element - getHeadersElement(){ - return this.headersElement; - } - - //scroll horizontally to match table body - scrollHorizontal(left){ - this.contentsElement.scrollLeft = left; - - this.scrollLeft = left; - - this.renderer.scrollColumns(left); - } - - initializeScrollWheelWatcher(){ - this.contentsElement.addEventListener("wheel", (e) => { - var left; - - if(e.deltaX){ - left = this.contentsElement.scrollLeft + e.deltaX; - - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - } - - ///////////// Column Setup Functions ///////////// - generateColumnsFromRowData(data){ - var cols = [], - definitions = this.table.options.autoColumnsDefinitions, - row, sorter; - - if(data && data.length){ - - row = data[0]; - - for(var key in row){ - let col = { - field:key, - title:key, - }; - - let value = row[key]; - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - case "object": - if(Array.isArray(value)){ - sorter = "array"; - }else { - sorter = "string"; - } - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else { - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - }else { - sorter = "string"; - } - } - break; - } - - col.sorter = sorter; - - cols.push(col); - } - - if(definitions){ - - switch(typeof definitions){ - case "function": - this.table.options.columns = definitions.call(this.table, cols); - break; - - case "object": - if(Array.isArray(definitions)){ - cols.forEach((col) => { - var match = definitions.find((def) => { - return def.field === col.field; - }); - - if(match){ - Object.assign(col, match); - } - }); - - }else { - cols.forEach((col) => { - if(definitions[col.field]){ - Object.assign(col, definitions[col.field]); - } - }); - } - - this.table.options.columns = cols; - break; - } - }else { - this.table.options.columns = cols; - } - - this.setColumns(this.table.options.columns); - } - } - - setColumns(cols, row){ - while(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild); - - this.columns = []; - this.columnsByIndex = []; - this.columnsByField = {}; - - this.dispatch("columns-loading"); - - cols.forEach((def, i) => { - this._addColumn(def); - }); - - this._reIndexColumns(); - - this.dispatch("columns-loaded"); - - this.rerenderColumns(false, true); - - this.redraw(true); - } - - _addColumn(definition, before, nextToColumn){ - var column = new Column(definition, this), - colEl = column.getElement(), - index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn; - - if(nextToColumn && index > -1){ - var topColumn = nextToColumn.getTopColumn(); - var parentIndex = this.columns.indexOf(topColumn); - var nextEl = topColumn.getElement(); - - if(before){ - this.columns.splice(parentIndex, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl); - }else { - this.columns.splice(parentIndex + 1, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling); - } - }else { - if(before){ - this.columns.unshift(column); - this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild); - }else { - this.columns.push(column); - this.headersElement.appendChild(column.getElement()); - } - } - - column.columnRendered(); - - return column; - } - - registerColumnField(col){ - if(col.definition.field){ - this.columnsByField[col.definition.field] = col; - } - } - - registerColumnPosition(col){ - this.columnsByIndex.push(col); - } - - _reIndexColumns(){ - this.columnsByIndex = []; - - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - } - - //ensure column headers take up the correct amount of space in column groups - verticalAlignHeaders(){ - var minHeight = 0; - - if(!this.redrawBlock){ - - this.headersElement.style.height=""; - - this.columns.forEach((column) => { - column.clearVerticalAlign(); - }); - - this.columns.forEach((column) => { - var height = column.getHeight(); - - if(height > minHeight){ - minHeight = height; - } - }); - - this.headersElement.style.height = minHeight + "px"; - - this.columns.forEach((column) => { - column.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight); - }); - - this.table.rowManager.adjustTableSize(); - } - } - - //////////////// Column Details ///////////////// - findColumn(subject){ - var columns; - - if(typeof subject == "object"){ - - if(subject instanceof Column){ - //subject is column element - return subject; - }else if(subject instanceof ColumnComponent){ - //subject is public column component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - - columns = []; - - this.columns.forEach((column) => { - columns.push(column); - columns = columns.concat(column.getColumns(true)); - }); - - //subject is a HTML element of the column header - let match = columns.find((column) => { - return column.element === subject; - }); - - return match || false; - } - - }else { - //subject should be treated as the field name of the column - return this.columnsByField[subject] || false; - } - - //catch all for any other type of input - return false; - } - - getColumnByField(field){ - return this.columnsByField[field]; - } - - getColumnsByFieldRoot(root){ - var matches = []; - - Object.keys(this.columnsByField).forEach((field) => { - var fieldRoot = this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator)[0] : field; - if(fieldRoot === root){ - matches.push(this.columnsByField[field]); - } - }); - - return matches; - } - - getColumnByIndex(index){ - return this.columnsByIndex[index]; - } - - getFirstVisibleColumn(){ - var index = this.columnsByIndex.findIndex((col) => { - return col.visible; - }); - - return index > -1 ? this.columnsByIndex[index] : false; - } - - getVisibleColumnsByIndex() { - return this.columnsByIndex.filter((col) => col.visible); - } - - getColumns(){ - return this.columns; - } - - findColumnIndex(column){ - return this.columnsByIndex.findIndex((col) => { - return column === col; - }); - } - - //return all columns that are not groups - getRealColumns(){ - return this.columnsByIndex; - } - - //traverse across columns and call action - traverse(callback){ - this.columnsByIndex.forEach((column,i) =>{ - callback(column, i); - }); - } - - //get definitions of actual columns - getDefinitions(active){ - var output = []; - - this.columnsByIndex.forEach((column) => { - if(!active || (active && column.visible)){ - output.push(column.getDefinition()); - } - }); - - return output; - } - - //get full nested definition tree - getDefinitionTree(){ - var output = []; - - this.columns.forEach((column) => { - output.push(column.getDefinition(true)); - }); - - return output; - } - - getComponents(structured){ - var output = [], - columns = structured ? this.columns : this.columnsByIndex; - - columns.forEach((column) => { - output.push(column.getComponent()); - }); - - return output; - } - - getWidth(){ - var width = 0; - - this.columnsByIndex.forEach((column) => { - if(column.visible){ - width += column.getWidth(); - } - }); - - return width; - } - - moveColumn(from, to, after){ - to.element.parentNode.insertBefore(from.element, to.element); - - if(after){ - to.element.parentNode.insertBefore(to.element, from.element); - } - - this.moveColumnActual(from, to, after); - - this.verticalAlignHeaders(); - - this.table.rowManager.reinitialize(); - } - - moveColumnActual(from, to, after){ - if(from.parent.isGroup){ - this._moveColumnInArray(from.parent.columns, from, to, after); - }else { - this._moveColumnInArray(this.columns, from, to, after); - } - - this._moveColumnInArray(this.columnsByIndex, from, to, after, true); - - this.rerenderColumns(true); - - this.dispatch("column-moved", from, to, after); - - if(this.subscribedExternal("columnMoved")){ - this.dispatchExternal("columnMoved", from.getComponent(), this.table.columnManager.getComponents()); - } - } - - _moveColumnInArray(columns, from, to, after, updateRows){ - var fromIndex = columns.indexOf(from), - toIndex, rows = []; - - if (fromIndex > -1) { - - columns.splice(fromIndex, 1); - - toIndex = columns.indexOf(to); - - if (toIndex > -1) { - - if(after){ - toIndex = toIndex+1; - } - - }else { - toIndex = fromIndex; - } - - columns.splice(toIndex, 0, from); - - if(updateRows){ - - rows = this.chain("column-moving-rows", [from, to, after], null, []) || []; - - rows = rows.concat(this.table.rowManager.rows); - - rows.forEach(function(row){ - if(row.cells.length){ - var cell = row.cells.splice(fromIndex, 1)[0]; - row.cells.splice(toIndex, 0, cell); - } - }); - - } - } - } - - scrollToColumn(column, position, ifVisible){ - var left = 0, - offset = column.getLeftOffset(), - adjust = 0, - colEl = column.getElement(); - - - return new Promise((resolve, reject) => { - - if(typeof position === "undefined"){ - position = this.table.options.scrollToColumnPosition; - } - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToColumnIfVisible; - } - - if(column.visible){ - - //align to correct position - switch(position){ - case "middle": - case "center": - adjust = -this.element.clientWidth / 2; - break; - - case "right": - adjust = colEl.clientWidth - this.headersElement.clientWidth; - break; - } - - //check column visibility - if(!ifVisible){ - if(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){ - return false; - } - } - - //calculate scroll position - left = offset + adjust; - - left = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0); - - this.table.rowManager.scrollHorizontal(left); - this.scrollHorizontal(left); - - resolve(); - }else { - console.warn("Scroll Error - Column not visible"); - reject("Scroll Error - Column not visible"); - } - - }); - } - - //////////////// Cell Management ///////////////// - generateCells(row){ - var cells = []; - - this.columnsByIndex.forEach((column) => { - cells.push(column.generateCell(row)); - }); - - return cells; - } - - //////////////// Column Management ///////////////// - getFlexBaseWidth(){ - var totalWidth = this.table.element.clientWidth, //table element width - fixedWidth = 0; - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - this.columnsByIndex.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width || 0; - - minWidth = parseInt(column.minWidth); - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width) ; - }else { - colWidth = parseInt(width); - } - }else { - colWidth = width; - } - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - } - }); - - return fixedWidth; - } - - addColumn(definition, before, nextToColumn){ - return new Promise((resolve, reject) => { - var column = this._addColumn(definition, before, nextToColumn); - - this._reIndexColumns(); - - this.dispatch("column-add", definition, before, nextToColumn); - - if(this.layoutMode() != "fitColumns"){ - column.reinitializeWidth(); - } - - this.redraw(true); - - this.table.rowManager.reinitialize(); - - this.rerenderColumns(); - - resolve(column); - }); - } - - //remove column from system - deregisterColumn(column){ - var field = column.getField(), - index; - - //remove from field list - if(field){ - delete this.columnsByField[field]; - } - - //remove from index list - index = this.columnsByIndex.indexOf(column); - - if(index > -1){ - this.columnsByIndex.splice(index, 1); - } - - //remove from column list - index = this.columns.indexOf(column); - - if(index > -1){ - this.columns.splice(index, 1); - } - - this.verticalAlignHeaders(); - - this.redraw(); - } - - rerenderColumns(update, silent){ - if(!this.redrawBlock){ - this.renderer.rerenderColumns(update, silent); - }else { - if(update === false || (update === true && this.redrawBlockUpdate === null)){ - this.redrawBlockUpdate = update; - } - } - } - - blockRedraw(){ - this.redrawBlock = true; - this.redrawBlockUpdate = null; - } - - restoreRedraw(){ - this.redrawBlock = false; - this.verticalAlignHeaders(); - this.renderer.rerenderColumns(this.redrawBlockUpdate); - - } - - //redraw columns - redraw(force){ - if(Helpers.elVisible(this.element)){ - this.verticalAlignHeaders(); - } - - if(force){ - this.table.rowManager.resetScroll(); - this.table.rowManager.reinitialize(); - } - - if(!this.confirm("table-redrawing", force)){ - this.layoutRefresh(force); - } - - this.dispatch("table-redraw", force); - - this.table.footerManager.redraw(); - } -} - -class BasicVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - } - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.scrollTop = 0; - element.scrollLeft = 0; - - element.style.minWidth = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - } - - renderRows() { - var element = this.tableElement, - onlyGroupHeaders = true, - tableFrag = document.createDocumentFragment(), - rows = this.rows(); - - rows.forEach((row, index) => { - this.styleRow(row, index); - row.initialize(false, true); - - if (row.type !== "group") { - onlyGroupHeaders = false; - } - - tableFrag.appendChild(row.getElement()); - }); - - element.appendChild(tableFrag); - - rows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - rows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else { - element.style.minWidth = ""; - } - } - - - rerenderRows(callback){ - this.clearRows(); - - if(callback){ - callback(); - } - - this.renderRows(); - - if(!this.rows().length){ - this.table.rowManager.tableEmpty(); - } - } - - scrollToRowNearestTop(row){ - var rowTop = Helpers.elOffset(row.getElement()).top; - - return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop)); - } - - scrollToRow(row){ - var rowEl = row.getElement(); - - this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop; - } - - visibleRows(includingBuffer){ - return this.rows(); - } - -} - -class VirtualDomVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomRowHeight = 20; //approximation of row heights for padding - - this.vDomTop = 0; //hold position for first rendered row in the virtual DOM - this.vDomBottom = 0; //hold position for last rendered row in the virtual DOM - - this.vDomScrollPosTop = 0; //last scroll position of the vDom top; - this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom; - - this.vDomTopPad = 0; //hold value of padding for top of virtual DOM - this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM - - this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go - - this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling - - this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows) - this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin - - this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed - this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.style.paddingTop = ""; - element.style.paddingBottom = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - - this.elementVertical.scrollTop = 0; - this.elementVertical.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomTop = 0; - this.vDomBottom = 0; - this.vDomTopPad = 0; - this.vDomBottomPad = 0; - this.vDomScrollPosTop = 0; - this.vDomScrollPosBottom = 0; - } - - renderRows(){ - this._virtualRenderFill(); - } - - rerenderRows(callback){ - var scrollTop = this.elementVertical.scrollTop; - var topRow = false; - var topOffset = false; - - var left = this.table.rowManager.scrollLeft; - - var rows = this.rows(); - - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - - if(rows[i]){ - var diff = scrollTop - rows[i].getElement().offsetTop; - - if(topOffset === false || Math.abs(diff) < topOffset){ - topOffset = diff; - topRow = i; - }else { - break; - } - } - } - - rows.forEach((row) => { - row.deinitializeHeight(); - }); - - if(callback){ - callback(); - } - - if(this.rows().length){ - this._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0); - }else { - this.clear(); - this.table.rowManager.tableEmpty(); - } - - this.scrollColumns(left); - } - - scrollColumns(left){ - this.table.rowManager.scrollHorizontal(left); - } - - scrollRows(top, dir){ - var topDiff = top - this.vDomScrollPosTop; - var bottomDiff = top - this.vDomScrollPosBottom; - var margin = this.vDomWindowBuffer * 2; - var rows = this.rows(); - - this.scrollTop = top; - - if(-topDiff > margin || bottomDiff > margin){ - //if big scroll redraw table; - var left = this.table.rowManager.scrollLeft; - this._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length)); - this.scrollColumns(left); - }else { - - if(dir){ - //scrolling up - if(topDiff < 0){ - this._addTopRow(rows, -topDiff); - } - - if(bottomDiff < 0){ - //hide bottom row if needed - if(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){ - this._removeBottomRow(rows, -bottomDiff); - }else { - this.vDomScrollPosBottom = this.scrollTop; - } - } - }else { - - if(bottomDiff >= 0){ - this._addBottomRow(rows, bottomDiff); - } - - //scrolling down - if(topDiff >= 0){ - //hide top row if needed - if(this.scrollTop > this.vDomWindowBuffer){ - this._removeTopRow(rows, topDiff); - }else { - this.vDomScrollPosTop = this.scrollTop; - } - } - } - } - } - - resize(){ - this.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight; - } - - scrollToRowNearestTop(row){ - var rowIndex = this.rows().indexOf(row); - - return !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex)); - } - - scrollToRow(row){ - var index = this.rows().indexOf(row); - - if(index > -1){ - this._virtualRenderFill(index, true); - } - } - - visibleRows(includingBuffer){ - var topEdge = this.elementVertical.scrollTop, - bottomEdge = this.elementVertical.clientHeight + topEdge, - topFound = false, - topRow = 0, - bottomRow = 0, - rows = this.rows(); - - if(includingBuffer){ - topRow = this.vDomTop; - bottomRow = this.vDomBottom; - }else { - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - if(rows[i]){ - if(!topFound){ - if((topEdge - rows[i].getElement().offsetTop) >= 0){ - topRow = i; - }else { - topFound = true; - - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else { - break; - } - } - }else { - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else { - break; - } - } - } - } - } - - return rows.slice(topRow, bottomRow + 1); - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - //full virtual render - _virtualRenderFill(position, forceMove, offset) { - var element = this.tableElement, - holder = this.elementVertical, - topPad = 0, - rowsHeight = 0, - rowHeight = 0, - heightOccupied = 0, - topPadHeight = 0, - i = 0, - rows = this.rows(), - rowsCount = rows.length, - index = 0, - row, - rowFragment, - renderedRows = [], - totalRowsRendered = 0, - rowsToRender = 0, - fixedHeight = this.table.rowManager.fixedHeight, - containerHeight = this.elementVertical.clientHeight, - avgRowHeight = this.table.options.rowHeight, - resized = true; - - position = position || 0; - - offset = offset || 0; - - if(!position){ - this.clear(); - }else { - while(element.firstChild) element.removeChild(element.firstChild); - - //check if position is too close to bottom of table - heightOccupied = (rowsCount - position + 1) * this.vDomRowHeight; - - if(heightOccupied < containerHeight){ - position -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight); - if(position < 0){ - position = 0; - } - } - - //calculate initial pad - topPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position); - position -= topPad; - } - - if(rowsCount && Helpers.elVisible(this.elementVertical)){ - this.vDomTop = position; - this.vDomBottom = position -1; - - if(fixedHeight || this.table.options.maxHeight) { - if(avgRowHeight) { - rowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight); - } - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender)); - } - else { - rowsToRender = rowsCount; - } - - while(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) { - renderedRows = []; - rowFragment = document.createDocumentFragment(); - - i = 0; - - while ((i < rowsToRender) && this.vDomBottom < rowsCount -1) { - index = this.vDomBottom + 1, - row = rows[index]; - - this.styleRow(row, index); - - row.initialize(false, true); - if(!row.heightInitialized && !this.table.options.rowHeight){ - row.clearCellHeight(); - } - - rowFragment.appendChild(row.getElement()); - renderedRows.push(row); - this.vDomBottom ++; - i++; - } - - if(!renderedRows.length){ - break; - } - - element.appendChild(rowFragment); - - // NOTE: The next 3 loops are separate on purpose - // This is to batch up the dom writes and reads which drastically improves performance - - renderedRows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - renderedRows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - renderedRows.forEach((row) => { - rowHeight = row.getHeight(); - - if(totalRowsRendered < topPad){ - topPadHeight += rowHeight; - }else { - rowsHeight += rowHeight; - } - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - totalRowsRendered++; - }); - - resized = this.table.rowManager.adjustTableSize(); - containerHeight = this.elementVertical.clientHeight; - if(resized && (fixedHeight || this.table.options.maxHeight)) - { - avgRowHeight = rowsHeight / totalRowsRendered; - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight))); - } - } - - if(!position){ - this.vDomTopPad = 0; - //adjust row height to match average of rendered elements - this.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered); - this.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1); - - this.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight; - }else { - this.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset; - this.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0); - } - - element.style.paddingTop = this.vDomTopPad+"px"; - element.style.paddingBottom = this.vDomBottomPad+"px"; - - if(forceMove){ - this.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0); - } - - this.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight); - - //adjust for horizontal scrollbar if present (and not at top of table) - if(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){ - this.scrollTop += this.elementVertical.offsetHeight - containerHeight; - } - - this.vDomScrollPosTop = this.scrollTop; - this.vDomScrollPosBottom = this.scrollTop; - - holder.scrollTop = this.scrollTop; - - this.dispatch("render-virtual-fill"); - } - } - - _addTopRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomTop -1, - i = 0, - working = true; - - while(working){ - if(this.vDomTop){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.insertBefore(row.getElement(), table.firstChild); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomTop--; - index--; - i++; - - }else { - working = false; - } - - }else { - working = false; - } - - }else { - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomTopPad -= paddingAdjust; - - if(this.vDomTopPad < 0){ - this.vDomTopPad = index * this.vDomRowHeight; - } - - if(index < 1){ - this.vDomTopPad = 0; - } - - table.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop -= paddingAdjust; - } - } - - _removeTopRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomTop], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomTop++; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomTopPad += paddingAdjust; - this.tableElement.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer; - } - } - - _addBottomRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomBottom + 1, - i = 0, - working = true; - - while(working){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.appendChild(row.getElement()); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomBottom++; - index++; - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomBottomPad -= paddingAdjust; - - if(this.vDomBottomPad < 0 || index == rows.length -1){ - this.vDomBottomPad = 0; - } - - table.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom += paddingAdjust; - } - } - - _removeBottomRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomBottom], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomBottom --; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else { - working = false; - } - }else { - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomBottomPad += paddingAdjust; - - if(this.vDomBottomPad < 0){ - this.vDomBottomPad = 0; - } - - this.tableElement.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom -= paddingAdjust; - } - } - - _quickNormalizeRowHeight(rows){ - for(let row of rows){ - row.calcHeight(); - } - - for(let row of rows){ - row.setCellHeight(); - } - } -} - -class RowManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.element = this.createHolderElement(); //containing element - this.tableElement = this.createTableElement(); //table element - this.heightFixer = this.createTableElement(); //table element - this.placeholder = null; //placeholder element - this.placeholderContents = null; //placeholder element - - this.firstRender = false; //handle first render - this.renderMode = "virtual"; //current rendering mode - this.fixedHeight = false; //current rendering mode - - this.rows = []; //hold row data objects - this.activeRowsPipeline = []; //hold calculation of active rows - this.activeRows = []; //rows currently available to on display in the table - this.activeRowsCount = 0; //count of active rows - - this.displayRows = []; //rows currently on display in the table - this.displayRowsCount = 0; //count of display rows - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed - this.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed - - this.dataPipeline = []; //hold data pipeline tasks - this.displayPipeline = []; //hold data display pipeline tasks - - this.scrollbarWidth = 0; - - this.renderer = null; - } - - //////////////// Setup Functions ///////////////// - - createHolderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-tableholder"); - el.setAttribute("tabindex", 0); - // el.setAttribute("role", "rowgroup"); - - return el; - } - - createTableElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-table"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - initializePlaceholder(){ - var placeholder = this.table.options.placeholder; - - if(typeof placeholder === "function"){ - placeholder = placeholder.call(this.table); - } - - placeholder = this.chain("placeholder", [placeholder], placeholder, placeholder) || placeholder; - - //configure placeholder element - if(placeholder){ - let el = document.createElement("div"); - el.classList.add("tabulator-placeholder"); - - if(typeof placeholder == "string"){ - let contents = document.createElement("div"); - contents.classList.add("tabulator-placeholder-contents"); - contents.innerHTML = placeholder; - - el.appendChild(contents); - - this.placeholderContents = contents; - - }else if(typeof HTMLElement !== "undefined" && placeholder instanceof HTMLElement){ - - el.appendChild(placeholder); - this.placeholderContents = placeholder; - }else { - console.warn("Invalid placeholder provided, must be string or HTML Element", placeholder); - - this.el = null; - } - - this.placeholder = el; - } - } - - //return containing element - getElement(){ - return this.element; - } - - //return table element - getTableElement(){ - return this.tableElement; - } - - initialize(){ - this.initializePlaceholder(); - this.initializeRenderer(); - - //initialize manager - this.element.appendChild(this.tableElement); - - this.firstRender = true; - - //scroll header along with table body - this.element.addEventListener("scroll", () => { - var left = this.element.scrollLeft, - leftDir = this.scrollLeft > left, - top = this.element.scrollTop, - topDir = this.scrollTop > top; - - //handle horizontal scrolling - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.dispatch("scroll-horizontal", left, leftDir); - this.dispatchExternal("scrollHorizontal", left, leftDir); - - this._positionPlaceholder(); - } - - //handle vertical scrolling - if(this.scrollTop != top){ - this.scrollTop = top; - - this.renderer.scrollRows(top, topDir); - - this.dispatch("scroll-vertical", top, topDir); - this.dispatchExternal("scrollVertical", top, topDir); - } - }); - } - - ////////////////// Row Manipulation ////////////////// - findRow(subject){ - if(typeof subject == "object"){ - if(subject instanceof Row){ - //subject is row element - return subject; - }else if(subject instanceof RowComponent){ - //subject is public row component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - //subject is a HTML element of the row - let match = this.rows.find((row) => { - return row.getElement() === subject; - }); - - return match || false; - }else if(subject === null){ - return false; - } - }else if(typeof subject == "undefined"){ - return false; - }else { - //subject should be treated as the index of the row - let match = this.rows.find((row) => { - return row.data[this.table.options.index] == subject; - }); - - return match || false; - } - - //catch all for any other type of input - return false; - } - - getRowFromDataObject(data){ - var match = this.rows.find((row) => { - return row.data === data; - }); - - return match || false; - } - - getRowFromPosition(position){ - return this.getDisplayRows().find((row) => { - return row.getPosition() === position && row.isDisplayed(); - }); - } - - scrollToRow(row, position, ifVisible){ - return this.renderer.scrollToRowPosition(row, position, ifVisible); - } - - ////////////////// Data Handling ////////////////// - setData(data, renderInPosition, columnsChanged){ - return new Promise((resolve, reject)=>{ - if(renderInPosition && this.getDisplayRows().length){ - if(this.table.options.pagination){ - this._setDataActual(data, true); - }else { - this.reRenderInPosition(() => { - this._setDataActual(data); - }); - } - }else { - if(this.table.options.autoColumns && columnsChanged && this.table.initialized){ - this.table.columnManager.generateColumnsFromRowData(data); - } - this.resetScroll(); - - this._setDataActual(data); - } - - resolve(); - }); - } - - _setDataActual(data, renderInPosition){ - this.dispatchExternal("dataProcessing", data); - - this._wipeElements(); - - if(Array.isArray(data)){ - this.dispatch("data-processing", data); - - data.forEach((def, i) => { - if(def && typeof def === "object"){ - var row = new Row(def, this); - this.rows.push(row); - }else { - console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def); - } - }); - - this.refreshActiveData(false, false, renderInPosition); - - this.dispatch("data-processed", data); - this.dispatchExternal("dataProcessed", data); - }else { - console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data, "\nData: ", data); - } - } - - _wipeElements(){ - this.dispatch("rows-wipe"); - - this.destroy(); - - this.adjustTableSize(); - - this.dispatch("rows-wiped"); - } - - destroy(){ - this.rows.forEach((row) => { - row.wipe(); - }); - - this.rows = []; - this.activeRows = []; - this.activeRowsPipeline = []; - this.activeRowsCount = 0; - this.displayRows = []; - this.displayRowsCount = 0; - } - - deleteRow(row, blockRedraw){ - var allIndex = this.rows.indexOf(row), - activeIndex = this.activeRows.indexOf(row); - - if(activeIndex > -1){ - this.activeRows.splice(activeIndex, 1); - } - - if(allIndex > -1){ - this.rows.splice(allIndex, 1); - } - - this.setActiveRows(this.activeRows); - - this.displayRowIterator((rows) => { - var displayIndex = rows.indexOf(row); - - if(displayIndex > -1){ - rows.splice(displayIndex, 1); - } - }); - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - this.regenerateRowPositions(); - - this.dispatchExternal("rowDeleted", row.getComponent()); - - if(!this.displayRowsCount){ - this.tableEmpty(); - } - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.getData()); - } - } - - addRow(data, pos, index, blockRedraw){ - var row = this.addRowActual(data, pos, index, blockRedraw); - return row; - } - - //add multiple rows - addRows(data, pos, index, refreshDisplayOnly){ - var rows = []; - - return new Promise((resolve, reject) => { - pos = this.findAddRowPos(pos); - - if(!Array.isArray(data)){ - data = [data]; - } - - if((typeof index == "undefined" && pos) || (typeof index !== "undefined" && !pos)){ - data.reverse(); - } - - data.forEach((item, i) => { - var row = this.addRow(item, pos, index, true); - rows.push(row); - this.dispatch("row-added", row, item, pos, index); - }); - - this.refreshActiveData(refreshDisplayOnly ? "displayPipeline" : false, false, true); - - this.regenerateRowPositions(); - - if(this.displayRowsCount){ - this._clearPlaceholder(); - } - - resolve(rows); - }); - } - - findAddRowPos(pos){ - if(typeof pos === "undefined"){ - pos = this.table.options.addRowPos; - } - - if(pos === "pos"){ - pos = true; - } - - if(pos === "bottom"){ - pos = false; - } - - return pos; - } - - addRowActual(data, pos, index, blockRedraw){ - var row = data instanceof Row ? data : new Row(data || {}, this), - top = this.findAddRowPos(pos), - allIndex = -1, - activeIndex, chainResult; - - if(!index){ - chainResult = this.chain("row-adding-position", [row, top], null, {index, top}); - - index = chainResult.index; - top = chainResult.top; - } - - if(typeof index !== "undefined"){ - index = this.findRow(index); - } - - index = this.chain("row-adding-index", [row, index, top], null, index); - - if(index){ - allIndex = this.rows.indexOf(index); - } - - if(index && allIndex > -1){ - activeIndex = this.activeRows.indexOf(index); - - this.displayRowIterator(function(rows){ - var displayIndex = rows.indexOf(index); - - if(displayIndex > -1){ - rows.splice((top ? displayIndex : displayIndex + 1), 0, row); - } - }); - - if(activeIndex > -1){ - this.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row); - } - - this.rows.splice((top ? allIndex : allIndex + 1), 0, row); - - }else { - - if(top){ - - this.displayRowIterator(function(rows){ - rows.unshift(row); - }); - - this.activeRows.unshift(row); - this.rows.unshift(row); - }else { - this.displayRowIterator(function(rows){ - rows.push(row); - }); - - this.activeRows.push(row); - this.rows.push(row); - } - } - - this.setActiveRows(this.activeRows); - - this.dispatchExternal("rowAdded", row.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - return row; - } - - moveRow(from, to, after){ - this.dispatch("row-move", from, to, after); - - this.moveRowActual(from, to, after); - - this.regenerateRowPositions(); - - this.dispatch("row-moved", from, to, after); - this.dispatchExternal("rowMoved", from.getComponent()); - } - - moveRowActual(from, to, after){ - this.moveRowInArray(this.rows, from, to, after); - this.moveRowInArray(this.activeRows, from, to, after); - - this.displayRowIterator((rows) => { - this.moveRowInArray(rows, from, to, after); - }); - - this.dispatch("row-moving", from, to, after); - } - - moveRowInArray(rows, from, to, after){ - var fromIndex, toIndex, start, end; - - if(from !== to){ - - fromIndex = rows.indexOf(from); - - if (fromIndex > -1) { - - rows.splice(fromIndex, 1); - - toIndex = rows.indexOf(to); - - if (toIndex > -1) { - - if(after){ - rows.splice(toIndex+1, 0, from); - }else { - rows.splice(toIndex, 0, from); - } - - }else { - rows.splice(fromIndex, 0, from); - } - } - - //restyle rows - if(rows === this.getDisplayRows()){ - - start = fromIndex < toIndex ? fromIndex : toIndex; - end = toIndex > fromIndex ? toIndex : fromIndex +1; - - for(let i = start; i <= end; i++){ - if(rows[i]){ - this.styleRow(rows[i], i); - } - } - } - } - } - - clearData(){ - this.setData([]); - } - - getRowIndex(row){ - return this.findRowIndex(row, this.rows); - } - - getDisplayRowIndex(row){ - var index = this.getDisplayRows().indexOf(row); - return index > -1 ? index : false; - } - - nextDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - nextRow = false; - - - if(index !== false && index < this.displayRowsCount -1){ - nextRow = this.getDisplayRows()[index+1]; - } - - if(nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")){ - return this.nextDisplayRow(nextRow, rowOnly); - } - - return nextRow; - } - - prevDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - prevRow = false; - - if(index){ - prevRow = this.getDisplayRows()[index-1]; - } - - if(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")){ - return this.prevDisplayRow(prevRow, rowOnly); - } - - return prevRow; - } - - findRowIndex(row, list){ - var rowIndex; - - row = this.findRow(row); - - if(row){ - rowIndex = list.indexOf(row); - - if(rowIndex > -1){ - return rowIndex; - } - } - - return false; - } - - getData(active, transform){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - if(row.type == "row"){ - output.push(row.getData(transform || "data")); - } - }); - - return output; - } - - getComponents(active){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - return output; - } - - getDataCount(active){ - var rows = this.getRows(active); - - return rows.length; - } - - scrollHorizontal(left){ - this.scrollLeft = left; - this.element.scrollLeft = left; - - this.dispatch("scroll-horizontal", left); - } - - registerDataPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.dataPipeline.push({handler, priority}); - this.dataPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else { - console.error("Data pipeline handlers must have a priority in order to be registered"); - } - } - - registerDisplayPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.displayPipeline.push({handler, priority}); - this.displayPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else { - console.error("Display pipeline handlers must have a priority in order to be registered"); - } - } - - //set active data set - refreshActiveData(handler, skipStage, renderInPosition){ - var table = this.table, - stage = "", - index = 0, - cascadeOrder = ["all", "dataPipeline", "display", "displayPipeline", "end"]; - - if(!this.table.destroyed){ - if(typeof handler === "function"){ - index = this.dataPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "dataPipeline"; - - if(skipStage){ - if(index == this.dataPipeline.length - 1){ - stage = "display"; - }else { - index++; - } - } - }else { - index = this.displayPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "displayPipeline"; - - if(skipStage){ - if(index == this.displayPipeline.length - 1){ - stage = "end"; - }else { - index++; - } - } - }else { - console.error("Unable to refresh data, invalid handler provided", handler); - return; - } - } - }else { - stage = handler || "all"; - index = 0; - } - - if(this.redrawBlock){ - if(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){ - this.redrawBlockRestoreConfig = { - handler: handler, - skipStage: skipStage, - renderInPosition: renderInPosition, - stage:stage, - index:index, - }; - } - - return; - }else { - if(Helpers.elVisible(this.element)){ - if(renderInPosition){ - this.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition)); - }else { - this.refreshPipelines(handler, stage, index, renderInPosition); - - if(!handler){ - this.table.columnManager.renderer.renderColumns(); - } - - this.renderTable(); - - if(table.options.layoutColumnsOnNewData){ - this.table.columnManager.redraw(true); - } - } - }else { - this.refreshPipelines(handler, stage, index, renderInPosition); - } - - this.dispatch("data-refreshed"); - } - } - } - - refreshPipelines(handler, stage, index, renderInPosition){ - this.dispatch("data-refreshing"); - - if(!handler || !this.activeRowsPipeline[0]){ - this.activeRowsPipeline[0] = this.rows.slice(0); - } - - //cascade through data refresh stages - switch(stage){ - case "all": - //handle case where all data needs refreshing - - case "dataPipeline": - for(let i = index; i < this.dataPipeline.length; i++){ - let result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0)); - - this.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0); - } - - this.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]); - - case "display": - index = 0; - this.resetDisplayRows(); - - case "displayPipeline": - for(let i = index; i < this.displayPipeline.length; i++){ - let result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition); - - this.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i); - } - - case "end": - //case to handle scenario when trying to skip past end stage - this.regenerateRowPositions(); - } - - if(this.getDisplayRows().length){ - this._clearPlaceholder(); - } - } - - //regenerate row positions - regenerateRowPositions(){ - var rows = this.getDisplayRows(); - var index = 1; - - rows.forEach((row) => { - if (row.type === "row"){ - row.setPosition(index); - index++; - } - }); - } - - setActiveRows(activeRows){ - this.activeRows = this.activeRows = Object.assign([], activeRows); - this.activeRowsCount = this.activeRows.length; - } - - //reset display rows array - resetDisplayRows(){ - this.displayRows = []; - - this.displayRows.push(this.activeRows.slice(0)); - - this.displayRowsCount = this.displayRows[0].length; - } - - //set display row pipeline data - setDisplayRows(displayRows, index){ - this.displayRows[index] = displayRows; - - if(index == this.displayRows.length -1){ - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - } - - getDisplayRows(index){ - if(typeof index == "undefined"){ - return this.displayRows.length ? this.displayRows[this.displayRows.length -1] : []; - }else { - return this.displayRows[index] || []; - } - } - - getVisibleRows(chain, viewable){ - var rows = Object.assign([], this.renderer.visibleRows(!viewable)); - - if(chain){ - rows = this.chain("rows-visible", [viewable], rows, rows); - } - - return rows; - } - - //repeat action across display rows - displayRowIterator(callback){ - this.activeRowsPipeline.forEach(callback); - this.displayRows.forEach(callback); - - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - - //return only actual rows (not group headers etc) - getRows(type){ - var rows = []; - - switch(type){ - case "active": - rows = this.activeRows; - break; - - case "display": - rows = this.table.rowManager.getDisplayRows(); - break; - - case "visible": - rows = this.getVisibleRows(false, true); - break; - - default: - rows = this.chain("rows-retrieve", type, null, this.rows) || this.rows; - } - - return rows; - } - - ///////////////// Table Rendering ///////////////// - //trigger rerender of table in current position - reRenderInPosition(callback){ - if(this.redrawBlock){ - if(callback){ - callback(); - }else { - this.redrawBlockRenderInPosition = true; - } - }else { - this.dispatchExternal("renderStarted"); - - this.renderer.rerenderRows(callback); - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - } - - scrollBarCheck(){ - var scrollbarWidth = 0; - - //adjust for vertical scrollbar moving table when present - if(this.element.scrollHeight > this.element.clientHeight){ - scrollbarWidth = this.element.offsetWidth - this.element.clientWidth; - } - - if(scrollbarWidth !== this.scrollbarWidth){ - this.scrollbarWidth = scrollbarWidth; - this.dispatch("scrollbar-vertical", scrollbarWidth); - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": VirtualDomVertical, - "basic": BasicVertical, - }; - - if(typeof this.table.options.renderVertical === "string"){ - renderClass = renderers[this.table.options.renderVertical]; - }else { - renderClass = this.table.options.renderVertical; - } - - if(renderClass){ - this.renderMode = this.table.options.renderVertical; - - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - - if((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){ - this.fixedHeight = true; - }else { - this.fixedHeight = false; - } - }else { - console.error("Unable to find matching renderer:", this.table.options.renderVertical); - } - } - - getRenderMode(){ - return this.renderMode; - } - - renderTable(){ - this.dispatchExternal("renderStarted"); - - this.element.scrollTop = 0; - - this._clearTable(); - - if(this.displayRowsCount){ - this.renderer.renderRows(); - - if(this.firstRender){ - this.firstRender = false; - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.layoutRefresh(true); - } - }else { - this.renderEmptyScroll(); - } - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.dispatch("table-layout"); - - if(!this.displayRowsCount){ - this._showPlaceholder(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - - //show scrollbars on empty table div - renderEmptyScroll(){ - if(this.placeholder){ - this.tableElement.style.display = "none"; - }else { - this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px"; - // this.tableElement.style.minHeight = "1px"; - // this.tableElement.style.visibility = "hidden"; - } - } - - _clearTable(){ - this._clearPlaceholder(); - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.renderer.clearRows(); - } - - tableEmpty(){ - this.renderEmptyScroll(); - this._showPlaceholder(); - } - - checkPlaceholder(){ - if(this.displayRowsCount){ - this._clearPlaceholder(); - }else { - this.tableEmpty(); - } - } - - _showPlaceholder(){ - if(this.placeholder){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - this.initializePlaceholder(); - - this.placeholder.setAttribute("tabulator-render-mode", this.renderMode); - - this.getElement().appendChild(this.placeholder); - this._positionPlaceholder(); - - this.adjustTableSize(); - } - } - - _clearPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - // clear empty table placeholder min - this.tableElement.style.minWidth = ""; - this.tableElement.style.display = ""; - } - - _positionPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.style.width = this.table.columnManager.getWidth() + "px"; - this.placeholderContents.style.width = this.table.rowManager.element.clientWidth + "px"; - this.placeholderContents.style.marginLeft = this.scrollLeft + "px"; - } - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else { - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - //normalize height of active rows - normalizeHeight(){ - this.activeRows.forEach(function(row){ - row.normalizeHeight(); - }); - } - - //adjust the height of the table holder to fit in the Tabulator element - adjustTableSize(){ - let initialHeight = this.element.clientHeight, minHeight; - let resized = false; - - if(this.renderer.verticalFillMode === "fill"){ - let otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0)); - - if(this.fixedHeight){ - minHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + "px"; - - const height = "calc(100% - " + otherHeight + "px)"; - this.element.style.minHeight = minHeight || "calc(100% - " + otherHeight + "px)"; - this.element.style.height = height; - this.element.style.maxHeight = height; - } else { - this.element.style.height = ""; - this.element.style.height = - this.table.element.clientHeight - otherHeight + "px"; - this.element.scrollTop = this.scrollTop; - } - - this.renderer.resize(); - - //check if the table has changed size when dealing with variable height tables - if(!this.fixedHeight && initialHeight != this.element.clientHeight){ - resized = true; - if(this.subscribed("table-resize")){ - this.dispatch("table-resize"); - }else { - this.redraw(); - } - } - - this.scrollBarCheck(); - } - - this._positionPlaceholder(); - return resized; - } - - //reinitialize all rows - reinitialize(){ - this.rows.forEach(function(row){ - row.reinitialize(true); - }); - } - - //prevent table from being redrawn - blockRedraw (){ - this.redrawBlock = true; - this.redrawBlockRestoreConfig = false; - } - - //restore table redrawing - restoreRedraw (){ - this.redrawBlock = false; - - if(this.redrawBlockRestoreConfig){ - this.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition); - - this.redrawBlockRestoreConfig = false; - }else { - if(this.redrawBlockRenderInPosition){ - this.reRenderInPosition(); - } - } - - this.redrawBlockRenderInPosition = false; - } - - //redraw table - redraw (force){ - this.adjustTableSize(); - this.table.tableWidth = this.table.element.clientWidth; - - if(!force){ - this.reRenderInPosition(); - this.scrollHorizontal(this.scrollLeft); - }else { - this.renderTable(); - } - } - - resetScroll(){ - this.element.scrollLeft = 0; - this.element.scrollTop = 0; - - if(this.table.browser === "ie"){ - var event = document.createEvent("Event"); - event.initEvent("scroll", false, true); - this.element.dispatchEvent(event); - }else { - this.element.dispatchEvent(new Event('scroll')); - } - } -} - -class FooterManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.active = false; - this.element = this.createElement(); //containing element - this.containerElement = this.createContainerElement(); //containing element - this.external = false; - } - - initialize(){ - this.initializeElement(); - } - - createElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer"); - - return el; - } - - - createContainerElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer-contents"); - - this.element.appendChild(el); - - return el; - } - - initializeElement(){ - if(this.table.options.footerElement){ - - switch(typeof this.table.options.footerElement){ - case "string": - if(this.table.options.footerElement[0] === "<"){ - this.containerElement.innerHTML = this.table.options.footerElement; - }else { - this.external = true; - this.containerElement = document.querySelector(this.table.options.footerElement); - } - break; - - default: - this.element = this.table.options.footerElement; - break; - } - } - } - - getElement(){ - return this.element; - } - - append(element){ - this.activate(); - - this.containerElement.appendChild(element); - this.table.rowManager.adjustTableSize(); - } - - prepend(element){ - this.activate(); - - this.element.insertBefore(element, this.element.firstChild); - this.table.rowManager.adjustTableSize(); - } - - remove(element){ - element.parentNode.removeChild(element); - this.deactivate(); - } - - deactivate(force){ - if(!this.element.firstChild || force){ - if(!this.external){ - this.element.parentNode.removeChild(this.element); - } - this.active = false; - } - } - - activate(){ - if(!this.active){ - this.active = true; - if(!this.external){ - this.table.element.appendChild(this.getElement()); - this.table.element.style.display = ''; - } - } - } - - redraw(){ - this.dispatch("footer-redraw"); - } -} - -class InteractionManager extends CoreFeature { - - constructor (table){ - super(table); - - this.el = null; - - this.abortClasses = ["tabulator-headers", "tabulator-table"]; - - this.previousTargets = {}; - - this.listeners = [ - "click", - "dblclick", - "contextmenu", - "mouseenter", - "mouseleave", - "mouseover", - "mouseout", - "mousemove", - "mouseup", - "mousedown", - "touchstart", - "touchend", - ]; - - this.componentMap = { - "tabulator-cell":"cell", - "tabulator-row":"row", - "tabulator-group":"group", - "tabulator-col":"column", - }; - - this.pseudoTrackers = { - "row":{ - subscriber:null, - target:null, - }, - "cell":{ - subscriber:null, - target:null, - }, - "group":{ - subscriber:null, - target:null, - }, - "column":{ - subscriber:null, - target:null, - }, - }; - - this.pseudoTracking = false; - } - - initialize(){ - this.el = this.table.element; - - this.buildListenerMap(); - this.bindSubscriptionWatchers(); - } - - buildListenerMap(){ - var listenerMap = {}; - - this.listeners.forEach((listener) => { - listenerMap[listener] = { - handler:null, - components:[], - }; - }); - - this.listeners = listenerMap; - } - - bindPseudoEvents(){ - Object.keys(this.pseudoTrackers).forEach((key) => { - this.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key); - this.subscribe(key + "-mouseover", this.pseudoTrackers[key].subscriber); - }); - - this.pseudoTracking = true; - } - - pseudoMouseEnter(key, e, target){ - if(this.pseudoTrackers[key].target !== target){ - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, this.pseudoTrackers[key].target); - } - - this.pseudoMouseLeave(key, e); - - this.pseudoTrackers[key].target = target; - - this.dispatch(key + "-mouseenter", e, target); - } - } - - pseudoMouseLeave(key, e){ - var leaveList = Object.keys(this.pseudoTrackers), - linkedKeys = { - "row":["cell"], - "cell":["row"], - }; - - leaveList = leaveList.filter((item) => { - var links = linkedKeys[key]; - return item !== key && (!links || (links && !links.includes(item))); - }); - - - leaveList.forEach((key) => { - var target = this.pseudoTrackers[key].target; - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, target); - - this.pseudoTrackers[key].target = null; - } - }); - } - - - bindSubscriptionWatchers(){ - var listeners = Object.keys(this.listeners), - components = Object.values(this.componentMap); - - for(let comp of components){ - for(let listener of listeners){ - let key = comp + "-" + listener; - - this.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener)); - } - } - - this.subscribe("table-destroy", this.clearWatchers.bind(this)); - } - - subscriptionChanged(component, key, added){ - var listener = this.listeners[key].components, - index = listener.indexOf(component), - changed = false; - - if(added){ - if(index === -1){ - listener.push(component); - changed = true; - } - }else { - if(!this.subscribed(component + "-" + key)){ - if(index > -1){ - listener.splice(index, 1); - changed = true; - } - } - } - - if((key === "mouseenter" || key === "mouseleave") && !this.pseudoTracking){ - this.bindPseudoEvents(); - } - - if(changed){ - this.updateEventListeners(); - } - } - - updateEventListeners(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.components.length){ - if(!listener.handler){ - listener.handler = this.track.bind(this, key); - this.el.addEventListener(key, listener.handler); - // this.el.addEventListener(key, listener.handler, {passive: true}) - } - }else { - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } - } - - track(type, e){ - var path = (e.composedPath && e.composedPath()) || e.path; - - var targets = this.findTargets(path); - targets = this.bindComponents(type, targets); - - this.triggerEvents(type, e, targets); - - if(this.pseudoTracking && (type == "mouseover" || type == "mouseleave") && !Object.keys(targets).length){ - this.pseudoMouseLeave("none", e); - } - } - - findTargets(path){ - var targets = {}; - - let componentMap = Object.keys(this.componentMap); - - for (let el of path) { - let classList = el.classList ? [...el.classList] : []; - - let abort = classList.filter((item) => { - return this.abortClasses.includes(item); - }); - - if(abort.length){ - break; - } - - let elTargets = classList.filter((item) => { - return componentMap.includes(item); - }); - - for (let target of elTargets) { - if(!targets[this.componentMap[target]]){ - targets[this.componentMap[target]] = el; - } - } - } - - if(targets.group && targets.group === targets.row){ - delete targets.row; - } - - return targets; - } - - bindComponents(type, targets){ - //ensure row component is looked up before cell - var keys = Object.keys(targets).reverse(), - listener = this.listeners[type], - matches = {}, - targetMatches = {}; - - for(let key of keys){ - let component, - target = targets[key], - previousTarget = this.previousTargets[key]; - - if(previousTarget && previousTarget.target === target){ - component = previousTarget.component; - }else { - switch(key){ - case "row": - case "group": - if(listener.components.includes("row") || listener.components.includes("cell") || listener.components.includes("group")){ - let rows = this.table.rowManager.getVisibleRows(true); - - component = rows.find((row) => { - return row.getElement() === target; - }); - - if(targets["row"] && targets["row"].parentNode && targets["row"].parentNode.closest(".tabulator-row")){ - targets[key] = false; - } - } - break; - - case "column": - if(listener.components.includes("column")){ - component = this.table.columnManager.findColumn(target); - } - break; - - case "cell": - if(listener.components.includes("cell")){ - if(matches["row"] instanceof Row){ - component = matches["row"].findCell(target); - }else { - if(targets["row"]){ - console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"); - } - } - } - break; - } - } - - if(component){ - matches[key] = component; - targetMatches[key] = { - target:target, - component:component, - }; - } - } - - this.previousTargets = targetMatches; - - return matches; - } - - triggerEvents(type, e, targets){ - var listener = this.listeners[type]; - - for(let key in targets){ - if(targets[key] && listener.components.includes(key)){ - this.dispatch(key + "-" + type, e, targets[key]); - } - } - } - - clearWatchers(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } -} - -class ComponentFunctionBinder{ - - constructor(table){ - this.table = table; - - this.bindings = {}; - } - - bind(type, funcName, handler){ - if(!this.bindings[type]){ - this.bindings[type] = {}; - } - - if(this.bindings[type][funcName]){ - console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, handler); - }else { - this.bindings[type][funcName] = handler; - } - } - - handle(type, component, name){ - if(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){ - return this.bindings[type][name].bind(null, component); - }else { - if(name !== "then" && typeof name === "string" && !name.startsWith("_")){ - if(this.table.options.debugInvalidComponentFuncs){ - console.error("The " + type + " component does not have a " + name + " function, have you checked that you have the correct Tabulator module installed?"); - } - } - } - } -} - -class DataLoader extends CoreFeature{ - constructor(table){ - super(table); - - this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request - this.loading = false; - } - - initialize(){} - - load(data, params, config, replace, silent, columnsChanged){ - var requestNo = ++this.requestOrder; - - if(this.table.destroyed){ - return Promise.resolve(); - } - - this.dispatchExternal("dataLoading", data); - - //parse json data to array - if (data && (data.indexOf("{") == 0 || data.indexOf("[") == 0)){ - data = JSON.parse(data); - } - - if(this.confirm("data-loading", [data, params, config, silent])){ - this.loading = true; - - if(!silent){ - this.alertLoader(); - } - - //get params for request - params = this.chain("data-params", [data, config, silent], params || {}, params || {}); - - params = this.mapParams(params, this.table.options.dataSendParams); - - var result = this.chain("data-load", [data, params, config, silent], false, Promise.resolve([])); - - return result.then((response) => { - if(!this.table.destroyed){ - if(!Array.isArray(response) && typeof response == "object"){ - response = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams)); - } - - var rowData = this.chain("data-loaded", response, null, response); - - if(requestNo == this.requestOrder){ - this.clearAlert(); - - if(rowData !== false){ - this.dispatchExternal("dataLoaded", rowData); - this.table.rowManager.setData(rowData, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - } - }else { - console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made"); - } - }else { - console.warn("Data Load Response Blocked - Table has been destroyed"); - } - }).catch((error) => { - console.error("Data Load Error: ", error); - this.dispatchExternal("dataLoadError", error); - - if(!silent){ - this.alertError(); - } - - setTimeout(() => { - this.clearAlert(); - }, this.table.options.dataLoaderErrorTimeout); - }) - .finally(() => { - this.loading = false; - }); - }else { - this.dispatchExternal("dataLoaded", data); - - if(!data){ - data = []; - } - - this.table.rowManager.setData(data, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - return Promise.resolve(); - } - } - - mapParams(params, map){ - var output = {}; - - for(let key in params){ - output[map.hasOwnProperty(key) ? map[key] : key] = params[key]; - } - - return output; - } - - objectInvert(obj){ - var output = {}; - - for(let key in obj){ - output[obj[key]] = key; - } - - return output; - } - - blockActiveLoad(){ - this.requestOrder++; - } - - alertLoader(){ - var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader; - - if(shouldLoad){ - this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading")); - } - } - - alertError(){ - this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error"); - } - - clearAlert(){ - this.table.alertManager.clear(); - } -} - -class ExternalEventBus { - - constructor(table, optionsList, debug){ - this.table = table; - this.events = {}; - this.optionsList = optionsList || {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push(callback); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else { - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - }else { - delete this.events[key]; - } - }else { - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(), - result; - - if(this.events[key]){ - this.events[key].forEach((callback, i) => { - let callResult = callback.apply(this.table, args); - - if(!i){ - result = callResult; - } - }); - } - - return result; - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "ExternalEvent:" + args[0]; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } -} - -class InternalEventBus { - - constructor(debug){ - this.events = {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this); - this.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback, priority = 10000){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push({callback, priority}); - - this.events[key].sort((a, b) => { - return a.priority - b.priority; - }); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item.callback === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else { - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - } - }else { - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _chain(key, args, initialValue, fallback){ - var value = initialValue; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - value = subscriber.callback.apply(this, args.concat([value])); - }); - - return value; - }else { - return typeof fallback === "function" ? fallback() : fallback; - } - } - - _confirm(key, args){ - var confirmed = false; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - if(subscriber.callback.apply(this, args)){ - confirmed = true; - } - }); - } - - return confirmed; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(); - - if(this.events[key]){ - this.events[key].forEach((subscriber) => { - subscriber.callback.apply(this, args); - }); - } - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } - - _debugChain(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._chain(...arguments); - } - - _debugConfirm(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._confirm(...arguments); - } -} - -class DeprecationAdvisor extends CoreFeature{ - - constructor(table){ - super(table); - } - - _warnUser(){ - if(this.options("debugDeprecation")){ - console.warn(...arguments); - } - } - - check(oldOption, newOption, convert){ - var msg = ""; - - if(typeof this.options(oldOption) !== "undefined"){ - msg = "Deprecated Setup Option - Use of the %c" + oldOption + "%c option is now deprecated"; - - if(newOption){ - msg = msg + ", Please use the %c" + newOption + "%c option instead"; - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - - if(convert){ - this.table.options[newOption] = this.table.options[oldOption]; - } - }else { - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;'); - } - - return false; - }else { - return true; - } - } - - checkMsg(oldOption, msg){ - if(typeof this.options(oldOption) !== "undefined"){ - this._warnUser("%cDeprecated Setup Option - Use of the %c" + oldOption + " %c option is now deprecated, " + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - - return false; - }else { - return true; - } - } - - msg(msg){ - this._warnUser(msg); - } -} - -class TableRegistry { - - static register(table){ - TableRegistry.tables.push(table); - } - - static deregister(table){ - var index = TableRegistry.tables.indexOf(table); - - if(index > -1){ - TableRegistry.tables.splice(index, 1); - } - } - - static lookupTable(query, silent){ - var results = [], - matches, match; - - if(typeof query === "string"){ - matches = document.querySelectorAll(query); - - if(matches.length){ - for(var i = 0; i < matches.length; i++){ - match = TableRegistry.matchElement(matches[i]); - - if(match){ - results.push(match); - } - } - } - - }else if((typeof HTMLElement !== "undefined" && query instanceof HTMLElement) || query instanceof Tabulator){ - match = TableRegistry.matchElement(query); - - if(match){ - results.push(match); - } - }else if(Array.isArray(query)){ - query.forEach(function(item){ - results = results.concat(TableRegistry.lookupTable(item)); - }); - }else { - if(!silent){ - console.warn("Table Connection Error - Invalid Selector", query); - } - } - - return results; - } - - static matchElement(element){ - return TableRegistry.tables.find(function(table){ - return element instanceof Tabulator ? table === element : table.element === element; - }); - } -} - -TableRegistry.tables = []; - -//resize columns to fit data they contain -function fitData(columns, forced){ - if(forced){ - this.table.columnManager.renderer.reinitializeColumnWidths(columns); - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } -} - -//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable -function fitDataGeneral(columns, forced){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } -} - -//resize columns to fit data the contain and stretch last column to fill table -function fitDataStretch(columns, forced){ - var colsWidth = 0, - tableWidth = this.table.rowManager.element.clientWidth, - gap = 0, - lastCol = false; - - columns.forEach((column, i) => { - if(!column.widthFixed){ - column.reinitializeWidth(); - } - - if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){ - lastCol = column; - } - - if(column.visible){ - colsWidth += column.getWidth(); - } - }); - - if(lastCol){ - gap = tableWidth - colsWidth + lastCol.getWidth(); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - lastCol.setWidth(0); - this.table.modules.responsiveLayout.update(); - } - - if(gap > 0){ - lastCol.setWidth(gap); - }else { - lastCol.reinitializeWidth(); - } - }else { - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } -} - -//resize columns to fit -function fitColumns(columns, forced){ - var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width - var fixedWidth = 0; //total width of columns with a defined width - var flexWidth = 0; //total width available to flexible columns - var flexGrowUnits = 0; //total number of widthGrow blocks across all columns - var flexColWidth = 0; //desired width of flexible columns - var flexColumns = []; //array of flexible width columns - var fixedShrinkColumns = []; //array of fixed width columns that can shrink - var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns - var overflowWidth = 0; //horizontal overflow width - var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps - - function calcWidth(width){ - var colWidth; - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width); - }else { - colWidth = parseInt(width); - } - }else { - colWidth = width; - } - - return colWidth; - } - - //ensure columns resize to take up the correct amount of space - function scaleColumns(columns, freeSpace, colWidth, shrinkCols){ - var oversizeCols = [], - oversizeSpace = 0, - remainingSpace = 0, - nextColWidth = 0, - remainingFlexGrowUnits = flexGrowUnits, - gap = 0, - changeUnits = 0, - undersizeCols = []; - - function calcGrow(col){ - return (colWidth * (col.column.definition.widthGrow || 1)); - } - - function calcShrink(col){ - return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0))); - } - - columns.forEach(function(col, i){ - var width = shrinkCols ? calcShrink(col) : calcGrow(col); - if(col.column.minWidth >= width){ - oversizeCols.push(col); - }else { - if(col.column.maxWidth && col.column.maxWidth < width){ - col.width = col.column.maxWidth; - freeSpace -= col.column.maxWidth; - - remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - - if(remainingFlexGrowUnits){ - colWidth = Math.floor(freeSpace/remainingFlexGrowUnits); - } - }else { - undersizeCols.push(col); - changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - } - } - }); - - if(oversizeCols.length){ - oversizeCols.forEach(function(col){ - oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth; - col.width = col.column.minWidth; - }); - - remainingSpace = freeSpace - oversizeSpace; - - nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace; - - gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols); - }else { - gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace; - - undersizeCols.forEach(function(column){ - column.width = shrinkCols ? calcShrink(column) : calcGrow(column); - }); - } - - return gap; - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - columns.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width; - minWidth = parseInt(column.minWidth); - - if(width){ - - colWidth = calcWidth(width); - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - if(column.definition.widthShrink){ - fixedShrinkColumns.push({ - column:column, - width:colWidth > minWidth ? colWidth : minWidth - }); - flexShrinkUnits += column.definition.widthShrink; - } - - }else { - flexColumns.push({ - column:column, - width:0, - }); - flexGrowUnits += column.definition.widthGrow || 1; - } - } - }); - - //calculate available space - flexWidth = totalWidth - fixedWidth; - - //calculate correct column size - flexColWidth = Math.floor(flexWidth / flexGrowUnits); - - //generate column widths - gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false); - - //increase width of last column to account for rounding errors - if(flexColumns.length && gapFill > 0){ - flexColumns[flexColumns.length-1].width += gapFill; - } - - //calculate space for columns to be shrunk into - flexColumns.forEach(function(col){ - flexWidth -= col.width; - }); - - overflowWidth = Math.abs(gapFill) + flexWidth; - - //shrink oversize columns if there is no available space - if(overflowWidth > 0 && flexShrinkUnits){ - gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true); - } - - //decrease width of last column to account for rounding errors - if(gapFill && fixedShrinkColumns.length){ - fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill; - } - - flexColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); - - fixedShrinkColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); -} - -var defaultModes = { - fitData:fitData, - fitDataFill:fitDataGeneral, - fitDataTable:fitDataGeneral, - fitDataStretch:fitDataStretch, - fitColumns:fitColumns , -}; - -class Layout extends Module{ - - constructor(table){ - super(table, "layout"); - - this.mode = null; - - this.registerTableOption("layout", "fitData"); //layout type - this.registerTableOption("layoutColumnsOnNewData", false); //update column widths on setData - - this.registerColumnOption("widthGrow"); - this.registerColumnOption("widthShrink"); - } - - //initialize layout system - initialize(){ - var layout = this.table.options.layout; - - if(Layout.modes[layout]){ - this.mode = layout; - }else { - console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout); - this.mode = 'fitData'; - } - - this.table.element.setAttribute("tabulator-layout", this.mode); - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - initializeColumn(column){ - if(column.definition.widthGrow){ - column.definition.widthGrow = Number(column.definition.widthGrow); - } - if(column.definition.widthShrink){ - column.definition.widthShrink = Number(column.definition.widthShrink); - } - } - - getMode(){ - return this.mode; - } - - //trigger table layout - layout(dataChanged){ - this.dispatch("layout-refreshing"); - Layout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged); - this.dispatch("layout-refreshed"); - } -} - -Layout.moduleName = "layout"; - -//load defaults -Layout.modes = defaultModes; - -var defaultLangs = { - "default":{ //hold default locale text - "groups":{ - "item":"item", - "items":"items", - }, - "columns":{ - }, - "data":{ - "loading":"Loading", - "error":"Error", - }, - "pagination":{ - "page_size":"Page Size", - "page_title":"Show Page", - "first":"First", - "first_title":"First Page", - "last":"Last", - "last_title":"Last Page", - "prev":"Prev", - "prev_title":"Prev Page", - "next":"Next", - "next_title":"Next Page", - "all":"All", - "counter":{ - "showing": "Showing", - "of": "of", - "rows": "rows", - "pages": "pages", - } - }, - "headerFilters":{ - "default":"filter column...", - "columns":{} - } - }, -}; - -class Localize extends Module{ - - constructor(table){ - super(table); - - this.locale = "default"; //current locale - this.lang = false; //current language - this.bindings = {}; //update events to call when locale is changed - this.langList = {}; - - this.registerTableOption("locale", false); //current system language - this.registerTableOption("langs", {}); - } - - initialize(){ - this.langList = Helpers.deepClone(Localize.langs); - - if(this.table.options.columnDefaults.headerFilterPlaceholder !== false){ - this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder); - } - - for(let locale in this.table.options.langs){ - this.installLang(locale, this.table.options.langs[locale]); - } - - this.setLocale(this.table.options.locale); - - this.registerTableFunction("setLocale", this.setLocale.bind(this)); - this.registerTableFunction("getLocale", this.getLocale.bind(this)); - this.registerTableFunction("getLang", this.getLang.bind(this)); - } - - //set header placeholder - setHeaderFilterPlaceholder(placeholder){ - this.langList.default.headerFilters.default = placeholder; - } - - //setup a lang description object - installLang(locale, lang){ - if(this.langList[locale]){ - this._setLangProp(this.langList[locale], lang); - }else { - this.langList[locale] = lang; - } - } - - _setLangProp(lang, values){ - for(let key in values){ - if(lang[key] && typeof lang[key] == "object"){ - this._setLangProp(lang[key], values[key]); - }else { - lang[key] = values[key]; - } - } - } - - //set current locale - setLocale(desiredLocale){ - desiredLocale = desiredLocale || "default"; - - //fill in any matching language values - function traverseLang(trans, path){ - for(var prop in trans){ - if(typeof trans[prop] == "object"){ - if(!path[prop]){ - path[prop] = {}; - } - traverseLang(trans[prop], path[prop]); - }else { - path[prop] = trans[prop]; - } - } - } - - //determining correct locale to load - if(desiredLocale === true && navigator.language){ - //get local from system - desiredLocale = navigator.language.toLowerCase(); - } - - if(desiredLocale){ - //if locale is not set, check for matching top level locale else use default - if(!this.langList[desiredLocale]){ - let prefix = desiredLocale.split("-")[0]; - - if(this.langList[prefix]){ - console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix); - desiredLocale = prefix; - }else { - console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale); - desiredLocale = "default"; - } - } - } - - this.locale = desiredLocale; - - //load default lang template - this.lang = Helpers.deepClone(this.langList.default || {}); - - if(desiredLocale != "default"){ - traverseLang(this.langList[desiredLocale], this.lang); - } - - this.dispatchExternal("localized", this.locale, this.lang); - - this._executeBindings(); - } - - //get current locale - getLocale(locale){ - return this.locale; - } - - //get lang object for given local or current if none provided - getLang(locale){ - return locale ? this.langList[locale] : this.lang; - } - - //get text for current locale - getText(path, value){ - var fillPath = value ? path + "|" + value : path, - pathArray = fillPath.split("|"), - text = this._getLangElement(pathArray, this.locale); - - // if(text === false){ - // console.warn("Localization Error - Matching localized text not found for given path: ", path); - // } - - return text || ""; - } - - //traverse langs object and find localized copy - _getLangElement(path, locale){ - var root = this.lang; - - path.forEach(function(level){ - var rootPath; - - if(root){ - rootPath = root[level]; - - if(typeof rootPath != "undefined"){ - root = rootPath; - }else { - root = false; - } - } - }); - - return root; - } - - //set update binding - bind(path, callback){ - if(!this.bindings[path]){ - this.bindings[path] = []; - } - - this.bindings[path].push(callback); - - callback(this.getText(path), this.lang); - } - - //iterate through bindings and trigger updates - _executeBindings(){ - for(let path in this.bindings){ - this.bindings[path].forEach((binding) => { - binding(this.getText(path), this.lang); - }); - } - } -} - -Localize.moduleName = "localize"; - -//load defaults -Localize.langs = defaultLangs; - -class Comms extends Module{ - - constructor(table){ - super(table); - } - - initialize(){ - this.registerTableFunction("tableComms", this.receive.bind(this)); - } - - getConnections(selectors){ - var connections = [], - connection; - - connection = TableRegistry.lookupTable(selectors); - - connection.forEach((con) =>{ - if(this.table !== con){ - connections.push(con); - } - }); - - return connections; - } - - send(selectors, module, action, data){ - var connections = this.getConnections(selectors); - - connections.forEach((connection) => { - connection.tableComms(this.table.element, module, action, data); - }); - - if(!connections.length && selectors){ - console.warn("Table Connection Error - No tables matching selector found", selectors); - } - } - - receive(table, module, action, data){ - if(this.table.modExists(module)){ - return this.table.modules[module].commsReceived(table, action, data); - }else { - console.warn("Inter-table Comms Error - no such module:", module); - } - } -} - -Comms.moduleName = "comms"; - -var coreModules = /*#__PURE__*/Object.freeze({ - __proto__: null, - LayoutModule: Layout, - LocalizeModule: Localize, - CommsModule: Comms -}); - -class ModuleBinder { - - constructor(tabulator, modules){ - this.bindStaticFunctionality(tabulator); - this.bindModules(tabulator, coreModules, true); - - if(modules){ - this.bindModules(tabulator, modules); - } - } - - bindStaticFunctionality(tabulator){ - tabulator.moduleBindings = {}; - - tabulator.extendModule = function(name, property, values){ - if(tabulator.moduleBindings[name]){ - var source = tabulator.moduleBindings[name][property]; - - if(source){ - if(typeof values == "object"){ - for(let key in values){ - source[key] = values[key]; - } - }else { - console.warn("Module Error - Invalid value type, it must be an object"); - } - }else { - console.warn("Module Error - property does not exist:", property); - } - }else { - console.warn("Module Error - module does not exist:", name); - } - }; - - tabulator.registerModule = function(modules){ - if(!Array.isArray(modules)){ - modules = [modules]; - } - - modules.forEach((mod) => { - tabulator.registerModuleBinding(mod); - }); - }; - - tabulator.registerModuleBinding = function(mod){ - tabulator.moduleBindings[mod.moduleName] = mod; - }; - - tabulator.findTable = function(query){ - var results = TableRegistry.lookupTable(query, true); - return Array.isArray(results) && !results.length ? false : results; - }; - - //ensure that module are bound to instantiated function - tabulator.prototype.bindModules = function(){ - var orderedStartMods = [], - orderedEndMods = [], - unOrderedMods = []; - - this.modules = {}; - - for(var name in tabulator.moduleBindings){ - let mod = tabulator.moduleBindings[name]; - let module = new mod(this); - - this.modules[name] = module; - - if(mod.prototype.moduleCore){ - this.modulesCore.push(module); - }else { - if(mod.moduleInitOrder){ - if(mod.moduleInitOrder < 0){ - orderedStartMods.push(module); - }else { - orderedEndMods.push(module); - } - - }else { - unOrderedMods.push(module); - } - } - } - - orderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - orderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - - this.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods)); - }; - } - - bindModules(tabulator, modules, core){ - var mods = Object.values(modules); - - if(core){ - mods.forEach((mod) => { - mod.prototype.moduleCore = true; - }); - } - - tabulator.registerModule(mods); - } -} - -class Alert extends CoreFeature{ - constructor(table){ - super(table); - - this.element = this._createAlertElement(); - this.msgElement = this._createMsgElement(); - this.type = null; - - this.element.appendChild(this.msgElement); - } - - _createAlertElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert"); - return el; - } - - _createMsgElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert-msg"); - el.setAttribute("role", "alert"); - return el; - } - - _typeClass(){ - return "tabulator-alert-state-" + this.type; - } - - alert(content, type = "msg"){ - if(content){ - this.clear(); - - this.dispatch("alert-show", type); - - this.type = type; - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - - this.msgElement.classList.add(this._typeClass()); - - if(typeof content === "function"){ - content = content(); - } - - if(content instanceof HTMLElement){ - this.msgElement.appendChild(content); - }else { - this.msgElement.innerHTML = content; - } - - this.table.element.appendChild(this.element); - } - } - - clear(){ - this.dispatch("alert-hide", this.type); - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.msgElement.classList.remove(this._typeClass()); - } -} - -class Tabulator { - - constructor(element, options){ - - this.options = {}; - - this.columnManager = null; // hold Column Manager - this.rowManager = null; //hold Row Manager - this.footerManager = null; //holder Footer Manager - this.alertManager = null; //hold Alert Manager - this.vdomHoz = null; //holder horizontal virtual dom - this.externalEvents = null; //handle external event messaging - this.eventBus = null; //handle internal event messaging - this.interactionMonitor = false; //track user interaction - this.browser = ""; //hold current browser type - this.browserSlow = false; //handle reduced functionality for slower browsers - this.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance - this.rtl = false; //check if the table is in RTL mode - this.originalElement = null; //hold original table element if it has been replaced - - this.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions - this.dataLoader = false; //bind component functions - - this.modules = {}; //hold all modules bound to this table - this.modulesCore = []; //hold core modules bound to this table (for initialization purposes) - this.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes) - - this.deprecationAdvisor = new DeprecationAdvisor(this); - this.optionsList = new OptionsList(this, "table constructor"); - - this.initialized = false; - this.destroyed = false; - - if(this.initializeElement(element)){ - - this.initializeCoreSystems(options); - - //delay table creation to allow event bindings immediately after the constructor - setTimeout(() => { - this._create(); - }); - } - - TableRegistry.register(this); //register table for inter-device communication - } - - initializeElement(element){ - if(typeof HTMLElement !== "undefined" && element instanceof HTMLElement){ - this.element = element; - return true; - }else if(typeof element === "string"){ - this.element = document.querySelector(element); - - if(this.element){ - return true; - }else { - console.error("Tabulator Creation Error - no element found matching selector: ", element); - return false; - } - }else { - console.error("Tabulator Creation Error - Invalid element provided:", element); - return false; - } - } - - initializeCoreSystems(options){ - this.columnManager = new ColumnManager(this); - this.rowManager = new RowManager(this); - this.footerManager = new FooterManager(this); - this.dataLoader = new DataLoader(this); - this.alertManager = new Alert(this); - - this.bindModules(); - - this.options = this.optionsList.generate(Tabulator.defaultOptions, options); - - this._clearObjectPointers(); - - this._mapDeprecatedFunctionality(); - - this.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal); - this.eventBus = new InternalEventBus(this.options.debugEventsInternal); - - this.interactionMonitor = new InteractionManager(this); - - this.dataLoader.initialize(); - // this.columnManager.initialize(); - // this.rowManager.initialize(); - this.footerManager.initialize(); - } - - //convert deprecated functionality to new functions - _mapDeprecatedFunctionality(){ - //all previously deprecated functionality removed in the 5.0 release - } - - _clearSelection(){ - - this.element.classList.add("tabulator-block-select"); - - if (window.getSelection) { - if (window.getSelection().empty) { // Chrome - window.getSelection().empty(); - } else if (window.getSelection().removeAllRanges) { // Firefox - window.getSelection().removeAllRanges(); - } - } else if (document.selection) { // IE? - document.selection.empty(); - } - - this.element.classList.remove("tabulator-block-select"); - } - - //create table - _create(){ - this.externalEvents.dispatch("tableBuilding"); - this.eventBus.dispatch("table-building"); - - this._rtlCheck(); - - this._buildElement(); - - this._initializeTable(); - - this._loadInitialData(); - - this.initialized = true; - - this.externalEvents.dispatch("tableBuilt"); - } - - _rtlCheck(){ - var style = window.getComputedStyle(this.element); - - switch(this.options.textDirection){ - case"auto": - if(style.direction !== "rtl"){ - break; - } - - case "rtl": - this.element.classList.add("tabulator-rtl"); - this.rtl = true; - break; - - case "ltr": - this.element.classList.add("tabulator-ltr"); - - default: - this.rtl = false; - } - } - - //clear pointers to objects in default config object - _clearObjectPointers(){ - this.options.columns = this.options.columns.slice(0); - - if(Array.isArray(this.options.data) && !this.options.reactiveData){ - this.options.data = this.options.data.slice(0); - } - } - - //build tabulator element - _buildElement(){ - var element = this.element, - options = this.options, - newElement; - - if(element.tagName === "TABLE"){ - this.originalElement = this.element; - newElement = document.createElement("div"); - - //transfer attributes to new element - var attributes = element.attributes; - - // loop through attributes and apply them on div - for(var i in attributes){ - if(typeof attributes[i] == "object"){ - newElement.setAttribute(attributes[i].name, attributes[i].value); - } - } - - // replace table with div element - element.parentNode.replaceChild(newElement, element); - - this.element = element = newElement; - } - - element.classList.add("tabulator"); - element.setAttribute("role", "grid"); - - //empty element - while(element.firstChild) element.removeChild(element.firstChild); - - //set table height - if(options.height){ - options.height = isNaN(options.height) ? options.height : options.height + "px"; - element.style.height = options.height; - } - - //set table min height - if(options.minHeight !== false){ - options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px"; - element.style.minHeight = options.minHeight; - } - - //set table maxHeight - if(options.maxHeight !== false){ - options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px"; - element.style.maxHeight = options.maxHeight; - } - } - - //initialize core systems and modules - _initializeTable(){ - var element = this.element, - options = this.options; - - this.interactionMonitor.initialize(); - - this.columnManager.initialize(); - this.rowManager.initialize(); - - this._detectBrowser(); - - //initialize core modules - this.modulesCore.forEach((mod) => { - mod.initialize(); - }); - - //build table elements - element.appendChild(this.columnManager.getElement()); - element.appendChild(this.rowManager.getElement()); - - if(options.footerElement){ - this.footerManager.activate(); - } - - if(options.autoColumns && options.data){ - - this.columnManager.generateColumnsFromRowData(this.options.data); - } - - //initialize regular modules - this.modulesRegular.forEach((mod) => { - mod.initialize(); - }); - - this.columnManager.setColumns(options.columns); - - this.eventBus.dispatch("table-built"); - } - - _loadInitialData(){ - this.dataLoader.load(this.options.data); - this.columnManager.verticalAlignHeaders(); - } - - //deconstructor - destroy(){ - var element = this.element; - - this.destroyed = true; - - TableRegistry.deregister(this); //deregister table from inter-device communication - - this.eventBus.dispatch("table-destroy"); - - //clear row data - this.rowManager.destroy(); - - //clear DOM - while(element.firstChild) element.removeChild(element.firstChild); - element.classList.remove("tabulator"); - - this.externalEvents.dispatch("tableDestroyed"); - } - - _detectBrowser(){ - var ua = navigator.userAgent||navigator.vendor||window.opera; - - if(ua.indexOf("Trident") > -1){ - this.browser = "ie"; - this.browserSlow = true; - }else if(ua.indexOf("Edge") > -1){ - this.browser = "edge"; - this.browserSlow = true; - }else if(ua.indexOf("Firefox") > -1){ - this.browser = "firefox"; - this.browserSlow = false; - }else if(ua.indexOf("Mac OS") > -1){ - this.browser = "safari"; - this.browserSlow = false; - }else { - this.browser = "other"; - this.browserSlow = false; - } - - this.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.slice(0,4)); - } - - initGuard(func, msg){ - var stack, line; - - if(this.options.debugInitialization && !this.initialized){ - if(!func){ - stack = new Error().stack.split("\n"); - - line = stack[0] == "Error" ? stack[2] : stack[1]; - - if(line[0] == " "){ - func = line.trim().split(" ")[1].split(".")[1]; - }else { - func = line.trim().split("@")[0]; - } - } - - console.warn("Table Not Initialized - Calling the " + func + " function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function." + (msg ? " " + msg : "")); - } - - return this.initialized; - } - - ////////////////// Data Handling ////////////////// - //block table redrawing - blockRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-blocking"); - - this.rowManager.blockRedraw(); - this.columnManager.blockRedraw(); - - this.eventBus.dispatch("redraw-blocked"); - } - - //restore table redrawing - restoreRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-restoring"); - - this.rowManager.restoreRedraw(); - this.columnManager.restoreRedraw(); - - this.eventBus.dispatch("redraw-restored"); - } - - //load data - setData(data, params, config){ - this.initGuard(false, "To set initial data please use the 'data' property in the table constructor."); - - return this.dataLoader.load(data, params, config, false); - } - - //clear data - clearData(){ - this.initGuard(); - - this.dataLoader.blockActiveLoad(); - this.rowManager.clearData(); - } - - //get table data array - getData(active){ - return this.rowManager.getData(active); - } - - //get table data array count - getDataCount(active){ - return this.rowManager.getDataCount(active); - } - - //replace data, keeping table in position with same sort - replaceData(data, params, config){ - this.initGuard(); - - return this.dataLoader.load(data, params, config, true, true); - } - - //update table data - updateData(data){ - var responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - if(row){ - responses++; - - row.updateData(item) - .then(()=>{ - responses--; - - if(!responses){ - resolve(); - } - }) - .catch((e) => { - reject("Update Error - Unable to update row", item, e); - }); - }else { - reject("Update Error - Unable to find row", item); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - addData(data, pos, index){ - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - this.rowManager.addRows(data, pos, index) - .then((rows) => { - var output = []; - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - resolve(output); - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //update table data - updateOrAddData(data){ - var rows = [], - responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - responses++; - - if(row){ - row.updateData(item) - .then(()=>{ - responses--; - rows.push(row.getComponent()); - - if(!responses){ - resolve(rows); - } - }); - }else { - this.rowManager.addRows(item) - .then((newRows)=>{ - responses--; - rows.push(newRows[0].getComponent()); - - if(!responses){ - resolve(rows); - } - }); - } - }); - }else { - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //get row object - getRow(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getComponent(); - }else { - console.warn("Find Error - No matching row found:", index); - return false; - } - } - - //get row object - getRowFromPosition(position){ - var row = this.rowManager.getRowFromPosition(position); - - if(row){ - return row.getComponent(); - }else { - console.warn("Find Error - No matching row found:", position); - return false; - } - } - - //delete row from table - deleteRow(index){ - var foundRows = []; - - this.initGuard(); - - if(!Array.isArray(index)){ - index = [index]; - } - - //find matching rows - for(let item of index){ - let row = this.rowManager.findRow(item, true); - - if(row){ - foundRows.push(row); - }else { - console.error("Delete Error - No matching row found:", item); - return Promise.reject("Delete Error - No matching row found"); - } - } - - //sort rows into correct order to ensure smooth delete from table - foundRows.sort((a, b) => { - return this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1; - }); - - //delete rows - foundRows.forEach((row) =>{ - row.delete(); - }); - - this.rowManager.reRenderInPosition(); - - return Promise.resolve(); - } - - //add row to table - addRow(data, pos, index){ - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - return this.rowManager.addRows(data, pos, index, true) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - - //update a row if it exists otherwise create it - updateOrAddRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return row.getComponent(); - }); - }else { - return this.rowManager.addRows(data) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - } - - //update row data - updateRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return Promise.resolve(row.getComponent()); - }); - }else { - console.warn("Update Error - No matching row found:", index); - return Promise.reject("Update Error - No matching row found"); - } - } - - //scroll to row in DOM - scrollToRow(index, position, ifVisible){ - var row = this.rowManager.findRow(index); - - if(row){ - return this.rowManager.scrollToRow(row, position, ifVisible); - }else { - console.warn("Scroll Error - No matching row found:", index); - return Promise.reject("Scroll Error - No matching row found"); - } - } - - moveRow(from, to, after){ - var fromRow = this.rowManager.findRow(from); - - this.initGuard(); - - if(fromRow){ - fromRow.moveToRow(to, after); - }else { - console.warn("Move Error - No matching row found:", from); - } - } - - getRows(active){ - return this.rowManager.getComponents(active); - } - - //get position of row in table - getRowPosition(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getPosition(); - }else { - console.warn("Position Error - No matching row found:", index); - return false; - } - } - - /////////////// Column Functions /////////////// - setColumns(definition){ - this.initGuard(false, "To set initial columns please use the 'columns' property in the table constructor"); - - this.columnManager.setColumns(definition); - } - - getColumns(structured){ - return this.columnManager.getComponents(structured); - } - - getColumn(field){ - var column = this.columnManager.findColumn(field); - - if(column){ - return column.getComponent(); - }else { - console.warn("Find Error - No matching column found:", field); - return false; - } - } - - getColumnDefinitions(){ - return this.columnManager.getDefinitionTree(); - } - - showColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.show(); - }else { - console.warn("Column Show Error - No matching column found:", field); - return false; - } - } - - hideColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.hide(); - }else { - console.warn("Column Hide Error - No matching column found:", field); - return false; - } - } - - toggleColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - if(column.visible){ - column.hide(); - }else { - column.show(); - } - }else { - console.warn("Column Visibility Toggle Error - No matching column found:", field); - return false; - } - } - - addColumn(definition, before, field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - return this.columnManager.addColumn(definition, before, column) - .then((column) => { - return column.getComponent(); - }); - } - - deleteColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.delete(); - }else { - console.warn("Column Delete Error - No matching column found:", field); - return Promise.reject(); - } - } - - updateColumnDefinition(field, definition){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.updateDefinition(definition); - }else { - console.warn("Column Update Error - No matching column found:", field); - return Promise.reject(); - } - } - - moveColumn(from, to, after){ - var fromColumn = this.columnManager.findColumn(from), - toColumn = this.columnManager.findColumn(to); - - this.initGuard(); - - if(fromColumn){ - if(toColumn){ - this.columnManager.moveColumn(fromColumn, toColumn, after); - }else { - console.warn("Move Error - No matching column found:", toColumn); - } - }else { - console.warn("Move Error - No matching column found:", from); - } - } - - //scroll to column in DOM - scrollToColumn(field, position, ifVisible){ - return new Promise((resolve, reject) => { - var column = this.columnManager.findColumn(field); - - if(column){ - return this.columnManager.scrollToColumn(column, position, ifVisible); - }else { - console.warn("Scroll Error - No matching column found:", field); - return Promise.reject("Scroll Error - No matching column found"); - } - }); - } - - //////////// General Public Functions //////////// - //redraw list without updating data - redraw(force){ - this.initGuard(); - - this.columnManager.redraw(force); - this.rowManager.redraw(force); - } - - setHeight(height){ - this.options.height = isNaN(height) ? height : height + "px"; - this.element.style.height = this.options.height; - this.rowManager.initializeRenderer(); - this.rowManager.redraw(true); - } - - //////////////////// Event Bus /////////////////// - - on(key, callback){ - this.externalEvents.subscribe(key, callback); - } - - off(key, callback){ - this.externalEvents.unsubscribe(key, callback); - } - - dispatchEvent(){ - var args = Array.from(arguments); - args.shift(); - - this.externalEvents.dispatch(...arguments); - } - - //////////////////// Alerts /////////////////// - - alert(contents, type){ - this.initGuard(); - - this.alertManager.alert(contents, type); - } - - clearAlert(){ - this.initGuard(); - - this.alertManager.clear(); - } - - ////////////// Extension Management ////////////// - modExists(plugin, required){ - if(this.modules[plugin]){ - return true; - }else { - if(required){ - console.error("Tabulator Module Not Installed: " + plugin); - } - return false; - } - } - - module(key){ - var mod = this.modules[key]; - - if(!mod){ - console.error("Tabulator module not installed: " + key); - } - - return mod; - } -} - -//default setup options -Tabulator.defaultOptions = defaultOptions; - -//bind modules and static functionality -new ModuleBinder(Tabulator); - -//tabulator with all modules installed - -class TabulatorFull extends Tabulator {} - -//bind modules and static functionality -new ModuleBinder(TabulatorFull, modules); - -class PseudoRow { - - constructor (type){ - this.type = type; - this.element = this._createElement(); - } - - _createElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-row"); - return el; - } - - getElement(){ - return this.element; - } - - getComponent(){ - return false; - } - - getData(){ - return {}; - } - - getHeight(){ - return this.element.outerHeight; - } - - initialize(){} - - reinitialize(){} - - normalizeHeight(){} - - generateCells(){} - - reinitializeHeight(){} - - calcHeight(){} - - setCellHeight(){} - - clearCellHeight(){} - - rendered(){} -} - -export { Accessor as AccessorModule, Ajax as AjaxModule, CalcComponent, CellComponent, Clipboard as ClipboardModule, ColumnCalcs as ColumnCalcsModule, ColumnComponent, DataTree as DataTreeModule, Download as DownloadModule, Edit$1 as EditModule, Export as ExportModule, Filter as FilterModule, Format as FormatModule, FrozenColumns as FrozenColumnsModule, FrozenRows as FrozenRowsModule, GroupComponent, GroupRows as GroupRowsModule, History as HistoryModule, HtmlTableImport as HtmlTableImportModule, Import as ImportModule, Interaction as InteractionModule, Keybindings as KeybindingsModule, Menu as MenuModule, Module, MoveColumns as MoveColumnsModule, MoveRows as MoveRowsModule, Mutator as MutatorModule, Page as PageModule, Persistence as PersistenceModule, Popup$1 as PopupModule, Print as PrintModule, PseudoRow, ReactiveData as ReactiveDataModule, Renderer, ResizeColumns as ResizeColumnsModule, ResizeRows as ResizeRowsModule, ResizeTable as ResizeTableModule, ResponsiveLayout as ResponsiveLayoutModule, RowComponent, SelectRange as SelectRangeModule, SelectRow as SelectRowModule, Sort as SortModule, Tabulator, TabulatorFull, Tooltip as TooltipModule, Validate as ValidateModule }; -//# sourceMappingURL=tabulator_esm.js.map diff --git a/tmp/tabulator-5.6.1/dist/js/tabulator_esm.js.map b/tmp/tabulator-5.6.1/dist/js/tabulator_esm.js.map deleted file mode 100644 index 80b5a5c..0000000 --- a/tmp/tabulator-5.6.1/dist/js/tabulator_esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tabulator_esm.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/Popup.js","../../src/js/core/Module.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/column/Column.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/defaults/downloaders/jsonLines.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/date.js","../../src/js/modules/Edit/defaults/editors/time.js","../../src/js/modules/Edit/defaults/editors/datetime.js","../../src/js/modules/Edit/List.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/list.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/History/History.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Import/defaults/importers/array.js","../../src/js/modules/Import/defaults/importers.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Page/defaults/pageCounters/rows.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Popup/Popup.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/SelectRange/RangeComponent.js","../../src/js/modules/SelectRange/Range.js","../../src/js/modules/SelectRange/SelectRange.js","../../src/js/modules/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/defaults/options.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFunctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/DeprecationAdvisor.js","../../src/js/core/tools/TableRegistry.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/tools/Alert.js","../../src/js/core/Tabulator.js","../../src/js/core/TabulatorFull.js","../../src/js/core/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\t}\n\n\t//////////////////////////////////////////\n\t/////////////// DataLoad /////////////////\n\t//////////////////////////////////////////\n\n\treloadData(data, silent, columnsChanged){\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);\n\t}\n\n\t//////////////////////////////////////////\n\t///////////// Localization ///////////////\n\t//////////////////////////////////////////\n\n\tlangText(){\n\t\treturn this.table.modules.localize.getText(...arguments);\n\t}\n\n\tlangBind(){\n\t\treturn this.table.modules.localize.bind(...arguments);\n\t}\n\n\tlangLocale(){\n\t\treturn this.table.modules.localize.getLocale(...arguments);\n\t}\n\n\n\t//////////////////////////////////////////\n\t////////// Inter Table Comms /////////////\n\t//////////////////////////////////////////\n\n\tcommsConnections(){\n\t\treturn this.table.modules.comms.getConnections(...arguments);\n\t}\n\n\tcommsSend(){\n\t\treturn this.table.modules.comms.send(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Layout /////////////////\n\t//////////////////////////////////////////\n\n\tlayoutMode(){\n\t\treturn this.table.modules.layout.getMode();\n\t}\n\n\tlayoutRefresh(force){\n\t\treturn this.table.modules.layout.layout(force);\n\t}\n\n\n\t//////////////////////////////////////////\n\t/////////////// Event Bus ////////////////\n\t//////////////////////////////////////////\n\n\tsubscribe(){\n\t\treturn this.table.eventBus.subscribe(...arguments);\n\t}\n\n\tunsubscribe(){\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.table.eventBus.subscribed(key);\n\t}\n\n\tsubscriptionChange(){\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\n\t}\n\n\tdispatch(){\n\t\treturn this.table.eventBus.dispatch(...arguments);\n\t}\n\n\tchain(){\n\t\treturn this.table.eventBus.chain(...arguments);\n\t}\n\n\tconfirm(){\n\t\treturn this.table.eventBus.confirm(...arguments);\n\t}\n\n\tdispatchExternal(){\n\t\treturn this.table.externalEvents.dispatch(...arguments);\n\t}\n\n\tsubscribedExternal(key){\n\t\treturn this.table.externalEvents.subscribed(key);\n\t}\n\n\tsubscriptionChangeExternal(){\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Options /////////////////\n\t//////////////////////////////////////////\n\n\toptions(key){\n\t\treturn this.table.options[key];\n\t}\n\n\tsetOption(key, value){\n\t\tif(typeof value !== \"undefined\"){\n\t\t\tthis.table.options[key] = value;\n\t\t}\n\n\t\treturn this.table.options[key];\n\t}\n\n\t//////////////////////////////////////////\n\t/////////// Deprecation Checks ///////////\n\t//////////////////////////////////////////\n\n\tdeprecationCheck(oldOption, newOption, convert){\n\t\treturn this.table.deprecationAdvisor.check(oldOption, newOption, convert);\n\t}\n\n\tdeprecationCheckMsg(oldOption, msg){\n\t\treturn this.table.deprecationAdvisor.checkMsg(oldOption, msg);\n\t}\n\n\tdeprecationMsg(msg){\n\t\treturn this.table.deprecationAdvisor.msg(msg);\n\t}\n\t//////////////////////////////////////////\n\t//////////////// Modules /////////////////\n\t//////////////////////////////////////////\n\n\tmodule(key){\n\t\treturn this.table.module(key);\n\t}\n}","export default class Helpers{\n\n\tstatic elVisible(el){\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t}\n\n\tstatic 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\tstatic retrieveNestedData(separator, field, data){\n\t\tvar structure = separator ? field.split(separator) : [field],\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdata = data[structure[i]];\n\n\t\t\toutput = data;\n\n\t\t\tif(!data){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tstatic deepClone(obj, clone, list = []){\n\t\tvar objectProto = {}.__proto__,\n\t\tarrayProto = [].__proto__;\n\n\t\tif (!clone){\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\t\t}\n\n\t\tfor(var i in obj) {\n\t\t\tlet subject = obj[i],\n\t\t\tmatch, copy;\n\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\n\t\t\t\tmatch = list.findIndex((item) => {\n\t\t\t\t\treturn item.subject === subject;\n\t\t\t\t});\n\n\t\t\t\tif(match > -1){\n\t\t\t\t\tclone[i] = list[match].copy;\n\t\t\t\t}else{\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\n\n\t\t\t\t\tlist.unshift({subject, copy});\n\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn clone;\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\nimport Helpers from './Helpers.js';\n\nexport default class Popup extends CoreFeature{\n\tconstructor(table, element, parent){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = element;\n\t\tthis.container = this._lookupContainer();\n\t\t\n\t\tthis.parent = parent;\n\t\t\n\t\tthis.reversedX = false;\n\t\tthis.childPopup = null;\n\t\tthis.blurable = false;\n\t\tthis.blurCallback = null;\n\t\tthis.blurEventsBound = false;\n\t\tthis.renderedCallback = null;\n\t\t\n\t\tthis.visible = false;\n\t\tthis.hideable = true;\n\t\t\n\t\tthis.element.classList.add(\"tabulator-popup-container\");\n\t\t\n\t\tthis.blurEvent = this.hide.bind(this, false);\n\t\tthis.escEvent = this._escapeCheck.bind(this);\n\t\t\n\t\tthis.destroyBinding = this.tableDestroyed.bind(this);\n\t\tthis.destroyed = false;\n\t}\n\t\n\ttableDestroyed(){\n\t\tthis.destroyed = true;\n\t\tthis.hide(true);\n\t}\n\t\n\t_lookupContainer(){\n\t\tvar container = this.table.options.popupContainer;\n\t\t\n\t\tif(typeof container === \"string\"){\n\t\t\tcontainer = document.querySelector(container);\n\t\t\t\n\t\t\tif(!container){\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t\t}\n\t\t}else if (container === true){\n\t\t\tcontainer = this.table.element;\n\t\t}\n\t\t\n\t\tif(container && !this._checkContainerIsParent(container)){\n\t\t\tcontainer = false;\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t}\n\t\t\n\t\tif(!container){\n\t\t\tcontainer = document.body;\n\t\t}\n\t\t\n\t\treturn container;\n\t}\n\t\n\t_checkContainerIsParent(container, element = this.table.element){\n\t\tif(container === element){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\n\t\t}\n\t}\n\t\n\trenderCallback(callback){\n\t\tthis.renderedCallback = callback;\n\t}\n\t\n\tcontainerEventCoords(e){\n\t\tvar touch = !(e instanceof MouseEvent);\n\t\t\n\t\tvar x = touch ? e.touches[0].pageX : e.pageX;\n\t\tvar y = touch ? e.touches[0].pageY : e.pageY;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tlet parentOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\tx -= parentOffset.left;\n\t\t\ty -= parentOffset.top;\n\t\t}\n\t\t\n\t\treturn {x, y};\n\t}\n\t\n\telementPositionCoords(element, position = \"right\"){\n\t\tvar offset = Helpers.elOffset(element),\n\t\tcontainerOffset, x, y;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tcontainerOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\toffset.left -= containerOffset.left;\n\t\t\toffset.top -= containerOffset.top;\n\t\t}\n\t\t\n\t\tswitch(position){\n\t\t\tcase \"right\":\n\t\t\t\tx = offset.left + element.offsetWidth;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"bottom\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top + element.offsetHeight;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"left\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"top\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"center\":\n\t\t\t\tx = offset.left + (element.offsetWidth / 2);\n\t\t\t\ty = offset.top + (element.offsetHeight / 2);\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\treturn {x, y, offset};\n\t}\n\t\n\tshow(origin, position){\n\t\tvar x, y, parentEl, parentOffset, coords;\n\t\t\n\t\tif(this.destroyed || this.table.destroyed){\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif(origin instanceof HTMLElement){\n\t\t\tparentEl = origin;\n\t\t\tcoords = this.elementPositionCoords(origin, position);\n\t\t\t\n\t\t\tparentOffset = coords.offset;\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t}else if(typeof origin === \"number\"){\n\t\t\tparentOffset = {top:0, left:0};\n\t\t\tx = origin;\n\t\t\ty = position;\n\t\t}else{\n\t\t\tcoords = this.containerEventCoords(origin);\n\t\t\t\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t\tthis.reversedX = false;\n\t\t}\n\t\t\n\t\tthis.element.style.top = y + \"px\";\n\t\tthis.element.style.left = x + \"px\";\n\t\t\n\t\tthis.container.appendChild(this.element);\n\t\t\n\t\tif(typeof this.renderedCallback === \"function\"){\n\t\t\tthis.renderedCallback();\n\t\t}\n\t\t\n\t\tthis._fitToScreen(x, y, parentEl, parentOffset, position);\n\t\t\n\t\tthis.visible = true;\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.destroyBinding);\n\t\t\n\t\tthis.element.addEventListener(\"mousedown\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_fitToScreen(x, y, parentEl, parentOffset, position){\n\t\tvar scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\n\t\t\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\n\t\tif((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\n\t\t\tthis.element.style.left = \"\";\n\t\t\t\n\t\t\tif(parentEl){\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - x) + \"px\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.reversedX = true;\n\t\t}\n\t\t\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\t\tif((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\n\t\t\tif(parentEl){\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"bottom\":\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisVisible(){\n\t\treturn this.visible;\n\t}\n\t\n\thideOnBlur(callback){\n\t\tthis.blurable = true;\n\t\t\n\t\tif(this.visible){\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\n\t\t\t\t\tthis.subscribe(\"cell-editing\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\n\n\t\t\t\t\tthis.blurEventsBound = true;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\t\n\t\t\tthis.blurCallback = callback;\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_escapeCheck(e){\n\t\tif(e.keyCode == 27){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\t\n\tblockHide(){\n\t\tthis.hideable = false;\n\t}\n\t\n\trestoreHide(){\n\t\tthis.hideable = true;\n\t}\n\t\n\thide(silent = false){\n\t\tif(this.visible && this.hideable){\n\t\t\tif(this.blurable && this.blurEventsBound){\n\t\t\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\t\t\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\twindow.removeEventListener(\"resize\", this.blurEvent);\n\t\t\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n\t\t\t\tthis.unsubscribe(\"cell-editing\", this.blurEvent);\n\n\t\t\t\tthis.blurEventsBound = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.childPopup){\n\t\t\t\tthis.childPopup.hide();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.childPopup = null;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.visible = false;\n\t\t\t\n\t\t\tif(this.blurCallback && !silent){\n\t\t\t\tthis.blurCallback();\n\t\t\t}\n\t\t\t\n\t\t\tthis.unsubscribe(\"table-destroy\", this.destroyBinding);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\tchild(element){\n\t\tif(this.childPopup){\n\t\t\tthis.childPopup.hide();\n\t\t}\n\t\t\n\t\tthis.childPopup = new Popup(this.table, element, this);\n\t\t\n\t\treturn this.childPopup;\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Popup from './tools/Popup.js';\n\nclass Module extends CoreFeature{\n\t\n\tconstructor(table, name){\n\t\tsuper(table);\n\t\t\n\t\tthis._handler = null;\n\t}\n\t\n\tinitialize(){\n\t\t// setup module when table is initialized, to be overridden in module\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Options Registration ///////\n\t///////////////////////////////////\n\t\n\tregisterTableOption(key, value){\n\t\tthis.table.optionsList.register(key, value);\n\t}\n\t\n\tregisterColumnOption(key, value){\n\t\tthis.table.columnManager.optionsList.register(key, value);\n\t}\n\t\n\t///////////////////////////////////\n\t/// Public Function Registration ///\n\t///////////////////////////////////\n\t\n\tregisterTableFunction(name, func){\n\t\tif(typeof this.table[name] === \"undefined\"){\n\t\t\tthis.table[name] = (...args) => {\n\t\t\t\tthis.table.initGuard(name);\n\t\t\t\t\n\t\t\t\treturn func(...args);\n\t\t\t};\n\t\t}else{\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name);\n\t\t}\n\t}\n\t\n\tregisterComponentFunction(component, func, handler){\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Data Pipeline //////////\n\t///////////////////////////////////\n\t\n\tregisterDataHandler(handler, priority){\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tregisterDisplayHandler(handler, priority){\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tdisplayRows(adjust){\n\t\tvar index = this.table.rowManager.displayRows.length - 1, \n\t\tlookupIndex;\n\t\t\n\t\tif(this._handler){\n\t\t\tlookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => {\n\t\t\t\treturn item.handler === this._handler;\n\t\t\t});\n\n\t\t\tif(lookupIndex > -1){\n\t\t\t\tindex = lookupIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(adjust){\n\t\t\tindex = index + adjust;\n\t\t}\n\n\t\tif(this._handler){\n\t\t\tif(index > -1){\n\t\t\t\treturn this.table.rowManager.getDisplayRows(index);\n\t\t\t}else{\n\t\t\t\treturn this.activeRows();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tactiveRows(){\n\t\treturn this.table.rowManager.activeRows;\n\t}\n\t\n\trefreshData(renderInPosition, handler){\n\t\tif(!handler){\n\t\t\thandler = this._handler;\n\t\t}\n\t\t\n\t\tif(handler){\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Footer Management ////////\n\t///////////////////////////////////\n\t\n\tfooterAppend(element){\n\t\treturn this.table.footerManager.append(element);\n\t}\n\t\n\tfooterPrepend(element){\n\t\treturn this.table.footerManager.prepend(element);\n\t}\n\t\n\tfooterRemove(element){\n\t\treturn this.table.footerManager.remove(element);\n\t} \n\t\n\t///////////////////////////////////\n\t//////// Popups Management ////////\n\t///////////////////////////////////\n\t\n\tpopup(menuEl, menuContainer){\n\t\treturn new Popup(this.table, menuEl, menuContainer);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Alert Management ////////\n\t///////////////////////////////////\n\t\n\talert(content, type){\n\t\treturn this.table.alertManager.alert(content, type);\n\t}\n\t\n\tclearAlert(){\n\t\treturn this.table.alertManager.clear();\n\t}\n\t\n}\n\nexport default Module;","export default {};","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultAccessors from './defaults/accessors.js';\n\nclass Accessor extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n\n\t\tthis.registerColumnOption(\"accessor\");\n\t\tthis.registerColumnOption(\"accessorParams\");\n\t\tthis.registerColumnOption(\"accessorData\");\n\t\tthis.registerColumnOption(\"accessorDataParams\");\n\t\tthis.registerColumnOption(\"accessorDownload\");\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\n\t\tthis.registerColumnOption(\"accessorClipboard\");\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\n\t\tthis.registerColumnOption(\"accessorPrint\");\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\n\t}\n\n\t//initialize column accessor\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\taccessor;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor:accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}\n\n\tlookupAccessor(value){\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Accessor.accessors[value]){\n\t\t\t\t\taccessor = Accessor.accessors[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t}\n\n\t//apply accessor to row\n\ttransformRow(row, type){\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\trowComponent = row.getComponent();\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Helpers.deepClone(row.data || {});\n\n\t\tthis.table.columnManager.traverse(function(column){\n\t\t\tvar value, accessor, params, colComponent;\n\n\t\t\tif(column.modules.accessor){\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif(value != \"undefined\"){\n\t\t\t\t\t\tcolComponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n//load defaults\nAccessor.moduleName = \"accessor\";\nAccessor.accessors = defaultAccessors;\n\nexport default Accessor;","export default {\n\tmethod: \"GET\",\n};","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(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\nfunction serializeParams(params){\n\tvar output = generateParamsList(params),\n\tencoded = [];\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\nexport default function(url, config, params){\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(\"?\") ? \"&\" : \"?\") + serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n}","export default function(url, config, params){\n\tvar contentType;\n\n\treturn new Promise((resolve, reject) => {\n\t\t//set url\n\t\turl = this.urlGenerator.call(this.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 this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.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(this, url, config, params);\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif(url){\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\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\n\t\t\t\t\tconfig.headers[\"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)\n\t\t\t\t.then((response)=>{\n\t\t\t\t\tif(response.ok) {\n\t\t\t\t\t\tresponse.json()\n\t\t\t\t\t\t\t.then((data)=>{\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t}).catch((error)=>{\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error)=>{\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\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}","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(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\nexport default {\n\t\"json\":{\n\t\theaders:{\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tbody:function(url, config, params){\n\t\t\treturn JSON.stringify(params);\n\t\t},\n\t},\n\t\"form\":{\n\t\theaders:{\n\t\t},\n\t\tbody:function(url, config, params){\n\n\t\t\tvar output = generateParamsList(params),\n\t\t\tform = 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};","import Module from '../../core/Module.js';\n\nimport defaultConfig from './defaults/config.js';\nimport defaultURLGenerator from './defaults/urlGenerator.js';\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\n\nclass Ajax extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {}; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\t\t\n\t\tthis.loaderPromise = false;\n\t\t\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\n\t\t\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\n\t\t\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\n\t}\n\t\n\t//initialize setup options\n\tinitialize(){\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\n\t\t\n\t\tif(this.table.options.ajaxURL){\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\n\t\t\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\n\t}\n\t\n\trequestParams(data, config, silent, params){\n\t\tvar ajaxParams = this.table.options.ajaxParams;\n\t\t\n\t\tif(ajaxParams){\n\t\t\tif(typeof ajaxParams === \"function\"){\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\n\t\t\t}\n\t\t\t\n\t\t\tparams = Object.assign(Object.assign({}, ajaxParams), params);\n\t\t}\t\t\n\t\t\n\t\treturn params;\n\t}\n\t\n\trequestDataCheck(data, params, config, silent){\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\n\t}\n\t\n\trequestData(url, params, config, silent, previousData){\n\t\tvar ajaxConfig;\n\t\t\n\t\tif(!previousData && this.requestDataCheck(url)){\n\t\t\tif(url){\n\t\t\t\tthis.setUrl(url);\n\t\t\t}\n\t\t\t\n\t\t\tajaxConfig = this.generateConfig(config);\n\t\t\t\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\n\t\t}else{\n\t\t\treturn previousData;\n\t\t}\n\t}\n\t\n\tsetDefaultConfig(config = {}){\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\n\n\t\tif(typeof config == \"string\"){\n\t\t\tthis.config.method = config;\n\t\t}else{\n\t\t\tObject.assign(this.config, config);\n\t\t}\n\t}\n\t\n\t//load config object\n\tgenerateConfig(config = {}){\n\t\tvar ajaxConfig = Object.assign({}, this.config);\n\t\t\n\t\tif(typeof config == \"string\"){\n\t\t\tajaxConfig.method = config;\n\t\t}else{\n\t\t\tObject.assign(ajaxConfig, config);\n\t\t}\n\t\t\n\t\treturn ajaxConfig;\n\t}\n\t\n\t//set request url\n\tsetUrl(url){\n\t\tthis.url = url;\n\t}\n\t\n\t//get request url\n\tgetUrl(){\n\t\treturn this.url;\n\t}\n\t\n\t//send ajax request\n\tsendRequest(url, params, config){\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\n\t\t\treturn this.loaderPromise(url, config, params)\n\t\t\t\t.then((data)=>{\n\t\t\t\t\tif(this.table.options.ajaxResponse){\n\t\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n}\n\nAjax.moduleName = \"ajax\";\n\n//load defaults\nAjax.defaultConfig = defaultConfig;\nAjax.defaultURLGenerator = defaultURLGenerator;\nAjax.defaultLoaderPromise = defaultLoaderPromise;\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\n\nexport default Ajax;","export default {\n\treplace:function(data){\n\t\treturn this.table.setData(data);\n\t},\n\tupdate:function(data){\n\t\treturn this.table.updateOrAddData(data);\n\t},\n\tinsert:function(data){\n\t\treturn this.table.addData(data);\n\t},\n\trange:function(data){\n\t\tvar rows = [],\n\t\trange = this.table.modules.selectRange.activeRange,\n\t\tsingleCell = false,\n\t\tbounds, startCell, startRow, rowWidth, dataLength;\n\n\t\tdataLength = data.length;\n\t\t\n\t\tif(range){\n\t\t\tbounds = range.getBounds();\n\t\t\tstartCell = bounds.start;\n\t\t\t\n\t\t\tif(bounds.start === bounds.end){\n\t\t\t\tsingleCell = true;\n\t\t\t}\n\t\t\t\n\t\t\tif(startCell){\n\t\t\t\trows = this.table.rowManager.activeRows.slice();\n\t\t\t\tstartRow = rows.indexOf(startCell.row);\n\n\t\t\t\tif(singleCell){\n\t\t\t\t\trowWidth = data.length;\n\t\t\t\t}else{\n\t\t\t\t\trowWidth = (rows.indexOf(bounds.end.row) - startRow) + 1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif(startRow >-1){\n\t\t\t\t\tthis.table.blockRedraw();\n\t\t\t\t\t\n\t\t\t\t\trows = rows.slice(startRow, startRow + rowWidth);\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row, i) => {\n\t\t\t\t\t\trow.updateData(data[i % dataLength]);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.table.restoreRedraw();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n};","export default {\n\ttable:function(clipboard){\n\t\tvar data = [],\n\t\theaderFindSuccess = true,\n\t\tcolumns = this.table.columnManager.columns,\n\t\tcolumnMap = [],\n\t\trows = [];\n\t\t\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\t\t\n\t\tclipboard.forEach(function(row){\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\t\t\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\n\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\t\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\t\t\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\n\t\t\tdata.forEach(function(item){\n\t\t\t\tvar row = {};\n\t\t\t\t\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\t\t\t\t\n\t\t\t\trows.push(row);\n\t\t\t});\n\t\t\t\n\t\t\treturn rows;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t},\n\trange:function(clipboard){\n\t\tvar data = [],\n\t\trows = [],\n\t\trange = this.table.modules.selectRange.activeRange,\n\t\tsingleCell = false,\n\t\tbounds, startCell, colWidth, columnMap, startCol;\n\t\t\n\t\tif(range){\n\t\t\tbounds = range.getBounds();\n\t\t\tstartCell = bounds.start;\n\n\t\t\tif(bounds.start === bounds.end){\n\t\t\t\tsingleCell = true;\n\t\t\t}\n\t\t\t\n\t\t\tif(startCell){\n\t\t\t\t//get data from clipboard into array of columns and rows.\n\t\t\t\tclipboard = clipboard.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tclipboard.forEach(function(row){\n\t\t\t\t\tdata.push(row.split(\"\\t\"));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(data.length){\n\t\t\t\t\tcolumnMap = this.table.columnManager.getVisibleColumnsByIndex();\n\t\t\t\t\tstartCol = columnMap.indexOf(startCell.column);\n\n\t\t\t\t\tif(startCol > -1){\n\t\t\t\t\t\tif(singleCell){\n\t\t\t\t\t\t\tcolWidth = data[0].length;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcolWidth = (columnMap.indexOf(bounds.end.column) - startCol) + 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcolumnMap = columnMap.slice(startCol, startCol + colWidth);\n\n\t\t\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\t\t\tvar row = {};\n\t\t\t\t\t\t\tvar itemLength = item.length;\n\n\t\t\t\t\t\t\tcolumnMap.forEach(function(col, i){\n\t\t\t\t\t\t\t\trow[col.field] = item[i % itemLength];\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\trows.push(row);\t\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn rows;\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n};","import Module from '../../core/Module.js';\n\nimport defaultPasteActions from './defaults/pasteActions.js';\nimport defaultPasteParsers from './defaults/pasteParsers.js';\n\nclass Clipboard extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = true;\n\t\tthis.pasteParser = function(){};\n\t\tthis.pasteAction = function(){};\n\t\tthis.customSelection = false;\n\t\tthis.rowRange = false;\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRECATED - REMOVE in 5.0\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\n\n\t\tthis.registerColumnOption(\"clipboard\");\n\t\tthis.registerColumnOption(\"titleClipboard\");\n\t}\n\n\tinitialize(){\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\t\tif(this.mode === true || this.mode === \"copy\"){\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\n\t\t\t\tvar plain, html, list;\n\n\t\t\t\tif(!this.blocked){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif(this.customSelection){\n\t\t\t\t\t\tplain = this.customSelection;\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tlist = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\n\n\t\t\t\t\t\thtml = this.table.modules.export.generateHTMLTable(list);\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\n\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif(this.mode === true || this.mode === \"paste\"){\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\n\t\t\t\tthis.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\n\t}\n\n\treset(){\n\t\tthis.blocked = true;\n\t\tthis.customSelection = false;\n\t}\n\n\tgeneratePlainContent (list) {\n\t\tvar output = [];\n\n\t\tlist.forEach((row) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach((col) => {\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif(col){\n\n\t\t\t\t\tif(row.type === \"group\"){\n\t\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(col.value === null){\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowData.push(value);\n\t\t\t});\n\n\t\t\toutput.push(rowData.join(\"\\t\"));\n\t\t});\n\n\t\treturn output.join(\"\\n\");\n\t}\n\n\tcopy (range, internal) {\n\t\tvar sel, textRange;\n\t\tthis.blocked = false;\n\t\tthis.customSelection = false;\n\t\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t}\n\n\t//PASTE EVENT HANDLING\n\tsetPasteAction(action){\n\n\t\tswitch(typeof action){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\n\n\t\t\t\tif(!this.pasteAction){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetPasteParser(parser){\n\t\tswitch(typeof parser){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\n\n\t\t\t\tif(!this.pasteParser){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpaste(e){\n\t\tvar data, rowData, rows;\n\n\t\tif(this.checkPasteOrigin(e)){\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif(rowData){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif(this.table.modExists(\"mutator\")){\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\n\t\t\t}\n\t\t}\n\t}\n\n\tmutateData(data){\n\t\tvar output = [];\n\n\t\tif(Array.isArray(data)){\n\t\t\tdata.forEach((row) => {\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t}else{\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\n\tcheckPasteOrigin(e){\n\t\tvar valid = true;\n\t\tvar blocked = this.confirm(\"clipboard-paste\", [e]);\n\n\t\tif(blocked || ![\"DIV\", \"SPAN\"].includes(e.target.tagName)){\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t}\n\n\tgetPasteData(e){\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t}\n}\n\nClipboard.moduleName = \"clipboard\";\n\n//load defaults\nClipboard.pasteActions = defaultPasteActions;\nClipboard.pasteParsers = defaultPasteParsers;\n\nexport default Clipboard;","class CalcComponent{\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n}\n\nexport default CalcComponent;","//public cell object\nexport default class CellComponent {\n\n\tconstructor (cell){\n\t\tthis._cell = cell;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue(){\n\t\treturn this._cell.getValue();\n\t}\n\n\tgetOldValue(){\n\t\treturn this._cell.getOldValue();\n\t}\n\n\tgetInitialValue(){\n\t\treturn this._cell.initialValue;\n\t}\n\n\tgetElement(){\n\t\treturn this._cell.getElement();\n\t}\n\n\tgetRow(){\n\t\treturn this._cell.row.getComponent();\n\t}\n\n\tgetData(transform){\n\t\treturn this._cell.row.getData(transform);\n\t}\n\tgetType(){\n\t\treturn \"cell\";\n\t}\n\tgetField(){\n\t\treturn this._cell.column.getField();\n\t}\n\n\tgetColumn(){\n\t\treturn this._cell.column.getComponent();\n\t}\n\n\tsetValue(value, mutate){\n\t\tif(typeof mutate == \"undefined\"){\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t}\n\n\trestoreOldValue(){\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t}\n\n\trestoreInitialValue(){\n\t\tthis._cell.setValueActual(this._cell.initialValue);\n\t}\n\n\tcheckHeight(){\n\t\tthis._cell.checkHeight();\n\t}\n\n\tgetTable(){\n\t\treturn this._cell.table;\n\t}\n\n\t_getSelf(){\n\t\treturn this._cell;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport CellComponent from './CellComponent.js';\n\nexport default class Cell extends CoreFeature{\n\tconstructor(column, row){\n\t\tsuper(column.table);\n\n\t\tthis.table = column.table;\n\t\tthis.column = column;\n\t\tthis.row = row;\n\t\tthis.element = null;\n\t\tthis.value = null;\n\t\tthis.initialValue;\n\t\tthis.oldValue = null;\n\t\tthis.modules = {};\n\n\t\tthis.height = null;\n\t\tthis.width = null;\n\t\tthis.minWidth = null;\n\n\t\tthis.component = null;\n\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\t\tthis.build();\n\t}\n\n\t//////////////// Setup Functions /////////////////\n\t//generate element\n\tbuild(){\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\t\tthis.initialValue = this.value;\n\t}\n\n\tgenerateElement(){\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = \"tabulator-cell\";\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\t}\n\n\t_configureCell(){\n\t\tvar element = this.element,\n\t\tfield = this.column.getField(),\n\t\tvertAligns = {\n\t\t\ttop:\"flex-start\",\n\t\t\tbottom:\"flex-end\",\n\t\t\tmiddle:\"center\",\n\t\t},\n\t\thozAligns = {\n\t\t\tleft:\"flex-start\",\n\t\t\tright:\"flex-end\",\n\t\t\tcenter:\"center\",\n\t\t};\n\n\t\t//set text alignment\n\t\telement.style.textAlign = this.column.hozAlign;\n\n\t\tif(this.column.vertAlign){\n\t\t\telement.style.display = \"inline-flex\";\n\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\n\n\t\t\tif(this.column.hozAlign){\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif(field){\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\t\tif(this.column.definition.cssClass){\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatch(\"cell-init\", this);\n\n\t\t//hide cell if not visible\n\t\tif(!this.column.visible){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//generate cell contents\n\t_generateContents(){\n\t\tvar val;\n\n\t\tval = this.chain(\"cell-format\", this, null, () => {\n\t\t\treturn this.element.innerHTML = this.value;\n\t\t});\n\n\t\tswitch(typeof val){\n\t\t\tcase \"object\":\n\t\t\t\tif(val instanceof Node){\n\n\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\t\t\t\tthis.element.appendChild(val);\n\t\t\t\t}else{\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif(val != null){\n\t\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\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tthis.element.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element.innerHTML = val;\n\t\t}\n\t}\n\n\tcellRendered(){\n\t\tthis.dispatch(\"cell-rendered\", this);\n\t}\n\n\t//////////////////// Getters ////////////////////\n\tgetElement(containerOnly){\n\t\tif(!this.loaded){\n\t\t\tthis.loaded = true;\n\t\t\tif(!containerOnly){\n\t\t\t\tthis.layoutElement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.element;\n\t}\n\n\tgetValue(){\n\t\treturn this.value;\n\t}\n\n\tgetOldValue(){\n\t\treturn this.oldValue;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tsetValue(value, mutate, force){\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\n\n\t\t\tthis.cellRendered();\n\n\t\t\tif(this.column.definition.cellEdited){\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\n\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValueProcessData(value, mutate, force){\n\t\tvar changed = false;\n\n\t\tif(this.value !== value || force){\n\n\t\t\tchanged = true;\n\n\t\t\tif(mutate){\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\tsetValueActual(value){\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tthis.dispatch(\"cell-value-save-before\", this);\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tthis.dispatch(\"cell-value-save-after\", this);\n\n\t\tif(this.loaded){\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\tlayoutElement(){\n\t\tthis._generateContents();\n\n\t\tthis.dispatch(\"cell-layout\", this);\n\t}\n\n\tsetWidth(){\n\t\tthis.width = this.column.width;\n\t\tthis.element.style.width = this.column.widthStyled;\n\t}\n\n\tclearWidth(){\n\t\tthis.width = \"\";\n\t\tthis.element.style.width = \"\";\n\t}\n\n\tgetWidth(){\n\t\treturn this.width || this.element.offsetWidth;\n\t}\n\n\tsetMinWidth(){\n\t\tthis.minWidth = this.column.minWidth;\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t}\n\n\tsetMaxWidth(){\n\t\tthis.maxWidth = this.column.maxWidth;\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n\t}\n\n\tcheckHeight(){\n\t\t// var height = this.element.css(\"height\");\n\t\tthis.row.reinitializeHeight();\n\t}\n\n\tclearHeight(){\n\t\tthis.element.style.height = \"\";\n\t\tthis.height = null;\n\n\t\tthis.dispatch(\"cell-height\", this, \"\");\n\t}\n\n\tsetHeight(){\n\t\tthis.height = this.row.height;\n\t\tthis.element.style.height = this.row.heightStyled;\n\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\n\t}\n\n\tgetHeight(){\n\t\treturn this.height || this.element.offsetHeight;\n\t}\n\n\tshow(){\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n\t}\n\n\thide(){\n\t\tthis.element.style.display = \"none\";\n\t}\n\n\tdelete(){\n\t\tthis.dispatch(\"cell-delete\", this);\n\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.element = false;\n\t\tthis.column.deleteCell(this);\n\t\tthis.row.deleteCell(this);\n\t\tthis.calcs = {};\n\t}\n\n\tgetIndex(){\n\t\treturn this.row.getCellIndex(this);\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new CellComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n","import Column from './Column.js';\n\n//public column object\nexport default class ColumnComponent {\n\tconstructor (column){\n\t\tthis._column = column;\n\t\tthis.type = \"ColumnComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetElement(){\n\t\treturn this._column.getElement();\n\t}\n\n\tgetDefinition(){\n\t\treturn this._column.getDefinition();\n\t}\n\n\tgetField(){\n\t\treturn this._column.getField();\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this._column.getTitleDownload();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tisVisible(){\n\t\treturn this._column.visible;\n\t}\n\n\tshow(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.show();\n\t\t}\n\t}\n\n\thide(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.hide();\n\t\t}\n\t}\n\n\ttoggle(){\n\t\tif(this._column.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tdelete(){\n\t\treturn this._column.delete();\n\t}\n\n\tgetSubColumns(){\n\t\tvar output = [];\n\n\t\tif(this._column.columns.length){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetParentColumn(){\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._column;\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);\n\t}\n\n\tgetTable(){\n\t\treturn this._column.table;\n\t}\n\n\tmove(to, after){\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\t\tif(toColumn){\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t}\n\n\tgetNextColumn(){\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t}\n\n\tgetPrevColumn(){\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t}\n\n\tupdateDefinition(updates){\n\t\treturn this._column.updateDefinition(updates);\n\t}\n\n\tgetWidth(){\n\t\treturn this._column.getWidth();\n\t}\n\n\tsetWidth(width){\n\t\tvar result;\n\n\t\tif(width === true){\n\t\t\tresult = this._column.reinitializeWidth(true);\n\t\t}else{\n\t\t\tresult = this._column.setWidth(width);\n\t\t}\n\n\t\tthis._column.table.columnManager.rerenderColumns(true);\n\n\t\treturn result;\n\t}\n}","export default {\n\t\"title\": undefined,\n\t\"field\": undefined,\n\t\"columns\": undefined,\n\t\"visible\": undefined,\n\t\"hozAlign\": undefined,\n\t\"vertAlign\": undefined,\n\t\"width\": undefined,\n\t\"minWidth\": 40,\n\t\"maxWidth\": undefined,\n\t\"maxInitialWidth\": undefined,\n\t\"cssClass\": undefined,\n\t\"variableHeight\": undefined,\n\t\"headerVertical\": undefined,\n\t\"headerHozAlign\": undefined,\n\t\"headerWordWrap\": false,\n\t\"editableTitle\": undefined,\n};","import CoreFeature from '../CoreFeature.js';\nimport ColumnComponent from './ColumnComponent.js';\nimport defaultOptions from './defaults/options.js';\n\nimport Cell from '../cell/Cell.js';\n\nclass Column extends CoreFeature{\n\n\tconstructor(def, parent){\n\t\tsuper(parent.table);\n\n\t\tthis.definition = def; //column definition\n\t\tthis.parent = parent; //hold parent object\n\t\tthis.type = \"column\"; //type of element\n\t\tthis.columns = []; //child columns\n\t\tthis.cells = []; //cells bound to this column\n\t\tthis.element = this.createElement(); //column header element\n\t\tthis.contentElement = false;\n\t\tthis.titleHolderElement = false;\n\t\tthis.titleElement = false;\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\t\tthis.isGroup = false;\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\t\tthis.vertAlign = \"\"; //vert text alignment\n\n\t\t//multi dimensional filed handling\n\t\tthis.field =\"\";\n\t\tthis.fieldStructure = \"\";\n\t\tthis.getFieldValue = \"\";\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.titleDownload = null;\n\t\tthis.titleFormatterRendered = false;\n\n\t\tthis.mapDefinitions();\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.width = null; //column width\n\t\tthis.widthStyled = \"\"; //column width pre-styled to improve render efficiency\n\t\tthis.maxWidth = null; //column maximum width\n\t\tthis.maxWidthStyled = \"\"; //column maximum pre-styled to improve render efficiency\n\t\tthis.maxInitialWidth = null;\n\t\tthis.minWidth = null; //column minimum width\n\t\tthis.minWidthStyled = \"\"; //column minimum pre-styled to improve render efficiency\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\t\tthis.visible = true; //default visible state\n\n\t\tthis.component = null;\n\n\t\t//initialize column\n\t\tif(this.definition.columns){\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tthis.definition.columns.forEach((def, i) => {\n\t\t\t\tvar newCol = new Column(def, this);\n\t\t\t\tthis.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tthis.checkColumnVisibility();\n\t\t}else{\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tthis._initialize();\n\t}\n\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\tswitch(this.table.options.columnHeaderVertAlign){\n\t\t\tcase \"middle\":\n\t\t\t\tel.style.justifyContent = \"center\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tel.style.justifyContent = \"flex-end\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tcreateGroupElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t}\n\n\tmapDefinitions(){\n\t\tvar defaults = this.table.options.columnDefaults;\n\n\t\t//map columnDefaults onto column definitions\n\t\tif(defaults){\n\t\t\tfor(let key in defaults){\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\n\t\t\t\t\tthis.definition[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);\n\t}\n\n\tcheckDefinition(){\n\t\tObject.keys(this.definition).forEach((key) => {\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetField(field){\n\t\tthis.field = field;\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n\t}\n\n\t//register column position with column manager\n\tregisterColumnPosition(column){\n\t\tthis.parent.registerColumnPosition(column);\n\t}\n\n\t//register column position with column manager\n\tregisterColumnField(column){\n\t\tthis.parent.registerColumnField(column);\n\t}\n\n\t//trigger position registration\n\treRegisterPosition(){\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t}else{\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t}\n\n\t//build header element\n\t_initialize(){\n\t\tvar def = this.definition;\n\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\tif(def.headerVertical){\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif(def.headerVertical === \"flip\"){\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tthis.contentElement = this._buildColumnHeaderContent();\n\n\t\tthis.element.appendChild(this.contentElement);\n\n\t\tif(this.isGroup){\n\t\t\tthis._buildGroupHeader();\n\t\t}else{\n\t\t\tthis._buildColumnHeader();\n\t\t}\n\n\t\tthis.dispatch(\"column-init\", this);\n\t}\n\n\t//build header element for header\n\t_buildColumnHeader(){\n\t\tvar def = this.definition;\n\n\t\tthis.dispatch(\"column-layout\", this);\n\n\t\t//set column visibility\n\t\tif(typeof def.visible != \"undefined\"){\n\t\t\tif(def.visible){\n\t\t\t\tthis.show(true);\n\t\t\t}else{\n\t\t\t\tthis.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//assign additional css classes to column header\n\t\tif(def.cssClass){\n\t\t\tvar classNames = def.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif(def.field){\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\t\tthis.setMinWidth(parseInt(def.minWidth));\n\n\t\tif (def.maxInitialWidth) {\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\n\t\t}\n\t\t\n\t\tif(def.maxWidth){\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\n\t\t}\n\n\t\tthis.reinitializeWidth();\n\n\t\t//set horizontal text alignment\n\t\tthis.hozAlign = this.definition.hozAlign;\n\t\tthis.vertAlign = this.definition.vertAlign;\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\t}\n\n\t_buildColumnHeaderContent(){\n\t\tvar contentElement = document.createElement(\"div\");\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tthis.titleHolderElement = document.createElement(\"div\");\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\t\tcontentElement.appendChild(this.titleHolderElement);\n\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\t\treturn contentElement;\n\t}\n\n\t//build title element of column\n\t_buildColumnHeaderTitle(){\n\t\tvar def = this.definition;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\t\t\n\t\tif(def.headerWordWrap){\n\t\t\ttitleHolderElement.classList.add(\"tabulator-col-title-wrap\");\n\t\t}\n\n\t\tif(def.editableTitle){\n\t\t\tvar titleElement = document.createElement(\"input\");\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", () => {\n\t\t\t\tdef.title = titleElement.value;\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\n\t\t}else{\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t}\n\n\t_formatColumnHeaderTitle(el, title){\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\n\t\t\treturn title;\n\t\t});\n\n\t\tswitch(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\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t}\n\n\t//build header element for column group\n\t_buildGroupHeader(){\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\t//asign additional css classes to column header\n\t\tif(this.definition.cssClass){\n\t\t\tvar classNames = this.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\n\t\tthis.element.appendChild(this.groupElement);\n\t}\n\n\t//flat field lookup\n\t_getFlatData(data){\n\t\treturn data[this.field];\n\t}\n\n\t//nested field lookup\n\t_getNestedData(data){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif(!dataObj){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//flat field set\n\t_setFlatData(data, value){\n\t\tif(this.field){\n\t\t\tdata[this.field] = value;\n\t\t}\n\t}\n\n\t//nested field set\n\t_setNestedData(data, value){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tif(i == length -1){\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t}else{\n\t\t\t\tif(!dataObj[structure[i]]){\n\t\t\t\t\tif(typeof value !== \"undefined\"){\n\t\t\t\t\t\tdataObj[structure[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\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t//attach column to this group\n\tattachColumn(column){\n\t\tif(this.groupElement){\n\t\t\tthis.columns.push(column);\n\t\t\tthis.groupElement.appendChild(column.getElement());\n\n\t\t\tcolumn.columnRendered();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t}\n\n\t//vertically align header in column\n\tverticalAlign(alignment, height){\n\n\t\t//calculate height of column header and group holder element\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\n\n\t\tif(this.isGroup){\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\t\t// if(!this.isGroup && alignment !== \"top\"){\n\t\t// \tif(alignment === \"bottom\"){\n\t\t// \t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t// \t}else{\n\t\t// \t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\n\t\t// \t}\n\t\t// }\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t}\n\n\t//clear vertical alignment\n\tclearVerticalAlign(){\n\t\tthis.element.style.paddingTop = \"\";\n\t\tthis.element.style.height = \"\";\n\t\tthis.element.style.minHeight = \"\";\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\n\t\tthis.dispatch(\"column-height\", this, \"\");\n\t}\n\n\t//// Retrieve Column Information ////\n\t//return column header element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return column group element\n\tgetGroupElement(){\n\t\treturn this.groupElement;\n\t}\n\n\t//return field name\n\tgetField(){\n\t\treturn this.field;\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this.titleDownload;\n\t}\n\n\t//return the first column in a group\n\tgetFirstColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return the last column in a group\n\tgetLastColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return all columns in a group\n\tgetColumns(traverse){\n\t\tvar columns = [];\n\n\t\tif(traverse){\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumns.push(column);\n\t\t\t\t\t\n\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t});\n\t\t}else{\n\t\t\tcolumns = this.columns;\n\t\t}\n\t\t\n\t\treturn columns;\n\t}\n\n\t//return all columns in a group\n\tgetCells(){\n\t\treturn this.cells;\n\t}\n\n\t//retrieve the top column in a group of columns\n\tgetTopColumn(){\n\t\tif(this.parent.isGroup){\n\t\t\treturn this.parent.getTopColumn();\n\t\t}else{\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t//return column definition object\n\tgetDefinition(updateBranches){\n\t\tvar colDefs = [];\n\n\t\tif(this.isGroup && updateBranches){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tcheckColumnVisibility(){\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tif(column.visible){\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif(visible){\n\t\t\tthis.show();\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t}else{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//show column\n\tshow(silent, responsiveToggle){\n\t\tif(!this.visible){\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif(!this.isGroup && this.width === null){\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\t//hide column\n\thide(silent, responsiveToggle){\n\t\tif(this.visible){\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\tmatchChildWidths(){\n\t\tvar childWidth = 0;\n\n\t\tif(this.contentElement && this.columns.length){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveChild(child){\n\t\tvar index = this.columns.indexOf(child);\n\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif(!this.columns.length){\n\t\t\tthis.delete();\n\t\t}\n\t}\n\n\tsetWidth(width){\n\t\tthis.widthFixed = true;\n\t\tthis.setWidthActual(width);\n\t}\n\n\tsetWidthActual(width){\n\t\tif(isNaN(width)){\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tif(this.maxWidth){\n\t\t\twidth = Math.min(this.maxWidth, width);\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif(!this.isGroup){\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif(this.parent.isGroup){\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tthis.dispatch(\"column-width\", this);\n\t}\n\n\tcheckCellHeights(){\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tif(cell.row.heightInitialized){\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\n\t\t\t\t\trows.push(cell.row);\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t}else{\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.setCellHeight();\n\t\t});\n\t}\n\n\tgetWidth(){\n\t\tvar width = 0;\n\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\twidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\twidth = this.width;\n\t\t}\n\n\t\treturn width;\n\t}\n\n\tgetLeftOffset(){\n\t\tvar offset = this.element.offsetLeft;\n\n\t\tif(this.parent.isGroup){\n\t\t\toffset += this.parent.getLeftOffset();\n\t\t}\n\n\t\treturn offset;\n\t}\n\n\tgetHeight(){\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\n\t}\n\n\tsetMinWidth(minWidth){\n\t\tif(this.maxWidth && minWidth > this.maxWidth){\n\t\t\tminWidth = this.maxWidth;\n\n\t\t\tconsole.warn(\"the minWidth (\"+ minWidth + \"px) for column '\" + this.field + \"' cannot be bigger that its maxWidth (\"+ this.maxWidthStyled + \")\");\n\t\t}\n\n\t\tthis.minWidth = minWidth;\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMinWidth();\n\t\t});\n\t}\n\n\tsetMaxWidth(maxWidth){\n\t\tif(this.minWidth && maxWidth < this.minWidth){\n\t\t\tmaxWidth = this.minWidth;\n\n\t\t\tconsole.warn(\"the maxWidth (\"+ maxWidth + \"px) for column '\" + this.field + \"' cannot be smaller that its minWidth (\"+ this.minWidthStyled + \")\");\n\t\t}\n\n\t\tthis.maxWidth = maxWidth;\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMaxWidth();\n\t\t});\n\t}\n\n\tdelete(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(this.isGroup){\n\t\t\t\tthis.columns.forEach(function(column){\n\t\t\t\t\tcolumn.delete();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dispatch(\"column-delete\", this);\n\n\t\t\tvar cellCount = this.cells.length;\n\n\t\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\t\tthis.cells[0].delete();\n\t\t\t}\n\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.element = false;\n\t\t\tthis.contentElement = false;\n\t\t\tthis.titleElement = false;\n\t\t\tthis.groupElement = false;\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.removeChild(this);\n\t\t\t}\n\n\t\t\tthis.table.columnManager.deregisterColumn(this);\n\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\n\t\t\tthis.dispatch(\"column-deleted\", this);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\tcolumnRendered(){\n\t\tif(this.titleFormatterRendered){\n\t\t\tthis.titleFormatterRendered();\n\t\t}\n\n\t\tthis.dispatch(\"column-rendered\", this);\n\t}\n\n\t//////////////// Cell Management /////////////////\n\t//generate cell for this column\n\tgenerateCell(row){\n\t\tvar cell = new Cell(this, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t}\n\n\tnextColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n\t}\n\n\t_nextVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n\t}\n\n\tprevColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n\t}\n\n\t_prevVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n\t}\n\n\treinitializeWidth(force){\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\n\t\t\t// maxInitialWidth ignored here as width specified\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\tthis.dispatch(\"column-width-fit-before\", this);\n\n\t\tthis.fitToData(force);\n\n\t\tthis.dispatch(\"column-width-fit-after\", this);\n\t}\n\n\t//set column width to maximum cell width for non group columns\n\tfitToData(force){\n\t\tif(this.isGroup){\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.widthFixed){\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif(!this.width || !this.widthFixed){\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif(width > maxWidth){\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(maxWidth){\n\t\t\t\tvar setTo = maxWidth + 1;\n\t\t\t\tif (this.maxInitialWidth && !force) {\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\n\t\t\t\t}\n\t\t\t\tthis.setWidthActual(setTo);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateDefinition(updates){\n\t\tvar definition;\n\n\t\tif(!this.isGroup){\n\t\t\tif(!this.parent.isGroup){\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\n\t\t\t\t\t.then((column) => {\n\n\t\t\t\t\t\tif(definition.field == this.field){\n\t\t\t\t\t\t\tthis.field = false; //clear field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.delete()\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treturn Promise.reject(\"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.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t}\n\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new ColumnComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n\n\tgetPosition(){\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex().indexOf(this) + 1;\n\t}\n}\n\nColumn.defaultOptionList = defaultOptions;\n\nexport default Column;\n","//public row object\nexport default class RowComponent {\n\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\tgetIndex(){\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t}\n\n\tgetPosition(){\n\t\treturn this._row.getPosition();\n\t}\n\n\twatchPosition(callback){\n\t\treturn this._row.watchPosition(callback);\n\t}\n\n\tdelete(){\n\t\treturn this._row.delete();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._row.table.rowManager.scrollToRow(this._row, position, ifVisible);\n\t}\n\n\tmove(to, after){\n\t\tthis._row.moveToRow(to, after);\n\t}\n\n\tupdate(data){\n\t\treturn this._row.updateData(data);\n\t}\n\n\tnormalizeHeight(){\n\t\tthis._row.normalizeHeight(true);\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n\n\treformat(){\n\t\treturn this._row.reinitialize();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetNextRow(){\n\t\tvar row = this._row.nextRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n\n\tgetPrevRow(){\n\t\tvar row = this._row.prevRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport RowComponent from './RowComponent.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Row extends CoreFeature{\n\tconstructor (data, parent, type = \"row\"){\n\t\tsuper(parent.table);\n\t\t\n\t\tthis.parent = parent;\n\t\tthis.data = {};\n\t\tthis.type = type; //type of element\n\t\tthis.element = false;\n\t\tthis.modules = {}; //hold module variables;\n\t\tthis.cells = [];\n\t\tthis.height = 0; //hold element height\n\t\tthis.heightStyled = \"\"; //hold element height pre-styled to improve render efficiency\n\t\tthis.manualHeight = false; //user has manually set row height\n\t\tthis.outerHeight = 0; //hold elements outer height\n\t\tthis.initialized = false; //element has been rendered\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\t\tthis.position = 0; //store position of element in row list\n\t\tthis.positionWatchers = [];\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.created = false;\n\t\t\n\t\tthis.setData(data);\n\t}\n\t\n\tcreate(){\n\t\tif(!this.created){\n\t\t\tthis.created = true;\n\t\t\tthis.generateElement();\n\t\t}\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\tthis.element = el;\n\t}\n\t\n\tgetElement(){\n\t\tthis.create();\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.createElement();\n\t\tthis.dispatch(\"row-init\", this);\n\t}\n\t\n\tgenerateCells(){\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t}\n\t\n\t//functions to setup on first render\n\tinitialize(force, inFragment){\n\t\tthis.create();\n\t\t\n\t\tif(!this.initialized || force){\n\t\t\t\n\t\t\tthis.deleteCells();\n\t\t\t\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-before\", this);\n\t\t\t\n\t\t\tthis.generateCells();\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t\t\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this, inFragment);\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.normalizeHeight();\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout\", this);\n\t\t\t\n\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-after\", this);\n\t\t}else{\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this, inFragment);\n\t\t}\n\t}\n\n\trendered(){\n\t\tthis.cells.forEach((cell) => {\n\t\t\tcell.cellRendered();\n\t\t});\n\t}\n\t\n\treinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t}\n\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tdeinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t}\n\t\n\treinitialize(children){\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(!this.manualHeight){\n\t\t\tthis.height = 0;\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.initialize(true);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"row-relayout\", this);\n\t}\n\t\n\t//get heights when doing bulk row style calcs in virtual DOM\n\tcalcHeight(force){\n\t\tvar maxHeight = 0,\n\t\tminHeight;\n\t\t\n\t\tif(this.table.options.rowHeight){\n\t\t\tthis.height = this.table.options.rowHeight;\n\t\t}else{\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\t\t\t\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tvar height = cell.getHeight();\n\t\t\t\tif(height > maxHeight){\n\t\t\t\t\tmaxHeight = height;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t\t}else{\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n\t\n\t//set of cells\n\tsetCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setHeight();\n\t\t});\n\t\t\n\t\tthis.heightInitialized = true;\n\t}\n\t\n\tclearCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.clearHeight();\n\t\t});\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(force){\n\t\tif(force && !this.table.options.rowHeight){\n\t\t\tthis.clearCellHeight();\n\t\t}\n\t\t\n\t\tthis.calcHeight(force);\n\t\t\n\t\tthis.setCellHeight();\n\t}\n\t\n\t//set height of rows\n\tsetHeight(height, force){\n\t\tif(this.height != height || force){\n\t\t\t\n\t\t\tthis.manualHeight = true;\n\t\t\t\n\t\t\tthis.height = height;\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\t\t\t\n\t\t\tthis.setCellHeight();\n\t\t\t\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\t//return rows outer Width\n\tgetWidth(){\n\t\treturn this.element.offsetWidth;\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\t\n\t//////////////// Data Management /////////////////\n\tsetData(data){\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\n\t\t\n\t\tthis.dispatch(\"row-data-init-after\", this);\n\t}\n\t\n\t//update the rows data\n\tupdateData(updatedData){\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\n\t\ttempData = {},\n\t\tnewRowData;\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof updatedData === \"string\"){\n\t\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\n\t\t\t\n\t\t\tif(this.subscribed(\"row-data-changing\")){\n\t\t\t\ttempData = Object.assign(tempData, this.data);\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\n\t\t\t\n\t\t\t//set data\n\t\t\tfor (let attrname in newRowData) {\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\n\t\t\t\n\t\t\t//update affected cells only\n\t\t\tfor (let attrname in updatedData) {\n\t\t\t\t\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\n\t\t\t\t\n\t\t\t\tcolumns.forEach((column) => {\n\t\t\t\t\tlet cell = this.getCell(column.getField());\n\t\t\t\t\t\n\t\t\t\t\tif(cell){\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\n\t\t\t\t\t\tif(cell.getValue() !== value){\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(visible){\n\t\t\t\t\t\t\t\tcell.cellRendered();\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\t\n\t\t\t//Partial reinitialization if visible\n\t\t\tif(visible){\n\t\t\t\tthis.normalizeHeight(true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.heightStyled = \"\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\n\t\t\t\n\t\t\t//this.reinitialize();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\tgetData(transform){\n\t\tif(transform){\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\tgetCell(column){\n\t\tvar match = false;\n\t\t\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\t\t\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\tmatch = this.cells.find(function(cell){\n\t\t\treturn cell.column === column;\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetCellIndex(findCell){\n\t\treturn this.cells.findIndex(function(cell){\n\t\t\treturn cell === findCell;\n\t\t});\n\t}\n\t\n\tfindCell(subject){\n\t\treturn this.cells.find((cell) => {\n\t\t\treturn cell.element === subject;\n\t\t});\n\t}\n\t\n\tgetCells(){\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\treturn this.cells;\n\t}\n\t\n\tnextRow(){\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tprevRow(){\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tmoveToRow(to, before){\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\t\t\n\t\tif(toRow){\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t}\n\t\n\t///////////////////// Actions /////////////////////\n\tdelete(){\n\t\tthis.dispatch(\"row-delete\", this);\n\t\t\n\t\tthis.deleteActual();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\tdeleteActual(blockRedraw){\n\t\tthis.detachModules();\n\t\t\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\t\t\n\t\tthis.deleteCells();\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\tthis.element = false;\n\t\t\n\t\tthis.dispatch(\"row-deleted\", this);\n\t}\n\t\n\tdetachModules(){\n\t\tthis.dispatch(\"row-deleting\", this);\n\t}\n\t\n\tdeleteCells(){\n\t\tvar cellCount = this.cells.length;\n\t\t\n\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t}\n\t\n\twipe(){\n\t\tthis.detachModules();\n\t\tthis.deleteCells();\n\t\t\n\t\tif(this.element){\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.modules = {};\n\t}\n\n\tisDisplayed(){\n\t\treturn this.table.rowManager.getDisplayRows().includes(this);\n\t}\n\n\tgetPosition(){\n\t\treturn this.isDisplayed() ? this.position : false;\n\t}\n\n\tsetPosition(position){\n\t\tif(position != this.position){\n\t\t\tthis.position = position;\n\n\t\t\tthis.positionWatchers.forEach((callback) => {\n\t\t\t\tcallback(this.position);\n\t\t\t});\n\t\t}\n\t}\n\n\twatchPosition(callback){\n\t\tthis.positionWatchers.push(callback);\n\n\t\tcallback(this.position);\n\t}\n\t\n\tgetGroup(){\n\t\treturn this.modules.group || false;\n\t}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new RowComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n","export default {\n\t\"avg\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = 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(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(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\t\"unique\":function(values, data, calcParams){\n\t\tvar unique = values.filter((value, index) => {\n\t\t\treturn (values || value === 0) && values.indexOf(value) === index;\n\t\t});\n\n\t\treturn unique.length;\n\t},\n};","import Module from '../../core/Module.js';\n\nimport CalcComponent from './CalcComponent.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\nimport Row from '../../core/row/Row.js';\n\nimport defaultCalculations from './defaults/calculations.js';\n\nclass ColumnCalcs extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\t\t\n\t\tthis.blocked = false;\n\t\tthis.recalcAfterBlock = false;\n\t\t\n\t\tthis.registerTableOption(\"columnCalcs\", true);\n\t\t\n\t\tthis.registerColumnOption(\"topCalc\");\n\t\tthis.registerColumnOption(\"topCalcParams\");\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\n\t\tthis.registerColumnOption(\"bottomCalc\");\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\n\t\t\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t\t\n\t\tthis.subscribe(\"redraw-blocked\", this.blockRedraw.bind(this));\n\t\tthis.subscribe(\"redraw-restored\", this.restoreRedraw.bind(this));\n\n\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\n\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\t\n\ttableRedraw(force){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t\n\t\tif(force){\n\t\t\tthis.redraw();\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.blocked = true;\n\t\tthis.recalcAfterBlock = false;\n\t}\n\t\n\t\n\trestoreRedraw(){\n\t\tthis.blocked = false;\n\t\t\n\t\tif(this.recalcAfterBlock){\n\t\t\tthis.recalcAfterBlock = false;\n\t\t\tthis.recalcActiveRowsRefresh();\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tuserRecalc(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tblockCheck(){\n\t\tif(this.blocked){\n\t\t\tthis.recalcAfterBlock = true;\n\t\t}\n\t\t\n\t\treturn this.blocked;\n\t}\n\t\n\tvisibleRows(viewable, rows){\n\t\tif(this.topRow){\n\t\t\trows.unshift(this.topRow);\n\t\t}\n\t\t\n\t\tif(this.botRow){\n\t\t\trows.push(this.botRow);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.recalcRowGroup(row);\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRowsRefresh(){\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\n\t\t\tthis.recalcAll();\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRows(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\tcellValueChanged(cell){\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\n\t\t\tif(this.table.options.groupBy){\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\n\t\t\t\t\tthis.recalcActiveRows();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeColumnCheck(column){\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//initialize column calcs\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\tvar config = {\n\t\t\ttopCalcParams:def.topCalcParams || {},\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\n\t\t};\n\t\t\n\t\tif(def.topCalc){\n\t\t\t\n\t\t\tswitch(typeof def.topCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\n\t\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.topCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif(def.bottomCalc){\n\t\t\tswitch(typeof def.bottomCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\n\t\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.botCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t//dummy functions to handle being mock column manager\n\tregisterColumnField(){}\n\t\n\tremoveCalcs(){\n\t\tvar changed = false;\n\t\t\n\t\tif(this.topInitialized){\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(this.botInitialized){\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.footerRemove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\treinitializeCalcs(){\n\t\tif(this.topCalcs.length){\n\t\t\tthis.initializeTopRow();\n\t\t}\n\n\t\tif(this.botCalcs.length){\n\t\t\tthis.initializeBottomRow();\n\t\t}\n\t}\n\t\n\tinitializeTopRow(){\n\t\tvar\tfragment = document.createDocumentFragment();\n\t\t\n\t\tif(!this.topInitialized){\n\n\t\t\tfragment.appendChild(document.createElement(\"br\"));\n\t\t\tfragment.appendChild(this.topElement);\n\n\t\t\tthis.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t}\n\t\n\tinitializeBottomRow(){\n\t\tif(!this.botInitialized){\n\t\t\tthis.footerPrepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tif(this.botInitialized && this.botRow){\n\t\t\tthis.botElement.scrollLeft = left;\n\t\t}\n\t}\n\t\n\trecalc(rows){\n\t\tvar data, row;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(this.topInitialized || this.botInitialized){\n\t\t\t\tdata = this.rowsToData(rows);\n\t\t\t\t\n\t\t\t\tif(this.topInitialized){\n\t\t\t\t\tif(this.topRow){\n\t\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"top\", data);\n\t\t\t\t\tthis.topRow = row;\n\t\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.botInitialized){\n\t\t\t\t\tif(this.botRow){\n\t\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"bottom\", data);\n\t\t\t\t\tthis.botRow = row;\n\t\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t\tthis.botElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t\t\t\n\t\t\t\t//set resizable handles\n\t\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcRowGroup(row){\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t}\n\t\n\trecalcAll(){\n\t\tif(this.topCalcs.length || this.botCalcs.length){\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\n\t\t\t\t\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\n\t\t\t\t\n\t\t\t\tgroups.forEach((group) => {\n\t\t\t\t\tthis.recalcGroup(group);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcGroup(group){\n\t\tvar data, rowData;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(group){\n\t\t\t\tif(group.calcs){\n\t\t\t\t\tif(group.calcs.bottom){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(group.calcs.top){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//generate top stats row\n\tgenerateTopRow(rows){\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t}\n\t//generate bottom stats row\n\tgenerateBottomRow(rows){\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t}\n\t\n\trowsToData(rows){\n\t\tvar data = [];\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tdata.push(row.getData());\n\t\t\t\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\t\tdata = data.concat(children);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//generate stats row\n\tgenerateRow(pos, data){\n\t\tvar rowData = this.generateRowData(pos, data),\n\t\trow;\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.disable();\n\t\t}\n\t\t\n\t\trow = new Row(rowData, this, \"calc\");\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.enable();\n\t\t}\n\t\t\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\t\n\t\trow.component = false;\n\t\t\n\t\trow.getComponent = () => {\n\t\t\tif(!row.component){\n\t\t\t\trow.component = new CalcComponent(row);\n\t\t\t}\n\t\t\t\n\t\t\treturn row.component;\n\t\t};\n\t\t\n\t\trow.generateCells = () => {\n\t\t\t\n\t\t\tvar cells = [];\n\t\t\t\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\t\n\t\t\t\t//set field name of mock column\n\t\t\t\tthis.genColumn.setField(column.getField());\n\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\n\t\t\t\t\n\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams:{}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//ensure css class definition is replicated to calculation cell\n\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\n\t\t\t\t\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(this.genColumn, row);\n\t\t\t\tcell.getElement();\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\t\t\t\t\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\t\t\t\t\n\t\t\t\tif(!column.visible){\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\trow.cells = cells;\n\t\t};\n\t\t\n\t\treturn row;\n\t}\n\t\n\t//generate stats row\n\tgenerateRowData(pos, data){\n\t\tvar rowData = {},\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\tparams, paramKey;\n\t\t\n\t\tcalcs.forEach(function(column){\n\t\t\tvar values = [];\n\t\t\t\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\n\t\t\t\tdata.forEach(function(item){\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\t\t\t\t\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowData;\n\t}\n\t\n\thasTopCalcs(){\n\t\treturn\t!!(this.topCalcs.length);\n\t}\n\t\n\thasBottomCalcs(){\n\t\treturn\t!!(this.botCalcs.length);\n\t}\n\t\n\t//handle table redraw\n\tredraw(){\n\t\tif(this.topRow){\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif(this.botRow){\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t}\n\t\n\t//return the calculated\n\tgetResults(){\n\t\tvar results = {},\n\t\tgroups;\n\t\t\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\t\t\t\n\t\t\tgroups.forEach((group) => {\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\n\t\t\t});\n\t\t}else{\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn results;\n\t}\n\t\n\t//get results from a group\n\tgetGroupResults(group){\n\t\tvar groupObj = group._getSelf(),\n\t\tsubGroups = group.getSubGroups(),\n\t\tsubGroupResults = {},\n\t\tresults = {};\n\t\t\n\t\tsubGroups.forEach((subgroup) => {\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\n\t\t});\n\t\t\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults,\n\t\t};\n\t\t\n\t\treturn results;\n\t}\n\t\n\tadjustForScrollbar(width){\n\t\tif(this.botRow){\n\t\t\tif(this.table.rtl){\n\t\t\t\tthis.botElement.style.paddingLeft = width + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.botElement.style.paddingRight = width + \"px\";\n\t\t\t}\n\t\t}\n\t}\n}\n\nColumnCalcs.moduleName = \"columnCalcs\";\n\n//load defaults\nColumnCalcs.calculations = defaultCalculations;\n\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\n\nimport Row from '../../core/row/Row.js';\n\nimport RowComponent from '../../core/row/RowComponent.js';\n\nclass DataTree extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function(){};\n\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//selecting a parent row selects its children\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.dataTree){\n\t\t\tvar dummyEl = null,\n\t\t\toptions = this.table.options;\n\n\t\t\tthis.field = options.dataTreeChildField;\n\t\t\tthis.indent = options.dataTreeChildIndent;\n\n\t\t\tif(this.options(\"movableRows\")){\n\t\t\t\tconsole.warn(\"The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeBranchElement){\n\n\t\t\t\tif(options.dataTreeBranchElement === true){\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t\t}else{\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch-empty\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeCollapseElement){\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.collapseEl.tabIndex = 0;\n\t\t\t\tthis.collapseEl.innerHTML = \"
        \";\n\t\t\t}\n\n\t\t\tif(options.dataTreeExpandElement){\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.expandEl.tabIndex = 0;\n\t\t\t\tthis.expandEl.innerHTML = \"
        \";\n\t\t\t}\n\n\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedrawing.bind(this));\n\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\n\t\t}\n\t}\n\n\ttableRedrawing(force){\n\t\tvar rows;\n\n\t\tif(force){\n\t\t\trows = this.table.rowManager.getRows();\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.reinitializeRowChildren(row);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeElementField(){\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\n\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\t}\n\t\n\tgetRowChildren(row){\n\t\treturn this.getTreeChildren(row, true);\n\t}\n\n\tcolumnMoving(){\n\t\tvar rows = [];\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\trowDataChanged(row, visible, updatedData){\n\t\tif(this.redrawNeeded(updatedData)){\n\t\t\tthis.initializeRow(row);\n\n\t\t\tif(visible){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tcellValueChanged(cell){\n\t\tvar field = cell.column.getField();\n\n\t\tif(field === this.elementField){\n\t\t\tthis.layoutRow(cell.row);\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t\t}\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t\t}\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\t\tchildren:children,\n\t\t};\n\t}\n\n\treinitializeRowChildren(row){\n\t\tvar children = this.getTreeChildren(row, false, true);\n\n\t\tchildren.forEach(function(child){\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n\n\tlayoutRow(row){\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\tel = cell.getElement(),\n\t\tconfig = row.modules.dataTree;\n\n\t\tif(config.branchEl){\n\t\t\tif(config.branchEl.parentNode){\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t\t}\n\t\t\tconfig.branchEl = false;\n\t\t}\n\n\t\tif(config.controlEl){\n\t\t\tif(config.controlEl.parentNode){\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t\t}\n\t\t\tconfig.controlEl = false;\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\t\tif(config.index){\n\t\t\tif(this.branchEl){\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\t\tif(this.table.rtl){\n\t\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\t}else{\n\t\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\t}\n\t\t\t}else{\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateControlElement(row, el){\n\t\tvar config = row.modules.dataTree,\n\t\toldControl = config.controlEl;\n\n\t\tel = el || row.getCells()[0].getElement();\n\n\t\tif(config.children !== false){\n\n\t\t\tif(config.open){\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.collapseRow(row);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif(oldControl && oldControl.parentNode === el){\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\n\t\t\t}else{\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetRows(rows){\n\t\tvar output = [];\n\n\t\trows.forEach((row, i) => {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif(row instanceof Row){\n\n\t\t\t\trow.create();\n\n\t\t\t\tconfig = row.modules.dataTree;\n\n\t\t\t\tif(!config.index && config.children !== false){\n\t\t\t\t\tchildren = this.getChildren(row);\n\n\t\t\t\t\tchildren.forEach((child) => {\n\t\t\t\t\t\tchild.create();\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tgetChildren(row, allChildren){\n\t\tvar config = row.modules.dataTree,\n\t\tchildren = [],\n\t\toutput = [];\n\n\t\tif(config.children !== false && (config.open || allChildren)){\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach((child) => {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = this.getChildren(child);\n\n\t\t\t\tsubChildren.forEach((sub) => {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgenerateChildren(row){\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif(!Array.isArray(childArray)){\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach((childData) => {\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\n\n\t\t\tchildRow.create();\n\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\n\t\t\tif(childRow.modules.dataTree.children){\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t}\n\n\texpandRow(row, silent){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\tcollapseRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\ttoggleRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tif(config.open){\n\t\t\t\tthis.collapseRow(row);\n\t\t\t}else{\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowExpanded(row){\n\t\treturn row.modules.dataTree.open;\n\t}\n\n\tgetTreeParent(row){\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t}\n\n\tgetTreeParentRoot(row){\n\t\treturn row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;\n\t}\n\n\tgetFilteredTreeChildren(row){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [], children;\n\n\t\tif(config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tchildren.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(childRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\trowDelete(row){\n\t\tvar parent = row.modules.dataTree.parent,\n\t\tchildIndex;\n\n\t\tif(parent){\n\t\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t\t}\n\n\t\t\tif(!parent.data[this.field].length){\n\t\t\t\tdelete parent.data[this.field];\n\t\t\t}\n\n\t\t\tthis.initializeRow(parent);\n\t\t\tthis.layoutRow(parent);\n\t\t}\n\n\t\tthis.refreshData(true);\n\t}\n\n\taddTreeChildRow(row, data, top, index){\n\t\tvar childIndex = false;\n\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif(!Array.isArray(row.data[this.field])){\n\t\t\trow.data[this.field] = [];\n\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\n\t\t\t}\n\t\t}\n\n\t\tif(childIndex === false){\n\t\t\tif(top){\n\t\t\t\trow.data[this.field].unshift(data);\n\t\t\t}else{\n\t\t\t\trow.data[this.field].push(data);\n\t\t\t}\n\t\t}\n\n\t\tthis.initializeRow(row);\n\t\tthis.layoutRow(row);\n\n\t\tthis.refreshData(true);\n\t}\n\n\tfindChildIndex(subject, parent){\n\t\tvar match = false;\n\n\t\tif(typeof subject == \"object\"){\n\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\tmatch = subject.data;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\tmatch = subject._getSelf().data;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\tif(parent.modules.dataTree){\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tmatch = match.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else if(subject === null){\n\t\t\t\tmatch = false;\n\t\t\t}\n\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\tmatch = false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tmatch = parent.data[this.field].find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t}\n\n\t\tif(match){\n\n\t\t\tif(Array.isArray(parent.data[this.field])){\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t\t}\n\n\t\t\tif(match == -1){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\t\treturn match;\n\t}\n\n\tgetTreeChildren(row, component, recurse){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [];\n\n\t\tif(config && config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\t\tif(recurse){\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetChildField(){\n\t\treturn this.field;\n\t}\n\n\tredrawNeeded(data){\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n\t}\n}\n\nDataTree.moduleName = \"dataTree\";\n\nexport default DataTree;","export default function(list, options = {}, setFileContents){\n\tvar delimiter = options.delimiter ? options.delimiter : \",\",\n\tfileContents = [],\n\theaders = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = [];\n\n\t\tswitch(row.type){\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"header\":\n\t\t\t\trow.columns.forEach((col, i) => {\n\t\t\t\t\tif(col && col.depth === 1){\n\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}\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\n\t\t\t\t\tif(col){\n\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(headers.length){\n\t\tfileContents.unshift(headers.join(delimiter));\n\t}\n\n\tfileContents = fileContents.join(\"\\n\");\n\n\tif(options.bom){\n\t\tfileContents = \"\\ufeff\" + fileContents;\n\t}\n\n\tsetFileContents(fileContents, \"text/csv\");\n}\n","export default function(list, options, setFileContents){\n\tvar fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = {};\n\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif(col){\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\tsetFileContents(fileContents, \"application/json\");\n}","export default function(list, options = {}, setFileContents){\n\tvar header = [],\n\tbody = [],\n\tautoTableParams = {},\n\trowGroupStyles = options.rowGroupStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 12,\n\t\tcellPadding: 6,\n\t\tfillColor: 220,\n\t},\n\trowCalcStyles = options.rowCalcStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 10,\n\t\tcellPadding: 4,\n\t\tfillColor: 232,\n\t},\n\tjsPDFParams = options.jsPDF || {},\n\ttitle = options.title ? options.title : \"\";\n\n\tif(!jsPDFParams.orientation){\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t}\n\n\tif(!jsPDFParams.unit){\n\t\tjsPDFParams.unit = \"pt\";\n\t}\n\n\t//parse row list\n\tlist.forEach((row) => {\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\theader.push(parseRow(row));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tbody.push(parseRow(row));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfunction parseRow(row, styles){\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach((col) =>{\n\t\t\tvar cell;\n\n\t\t\tif(col){\n\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcell = {\n\t\t\t\t\tcontent:col.value,\n\t\t\t\t\tcolSpan:col.width,\n\t\t\t\t\trowSpan:col.height,\n\t\t\t\t};\n\n\t\t\t\tif(styles){\n\t\t\t\t\tcell.styles = styles;\n\t\t\t\t}\n\n\t\t\t\trowData.push(cell);\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t}\n\n\n\t//configure PDF\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\tif(options.autoTable){\n\t\tif(typeof options.autoTable === \"function\"){\n\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t}else{\n\t\t\tautoTableParams = options.autoTable;\n\t\t}\n\t}\n\n\tif(title){\n\t\tautoTableParams.didDrawPage = function(data) {\n\t\t\tdoc.text(title, 40, 30);\n\t\t};\n\t}\n\n\tautoTableParams.head = header;\n\tautoTableParams.body = body;\n\n\tdoc.autoTable(autoTableParams);\n\n\tif(options.documentProcessing){\n\t\toptions.documentProcessing(doc);\n\t}\n\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n}\n","import CoreFeature from '../../../../core/CoreFeature.js';\n\nexport default function(list, options, setFileContents){\n\tvar self = this,\n\tsheetName = options.sheetName || \"Sheet1\",\n\tworkbook = XLSX.utils.book_new(),\n\ttableFeatures = new CoreFeature(this),\n\tcompression = 'compress' in options ? options.compress : true,\n\twriteOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression},\n\toutput;\n\n\twriteOptions.type = 'binary';\n\n\tworkbook.SheetNames = [];\n\tworkbook.Sheets = {};\n\n\tfunction generateSheet(){\n\t\tvar rows = [],\n\t\tmerges = [],\n\t\tworksheet = {},\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\n\n\t\t//parse row list\n\t\tlist.forEach((row, i) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function(col, j){\n\n\t\t\t\tif(col){\n\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\tif(col.width > 1 || col.height > -1){\n\t\t\t\t\t\tif(col.height > 1 || col.width > 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}\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\trows.push(rowData);\n\t\t});\n\n\t\t//convert rows to worksheet\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\tif(merges.length){\n\t\t\tworksheet[\"!merges\"] = merges;\n\t\t}\n\n\t\treturn worksheet;\n\t}\n\n\tif(options.sheetOnly){\n\t\tsetFileContents(generateSheet());\n\t\treturn;\n\t}\n\n\tif(options.sheets){\n\t\tfor(var sheet in options.sheets){\n\n\t\t\tif(options.sheets[sheet] === true){\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t}else{\n\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\n\t\t\t\t\ttype:\"xlsx\",\n\t\t\t\t\toptions:{sheetOnly:true},\n\t\t\t\t\tactive:self.active,\n\t\t\t\t\tintercept:function(data){\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}else{\n\t\tworkbook.SheetNames.push(sheetName);\n\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t}\n\n\tif(options.documentProcessing){\n\t\tworkbook = options.documentProcessing(workbook);\n\t}\n\n\t//convert workbook to binary array\n\tfunction s2ab(s) {\n\t\tvar buf = new ArrayBuffer(s.length);\n\t\tvar view = new Uint8Array(buf);\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\t\treturn buf;\n\t}\n\n\toutput = XLSX.write(workbook, writeOptions);\n\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\n}\n","export default function(list, options, setFileContents){\n\tif(this.modExists(\"export\", true)){\n\t\tsetFileContents(this.modules.export.generateHTMLTable(list), \"text/html\");\n\t}\n}","export default function (list, options, setFileContents) {\n\tconst fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tconst item = {};\n\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(JSON.stringify(item));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\n}","import csv from './downloaders/csv.js';\nimport json from './downloaders/json.js';\nimport pdf from './downloaders/pdf.js';\nimport xlsx from './downloaders/xlsx.js';\nimport html from './downloaders/html.js';\nimport jsonLines from './downloaders/jsonLines.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tjsonLines:jsonLines,\n\tpdf:pdf,\n\txlsx:xlsx,\n\thtml:html,\n};","import Module from '../../core/Module.js';\n\nimport defaultDownloaders from './defaults/downloaders.js';\n\nclass Download extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.registerTableOption(\"downloadEncoder\", function(data, mimeType){\n\t\t\treturn new Blob([data],{type:mimeType});\n\t\t}); //function to manipulate download data\n\t\tthis.registerTableOption(\"downloadReady\", undefined); //warn of function deprecation\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\n\n\t\tthis.registerColumnOption(\"download\");\n\t\tthis.registerColumnOption(\"titleDownload\");\n\t}\n\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"downloadReady\", \"downloadEncoder\");\n\t}\t\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tdownloadToTab(type, filename, options, active){\n\t\tthis.download(type, filename, options, active, true);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//trigger file download\n\tdownload(type, filename, options, range, interceptCallback){\n\t\tvar downloadFunc = false;\n\n\t\tfunction buildLink(data, mime){\n\t\t\tif(interceptCallback){\n\t\t\t\tif(interceptCallback === true){\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t}else{\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif(typeof type == \"function\"){\n\t\t\tdownloadFunc = type;\n\t\t}else{\n\t\t\tif(Download.downloaders[type]){\n\t\t\t\tdownloadFunc = Download.downloaders[type];\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tif(downloadFunc){\n\t\t\tvar list = this.generateExportList(range);\n\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\n\t\t}\n\t}\n\n\tgenerateExportList(range){\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t\t//assign group header formatter\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\n\t\t\tgroupHeader = [groupHeader];\n\t\t}\n\n\t\tlist.forEach((row) => {\n\t\t\tvar group;\n\n\t\t\tif(row.type === \"group\"){\n\t\t\t\tgroup = row.columns[0];\n\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t}\n\n\ttriggerDownload(data, mime, type, filename, newTab){\n\t\tvar element = document.createElement('a'),\n\t\tblob = this.table.options.downloadEncoder(data, mime);\n\n\t\tif(blob){\n\t\t\tif(newTab){\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t}else{\n\t\t\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\t\t\t\t\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t}else{\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\n\t\t}\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nDownload.moduleName = \"download\";\n\n//load defaults\nDownload.downloaders = defaultDownloaders;\n\nexport default Download;","export default function maskInput(el, options){\n\tvar mask = options.mask,\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\";\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\", (e) => {\n\t\tvar index = el.value.length,\n\t\tchar = e.key;\n\n\t\tif(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){\n\t\t\tif(index >= mask.length){\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\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\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\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\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", (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\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}","import maskInput from '../../inputMask.js';\n\n//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange(e);\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//resizable text area element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"hybrid\",\n\tvalue = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\tinput = document.createElement(\"textarea\"),\n\tscrollHeight = 0;\n\n\t//create and style input\n\tinput.style.display = \"block\";\n\tinput.style.padding = \"2px\";\n\tinput.style.height = \"100%\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\tinput.style.whiteSpace = \"pre-wrap\";\n\tinput.style.resize = \"none\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = value;\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\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\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t},300);\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\tinput.addEventListener(\"keyup\", function(){\n\n\t\tinput.style.height = \"\";\n\n\t\tvar heightNow = input.scrollHeight;\n\n\t\tinput.style.height = heightNow + \"px\";\n\n\t\tif(heightNow != scrollHeight){\n\t\t\tscrollHeight = heightNow;\n\t\t\tcell.getRow().normalizeHeight();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"keydown\", function(e){\n\n\t\tswitch(e.keyCode){\n\n\t\t\tcase 13:\n\t\t\t\tif(e.shiftKey && editorParams.shiftEnterSubmit){\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", \"number\");\n\n\tif(typeof editorParams.max != \"undefined\"){\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\n\tif(typeof editorParams.min != \"undefined\"){\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\n\tif(typeof editorParams.step != \"undefined\"){\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = cellValue;\n\n\tvar blurFunc = function(e){\n\t\tonChange();\n\t};\n\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\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\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(){\n\t\tvar value = input.value;\n\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\n\t\tif(value !== cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.setAttribute(\"type\", \"range\");\n\t\n\tif (typeof editorParams.max != \"undefined\") {\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\t\n\tif (typeof editorParams.min != \"undefined\") {\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\t\n\tif (typeof editorParams.step != \"undefined\") {\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\t\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value;\n\t\t\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\t\t\n\t\tif(value != cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e){\n\t\tonChange();\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tfunction convertDate(value){\n\t\tvar newDatetime;\n\t\t\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\t\t\n\t\treturn newDatetime.toFormat(\"yyyy-MM-dd\");\n\t}\n\t\n\tinput.type = \"date\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.max){\n\t\tinput.setAttribute(\"max\", inputFormat ? convertDate(editorParams.max) : editorParams.max);\n\t}\n\n\tif(editorParams.min){\n\t\tinput.setAttribute(\"min\", inputFormat ? convertDate(editorParams.min) : editorParams.min);\n\t}\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\t\t\n\t\t\tcellValue = convertDate(cellValue);\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDate;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDate = DT.fromFormat(String(value), \"yyyy-MM-dd\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDate;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDate.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDate.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"time\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"HH:mm\");\n\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\n\tconsole.log(\"val\", cellValue);\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() == \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxTime = DT.fromFormat(String(value), \"hh:mm\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"datetime-local\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"yyyy-MM-dd\") + \"T\" + newDatetime.toFormat(\"HH:mm\");\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDateTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDateTime = DT.fromISO(String(value));\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDateTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDateTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDateTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","import maskInput from './inputMask.js';\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\n\nexport default class Edit{\n\tconstructor(editor, cell, onRendered, success, cancel, editorParams){\n\t\tthis.edit = editor;\n\t\tthis.table = editor.table;\n\t\tthis.cell = cell;\n\t\tthis.params = this._initializeParams(editorParams);\n\t\t\n\t\tthis.data = [];\n\t\tthis.displayItems = [];\n\t\tthis.currentItems = [];\n\t\tthis.focusedItem = null;\n\t\t\n\t\tthis.input = this._createInputElement();\n\t\tthis.listEl = this._createListElement();\n\t\t\n\t\tthis.initialValues = null; \n\t\t\n\t\tthis.isFilter = cell.getType() === \"header\";\n\t\t\n\t\tthis.filterTimeout = null;\n\t\tthis.filtered = false;\n\t\tthis.typing = false;\n\t\t\n\t\tthis.values = []; \n\t\tthis.popup = null; \n\t\t\n\t\tthis.listIteration = 0;\n\t\t\n\t\tthis.lastAction=\"\";\n\t\tthis.filterTerm=\"\";\n\t\t\n\t\tthis.blurable = true;\n\t\t\n\t\tthis.actions = {\n\t\t\tsuccess:success,\n\t\t\tcancel:cancel\n\t\t};\n\t\t\n\t\tthis._deprecatedOptionsCheck();\n\t\tthis._initializeValue();\n\t\t\n\t\tonRendered(this._onRendered.bind(this));\n\t}\n\t\n\t_deprecatedOptionsCheck(){\n\t\tif(this.params.listItemFormatter){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.sortValuesList){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchFunc){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchingPlaceholder){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t}\n\t\n\t_initializeValue(){\n\t\tvar initialValue = this.cell.getValue();\n\t\t\n\t\tif(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\n\t\t\tinitialValue = this.params.defaultValue;\n\t\t}\n\t\t\n\t\tthis.initialValues = this.params.multiselect ? initialValue : [initialValue];\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.input.value = this.initialValues ? this.initialValues.join(\",\") : \"\";\n\t\t\tthis.headerFilterInitialListGen(); \n\t\t}\n\t}\n\t\n\t_onRendered(){\n\t\tvar cellEl = this.cell.getElement();\n\t\t\n\t\tfunction clickStop(e){\n\t\t\te.stopPropagation();\n\t\t}\t\n\t\t\n\t\tif(!this.isFilter){\n\t\t\tthis.input.style.height = \"100%\";\n\t\t\tthis.input.focus({preventScroll: true});\n\t\t}\n\t\t\n\t\t\n\t\tcellEl.addEventListener(\"click\", clickStop);\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tcellEl.removeEventListener(\"click\", clickStop);\n\t\t}, 1000);\n\t\t\n\t\tthis.input.addEventListener(\"mousedown\", this._preventPopupBlur.bind(this));\n\t}\n\t\n\t_createListElement(){\n\t\tvar listEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-list\");\n\t\t\n\t\tlistEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\tlistEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\t\n\t\treturn listEl;\n\t}\n\t\n\t_setListWidth(){\n\t\tvar element = this.isFilter ? this.input : this.cell.getElement();\n\t\t\n\t\tthis.listEl.style.minWidth = element.offsetWidth + \"px\";\n\t\t\n\t\tif(this.params.maxWidth){\n\t\t\tif(this.params.maxWidth === true){\n\t\t\t\tthis.listEl.style.maxWidth = element.offsetWidth + \"px\";\n\t\t\t}else if(typeof this.params.maxWidth === \"number\"){\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t_createInputElement(){\n\t\tvar attribs = this.params.elementAttributes;\n\t\tvar input = document.createElement(\"input\");\n\t\t\n\t\tinput.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\n\t\t\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\t\n\t\tif(!this.params.autocomplete){\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.style.caretColor = \"transparent\";\n\t\t\t// input.readOnly = (this.edit.currentCell != false);\n\t\t}\n\t\t\n\t\tif(attribs && typeof attribs == \"object\"){\n\t\t\tfor (let key in attribs){\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) + attribs[\"+\" + key]);\n\t\t\t\t}else{\n\t\t\t\t\tinput.setAttribute(key, attribs[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this.params.mask){\n\t\t\tmaskInput(input, this.params);\n\t\t}\n\t\t\n\t\tthis._bindInputEvents(input);\n\t\t\n\t\treturn input;\n\t}\n\t\n\t_initializeParams(params){\n\t\tvar valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\n\t\tvalueCheck;\n\t\t\n\t\tparams = Object.assign({}, params);\n\t\t\n\t\tparams.verticalNavigation = params.verticalNavigation || \"editor\";\n\t\tparams.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\n\t\tparams.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\n\t\tparams.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\n\t\t\n\t\tparams.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\n\t\t\n\t\tvalueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\n\t\t\n\t\tif(!valueCheck){\n\t\t\tconsole.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\");\n\t\t}else if(valueCheck > 1){\n\t\t\tconsole.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\");\n\t\t}\n\t\t\n\t\tif(params.autocomplete){\n\t\t\tif(params.multiselect){\n\t\t\t\tparams.multiselect = false;\n\t\t\t\tconsole.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\");\n\t\t\t}\n\t\t}else{\n\t\t\tif(params.freetext){\n\t\t\t\tparams.freetext = false;\n\t\t\t\tconsole.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterFunc){\n\t\t\t\tparams.filterFunc = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterRemote){\n\t\t\t\tparams.filterRemote = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.mask){\n\t\t\t\tparams.mask = false;\n\t\t\t\tconsole.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.allowEmpty){\n\t\t\t\tparams.allowEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.listOnEmpty){\n\t\t\t\tparams.listOnEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(params.filterRemote && !(typeof params.valuesLookup === \"function\" || params.valuesURL)){\n\t\t\tparams.filterRemote = false;\n\t\t\tconsole.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\n\t\t}\n\t\treturn params;\n\t}\n\t//////////////////////////////////////\n\t////////// Event Handling ////////////\n\t//////////////////////////////////////\n\t\n\t_bindInputEvents(input){\n\t\tinput.addEventListener(\"focus\", this._inputFocus.bind(this));\n\t\tinput.addEventListener(\"click\", this._inputClick.bind(this));\n\t\tinput.addEventListener(\"blur\", this._inputBlur.bind(this));\n\t\tinput.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\tinput.addEventListener(\"search\", this._inputSearch.bind(this));\n\t\t\n\t\tif(this.params.autocomplete){\n\t\t\tinput.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\t\t}\n\t}\n\t\n\t\n\t_inputFocus(e){\n\t\tthis.rebuildOptionsList();\n\t}\n\t\n\t_filter(){\n\t\tif(this.params.filterRemote){\n\t\t\tclearTimeout(this.filterTimeout);\n\t\t\t\n\t\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\t\tthis.rebuildOptionsList();\n\t\t\t}, this.params.filterDelay);\n\t\t}else{\n\t\t\tthis._filterList();\n\t\t}\n\t}\n\t\n\t_inputClick(e){\n\t\te.stopPropagation();\n\t}\n\t\n\t_inputBlur(e){\n\t\tif(this.blurable){\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.hide();\n\t\t\t}else{\n\t\t\t\tthis._resolveValue(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_inputSearch(){\n\t\tthis._clearChoices();\n\t}\n\t\n\t_inputKeyDown(e){\n\t\tswitch(e.keyCode){\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\t\tthis._keyUp(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: //down arrow\n\t\t\t\tthis._keyDown(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //right arrow\n\t\t\t\tthis._keySide(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 13: //enter\n\t\t\t\tthis._keyEnter();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27: //escape\n\t\t\t\tthis._keyEsc();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 36: //home\n\t\t\tcase 35: //end\n\t\t\t\tthis._keyHomeEnd(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: //tab\n\t\t\t\tthis._keyTab(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keySelectLetter(e);\n\t\t}\n\t}\n\t\n\t_inputKeyUp(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 38: //up arrow\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //up arrow\n\t\t\tcase 40: //right arrow\n\t\t\tcase 13: //enter\n\t\t\tcase 27: //escape\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keyAutoCompLetter(e);\n\t\t}\n\t}\n\t\n\t_preventPopupBlur(){\n\t\tif(this.popup){\n\t\t\tthis.popup.blockHide();\n\t\t}\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.restoreHide();\n\t\t\t}\n\t\t}, 10);\n\t}\n\t\n\t_preventBlur(){\n\t\tthis.blurable = false;\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tthis.blurable = true;\n\t\t}, 10);\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Keyboard Navigation /////////\n\t//////////////////////////////////////\n\t\n\t_keyTab(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyUp(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index > 0){\n\t\t\t\tthis._focusItem(this.displayItems[index - 1]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyDown(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index < this.displayItems.length - 1){\n\t\t\t\tif(index == -1){\n\t\t\t\t\tthis._focusItem(this.displayItems[0]);\n\t\t\t\t}else{\n\t\t\t\t\tthis._focusItem(this.displayItems[index + 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keySide(e){\n\t\tif(!this.params.autocomplete){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\t_keyEnter(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyEsc(e){\n\t\tthis._cancel();\n\t}\n\t\n\t_keyHomeEnd(e){\n\t\tif(this.params.autocomplete){\n\t\t\t//prevent table navigation while using input element\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\t\n\t_keySelectLetter(e){\n\t\tif(!this.params.autocomplete){\n\t\t\t// if(this.edit.currentCell === false){\n\t\t\te.preventDefault();\n\t\t\t// }\n\t\t\t\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\n\t\t\t\tthis._scrollToValue(e.keyCode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyAutoCompLetter(e){\n\t\tthis._filter();\n\t\tthis.lastAction = \"typing\";\n\t\tthis.typing = true;\n\t}\n\t\n\t\n\t_scrollToValue(char){\n\t\tclearTimeout(this.filterTimeout);\n\t\t\n\t\tvar character = String.fromCharCode(char).toLowerCase();\n\t\tthis.filterTerm += character.toLowerCase();\n\t\t\n\t\tvar match = this.displayItems.find((item) => {\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\n\t\t});\n\t\t\n\t\tif(match){\n\t\t\tthis._focusItem(match);\n\t\t}\n\t\t\n\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\tthis.filterTerm = \"\";\n\t\t}, 800);\n\t}\n\t\n\t_focusItem(item){\n\t\tthis.lastAction = \"focus\";\n\t\t\n\t\tif(this.focusedItem && this.focusedItem.element){\n\t\t\tthis.focusedItem.element.classList.remove(\"focused\");\n\t\t}\n\t\t\n\t\tthis.focusedItem = item;\n\t\t\n\t\tif(item && item.element){\n\t\t\titem.element.classList.add(\"focused\");\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\n\t\t}\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t/////// Data List Generation /////////\n\t//////////////////////////////////////\n\theaderFilterInitialListGen(){\n\t\tthis._generateOptions(true);\n\t}\n\t\n\trebuildOptionsList(){\n\t\tthis._generateOptions()\n\t\t\t.then(this._sortOptions.bind(this))\n\t\t\t.then(this._buildList.bind(this))\n\t\t\t.then(this._showList.bind(this))\n\t\t\t.catch((e) => {\n\t\t\t\tif(!Number.isInteger(e)){\n\t\t\t\t\tconsole.error(\"List generation error\", e);\n\t\t\t\t}\n\t\t\t});\n\t}\n\t\n\t_filterList(){\n\t\tthis._buildList(this._filterOptions());\n\t\tthis._showList();\n\t}\n\t\n\t_generateOptions(silent){\n\t\tvar values = [];\n\t\tvar iteration = ++ this.listIteration;\n\t\t\n\t\tthis.filtered = false;\n\t\t\n\t\tif(this.params.values){\n\t\t\tvalues = this.params.values;\n\t\t}else if (this.params.valuesURL){\n\t\t\tvalues = this._ajaxRequest(this.params.valuesURL, this.input.value);\n\t\t}else{\n\t\t\tif(typeof this.params.valuesLookup === \"function\"){\n\t\t\t\tvalues = this.params.valuesLookup(this.cell, this.input.value);\n\t\t\t}else if(this.params.valuesLookup){\n\t\t\t\tvalues = this._uniqueColumnValues(this.params.valuesLookupField);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(values instanceof Promise){\n\t\t\tif(!silent){\n\t\t\t\tthis._addPlaceholder(this.params.placeholderLoading);\n\t\t\t}\n\t\t\t\n\t\t\treturn values.then()\n\t\t\t\t.then((responseValues) => {\n\t\t\t\t\tif(this.listIteration === iteration){\n\t\t\t\t\t\treturn this._parseList(responseValues);\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn Promise.reject(iteration);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.resolve(this._parseList(values));\n\t\t}\n\t}\n\t\n\t_addPlaceholder(contents){\n\t\tvar placeholder = document.createElement(\"div\");\n\t\t\n\t\tif(typeof contents === \"function\"){\n\t\t\tcontents = contents(this.cell.getComponent(), this.listEl);\n\t\t}\n\t\t\n\t\tif(contents){\n\t\t\tthis._clearList();\n\t\t\t\n\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\tplaceholder = contents;\n\t\t\t}else{\n\t\t\t\tplaceholder.classList.add(\"tabulator-edit-list-placeholder\");\n\t\t\t\tplaceholder.innerHTML = contents;\n\t\t\t}\n\t\t\t\n\t\t\tthis.listEl.appendChild(placeholder);\n\t\t\t\n\t\t\tthis._showList();\n\t\t}\n\t}\n\t\n\t_ajaxRequest(url, term){\n\t\tvar params = this.params.filterRemote ? {term:term} : {};\n\t\turl = urlBuilder(url, {}, params);\n\t\t\n\t\treturn fetch(url)\n\t\t\t.then((response)=>{\n\t\t\t\tif(response.ok) {\n\t\t\t\t\treturn response.json()\n\t\t\t\t\t\t.catch((error)=>{\n\t\t\t\t\t\t\tconsole.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error)=>{\n\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \", error);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\t}\n\t\n\t_uniqueColumnValues(field){\n\t\tvar output = {},\n\t\tdata = this.table.getData(this.params.valuesLookup),\n\t\tcolumn;\n\t\t\n\t\tif(field){\n\t\t\tcolumn = this.table.columnManager.getColumnByField(field);\n\t\t}else{\n\t\t\tcolumn = this.cell.getColumn()._getSelf();\n\t\t}\n\t\t\n\t\tif(column){\n\t\t\tdata.forEach((row) => {\n\t\t\t\tvar val = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\n\t\t\t\t\toutput[val] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\toutput = [];\n\t\t}\n\t\t\n\t\treturn Object.keys(output);\n\t}\n\t\n\t\n\t_parseList(inputValues){\n\t\tvar data = [];\n\t\t\n\t\tif(!Array.isArray(inputValues)){\n\t\t\tinputValues = Object.entries(inputValues).map(([key, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:key,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t\n\t\tinputValues.forEach((value) => {\n\t\t\tif(typeof value !== \"object\"){\n\t\t\t\tvalue = {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:value,\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tthis._parseListItem(value, data, 0);\n\t\t});\n\t\t\n\t\tif(!this.currentItems.length && this.params.freetext){\n\t\t\tthis.input.value = this.initialValues;\n\t\t\tthis.typing = true;\n\t\t\tthis.lastAction = \"typing\";\n\t\t}\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\treturn data; \n\t}\n\t\n\t_parseListItem(option, data, level){\n\t\tvar item = {};\n\t\t\n\t\tif(option.options){\n\t\t\titem = this._parseListGroup(option, level + 1);\n\t\t}else{\n\t\t\titem = {\n\t\t\t\tlabel:option.label,\n\t\t\t\tvalue:option.value,\n\t\t\t\titemParams:option.itemParams,\n\t\t\t\telementAttributes: option.elementAttributes,\n\t\t\t\telement:false,\n\t\t\t\tselected:false,\n\t\t\t\tvisible:true,\n\t\t\t\tlevel:level,\n\t\t\t\toriginal:option,\n\t\t\t};\n\t\t\t\n\t\t\tif(this.initialValues && this.initialValues.indexOf(option.value) > -1){\n\t\t\t\tthis._chooseItem(item, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tdata.push(item);\n\t}\n\t\n\t_parseListGroup(option, level){\n\t\tvar item = {\n\t\t\tlabel:option.label,\n\t\t\tgroup:true,\n\t\t\titemParams:option.itemParams,\n\t\t\telementAttributes:option.elementAttributes,\n\t\t\telement:false,\n\t\t\tvisible:true,\n\t\t\tlevel:level,\n\t\t\toptions:[],\n\t\t\toriginal:option,\n\t\t};\n\t\t\n\t\toption.options.forEach((child) => {\n\t\t\tthis._parseListItem(child, item.options, level);\n\t\t});\n\t\t\n\t\treturn item;\n\t}\n\t\n\t_sortOptions(options){\n\t\tvar sorter;\n\t\t\n\t\tif(this.params.sort){\n\t\t\tsorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\n\t\t\t\n\t\t\tthis._sortGroup(sorter, options);\n\t\t}\n\t\t\n\t\treturn options;\n\t}\n\t\n\t_sortGroup(sorter, options){\n\t\toptions.sort((a,b) => {\n\t\t\treturn sorter(a.label, b.label, a.value, b.value, a.original, b.original);\n\t\t});\n\t\t\n\t\toptions.forEach((option) => {\n\t\t\tif(option.group){\n\t\t\t\tthis._sortGroup(sorter, option.options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_defaultSortFunction(as, bs){\n\t\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\t\tvar emptyAlign = 0;\n\t\t\n\t\tif(this.params.sort === \"desc\"){\n\t\t\t[as, bs] = [bs, as];\n\t\t}\n\t\t\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\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}\n\t\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn a.length > b.length;\n\t\t}\n\t\t\n\t\treturn emptyAlign;\n\t}\n\t\n\t_filterOptions(){\n\t\tvar filterFunc = this.params.filterFunc || this._defaultFilterFunc,\n\t\tterm = this.input.value;\n\t\t\n\t\tif(term){\n\t\t\tthis.filtered = true;\n\t\t\t\n\t\t\tthis.data.forEach((item) => {\n\t\t\t\tthis._filterItem(filterFunc, term, item);\n\t\t\t});\n\t\t}else{\n\t\t\tthis.filtered = false;\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\t_filterItem(func, term, item){\n\t\tvar matches = false;\n\t\t\n\t\tif(!item.group){\n\t\t\titem.visible = func(term, item.label, item.value, item.original);\n\t\t}else{\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tif(this._filterItem(func, term, option)){\n\t\t\t\t\tmatches = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\titem.visible = matches;\n\t\t}\n\t\t\n\t\treturn item.visible;\n\t}\n\t\n\t_defaultFilterFunc(term, label, value, item){\n\t\tterm = String(term).toLowerCase();\n\t\t\n\t\tif(label !== null && typeof label !== \"undefined\"){\n\t\t\tif(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t//////////////////////////////////////\n\t/////////// Display List /////////////\n\t//////////////////////////////////////\n\t\n\t_clearList(){\n\t\twhile(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\n\t\t\n\t\tthis.displayItems = [];\n\t}\n\t\n\t_buildList(data){\n\t\tthis._clearList();\n\t\t\n\t\tdata.forEach((option) => {\n\t\t\tthis._buildItem(option);\n\t\t});\n\t\t\n\t\tif(!this.displayItems.length){\n\t\t\tthis._addPlaceholder(this.params.placeholderEmpty);\n\t\t} \n\t}\n\t\n\t_buildItem(item){\n\t\tvar el = item.element,\n\t\tcontents;\n\t\t\n\t\tif(!this.filtered || item.visible){\n\t\t\t\n\t\t\tif(!el){\n\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\n\t\t\t\tcontents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\n\t\t\t\t\n\t\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = contents;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-group\");\n\t\t\t\t}else{\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-item\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\n\t\t\t\t\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\n\t\t\t\t\tfor (let key in item.elementAttributes){\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\tel.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.addEventListener(\"click\", this._groupClick.bind(this, item));\n\t\t\t\t}else{\n\t\t\t\t\tel.addEventListener(\"click\", this._itemClick.bind(this, item));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\t\t\t\n\t\t\t\titem.element = el;\n\t\t\t}\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tthis.listEl.appendChild(el);\n\t\t\t\n\t\t\tif(item.group){\n\t\t\t\titem.options.forEach((option) => {\n\t\t\t\t\tthis._buildItem(option);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.displayItems.push(item);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_showList(){\n\t\tvar startVis = this.popup && this.popup.isVisible();\n\t\t\n\t\tif(this.input.parentNode){\n\t\t\tif(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\n\t\t\t\tif(this.popup){\n\t\t\t\t\tthis.popup.hide(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis._setListWidth();\n\t\t\t\n\t\t\tif(!this.popup){\n\t\t\t\tthis.popup = this.edit.popup(this.listEl);\n\t\t\t}\n\t\t\t\n\t\t\tthis.popup.show(this.cell.getElement(), \"bottom\");\n\t\t\t\n\t\t\tif(!startVis){\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.popup.hideOnBlur(this._resolveValue.bind(this, true));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_styleItem(item){\n\t\tif(item && item.element){\n\t\t\tif(item.selected){\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}else{\n\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// User Interaction ///////////\n\t//////////////////////////////////////\n\t\n\t_itemClick(item, e){\n\t\te.stopPropagation();\n\t\t\n\t\tthis._chooseItem(item);\n\t}\n\t\n\t_groupClick(item, e){\n\t\te.stopPropagation();\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t////// Current Item Management ///////\n\t//////////////////////////////////////\n\t\n\t_cancel(){\n\t\tthis.popup.hide(true);\n\t\tthis.actions.cancel();\n\t}\n\t\n\t_clearChoices(){\n\t\tthis.typing = true;\n\t\t\n\t\tthis.currentItems.forEach((item) => {\n\t\t\titem.selected = false;\n\t\t\tthis._styleItem(item);\n\t\t});\n\t\t\n\t\tthis.currentItems = [];\n\t\t\n\t\tthis.focusedItem = null;\n\t}\n\t\n\t_chooseItem(item, silent){\n\t\tvar index;\n\t\t\n\t\tthis.typing = false;\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\tindex = this.currentItems.indexOf(item);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.currentItems.splice(index, 1);\n\t\t\t\titem.selected = false;\n\t\t\t}else{\n\t\t\t\tthis.currentItems.push(item);\n\t\t\t\titem.selected = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.input.value = this.currentItems.map(item => item.label).join(\",\");\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t}else{\n\t\t\tthis.currentItems = [item];\n\t\t\titem.selected = true;\n\t\t\t\n\t\t\tthis.input.value = item.label;\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis._resolveValue();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis._focusItem(item);\n\t}\n\t\n\t_resolveValue(blur){\n\t\tvar output, initialValue;\n\t\t\n\t\tif(this.popup){\n\t\t\tthis.popup.hide(true);\n\t\t}\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\toutput = this.currentItems.map(item => item.value);\n\t\t}else{\n\t\t\tif(blur && this.params.autocomplete && this.typing){\n\t\t\t\tif(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\n\t\t\t\t\toutput = this.input.value;\n\t\t\t\t}else{\n\t\t\t\t\tthis.actions.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.currentItems[0]){\n\t\t\t\t\toutput = this.currentItems[0].value;\n\t\t\t\t}else{\n\t\t\t\t\tinitialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;\n\t\t\t\t\t\n\t\t\t\t\tif(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\n\t\t\t\t\t\toutput = initialValue;\n\t\t\t\t\t}else{\n\t\t\t\t\t\toutput = this.params.emptyValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(output === \"\"){\n\t\t\toutput = this.params.emptyValue;\n\t\t}\n\t\t\n\t\tthis.actions.success(output);\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.initialValues = output && !Array.isArray(output) ? [output] : output;\n\t\t\tthis.currentItems = [];\n\t\t}\n\t}\n\t\n}\n","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The select editor has been deprecated, please use the new list editor\");\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\n\n\teditorParams.autocomplete = true;\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","//star rating\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar self = this,\n\telement = cell.getElement(),\n\tvalue = cell.getValue(),\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\tstars = [],\n\tstarsHolder = document.createElement(\"div\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\n\t//change star type\n\tfunction starChange(val){\n\t\tstars.forEach(function(star, i){\n\t\t\tif(i < val){\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}else{\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//build stars\n\tfunction buildStar(i){\n\n\t\tvar starHolder = document.createElement(\"span\");\n\t\tvar nextStar = star.cloneNode(true);\n\n\t\tstars.push(nextStar);\n\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tstarChange(i);\n\t\t});\n\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t});\n\n\t\tstarHolder.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tsuccess(i);\n\t\t\telement.blur();\n\t\t});\n\n\t\tstarHolder.appendChild(nextStar);\n\t\tstarsHolder.appendChild(starHolder);\n\n\t}\n\n\t//handle keyboard navigation value change\n\tfunction changeValue(val){\n\t\tvalue = val;\n\t\tstarChange(val);\n\t}\n\n\t//style cell\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\t//style holding element\n\tstarsHolder.style.verticalAlign = \"middle\";\n\tstarsHolder.style.display = \"inline-block\";\n\tstarsHolder.style.padding = \"4px\";\n\n\t//style star\n\tstar.setAttribute(\"width\", size);\n\tstar.setAttribute(\"height\", size);\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//create correct number of stars\n\tfor(var i=1;i<= maxStars;i++){\n\t\tbuildStar(i);\n\t}\n\n\t//ensure value does not exceed number of stars\n\tvalue = Math.min(parseInt(value), maxStars);\n\n\t// set initial styling of stars\n\tstarChange(value);\n\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\n\t\tstarChange(0);\n\t});\n\n\tstarsHolder.addEventListener(\"click\", function(e){\n\t\tsuccess(0);\n\t});\n\n\telement.addEventListener(\"blur\", function(e){\n\t\tcancel();\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\tchangeValue(value + 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\tchangeValue(value - 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 13: //enter\n\t\t\t\tsuccess(value);\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn starsHolder;\n}","//draggable progress bar\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar element = cell.getElement(),\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\n\tpercent = (max - min) / 100,\n\tvalue = cell.getValue() || 0,\n\thandle = document.createElement(\"div\"),\n\tbar = document.createElement(\"div\"),\n\tmouseDrag, mouseDragWidth;\n\n\t//set new value\n\tfunction updateValue(){\n\t\tvar style = window.getComputedStyle(element, null);\n\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\n\t\tsuccess(calcVal);\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\telement.setAttribute(\"aria-label\", value);\n\t}\n\n\t//style handle\n\thandle.style.position = \"absolute\";\n\thandle.style.right = \"0\";\n\thandle.style.top = \"0\";\n\thandle.style.bottom = \"0\";\n\thandle.style.width = \"5px\";\n\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t//style bar\n\tbar.style.display = \"inline-block\";\n\tbar.style.position = \"relative\";\n\t// bar.style.top = \"8px\";\n\t// bar.style.bottom = \"8px\";\n\t// bar.style.left = \"4px\";\n\t// bar.style.marginRight = \"4px\";\n\tbar.style.height = \"100%\";\n\tbar.style.backgroundColor = \"#488CE9\";\n\tbar.style.maxWidth = \"100%\";\n\tbar.style.minWidth = \"0%\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//style cell\n\telement.style.padding = \"4px 4px\";\n\n\t//make sure value is in range\n\tvalue = Math.min(parseFloat(value), max);\n\tvalue = Math.max(parseFloat(value), min);\n\n\t//workout percentage\n\tvalue = Math.round((value - min) / percent);\n\t// bar.style.right = value + \"%\";\n\tbar.style.width = value + \"%\";\n\n\telement.setAttribute(\"aria-valuemin\", min);\n\telement.setAttribute(\"aria-valuemax\", max);\n\n\tbar.appendChild(handle);\n\n\thandle.addEventListener(\"mousedown\", function(e){\n\t\tmouseDrag = e.screenX;\n\t\tmouseDragWidth = bar.offsetWidth;\n\t});\n\n\thandle.addEventListener(\"mouseover\", function(){\n\t\thandle.style.cursor = \"ew-resize\";\n\t});\n\n\telement.addEventListener(\"mousemove\", function(e){\n\t\tif(mouseDrag){\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\n\t\t}\n\t});\n\n\telement.addEventListener(\"mouseup\", function(e){\n\t\tif(mouseDrag){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tmouseDrag = false;\n\t\t\tmouseDragWidth = false;\n\n\t\t\tupdateValue();\n\t\t}\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\tcase 13: //enter\n\t\t\t\tupdateValue();\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t}\n\t});\n\n\telement.addEventListener(\"blur\", function(){\n\t\tcancel();\n\t});\n\n\treturn bar;\n}","//checkbox\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar value = cell.getValue(),\n\tinput = document.createElement(\"input\"),\n\ttristate = editorParams.tristate,\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\tindetermState = false,\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\n\t\n\tinput.setAttribute(\"type\", \"checkbox\");\n\tinput.style.marginTop = \"5px\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = value;\n\t\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\n\t\tindetermState = true;\n\t\tinput.indeterminate = true;\n\t}\n\t\n\tif(this.table.browser != \"firefox\" && this.table.browser != \"safari\"){ //prevent blur issue on mac firefox\n\t\tonRendered(function(){\n\t\t\tif(cell.getType() === \"cell\"){\n\t\t\t\tinput.focus({preventScroll: true});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\n\t\n\tfunction setValue(blur){\n\t\tvar checkedValue = input.checked;\n\t\t\n\t\tif(trueValueSet && checkedValue){\n\t\t\tcheckedValue = editorParams.trueValue;\n\t\t}else if(falseValueSet && !checkedValue){\n\t\t\tcheckedValue = editorParams.falseValue;\n\t\t}\n\t\t\n\t\tif(tristate){\n\t\t\tif(!blur){\n\t\t\t\tif(input.checked && !indetermState){\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\tindetermState = true;\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\tindetermState = false;\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(indetermState){\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\treturn checkedValue;\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"change\", function(e){\n\t\tsuccess(setValue());\n\t});\n\n\tinput.addEventListener(\"blur\", function(e){\n\t\tsuccess(setValue(true));\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tif(e.keyCode == 13){\n\t\t\tsuccess(setValue());\n\t\t}\n\t\tif(e.keyCode == 27){\n\t\t\tcancel();\n\t\t}\n\t});\n\t\n\treturn input;\n}","import input from './editors/input.js';\nimport textarea from './editors/textarea.js';\nimport number from './editors/number.js';\nimport range from './editors/range.js';\nimport date from './editors/date.js';\nimport time from './editors/time.js';\nimport datetime from './editors/datetime.js';\nimport select from './editors/select.js';\nimport list from './editors/list.js';\nimport autocomplete from './editors/autocomplete.js';\nimport star from './editors/star.js';\nimport progress from './editors/progress.js';\nimport tickCross from './editors/tickCross.js';\n\nexport default {\n\tinput:input,\n\ttextarea:textarea,\n\tnumber:number,\n\trange:range,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tselect:select,\n\tlist:list,\n\tautocomplete:autocomplete,\n\tstar:star,\n\tprogress:progress,\n\ttickCross:tickCross,\n};","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultEditors from './defaults/editors.js';\n\nclass Edit extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t\tthis.editedCells = [];\n\t\t\n\t\tthis.editors = Edit.editors;\n\t\t\n\t\tthis.registerColumnOption(\"editable\");\n\t\tthis.registerColumnOption(\"editor\");\n\t\tthis.registerColumnOption(\"editorParams\");\n\t\t\n\t\tthis.registerColumnOption(\"cellEditing\");\n\t\tthis.registerColumnOption(\"cellEdited\");\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\n\t\t\n\t\tthis.registerTableOption(\"editTriggerEvent\", \"focus\");\n\t\t\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellIsEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.updateCellClass.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-layout\", this.rowEditableCheck.bind(this));\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\n\t\tthis.subscribe(\"clipboard-paste\", this.pasteBlocker.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\n\t\t\n\t\t\n\t\t// this.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\n\t\t// this.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Paste Negation //////////\n\t///////////////////////////////////\n\t\n\tpasteBlocker(e){\n\t\tif(this.currentCell){\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Keybinding Functions ///////\n\t///////////////////////////////////\n\t\n\tkeybindingNavigateNext(e){\n\t\tvar cell = this.currentCell,\n\t\tnewRow = this.options(\"tabEndNewRow\");\n\n\t\tif(cell){\n\t\t\tif(!this.navigateNext(cell, e)){\n\t\t\t\tif(newRow){\n\t\t\t\t\tcell.getElement().firstChild.blur();\n\t\t\t\t\t\n\t\t\t\t\tif(!this.invalidEdit){\n\t\t\t\t\t\t\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\t\t\t\t\t\t\n\t\t\t\t\t\tnewRow.then(() => {\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tcell.getComponent().navigateNext();\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\t\n\t///////////////////////////////////\n\t///////// Cell Functions //////////\n\t///////////////////////////////////\n\t\n\tcellIsEdited(cell){\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\n\t}\n\t\n\tcellCancelEdit(cell){\n\t\tif(cell === this.currentCell){\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\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tupdateCellClass(cell){\n\t\tif(this.allowEdit(cell)) {\n\t\t\tcell.getElement().classList.add(\"tabulator-editable\");\n\t\t}\n\t\telse {\n\t\t\tcell.getElement().classList.remove(\"tabulator-editable\");\n\t\t}\n\t}\n\t\n\tclearCellEdited(cells){\n\t\tif(!cells){\n\t\t\tcells = this.table.modules.edit.getEditedCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n\t\n\tnavigatePrev(cell = this.currentCell, e){\n\t\tvar nextCell, prevRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateLeft();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(prevRow){\n\t\t\t\t\tnextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateNext(cell = this.currentCell, e){\n\t\tvar nextCell, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateRight();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(nextRow){\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateLeft(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateRight(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateUp(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateDown(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tfindNextEditableCell(row, index){\n\t\tvar nextCell = false;\n\t\t\n\t\tif(index < row.cells.length-1){\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tnextCell = cell;\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\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindPrevEditableCell(row, index){\n\t\tvar prevCell = false;\n\t\t\n\t\tif(index > 0){\n\t\t\tfor(var i = index-1; i >= 0; i--){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tprevCell = cell;\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\t\n\t\treturn prevCell;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.editor !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\tcolumnDeleteCheck(column){\n\t\tif(this.currentCell && this.currentCell.column === column){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowDeleteCheck(row){\n\t\tif(this.currentCell && this.currentCell.row === row){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowEditableCheck(row){\n\t\trow.getCells().forEach((cell) => {\n\t\t\tif(cell.column.modules.edit && typeof cell.column.modules.edit.check === \"function\"){\n\t\t\t\tthis.updateCellClass(cell);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//initialize column editor\n\tinitializeColumn(column){\n\t\tvar config = {\n\t\t\teditor:false,\n\t\t\tblocked:false,\n\t\t\tcheck:column.definition.editable,\n\t\t\tparams:column.definition.editorParams || {}\n\t\t};\n\t\t\n\t\t//set column editor\n\t\tswitch(typeof column.definition.editor){\n\t\t\tcase \"string\":\n\t\t\t\tif(this.editors[column.definition.editor]){\n\t\t\t\t\tconfig.editor = this.editors[column.definition.editor];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"boolean\":\n\t\t\t\tif(column.definition.editor === true){\n\t\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\n\t\t\t\t\t\tif(this.editors[column.definition.formatter]){\n\t\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(config.editor){\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t}\n\t\n\tgetCurrentCell(){\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t}\n\t\n\tclearEditor(cancel){\n\t\tvar cell = this.currentCell,\n\t\tcellEl;\n\t\t\n\t\tthis.invalidEdit = false;\n\t\t\n\t\tif(cell){\n\t\t\tthis.currentCell = false;\n\t\t\t\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\n\t\t\t\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\n\t\t\t\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\tcell.table.element.classList.remove(\"tabulator-editing\");\n\t\t}\n\t}\n\t\n\tcancelEdit(){\n\t\tif(this.currentCell){\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\t\t\t\n\t\t\tthis.clearEditor(true);\n\t\t\tcell.setValueActual(cell.getValue());\n\t\t\tcell.cellRendered();\n\t\t\t\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\n\t\t\t\tcell.row.normalizeHeight(true);\n\t\t\t}\n\t\t\t\n\t\t\tif(cell.column.definition.cellEditCancelled){\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\n\t\t}\n\t}\n\t\n\t//return a formatted value for a cell\n\tbindEditor(cell){\n\t\tif(cell.column.modules.edit){\n\t\t\tvar self = this,\n\t\t\telement = cell.getElement(true);\n\t\t\t\n\t\t\tthis.updateCellClass(cell);\n\t\t\telement.setAttribute(\"tabindex\", 0);\n\t\t\t\n\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif (e.button === 2) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}else{\n\t\t\t\t\tself.mouseClick = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(this.options(\"editTriggerEvent\") === \"dblclick\"){\n\t\t\t\telement.addEventListener(\"dblclick\", function(e){\n\t\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\tif(this.options(\"editTriggerEvent\") === \"focus\" || this.options(\"editTriggerEvent\") === \"click\"){\n\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif(this.options(\"editTriggerEvent\") === \"focus\"){\n\t\t\t\telement.addEventListener(\"focus\", function(e){\n\t\t\t\t\tif(!self.recursionBlock){\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfocusCellNoEvent(cell, block){\n\t\tthis.recursionBlock = true;\n\t\t\n\t\tif(!(block && this.table.browser === \"ie\")){\n\t\t\tcell.getElement().focus({preventScroll: true});\n\t\t}\n\t\t\n\t\tthis.recursionBlock = false;\n\t}\n\t\n\teditCell(cell, forceEdit){\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t}\n\t\n\tfocusScrollAdjust(cell){\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t\trowEl = cell.row.getElement();\n\t\t\t\n\t\t\tif(rowEl.offsetTop < topEdge){\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\n\t\t\t}else{\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0);\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t}\n\t\t\t\n\t\t\tif(cellEl.offsetLeft < leftEdge){\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\n\t\t\t}else{\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tallowEdit(cell) {\n\t\tvar check = cell.column.modules.edit ? true : false;\n\t\t\n\t\tif(cell.column.modules.edit){\n\t\t\tswitch(typeof cell.column.modules.edit.check){\n\t\t\t\tcase \"function\":\n\t\t\t\t\tif(cell.row.initialized){\n\t\t\t\t\t\tcheck = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcheck = !!cell.row.data[cell.column.modules.edit.check];\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tcheck = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn check;\n\t}\n\t\n\tedit(cell, e, forceEdit){\n\t\tvar self = this,\n\t\tallowEdit = true,\n\t\trendered = function(){},\n\t\telement = cell.getElement(),\n\t\teditFinished = false,\n\t\tcellEditor, component, params;\n\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\t\t\n\t\tif(this.currentCell){\n\t\t\tif(!this.invalidEdit && this.currentCell !== cell){\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t//handle successful value change\n\t\tfunction success(value){\n\t\t\tif(self.currentCell === cell && !editFinished){\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\n\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\n\n\t\t\t\t\teditFinished = true;\n\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\t\n\t\t\t\t\tif(!cell.modules.edit){\n\t\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.modules.edit.edited = true;\n\t\t\t\t\t\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\n\t\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.setValue(value, true);\n\n\t\t\t\t\treturn valid === true;\n\t\t\t\t}else{\n\t\t\t\t\teditFinished = true;\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\t\trendered();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\teditFinished = false;\n\t\t\t\t\t}, 10);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//handle aborted edit\n\t\tfunction cancel(){\n\t\t\t// editFinished = true;\n\n\t\t\tif(self.currentCell === cell && !editFinished){\n\t\t\t\tself.cancelEdit();\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\trendered = callback;\n\t\t}\n\t\t\n\t\tif(!cell.column.modules.edit.blocked){\n\t\t\tif(e){\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\t\n\t\t\tallowEdit = this.allowEdit(cell);\n\t\t\t\n\t\t\tif(allowEdit || forceEdit){\n\t\t\t\tself.cancelEdit();\n\t\t\t\t\n\t\t\t\tself.currentCell = cell;\n\t\t\t\t\n\t\t\t\tthis.focusScrollAdjust(cell);\n\t\t\t\t\n\t\t\t\tcomponent = cell.getComponent();\n\t\t\t\t\n\t\t\t\tif(this.mouseClick){\n\t\t\t\t\tthis.mouseClick = false;\n\t\t\t\t\t\n\t\t\t\t\tif(cell.column.definition.cellClick){\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(cell.column.definition.cellEditing){\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\n\t\t\t\t\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\t\t\t\t\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\t\t\t\t\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif(this.currentCell && cellEditor !== false){\n\t\t\t\t\tif(cellEditor instanceof Node){\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.table.element.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\t\t\t\telement.appendChild(cellEditor);\n\t\t\t\t\t\t\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\t\t\t\t\t\t\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\n\t\t\t\t\t\t\t\te.stopPropagation();\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\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\tthis.blur(element);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.blur(element);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\tthis.blur(element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.mouseClick = false;\n\t\t\tthis.blur(element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tblur(element){\n\t\tif(!this.confirm(\"edit-blur\", [element]) ){\n\t\t\telement.blur();\n\t\t}\n\t}\n\t\n\tgetEditedCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.editedCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearEdited(cell){\n\t\tvar editIndex;\n\t\t\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\n\t\t\tcell.modules.edit.edited = false;\n\t\t\t\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\n\t\t}\n\t\t\n\t\teditIndex = this.editedCells.indexOf(cell);\n\t\t\n\t\tif(editIndex > -1){\n\t\t\tthis.editedCells.splice(editIndex, 1);\n\t\t}\n\t}\n}\n\nEdit.moduleName = \"edit\";\n\n//load defaults\nEdit.editors = defaultEditors;\n\n\nexport default Edit;\n","class ExportRow{\n\tconstructor(type, columns, component, indent){\n\t\tthis.type = type;\n\t\tthis.columns = columns;\n\t\tthis.component = component || false;\n\t\tthis.indent = indent || 0;\n\t}\n}\n\nexport default ExportRow;","class ExportColumn{\n\tconstructor(value, component, width, height, depth){\n\t\tthis.value = value;\n\t\tthis.component = component || false;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\t}\n}\n\nexport default ExportColumn;","import Module from '../../core/Module.js';\n\nimport ExportRow from './ExportRow.js';\nimport ExportColumn from './ExportColumn.js';\n\nclass Export extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t\t\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html output config\n\t\t\n\t\tthis.registerColumnOption(\"htmlOutput\");\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tgenerateExportList(config, style, range, colVisProp){\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\n\t\tvar headers, body;\n\t\t\n\t\tif (range === 'range') {\n\t\t\tvar columns = this.table.modules.selectRange.selectedColumns();\n\t\t\theaders = this.config.columnHeaders !== false\n\t\t\t\t? this.headersToExportRows(this.generateColumnGroupHeaders(columns))\n\t\t\t\t: [];\n\t\t\tbody = this.bodyToExportRows(this.rowLookup(range), this.table.modules.selectRange.selectedColumns(true));\n\t\t} else {\n\t\t\theaders = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\t\t\tbody = this.bodyToExportRows(this.rowLookup(range));\n\t\t}\n\n\t\treturn headers.concat(body);\n\t}\n\t\n\tgenerateTable(config, style, range, colVisProp){\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\n\t\t\n\t\treturn this.generateTableElement(list);\n\t}\n\t\n\trowLookup(range){\n\t\tvar rows = [];\n\t\t\n\t\tif(typeof range == \"function\"){\n\t\t\trange.call(this.table).forEach((row) =>{\n\t\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tswitch(range){\n\t\t\t\tcase true:\n\t\t\t\tcase \"visible\":\n\t\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"all\":\n\t\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"selected\":\n\t\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"range\":\n\t\t\t\t\trows = this.table.modules.selectRange.selectedRows();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"active\":\n\t\t\t\tdefault:\n\t\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Object.assign([], rows);\n\t}\n\t\n\tgenerateColumnGroupHeaders(columns){\n\t\tvar output = [];\n\t\t\n\t\tif (!columns) {\n\t\t\tcolumns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\t\t}\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\tvar colData = this.processColumnGroup(column);\n\t\t\t\n\t\t\tif(colData){\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\t\n\tprocessColumnGroup(column){\n\t\tvar subGroups = column.columns,\n\t\tmaxDepth = 0,\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\t\t\n\t\tvar groupData = {\n\t\t\ttitle:title,\n\t\t\tcolumn:column,\n\t\t\tdepth:1,\n\t\t};\n\t\t\n\t\tif(subGroups.length){\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\t\t\t\n\t\t\tsubGroups.forEach((subGroup) => {\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\n\t\t\t\t\n\t\t\t\tif(subGroupData){\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t\t\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tgroupData.depth += maxDepth;\n\t\t\t\n\t\t\tif(!groupData.width){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.columnVisCheck(column)){\n\t\t\t\tgroupData.width = 1;\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groupData;\n\t}\n\t\n\tcolumnVisCheck(column){\n\t\tvar visProp = column.definition[this.colVisProp];\n\t\t\n\t\tif(typeof visProp === \"function\"){\n\t\t\tvisProp = visProp.call(this.table, column.getComponent());\n\t\t}\n\t\t\n\t\treturn visProp !== false && (column.visible || (!column.visible && visProp));\n\t}\n\t\n\theadersToExportRows(columns){\n\t\tvar headers = [],\n\t\theaderDepth = 0,\n\t\texportRows = [];\n\t\t\n\t\tfunction parseColumnGroup(column, level){\n\t\t\t\n\t\t\tvar depth = headerDepth - level;\n\t\t\t\n\t\t\tif(typeof headers[level] === \"undefined\"){\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\n\t\t\t\n\t\t\theaders[level].push(column);\n\t\t\t\n\t\t\tif(column.height > 1){\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\n\t\t\t\t\t\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\n\t\t\t\t\t\theaders[level + i] = [];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\theaders[level + i].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.width > 1){\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\n\t\t\t\t\theaders[level].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.subGroups){\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\t//calculate maximum header depth\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.depth > headerDepth){\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\t\t\n\t\tcolumns.forEach(function(column){\n\t\t\tparseColumnGroup(column,0);\n\t\t});\n\t\t\n\t\theaders.forEach((header) => {\n\t\t\tvar columns = [];\n\t\t\t\n\t\t\theader.forEach((col) => {\n\t\t\t\tif(col){\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t\t}else{\n\t\t\t\t\tcolumns.push(null);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tbodyToExportRows(rows, columns = []){\n\t\tvar exportRows = [];\n\t\t\n\t\tif (columns.length === 0) {\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif (this.columnVisCheck(column)) {\n\t\t\t\t\tcolumns.push(column.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\n\t\trows = rows.filter((row) => {\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn this.config.rowGroups !== false;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn this.config.columnCalcs !== false;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\trows.forEach((row, i) => {\n\t\t\tvar rowData = row.getData(this.colVisProp);\n\t\t\tvar exportCols = [];\n\t\t\tvar indent = 0;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\tindent = row.level;\n\t\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\" :\n\t\t\t\tcase \"row\" :\n\t\t\t\t\tcolumns.forEach((col) => {\n\t\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tgenerateTableElement(list){\n\t\tvar table = document.createElement(\"table\"),\n\t\theaderEl = document.createElement(\"thead\"),\n\t\tbodyEl = document.createElement(\"tbody\"),\n\t\tstyles = this.lookupTableStyles(),\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t\tsetup = {};\n\t\t\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\t\t\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t\t}\n\t\t\n\t\t//assign group header formatter\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\t\t\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\n\t\t\tsetup.groupHeader = [setup.groupHeader];\n\t\t}\n\t\t\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\t\n\t\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\t\t\n\t\t\n\t\tif(list.length > 1000){\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\t\t\n\t\tlist.forEach((row, i) => {\n\t\t\tlet rowEl;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"header\":\n\t\t\t\t\theaderEl.appendChild(this.generateHeaderElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbodyEl.appendChild(this.generateGroupElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbodyEl.appendChild(this.generateCalcElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\trowEl = this.generateRowElement(row, setup, styles);\n\t\t\t\t\n\t\t\t\t\tthis.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\t\tbodyEl.appendChild(rowEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(headerEl.innerHTML){\n\t\t\ttable.appendChild(headerEl);\n\t\t}\n\t\t\n\t\ttable.appendChild(bodyEl);\n\t\t\n\t\t\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\t\treturn table;\n\t}\n\t\n\tlookupTableStyles(){\n\t\tvar styles = {};\n\t\t\n\t\t//lookup row styles\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\t\t\t\n\t\t\tif(styles.firstRow){\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn styles;\n\t}\n\t\n\tgenerateHeaderElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trow.columns.forEach((column) => {\n\t\t\tif(column){\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\t\t\t\t\n\t\t\t\tcellEl.innerHTML = column.value;\n\t\t\t\t\n\t\t\t\tif(this.cloneTableStyle){\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.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\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\n\t\t\t\tif(column.component._column.visible){\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t\t}else{\n\t\t\t\t\tif(column.component._column.definition.width){\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.component._column.parent){\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateGroupElement(row, setup, styles){\n\t\t\n\t\tvar rowEl = document.createElement(\"tr\"),\n\t\tcellEl = document.createElement(\"td\"),\n\t\tgroup = row.columns[0];\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}else{\n\t\t\tif(setup.groupHeader !== false){\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t\t\n\t\tcellEl.colSpan = group.width;\n\t\tcellEl.innerHTML = group.value;\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\t\t\n\t\tif(group.component.isVisible()){\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\n\t\trowEl.appendChild(cellEl);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateCalcElement(row, setup, styles){\n\t\tvar rowEl = this.generateRowElement(row, setup, styles);\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateRowElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\trow.columns.forEach((col, i) => {\n\t\t\tif(col){\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\tcolumn = col.component._column,\n\t\t\t\ttable = this.table,\n\t\t\t\tindex = table.columnManager.findColumnIndex(column),\n\t\t\t\tvalue = col.value,\n\t\t\t\tcellStyle;\n\t\t\t\t\n\t\t\t\tvar cellWrapper = {\n\t\t\t\t\tmodules:{},\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\treturn row.component.getData();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn row.component;\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:function(){\n\t\t\t\t\t\treturn table;\n\t\t\t\t\t},\n\t\t\t\t\tgetComponent:function(){\n\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t},\n\t\t\t\t\tcolumn:column,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\n\t\t\t\t}else{\n\t\t\t\t\tswitch(typeof value){\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = value !== null ? JSON.stringify(value) : \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\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\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(value instanceof Node){\n\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t}else{\n\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;\n\t\t\t\t\n\t\t\t\tif(cellStyle){\n\t\t\t\t\tthis.mapElementStyles(cellStyle, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\n\t\t\t\t\tif(column.definition.align){\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(setup.rowFormatter && row.type === \"row\" && this.config.formatCells !== false){\n\t\t\tlet formatComponent = Object.assign(row.component);\n\n\t\t\tformatComponent.getElement = function(){return rowEl;};\n\n\t\t\tsetup.rowFormatter(row.component);\n\t\t}\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateHTMLTable(list){\n\t\tvar holder = document.createElement(\"div\");\n\t\t\n\t\tholder.appendChild(this.generateTableElement(list));\n\t\t\n\t\treturn holder.innerHTML;\n\t}\n\t\n\tgetHtml(visible, style, config, colVisProp){\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\t\t\n\t\treturn this.generateHTMLTable(list);\n\t}\n\t\n\tmapElementStyles(from, to, props){\n\t\tif(this.cloneTableStyle && from && to){\n\t\t\t\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\" : \"backgroundColor\",\n\t\t\t\t\"color\" : \"fontColor\",\n\t\t\t\t\"width\" : \"width\",\n\t\t\t\t\"font-weight\" : \"fontWeight\",\n\t\t\t\t\"font-family\" : \"fontFamily\",\n\t\t\t\t\"font-size\" : \"fontSize\",\n\t\t\t\t\"text-align\" : \"textAlign\",\n\t\t\t\t\"border-top\" : \"borderTop\",\n\t\t\t\t\"border-left\" : \"borderLeft\",\n\t\t\t\t\"border-right\" : \"borderRight\",\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\n\t\t\t\t\"padding-top\" : \"paddingTop\",\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\n\t\t\t\t\"padding-right\" : \"paddingRight\",\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\n\t\t\t};\n\t\t\t\n\t\t\tif(window.getComputedStyle){\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\t\t\t\t\n\t\t\t\tprops.forEach(function(prop){\n\t\t\t\t\tif(!to.style[lookup[prop]]){\n\t\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nExport.moduleName = \"export\";\n\nexport default Export;\n","export default {\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(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(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}\n\t\t\telse{\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(filterVal, rowVal, rowData, filterParams){\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\tmatches = [];\n\n\t\tkeywords.forEach((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(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}\n\t\t\telse{\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(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}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\":function(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};","import Module from '../../core/Module.js';\n\nimport defaultFilters from './defaults/filters.js';\n\nclass Filter extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t\tthis.tableInitialized = false;\n\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\n\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\n\t\tthis.registerTableOption(\"placeholderHeaderFilter\", false); //placeholder when header filter is empty\n\n\t\tthis.registerColumnOption(\"headerFilter\");\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\n\t\tthis.registerColumnOption(\"headerFilterParams\");\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\n\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\n\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\n\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.subscribe(\"placeholder\", this.generatePlaceholder.bind(this));\n\n\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\n\t\t}\n\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialFilter){\n\t\t\tthis.setFilter(this.table.options.initialFilter);\n\t\t}\n\n\t\tif(this.table.options.initialHeaderFilter){\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\n\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.tableInitialized = true;\n\t}\n\n\tremoteFilterParams(data, config, silent, params){\n\t\tparams.filter = this.getFilters(true, true);\n\t\treturn params;\n\t}\n\n\tgeneratePlaceholder(text){\n\t\tif(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){\n\t\t\treturn this.table.options.placeholderHeaderFilter;\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t//set standard filters\n\tuserSetFilter(field, type, value, params){\n\t\tthis.setFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\t//set standard filters\n\tuserRefreshFilter(){\n\t\tthis.refreshFilter();\n\t}\n\n\t//add filter to array\n\tuserAddFilter(field, type, value, params){\n\t\tthis.addFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\tuserSetHeaderFilterFocus(field){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.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\tuserGetHeaderFilterValue(field) {\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\treturn this.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\tuserSetHeaderFilterValue(field, value){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.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\t//remove filter from array\n\tuserRemoveFilter(field, type, value){\n\t\tthis.removeFilter(field, type, value);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear filters\n\tuserClearFilter(all){\n\t\tthis.clearFilter(all);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear header filters\n\tuserClearHeaderFilter(){\n\t\tthis.clearHeaderFilter();\n\t\tthis.refreshFilter();\n\t}\n\n\n\t//search for specific row components\n\tsearchRows(field, type, value){\n\t\treturn this.search(\"rows\", field, type, value);\n\t}\n\n\t//search for specific data\n\tsearchData(field, type, value){\n\t\treturn this.search(\"data\", field, type, value);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumnHeaderFilter(column){\n\t\tvar def = column.definition;\n\n\t\tif(def.headerFilter){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\n\t//initialize column header filter\n\tinitializeColumn(column, value){\n\t\tvar self = this,\n\t\tfield = column.getField();\n\n\t\t//handle successfully value change\n\t\tfunction success(value){\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\ttype = \"\",\n\t\t\tfilterChangeCheck = \"\",\n\t\t\tfilterFunc;\n\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\n\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\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\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}else{\n\t\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\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function(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 column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!filterFunc){\n\t\t\t\t\t\tswitch(filterType){\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\n\t\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\t}else{\n\t\t\t\t\t\t\t\t\t\treturn false;\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\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type};\n\t\t\t\t}else{\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\t\tself.trackChanges();\n\t\t\t\t\tself.refreshFilter();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess:success,\n\t\t\tattrType:false,\n\t\t\ttagType:false,\n\t\t\temptyFunc:false,\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t}\n\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\n\t\tvar self = this,\n\t\tsuccess = column.modules.filter.success,\n\t\tfield = column.getField(),\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;\n\n\t\tcolumn.modules.filter.value = initialValue;\n\n\t\t//handle aborted edit\n\t\tfunction cancel(){}\n\n\t\tfunction onRendered(callback){\n\t\t\tonRenderedCallback = callback;\n\t\t}\n\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t\t}\n\n\t\tif(field){\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\n\t\t\t\treturn !value && value !== 0;\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch(typeof column.definition.headerFilter){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"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\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== 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}else{\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(editor){\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:() => {\n\t\t\t\t\t\treturn \"header\";\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight:function(){\n\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\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);\n\n\t\t\t\tif(!editorElement){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(editorElement instanceof Node)){\n\t\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\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : (column.definition.headerFilterPlaceholder || self.langText(\"headerFilters|default\")));\n\t\t\t\t});\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\n\t\t\t\t\tvar left = this.table.columnManager.contentsElement.scrollLeft;\n\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft;\n\n\t\t\t\t\tif(left !== headerPos){\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function(e){\n\t\t\t\t\tif(typingTimer){\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function(){\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\n\t\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\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propagating click to column sorters etc\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",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}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tif(!reinitialize){\n\t\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t\t}\n\n\t\t\t\tif(onRenderedCallback){\n\t\t\t\t\tonRenderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t}\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\thideHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tshowHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//programmatically set focus of header filter\n\tsetHeaderFilterFocus(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically get value of header filter\n\tgetHeaderFilterValue(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\treturn column.modules.filter.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\t//programmatically set value of header filter\n\tsetHeaderFilterValue(column, value){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\treloadHeaderFilter(column){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshFilter(){\n\t\tif(this.tableInitialized){\n\t\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\t\tthis.reloadData(null, false, false);\n\t\t\t}else{\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the filters has changed since last use\n\ttrackChanges(){\n\t\tthis.changed = true;\n\t\tthis.dispatch(\"filter-changed\");\n\t}\n\n\t//check if the filters has changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//set standard filters\n\tsetFilter(field, type, value, params){\n\t\tthis.filterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tthis.addFilter(field);\n\t}\n\n\t//add filter to array\n\taddFilter(field, type, value, params){\n\t\tvar changed = false;\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tthis.filterList.push(filter);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\n\t\tif(changed){\n\t\t\tthis.trackChanges();\n\t\t}\n\t}\n\n\tfindFilter(filter){\n\t\tvar column;\n\n\t\tif(Array.isArray(filter)){\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif(typeof filter.field == \"function\"){\n\t\t\tfilterFunc = function(data){\n\t\t\t\treturn filter.field(data, filter.type || {});// pass params to custom filter function\n\t\t\t};\n\t\t}else{\n\n\t\t\tif(Filter.filters[filter.type]){\n\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}\n\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t}\n\n\tfindSubFilters(filters){\n\t\tvar output = [];\n\n\t\tfilters.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t}\n\n\t//get all filters\n\tgetFilters(all, ajax){\n\t\tvar output = [];\n\n\t\tif(all){\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif(ajax){\n\t\t\toutput.forEach(function(item){\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\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t}\n\n\t//filter to Object\n\tfiltersToArray(filterList, ajax){\n\t\tvar output = [];\n\n\t\tfilterList.forEach((filter) => {\n\t\t\tvar item;\n\n\t\t\tif(Array.isArray(filter)){\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\n\t\t\t}else{\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value};\n\n\t\t\t\tif(ajax){\n\t\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//get all filters\n\tgetHeaderFilters(){\n\t\tvar output = [];\n\n\t\tfor(var key in this.headerFilters){\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//remove filter from array\n\tremoveFilter(field, type, value){\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tvar index = -1;\n\n\t\t\tif(typeof filter.field == \"object\"){\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.filterList.splice(index, 1);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear filters\n\tclearFilter(all){\n\t\tthis.filterList = [];\n\n\t\tif(all){\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear header filters\n\tclearHeaderFilter(){\n\t\tthis.headerFilters = {};\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.headerFilterColumns.forEach((column) => {\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\n\t\t\t\tdelete column.modules.filter.value;\n\t\t\t}\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\t\tthis.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//search data and return matching rows\n\tsearch (searchType, field, type, value){\n\t\tvar activeRows = [],\n\t\tfilterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach((filter) => {\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\n\t\t});\n\n\t\treturn activeRows;\n\t}\n\n\t//filter row array\n\tfilter(rowList, filters){\n\t\tvar activeRows = [],\n\t\tactiveRowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\n\t\t}\n\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\n\n\t\t\trowList.forEach((row) => {\n\t\t\t\tif(this.filterRow(row)){\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}else{\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\n\n\t\t\tactiveRows.forEach((row) => {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t}\n\n\t//filter individual row\n\tfilterRow(row, filters){\n\t\tvar match = true,\n\t\tdata = row.getData();\n\n\t\tthis.filterList.forEach((filter) => {\n\t\t\tif(!this.filterRecurse(filter, data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\n\t\tfor(var field in this.headerFilters){\n\t\t\tif(!this.headerFilters[field].func(data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t}\n\n\tfilterRecurse(filter, data){\n\t\tvar match = false;\n\n\t\tif(Array.isArray(filter)){\n\t\t\tfilter.forEach((subFilter) => {\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t}\n}\n\nFilter.moduleName = \"filter\";\n\n//load defaults\nFilter.filters = defaultFilters;\n\nexport default Filter;","export default function(cell, formatterParams, onRendered){\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\treturn cell.getValue();\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\tvar floatVal = parseFloat(cell.getValue()),\n\tsign = \"\",\n\tnumber, integer, decimal, rgx, value;\n\n\tvar decimalSym = formatterParams.decimal || \".\";\n\tvar thousandSym = formatterParams.thousand || \",\";\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\n\tvar symbol = formatterParams.symbol || \"\";\n\tvar after = !!formatterParams.symbolAfter;\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\tif(isNaN(floatVal)){\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t}\n\n\tif(floatVal < 0){\n\t\tfloatVal = Math.abs(floatVal);\n\t\tsign = negativeSign;\n\t}\n\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\tnumber = String(number).split(\".\");\n\n\tinteger = number[0];\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\tif (formatterParams.thousand !== false) {\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\t}\n\n\tvalue = integer + decimal;\n\t\n\tif(sign === true){\n\t\tvalue = \"(\" + value + \")\";\n\t\treturn after ? value + symbol : symbol + value;\n\t}else{\n\t\treturn after ? sign + value + symbol : sign + symbol + value;\n\t}\n}","import Helpers from '../../../../core/tools/Helpers.js';\n\n\nexport default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\turlPrefix = formatterParams.urlPrefix || \"\",\n\tdownload = formatterParams.download,\n\tlabel = value,\n\tel = document.createElement(\"a\"),\n\tdata;\n\n\tfunction labelTraverse(path, data){\n\t\tvar item = path.shift(),\n\t\tvalue = data[item];\n\t\t\n\t\tif(path.length && typeof value === \"object\"){\n\t\t\treturn labelTraverse(path, value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tif(formatterParams.labelField){\n\t\tdata = cell.getData();\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\n\t}\n\n\tif(formatterParams.label){\n\t\tswitch(typeof formatterParams.label){\n\t\t\tcase \"string\":\n\t\t\t\tlabel = formatterParams.label;\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(label){\n\t\tif(formatterParams.urlField){\n\t\t\tdata = cell.getData();\n\n\t\t\tvalue = Helpers.retrieveNestedData(this.table.options.nestedFieldSeparator, formatterParams.urlField, data);\n\t\t}\n\n\t\tif(formatterParams.url){\n\t\t\tswitch(typeof formatterParams.url){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\tif(formatterParams.target){\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t}\n\n\t\tif(formatterParams.download){\n\n\t\t\tif(typeof download == \"function\"){\n\t\t\t\tdownload = download(cell);\n\t\t\t}else{\n\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t}\n\n\t\t\tel.setAttribute(\"download\", download);\n\t\t}\n\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\treturn el;\n\t}else{\n\t\treturn \" \";\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"img\"),\n\tsrc = cell.getValue();\n\n\tif(formatterParams.urlPrefix){\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t}\n\n\tif(formatterParams.urlSuffix){\n\t\tsrc = src + formatterParams.urlSuffix;\n\t}\n\n\tel.setAttribute(\"src\", src);\n\n\tswitch(typeof formatterParams.height){\n\t\tcase \"number\":\n\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.height = formatterParams.height;\n\t\t\tbreak;\n\t}\n\n\tswitch(typeof formatterParams.width){\n\t\tcase \"number\":\n\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.width = formatterParams.width;\n\t\t\tbreak;\n\t}\n\n\tel.addEventListener(\"load\", function(){\n\t\tcell.getRow().normalizeHeight();\n\t});\n\n\treturn el;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tempty = formatterParams.allowEmpty,\n\ttruthy = formatterParams.allowTruthy,\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\n\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\n\t\telement.setAttribute(\"aria-checked\", true);\n\t\treturn tick || \"\";\n\t}else{\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\treturn \"\";\n\t\t}else{\n\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\treturn cross || \"\";\n\t\t}\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif(newDatetime.isValid){\n\t\t\tif(formatterParams.timezone){\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\n\t\t\t}\n\n\t\t\treturn newDatetime.toFormat(outputFormat);\n\t\t}else{\n\t\t\tif(invalid === true || !value){\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}else{\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif (newDatetime.isValid){\n\t\t\tif(humanize){\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\n\t\t\t}else{\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[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}else{\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar value = cell.getValue();\n\n\tif (typeof formatterParams[value] === \"undefined\") {\n\t\tconsole.warn('Missing display value for ' + value);\n\t\treturn value;\n\t}\n\n\treturn formatterParams[value];\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\tstars = document.createElement(\"span\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\tstarActive = '',\n\tstarInactive = '';\n\n\t//style stars holder\n\tstars.style.verticalAlign = \"middle\";\n\n\t//style star\n\tstar.setAttribute(\"width\", \"14\");\n\tstar.setAttribute(\"height\", \"14\");\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\tfor(var i=1;i<= maxStars;i++){\n\t\tvar nextStar = star.cloneNode(true);\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\tstars.appendChild(nextStar);\n\t}\n\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\telement.setAttribute(\"aria-label\", value);\n\n\treturn stars;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\tel = document.createElement(\"span\"),\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\tcolor = \"#666666\",\n\tpercent, percentValue;\n\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\n\t\treturn;\n\t}\n\n\tel.classList.add(\"tabulator-traffic-light\");\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set color\n\tswitch(typeof colors){\n\t\tcase \"string\":\n\t\t\tcolor = colors;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = colors(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(colors)){\n\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = colors[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\tel.style.backgroundColor = color;\n\n\treturn el;\n}","import CellComponent from '../../../../core/cell/CellComponent.js';\n\nexport default function(cell, formatterParams = {}, onRendered){ //progress bar\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\telement = cell.getElement(),\n\tmax = formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams.min ? formatterParams.min : 0,\n\tlegendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\tpercent, percentValue, color, legend, legendColor;\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set bar color\n\tswitch(typeof formatterParams.color){\n\t\tcase \"string\":\n\t\t\tcolor = formatterParams.color;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = formatterParams.color(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.color)){\n\t\t\t\tlet unit = 100 / formatterParams.color.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tcolor = \"#2DC214\";\n\t}\n\n\t//generate legend\n\tswitch(typeof formatterParams.legend){\n\t\tcase \"string\":\n\t\t\tlegend = formatterParams.legend;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegend = formatterParams.legend(value);\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tlegend = value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegend = false;\n\t}\n\n\t//set legend color\n\tswitch(typeof formatterParams.legendColor){\n\t\tcase \"string\":\n\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.legendColor)){\n\t\t\t\tlet unit = 100 / formatterParams.legendColor.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegendColor = \"#000\";\n\t}\n\n\telement.style.minWidth = \"30px\";\n\telement.style.position = \"relative\";\n\n\telement.setAttribute(\"aria-label\", percentValue);\n\n\tvar barEl = document.createElement(\"div\");\n\tbarEl.style.display = \"inline-block\";\n\tbarEl.style.width = percentValue + \"%\";\n\tbarEl.style.backgroundColor = color;\n\tbarEl.style.height = \"100%\";\n\n\tbarEl.setAttribute('data-max', max);\n\tbarEl.setAttribute('data-min', min);\n\n\tvar barContainer = document.createElement(\"div\");\n\tbarContainer.style.position = \"relative\";\n\tbarContainer.style.width = \"100%\";\n\tbarContainer.style.height = \"100%\";\n\n\tif(legend){\n\t\tvar legendEl = document.createElement(\"div\");\n\t\tlegendEl.style.position = \"absolute\";\n\t\tlegendEl.style.top = 0;\n\t\tlegendEl.style.left = 0;\n\t\tlegendEl.style.textAlign = legendAlign;\n\t\tlegendEl.style.width = \"100%\";\n\t\tlegendEl.style.color = legendColor;\n\t\tlegendEl.innerHTML = legend;\n\t}\n\n\tonRendered(function(){\n\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\tif(!(cell instanceof CellComponent)){\n\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\tholderEl.style.position = \"absolute\";\n\t\t\tholderEl.style.top = \"4px\";\n\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\tholderEl.style.left = \"4px\";\n\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\telement.appendChild(holderEl);\n\n\t\t\telement = holderEl;\n\t\t}\n\n\t\telement.appendChild(barContainer);\n\t\tbarContainer.appendChild(barEl);\n\n\t\tif(legend){\n\t\t\tbarContainer.appendChild(legendEl);\n\t\t}\n\t});\n\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\tvar content = document.createElement(\"span\");\n\tvar row = cell.getRow();\n\tvar table = cell.getTable();\n\n\trow.watchPosition((position) => {\n\t\tif (formatterParams.relativeToPage) {\n\t\t\tposition += table.modules.page.getPageSize() * (table.modules.page.getPage() - 1);\n\t\t}\n\t\tcontent.innerText = position;\n\t});\n\t\n\treturn content;\n}\n","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\treturn \"
        \";\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"div\"),\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\n\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\n\tel.innerHTML = `\n \n \n\n\n\n \n`;\n\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\tfunction toggleList(isOpen){\n\t\tvar collapseEl = config.element;\n\n\t\tconfig.open = isOpen;\n\n\t\tif(collapseEl){\n\n\t\t\tif(config.open){\n\t\t\t\tel.classList.add(\"open\");\n\t\t\t\tcollapseEl.style.display = '';\n\t\t\t}else{\n\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tel.addEventListener(\"click\", function(e){\n\t\te.stopImmediatePropagation();\n\t\ttoggleList(!config.open);\n\t\tcell.getTable().rowManager.adjustTableSize();\n\t});\n\n\ttoggleList(config.open);\n\n\treturn el;\n}","import RowComponent from '../../../../core/row/RowComponent.js';\n\nexport default function(cell, formatterParams, onRendered){\n\tvar checkbox = document.createElement(\"input\");\n\tvar blocked = false;\n\n\tcheckbox.type = 'checkbox';\n\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\n\t\n\tif(this.table.modExists(\"selectRow\", true)){\n\n\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(typeof cell.getRow == 'function'){\n\t\t\tvar row = cell.getRow();\n\n\t\t\tif(row instanceof RowComponent){\n\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\t\tif(this.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\t\tif(!blocked){\n\t\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t}else{\n\t\t\t\tcheckbox = \"\";\n\t\t\t}\n\t\t}else {\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\n\t\t\t\t\tthis.table.deselectRow();\n\t\t\t\t}else {\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t}\n\t}\n\n\treturn checkbox;\n}","import plaintext from './formatters/plaintext.js';\nimport html from './formatters/html.js';\nimport textarea from './formatters/textarea.js';\nimport money from './formatters/money.js';\nimport link from './formatters/link.js';\nimport image from './formatters/image.js';\nimport tickCross from './formatters/tickCross.js';\nimport datetime from './formatters/datetime.js';\nimport datetimediff from './formatters/datetimediff.js';\nimport lookup from './formatters/lookup.js';\nimport star from './formatters/star.js';\nimport traffic from './formatters/traffic.js';\nimport progress from './formatters/progress.js';\nimport color from './formatters/color.js';\nimport buttonTick from './formatters/buttonTick.js';\nimport buttonCross from './formatters/buttonCross.js';\nimport rownum from './formatters/rownum.js';\nimport handle from './formatters/handle.js';\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\nimport rowSelection from './formatters/rowSelection.js';\n\nexport default {\n\tplaintext:plaintext,\n\thtml:html,\n\ttextarea:textarea,\n\tmoney:money,\n\tlink:link,\n\timage:image,\n\ttickCross:tickCross,\n\tdatetime:datetime,\n\tdatetimediff:datetimediff,\n\tlookup:lookup,\n\tstar:star,\n\ttraffic:traffic,\n\tprogress:progress,\n\tcolor:color,\n\tbuttonTick:buttonTick,\n\tbuttonCross:buttonCross,\n\trownum:rownum,\n\thandle:handle,\n\tresponsiveCollapse:responsiveCollapse,\n\trowSelection:rowSelection,\n};","import Module from '../../core/Module.js';\n\nimport defaultFormatters from './defaults/formatters.js';\n\nclass Format extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.registerColumnOption(\"formatter\");\n\t\tthis.registerColumnOption(\"formatterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"formatterPrint\");\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\n\t\tthis.registerColumnOption(\"formatterClipboard\");\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\n\t\tthis.registerColumnOption(\"titleFormatter\");\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\n\t}\n\t\n\t//initialize column formatter\n\tinitializeColumn(column){\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\t\t\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t\t}\n\t}\n\t\n\tlookupFormatter(column, type){\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\n\t\tformatter = column.definition[\"formatter\" + type];\n\t\t\n\t\t//set column formatter\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tconfig.formatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = formatter;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn config;\n\t}\n\t\n\tcellRendered(cell){\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\n\t\t\tcell.modules.format.renderedCallback();\n\t\t\tcell.modules.format.rendered = true;\n\t\t}\n\t}\n\t\n\t//return a formatted value for a column header\n\tformatHeader(column, title, el){\n\t\tvar formatter, params, onRendered, mockCell;\n\t\t\n\t\tif(column.definition.titleFormatter){\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\n\t\t\t\n\t\t\tonRendered = (callback) => {\n\t\t\t\tcolumn.titleFormatterRendered = callback;\n\t\t\t};\n\t\t\t\n\t\t\tmockCell = {\n\t\t\t\tgetValue:function(){\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tgetElement:function(){\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tgetType:function(){\n\t\t\t\t\treturn \"header\";\n\t\t\t\t},\n\t\t\t\tgetColumn:function(){\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetTable:() => {\n\t\t\t\t\treturn this.table;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\tparams = column.definition.titleFormatterParams || {};\n\t\t\t\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\t\t\t\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\n\t\t}else{\n\t\t\treturn title;\n\t\t}\n\t}\n\t\n\t\n\t//return a formatted value for a cell\n\tformatValue(cell){\n\t\tvar component = cell.getComponent(),\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\tif(!cell.modules.format){\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\t\t\t\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t}\n\t\t\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t}\n\t\n\tformatExportValue(cell, type){\n\t\tvar formatter = cell.column.modules.format[type],\n\t\tparams;\n\t\t\n\t\tif(formatter){\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(cell.getComponent()) : formatter.params;\n\t\t\t\n\t\t\tfunction onRendered(callback){\n\t\t\t\tif(!cell.modules.format){\n\t\t\t\t\tcell.modules.format = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\t\tcell.modules.format.rendered = false;\n\t\t\t}\n\t\t\t\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t\t\t\n\t\t}else{\n\t\t\treturn this.formatValue(cell);\n\t\t}\n\t}\n\t\n\tsanitizeHTML(value){\n\t\tif(value){\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\t\t\t\n\t\t\treturn String(value).replace(/[&<>\"'`=/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t}\n\t\n\temptyToSpace(value){\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n\t}\n\t\n\t//get formatter for cell\n\tgetFormatter(formatter){\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tformatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t//Custom formatter Function, do nothing\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn formatter;\n\t}\n}\n\nFormat.moduleName = \"format\";\n\n//load defaults\nFormat.formatters = defaultFormatters;\n\nexport default Format;","import Module from '../../core/Module.js';\n\nclass FrozenColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.blocked = true;\n\t\t\n\t\tthis.registerColumnOption(\"frozen\");\n\t}\n\t\n\t//reset initial state\n\treset(){\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.active = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\n\t\t\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-deleted\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-show\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"columns-loaded\", this.reinitializeColumns.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t}\n\t\n\tblockLayout(){\n\t\tthis.blocked = true;\n\t}\n\t\n\tunblockLayout(){\n\t\tthis.blocked = false;\n\t}\n\t\n\tlayoutCell(cell){\n\t\tthis.layoutElement(cell.element, cell.column);\n\t}\n\t\n\treinitializeColumns(){\n\t\tthis.reset();\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tthis.initializeColumn(column);\n\t\t});\n\n\t\tthis.layout();\n\t}\n\t\n\t//initialize specific column\n\tinitializeColumn(column){\n\t\tvar config = {margin:0, edge:false};\n\t\t\n\t\tif(!column.isGroup){\t\t\t\n\t\t\tif(this.frozenCheck(column)){\n\t\t\t\tconfig.position = this.initializationMode;\n\t\t\t\t\n\t\t\t\tif(this.initializationMode == \"left\"){\n\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t}else{\n\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.active = true;\n\t\t\t\t\n\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t}else{\n\t\t\t\tthis.initializationMode = \"right\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfrozenCheck(column){\n\t\tif(column.parent.isGroup && column.definition.frozen){\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t\t}\n\t\t\n\t\tif(column.parent.isGroup){\n\t\t\treturn this.frozenCheck(column.parent);\n\t\t}else{\n\t\t\treturn column.definition.frozen;\n\t\t}\n\t}\n\t\n\t//layout calculation rows\n\tlayoutCalcRows(){\n\t\tif(this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modExists(\"groupRows\")){\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tlayoutGroupCalcs(groups){\n\t\tgroups.forEach((group) => {\n\t\t\tif(group.calcs.top){\n\t\t\t\tthis.layoutRow(group.calcs.top);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.calcs.bottom){\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.groupList && group.groupList.length){\n\t\t\t\tthis.layoutGroupCalcs(group.groupList);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//calculate column positions and layout headers\n\tlayoutColumnPosition(allCells){\n\t\tvar leftParents = [];\n\t\t\n\t\tvar leftMargin = 0;\n\t\tvar rightMargin = 0;\n\t\t\n\t\tthis.leftColumns.forEach((column, i) => {\t\n\t\t\tcolumn.modules.frozen.marginValue = leftMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tleftMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.leftColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\n\t\t\t\tif(!leftParents.includes(parentEl)){\n\t\t\t\t\tthis.layoutElement(parentEl, column);\n\t\t\t\t\tleftParents.push(parentEl);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tparentEl.classList.toggle(\"tabulator-frozen-left\", column.modules.frozen.edge && column.modules.frozen.position === \"left\");\n\t\t\t\tparentEl.classList.toggle(\"tabulator-frozen-right\", column.modules.frozen.edge && column.modules.frozen.position === \"right\");\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column, i) => {\n\t\t\t\n\t\t\tcolumn.modules.frozen.marginValue = rightMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\trightMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.rightColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetColGroupParentElement(column){\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n\t}\n\t\n\t//layout columns appropriately\n\tlayout(){\t\n\t\tif(this.active && !this.blocked){\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition();\n\t\t\t\n\t\t\tthis.reinitializeRows();\n\t\t\t\n\t\t\tthis.layoutCalcRows();\n\t\t}\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.table.rowManager.getVisibleRows(true);\n\t\tvar otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\t\t\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t\t\n\t\tvisibleRows.forEach((row) =>{\n\t\t\tif(row.type === \"row\"){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutRow(row){\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\n\t\t}\n\t\t\n\t\tthis.leftColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutElement(element, column){\n\t\tvar position;\n\t\t\n\t\tif(column.modules.frozen && element){\n\t\t\telement.style.position = \"sticky\";\n\n\t\t\tif(this.table.rtl){\n\t\t\t\tposition = column.modules.frozen.position === \"left\" ? \"right\" : \"left\";\n\t\t\t}else{\n\t\t\t\tposition = column.modules.frozen.position;\n\t\t\t}\n\t\t\n\t\t\telement.style[position] = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\t\t\t\n\t\t\telement.classList.toggle(\"tabulator-frozen-left\", column.modules.frozen.edge && column.modules.frozen.position === \"left\");\n\t\t\telement.classList.toggle(\"tabulator-frozen-right\", column.modules.frozen.edge && column.modules.frozen.position === \"right\");\n\t\t}\n\t}\n\n\tadjustForScrollbar(width){\n\t\tif(this.rightColumns.length){\n\t\t\tthis.table.columnManager.getContentsElement().style.width = \"calc(100% - \" + width + \"px)\";\n\t\t}\n\t}\n\t\n\t_calcSpace(columns, index){\n\t\tvar width = 0;\n\t\t\n\t\tfor (let i = 0; i < index; i++){\n\t\t\tif(columns[i].visible){\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn width;\n\t}\n}\n\nFrozenColumns.moduleName = \"frozenColumns\";\n\nexport default FrozenColumns;","import Module from '../../core/Module.js';\n\nclass FrozenRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\n\n\t\t//register table options\n\t\tthis.registerTableOption(\"frozenRowsField\", \"id\"); //field to choose frozen rows by\n\t\tthis.registerTableOption(\"frozenRows\", false); //holder for frozen row identifiers\n\t}\n\n\tinitialize(){\n\t\tvar\tfragment = document.createDocumentFragment();\n\t\t\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\t\t\n\t\tfragment.appendChild(document.createElement(\"br\"));\n\t\tfragment.appendChild(this.topElement);\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);\n\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\n\n\t\tif(this.table.options.frozenRows){\n\t\t\tthis.subscribe(\"data-processed\", this.initializeRows.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t}\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\tinitializeRows(){\n\t\tthis.table.rowManager.getRows().forEach((row) => {\n\t\t\tthis.initializeRow(row);\n\t\t});\n\t}\n\n\tinitializeRow(row){\n\t\tvar frozenRows = this.table.options.frozenRows,\n\t\trowType = typeof frozenRows;\n\n\t\tif(rowType === \"number\"){\n\t\t\tif(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(rowType === \"function\"){\n\t\t\tif(frozenRows.call(this.table, row.getComponent())){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(Array.isArray(frozenRows)){\n\t\t\tif(frozenRows.includes(row.data[this.options(\"frozenRowsField\")])){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowFrozen(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\treturn index > -1;\n\t}\n\n\tisFrozen(){\n\t\treturn !!this.rows.length;\n\t}\n\n\tvisibleRows(viewable, rows){\n\t\tthis.rows.forEach((row) => {\n\t\t\trows.push(row);\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\t//filter frozen rows out of display data\n\tgetRows(rows){\n\t\tvar output = rows.slice(0);\n\n\t\tthis.rows.forEach(function(row){\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif(index > -1){\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tfreezeRow(row){\n\t\tif(!row.modules.frozen){\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.styleRows();\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t}\n\n\tunfreezeRow(row){\n\t\tif(row.modules.frozen){\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tthis.detachRow(row);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tif(this.rows.length){\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t}\n\n\tdetachRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t}\n\n\tstyleRows(row){\n\t\tthis.rows.forEach((row, i) => {\n\t\t\tthis.table.rowManager.styleRow(row, i);\n\t\t});\n\t}\n}\n\nFrozenRows.moduleName = \"frozenRows\";\n\nexport default FrozenRows;","//public group object\nclass GroupComponent {\n\tconstructor (group){\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"group\", target._group, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKey(){\n\t\treturn this._group.key;\n\t}\n\n\tgetField(){\n\t\treturn this._group.field;\n\t}\n\n\tgetElement(){\n\t\treturn this._group.element;\n\t}\n\n\tgetRows(){\n\t\treturn this._group.getRows(true);\n\t}\n\n\tgetSubGroups(){\n\t\treturn this._group.getSubGroups(true);\n\t}\n\n\tgetParentGroup(){\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t}\n\n\tisVisible(){\n\t\treturn this._group.visible;\n\t}\n\n\tshow(){\n\t\tthis._group.show();\n\t}\n\n\thide(){\n\t\tthis._group.hide();\n\t}\n\n\ttoggle(){\n\t\tthis._group.toggleVisibility();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible);\n\t}\n\n\t_getSelf(){\n\t\treturn this._group;\n\t}\n\n\tgetTable(){\n\t\treturn this._group.groupManager.table;\n\t}\n}\n\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\nimport GroupComponent from './GroupComponent.js';\n\n//Group functions\nclass Group{\n\t\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.element = false;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\t\t\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\t\t\n\t\tthis.createValueGroups();\n\t}\n\t\n\twipe(elementsOnly){\n\t\tif(!elementsOnly){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\tgroup.wipe();\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tif(row.modules){\n\t\t\t\t\t\tdelete row.modules.group;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n\t\n\tcreateElements(){\n\t\tvar arrow = document.createElement(\"div\");\n\t\tarrow.classList.add(\"tabulator-arrow\");\n\t\t\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\t\tthis.arrowElement.appendChild(arrow);\n\t\t\n\t\t//setup movable rows\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t}\n\t\n\tcreateValueGroups(){\n\t\tvar level = this.level + 1;\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\n\t\t\t\tthis._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t}\n\t\n\taddBindings(){\n\t\tvar toggleElement;\n\t\t\n\t\tif(this.groupManager.table.options.groupToggleElement){\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\n\t\t\t\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\n\t\t\t\tif(this.groupManager.table.options.groupToggleElement === \"arrow\"){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\t//allow click event to propagate before toggling visibility\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.toggleVisibility();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\t\n\t_createGroup(groupID, level){\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\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\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\t_addRowToGroup(row){\n\t\t\n\t\tvar level = this.level + 1;\n\t\t\n\t\tif(this.hasSubGroups){\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\tgroupKey = level + \"_\" + groupID;\n\t\t\t\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\t\tif(this.groups[groupKey]){\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(!this.groups[groupKey]){\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_addRow(row){\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t}\n\t\n\tinsertRow(row, to, after){\n\t\tvar data = this.conformRowData({});\n\t\t\n\t\trow.updateData(data);\n\t\t\n\t\tvar toIndex = this.rows.indexOf(to);\n\t\t\n\t\tif(toIndex > -1){\n\t\t\tif(after){\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\n\t\t\t}else{\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t}else{\n\t\t\tif(after){\n\t\t\t\tthis.rows.push(row);\n\t\t\t}else{\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\trow.modules.group = this;\n\t\t\n\t\t// this.generateGroupHeaderContents();\n\t\t\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\t\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\t\n\tscrollHeader(left){\n\t\tif(this.arrowElement){\n\t\t\tthis.arrowElement.style.marginLeft = left;\n\t\t\t\n\t\t\tthis.groupList.forEach(function(child){\n\t\t\t\tchild.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tgetRowIndex(row){}\n\t\n\t//update row data to match grouping constraints\n\tconformRowData(data){\n\t\tif(this.field){\n\t\t\tdata[this.field] = this.key;\n\t\t}else{\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\t\t\n\t\tif(this.parent){\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\tremoveRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t\t\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.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}\t\t\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(el.parentNode){\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupManager.blockRedraw){\n\t\t\t\tthis.generateGroupHeaderContents();\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupList.length){\n\t\t\t\tif(this.parent){\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t}else{\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetHeadersAndRows(){\n\t\tvar output = [];\n\t\t\n\t\toutput.push(this);\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\t\n\t\tif(this.calcs.top){\n\t\t\tthis.calcs.top.detachElement();\n\t\t\tthis.calcs.top.deleteCells();\n\t\t}\n\t\t\n\t\tif(this.calcs.bottom){\n\t\t\tthis.calcs.bottom.detachElement();\n\t\t\tthis.calcs.bottom.deleteCells();\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\tif(this.visible){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toutput = output.concat(this.rows);\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\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\t\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetData(visible, transform){\n\t\tvar output = [];\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(!visible || (visible && this.visible)){\n\t\t\tthis.rows.forEach((row) => {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRowCount(){\n\t\tvar count = 0;\n\t\t\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t}else{\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t\n\ttoggleVisibility(){\n\t\tif(this.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\t\n\thide(){\n\t\tthis.visible = false;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\t\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\n\t}\n\t\n\tshow(){\n\t\tthis.visible = true;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tvar prev = this.generateElement();\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((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\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\n\t}\n\t\n\t_visSet(){\n\t\tvar data = [];\n\t\t\n\t\tif(typeof this.visible == \"function\"){\n\t\t\t\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\t\t\t\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\t\n\t\t\t\tif(result){\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tif(this.rows.find(function(item){\n\t\t\t\treturn item === row;\n\t\t\t})){\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetSubGroups(component){\n\t\tvar output = [];\n\t\t\n\t\tthis.groupList.forEach(function(child){\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRows(component, includeChildren){\n\t\tvar output = [];\n\t\t\n\t\tif(includeChildren && this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getRows(component, includeChildren));\n\t\t\t});\n\t\t}else{\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\toutput.push(component ? row.getComponent() : row);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgenerateGroupHeaderContents(){\n\t\tvar data = [];\n\t\t\n\t\tvar rows = this.getRows(false, true);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\t\t\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\n\t\tif(typeof this.elementContents === \"string\"){\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t}else{\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\t\t\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t}\n\t\n\tgetPath(path = []) {\n\t\tpath.unshift(this.key);\n\t\tif(this.parent) {\n\t\t\tthis.parent.getPath(path);\n\t\t}\n\t\treturn path;\n\t}\n\t\n\t////////////// Standard Row Functions //////////////\n\t\n\tgetElement(){\n\t\treturn this.elementContents ? this.element : this.generateElement();\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.addBindings = false;\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(this.visible){\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t}else{\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\t\t\n\t\tthis.generateGroupHeaderContents();\n\t\t\n\t\t// this.addBindings();\n\t\t\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(){\n\t\tthis.setHeight(this.element.clientHeight);\n\t}\n\t\n\tinitialize(force){\n\t\tif(!this.initialized || force){\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\treinitialize(){\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\t\t\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.initialize(true);\n\t\t}\n\t}\n\t\n\tsetHeight(height){\n\t\tif(this.height != height){\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\tgetGroup(){\n\t\treturn this;\n\t}\n\t\n\treinitializeHeight(){}\n\t\n\tcalcHeight(){}\n\t\n\tsetCellHeight(){}\n\t\n\tclearCellHeight(){}\n\t\n\tdeinitializeHeight(){}\n\n\trendered(){}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new GroupComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n\nexport default Group;","import Module from '../../core/Module.js';\n\nimport Group from './Group.js';\n\nclass GroupRows extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\t\n\t\tthis.displayHandler = this.getRows.bind(this);\n\n\t\tthis.blockRedraw = false;\n\t\t\n\t\t//register table options\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\n\t\tthis.registerTableOption(\"groupValues\", false);\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\n\t\t\n\t\t//register table functions\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\n\t}\n\t\n\t//initialize group configuration\n\tinitialize(){\n\t\tthis.subscribe(\"table-destroy\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wipe\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wiped\", this._restore_redrawing.bind(this));\n\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t_blockRedrawing(){\n\t\tthis.blockRedraw = true;\n\t}\n\n\t_restore_redrawing(){\n\t\tthis.blockRedraw = false;\n\t}\n\n\tconfigureGroupSetup(){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar groupBy = this.table.options.groupBy,\n\t\t\tstartOpen = this.table.options.groupStartOpen,\n\t\t\tgroupHeader = this.table.options.groupHeader;\n\t\t\t\n\t\t\tthis.allowedValues = this.table.options.groupValues;\n\t\t\t\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\t\t\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\n\t\t\t\t};\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupIDLookups = [];\n\t\t\t\n\t\t\tif(groupBy){\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\t\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\t\t\t\t\t\n\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\tif(col.definition.topCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(col.definition.bottomCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\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\t\n\t\t\tif(!Array.isArray(groupBy)){\n\t\t\t\tgroupBy = [groupBy];\n\t\t\t}\n\t\t\t\n\t\t\tgroupBy.forEach((group, i) => {\n\t\t\t\tvar lookupFunc, column;\n\t\t\t\t\n\t\t\t\tif(typeof group == \"function\"){\n\t\t\t\t\tlookupFunc = group;\n\t\t\t\t}else{\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\n\t\t\t\t\t\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t\t};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groupIDLookups.push({\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\t\tfunc:lookupFunc,\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tif(startOpen){\n\t\t\t\tif(!Array.isArray(startOpen)){\n\t\t\t\t\tstartOpen = [startOpen];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstartOpen.forEach((level) => {\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.startOpen = startOpen;\n\t\t\t}\n\t\t\t\n\t\t\tif(groupHeader){\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t\t}\n\t\t}else{\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\trowSample(rows, prevValue){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar group = this.getGroups(false)[0];\n\t\t\t\n\t\t\tprevValue.push(group.getRows(false)[0]);\n\t\t}\n\t\t\n\t\treturn prevValue;\n\t}\n\t\n\tvirtualRenderFill(){\n\t\tvar el = this.table.rowManager.tableElement;\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\trows = rows.filter((row) => {\n\t\t\t\treturn row.type !== \"group\";\n\t\t\t});\n\t\t\t\n\t\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\n\t\t}else{\n\t\t\treturn rows;\n\t\t}\n\t}\n\t\n\trowAddingIndex(row, index, top){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.assignRowToGroup(row);\n\t\t\t\n\t\t\tvar groupRows = row.modules.group.rows;\n\t\t\t\n\t\t\tif(groupRows.length > 1){\n\t\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\n\t\t\t\t\tif(top){\n\t\t\t\t\t\tif(groupRows[0] !== row){\n\t\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn index;\n\t\t}\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"group-changed\");\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tsetGroupBy(groups){\n\t\tthis.table.options.groupBy = groups;\n\t\t\n\t\tif(!this.initialized){\n\t\t\tthis.initialize();\n\t\t}\n\t\t\n\t\tthis.configureGroupSetup();\n\n\t\tif(!groups && this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs === true){\n\t\t\tthis.table.modules.columnCalcs.reinitializeCalcs();\n\t\t}\n\t\t\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupValues(groupValues){\n\t\tthis.table.options.groupValues = groupValues;\n\t\tthis.configureGroupSetup();\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupStartOpen(values){\n\t\tthis.table.options.groupStartOpen = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tsetGroupHeader(values){\n\t\tthis.table.options.groupHeader = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tuserGetGroups(values){\n\t\treturn this.getGroups(true);\n\t}\n\t\n\t// get grouped table data in the same format as getData()\n\tuserGetGroupedData(){\n\t\treturn this.table.options.groupBy ? this.getGroupedData() : this.getData();\n\t}\n\t\n\t\n\t///////////////////////////////////////\n\t///////// Component Functions /////////\n\t///////////////////////////////////////\n\t\n\trowGetGroup(row){\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\trowMoving(from, to, after){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(!after && to instanceof Group){\n\t\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t\t}\n\t\t\t\n\t\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\n\t\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\n\t\t\t\n\t\t\tif(toGroup === fromGroup){\n\t\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t}else{\n\t\t\t\tif(fromGroup){\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\trowDeleting(row){\n\t\t//remove from group\n\t\tif(this.table.options.groupBy && row.modules.group){\n\t\t\trow.modules.group.removeRow(row);\n\t\t}\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.updateGroupRows(true);\n\t\t}\t\n\t}\n\t\n\tcellUpdated(cell){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.reassignRowToGroup(cell.row);\n\t\t}\n\t}\n\t\n\t//return appropriate rows with group headers\n\tgetRows(rows){\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\n\t\t\t\n\t\t\tthis.generateGroups(rows);\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\n\t\t\t}\n\t\t\t\n\t\t\treturn this.updateGroupRows();\n\t\t\t\n\t\t}else{\n\t\t\treturn rows.slice(0);\n\t\t}\n\t}\n\t\n\tgetGroups(component){\n\t\tvar groupComponents = [];\n\t\t\n\t\tthis.groupList.forEach(function(group){\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\tgetChildGroups(group){\n\t\tvar groupComponents = [];\n\t\t\n\t\tif(!group){\n\t\t\tgroup = this;\n\t\t}\n\t\t\n\t\tgroup.groupList.forEach((child) => {\n\t\t\tif(child.groupList.length){\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\n\t\t\t}else{\n\t\t\t\tgroupComponents.push(child);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\twipe(){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\tpullGroupListData(groupList) {\n\t\tvar groupListData = [];\n\t\t\n\t\tgroupList.forEach((group) => {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\t\t\t\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\n\t\t\t\t\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t}\n\t\t\t\n\t\t\telse {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\t\n\t\t\t\tgroup.getRows().forEach((row) => {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupListData;\n\t}\n\t\n\tgetGroupedData(){\n\t\t\n\t\treturn this.pullGroupListData(this.groupList);\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\t\n\t\tif(this.options(\"dataTree\")){\n\t\t\trow = this.table.modules.dataTree.getTreeParentRoot(row);\n\t\t}\n\t\t\n\t\tthis.groupList.forEach((group) => {\n\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\n\t\t\tif(result){\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tcountGroups(){\n\t\treturn this.groupList.length;\n\t}\n\t\n\tgenerateGroups(rows){\n\t\tvar oldGroups = this.groups;\n\t\t\n\t\tthis.groups = {};\n\t\tthis.groupList = [];\n\t\t\n\t\tif(this.allowedValues && this.allowedValues[0]){\n\t\t\tthis.allowedValues[0].forEach((value) => {\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\n\t\t\t});\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t}else{\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t\t\n\t\tObject.values(oldGroups).forEach((group) => {\n\t\t\tgroup.wipe(true);\n\t\t});\t\n\t}\n\t\n\t\n\tcreateGroup(groupID, level, oldGroups){\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\tgroup;\n\t\t\n\t\toldGroups = oldGroups || [];\n\t\t\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\tassignRowToExistingGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tgroupKey = \"0_\" + groupID;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n\t\n\tassignRowToGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\n\t\t\n\t\tif(newGroupNeeded){\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\t\t\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\t\t\n\t\treturn !newGroupNeeded;\n\t}\n\t\n\treassignRowToGroup(row){\n\t\tif(row.type === \"row\"){\n\t\t\tvar oldRowGroup = row.modules.group,\n\t\t\toldGroupPath = oldRowGroup.getPath(),\n\t\t\tnewGroupPath = this.getExpectedPath(row),\n\t\t\tsamePath;\n\t\t\t\n\t\t\t// figure out if new group path is the same as old group path\n\t\t\tsamePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\n\t\t\t\treturn element === newGroupPath[index];\n\t\t\t});\n\t\t\t\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\t\t\tif(!samePath) {\n\t\t\t\toldRowGroup.removeRow(row);\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetExpectedPath(row) {\n\t\tvar groupPath = [], rowData = row.getData();\n\t\t\n\t\tthis.groupIDLookups.forEach((groupId) => {\n\t\t\tgroupPath.push(groupId.func(rowData));\n\t\t});\n\t\t\n\t\treturn groupPath;\n\t}\n\t\n\tupdateGroupRows(force){\n\t\tvar output = [];\n\n\t\tif(!this.blockRedraw){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tscrollHeaders(left){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\n\t\t\t}\n\t\t\t\n\t\t\tleft = left + \"px\";\n\t\t\t\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tgroup.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcheckBasicModeGroupHeaderWidth(){\n\t\tvar element = this.table.rowManager.tableElement,\n\t\tonlyGroupHeaders = true;\n\t\t\n\t\tthis.table.rowManager.getDisplayRows().forEach((row, index) =>{\n\t\t\tthis.table.rowManager.styleRow(row, index);\n\t\t\telement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t\t\n\t\t\tif(row.type !== \"group\"){\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n}\n\nGroupRows.moduleName = \"groupRows\";\n\nexport default GroupRows;","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\taction.component.deleteActual();\n\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowDelete: function(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\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowMove: function(action){\n\t\tvar after = (action.data.posFrom - action.data.posTo) > 0;\n\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);\n\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(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\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowDelete:function(action){\n\t\taction.component.deleteActual();\n\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowMove: function(action){\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);\n\t\t\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","import Module from '../../core/Module.js';\nimport Row from '../../core/row/Row.js';\nimport Cell from '../../core/cell/Cell.js';\n\nimport defaultUndoers from './defaults/undoers.js';\nimport defaultRedoers from './defaults/redoers.js';\n\nclass History extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.history){\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\n\t}\n\n\trowMoved(from, to, after){\n\t\tthis.action(\"rowMove\", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});\n\t}\n\n\trowAdded(row, data, pos, index){\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\n\t}\n\n\trowDeleted(row){\n\t\tvar index, rows;\n\n\t\tif(this.table.options.groupBy){\n\n\t\t\trows = row.getComponent().getGroup()._getSelf().rows;\n\t\t\tindex = rows.indexOf(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = rows[index-1];\n\t\t\t}\n\t\t}else{\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\n\t\t\t}\n\t\t}\n\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\n\t}\n\n\tcellUpdated(cell){\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\n\t}\n\n\tclear(){\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t}\n\n\taction(type, component, data){\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype:type,\n\t\t\tcomponent:component,\n\t\t\tdata:data,\n\t\t});\n\n\t\tthis.index ++;\n\t}\n\n\tgetHistoryUndoSize(){\n\t\treturn this.index + 1;\n\t}\n\n\tgetHistoryRedoSize(){\n\t\treturn this.history.length - (this.index + 1);\n\t}\n\n\tclearComponentHistory(component){\n\t\tvar index = this.history.findIndex(function(item){\n\t\t\treturn item.component === component;\n\t\t});\n\n\t\tif(index > -1){\n\t\t\tthis.history.splice(index, 1);\n\t\t\tif(index <= this.index){\n\t\t\t\tthis.index--;\n\t\t\t}\n\n\t\t\tthis.clearComponentHistory(component);\n\t\t}\n\t}\n\n\tundo(){\n\t\tif(this.index > -1){\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(this.options(\"history\") ? \"History Undo Error - No more history to undo\" : \"History module not enabled\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tredo(){\n\t\tif(this.history.length-1 > this.index){\n\n\t\t\tthis.index++;\n\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.redoers[action.type].call(this, action);\n\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(this.options(\"history\") ? \"History Redo Error - No more history to redo\" : \"History module not enabled\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//rebind rows to new element after deletion\n\t_rebindRow(oldRow, newRow){\n\t\tthis.history.forEach(function(action){\n\t\t\tif(action.component instanceof Row){\n\t\t\t\tif(action.component === oldRow){\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t}else if(action.component instanceof Cell){\n\t\t\t\tif(action.component.row === oldRow){\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif(field){\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nHistory.moduleName = \"history\";\n\n//load defaults\nHistory.undoers = defaultUndoers;\nHistory.redoers = defaultRedoers;\n\nexport default History;","import Module from '../../core/Module.js';\n\nclass HtmlTableImport extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t}\n\n\tinitialize(){\n\t\tthis.tableElementCheck();\n\t}\n\n\ttableElementCheck(){\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\n\t\t\tif(this.table.originalElement.childNodes.length){\n\t\t\t\tthis.parseTable();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element.\");\n\t\t\t}\n\t\t}\n\t}\n\n\tparseTable(){\n\t\tvar element = this.table.originalElement,\n\t\toptions = this.table.options,\n\t\theaders = element.getElementsByTagName(\"th\"),\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\n\t\tdata = [];\n\n\t\tthis.hasIndex = false;\n\n\t\tthis.dispatchExternal(\"htmlImporting\");\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for Tabulator inline options\n\t\tthis._extractOptions(element, options);\n\n\t\tif(headers.length){\n\t\t\tthis._extractHeaders(headers, rows);\n\t\t}else{\n\t\t\tthis._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor(var index = 0; index < rows.length; index++){\n\t\t\tvar row = rows[index],\n\t\t\tcells = row.getElementsByTagName(\"td\"),\n\t\t\titem = {};\n\n\t\t\t//create index if the don't exist in table\n\t\t\tif(!this.hasIndex){\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\toptions.data = data;\n\n\t\tthis.dispatchExternal(\"htmlImported\");\n\t}\n\n\t//extract tabulator attribute options\n\t_extractOptions(element, options, defaultOptions){\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach((item) => {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor(var index in attributes){\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//get value of attribute\n\t_attribValue(value){\n\t\tif(value === \"true\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(value === \"false\"){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t//find column if it has already been defined\n\t_findCol(title){\n\t\tvar match = this.table.options.columns.find((column) => {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t}\n\n\t//extract column from headers\n\t_extractHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\texists = false,\n\t\t\tcol = this._findCol(header.textContent),\n\t\t\twidth;\n\n\t\t\tif(col){\n\t\t\t\texists = true;\n\t\t\t}else{\n\t\t\t\tcol = {title:header.textContent.trim()};\n\t\t\t}\n\n\t\t\tif(!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replaceAll(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif(width && !col.width)\t{\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for Tabulator inline options\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif(col.field == this.table.options.index){\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif(!exists){\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\n\t\t}\n\t}\n\n\t//generate blank headers\n\t_generateBlankHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\tcol = {title:\"\", field:\"col\" + index};\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif(width){\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n}\n\nHtmlTableImport.moduleName = \"htmlTableImport\";\n\nexport default HtmlTableImport;\n","function csvImporter(input){\n\tvar data = [],\n\trow = 0, \n\tcol = 0,\n\tinQuote = false;\n \n\t//Iterate over each character\n\tfor (let index = 0; index < input.length; index++) {\n\t\tlet char = input[index], \n\t\tnextChar = input[index+1]; \n \n\t\t//Initialize empty row\n\t\tif(!data[row]){\n\t\t\tdata[row] = [];\n\t\t}\n\n\t\t//Initialize empty column\n\t\tif(!data[row][col]){\n\t\t\tdata[row][col] = \"\";\n\t\t}\n \n\t\t//Handle quotation mark inside string\n\t\tif (char == '\"' && inQuote && nextChar == '\"') { \n\t\t\tdata[row][col] += char; \n\t\t\tindex++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//Begin / End Quote\n\t\tif (char == '\"') { \n\t\t\tinQuote = !inQuote;\n\t\t\tcontinue;\n\t\t}\n \n\t\t//Next column (if not in quote)\n\t\tif (char == ',' && !inQuote) { \n\t\t\tcol++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CRLF) \n\t\tif (char == '\\r' && nextChar == '\\n' && !inQuote) { \n\t\t\tcol = 0; \n\t\t\trow++; \n\t\t\tindex++; \n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CR or LF) \n\t\tif ((char == '\\r' || char == '\\n') && !inQuote) { \n\t\t\tcol = 0;\n\t\t\trow++;\n\t\t\tcontinue; \n\t\t}\n\n\t\t//Normal Character, append to column\n\t\tdata[row][col] += char;\n\t}\n\n\treturn data;\n}\n\nexport default csvImporter;","export default function(input){\n\ttry {\n\t\treturn JSON.parse(input);\n\t} catch(e) {\n\t\tconsole.warn(\"JSON Import Error - File contents is invalid JSON\", e);\n\t\treturn Promise.reject();\n\t}\n}","function arrayImporter(input){\n\treturn input;\n}\n\nexport default arrayImporter;","import csv from './importers/csv.js';\nimport json from './importers/json.js';\nimport array from './importers/array.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tarray:array,\n};","import Module from '../../core/Module.js';\n\nimport defaultImporters from './defaults/importers.js';\n\nclass Import extends Module{\n \n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.registerTableOption(\"importFormat\");\n\t\tthis.registerTableOption(\"importReader\", \"text\");\n\t}\n \n\tinitialize(){\n\t\tthis.registerTableFunction(\"import\", this.importFromFile.bind(this));\n\n\t\tif(this.table.options.importFormat){\n\t\t\tthis.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\n\t\t\tthis.subscribe(\"data-load\", this.loadData.bind(this), 10);\n\t\t}\n\t}\n\n\tloadDataCheck(data){\n\t\treturn this.table.options.importFormat && (typeof data === \"string\" || (Array.isArray(data) && data.length && Array.isArray(data)));\n\t}\n\n\tloadData(data, params, config, silent, previousData){\n\t\treturn this.importData(this.lookupImporter(), data)\n\t\t\t.then(this.structureData.bind(this))\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import data\");\n\t\t\t\treturn Promise.reject(err);\n\t\t\t});\n\t}\n\n\tlookupImporter(importFormat){\n\t\tvar importer;\n \n\t\tif(!importFormat){\n\t\t\timportFormat = this.table.options.importFormat;\n\t\t}\n \n\t\tif(typeof importFormat === \"string\"){\n\t\t\timporter = Import.importers[importFormat];\n\t\t}else{\n\t\t\timporter = importFormat;\n\t\t}\n\n\t\tif(!importer){\n\t\t\tconsole.error(\"Import Error - Importer not found:\", importFormat);\n\t\t}\n \n\t\treturn importer;\n\t}\n \n\timportFromFile(importFormat, extension){\n\t\tvar importer = this.lookupImporter(importFormat);\n \n\t\tif(importer){\n\t\t\treturn this.pickFile(extension)\n\t\t\t\t.then(this.importData.bind(this, importer))\n\t\t\t\t.then(this.structureData.bind(this))\n\t\t\t\t.then(this.setData.bind(this))\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import file\");\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t});\n\t\t}\n\t}\n \n\tpickFile(extensions){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.type = \"file\";\n\t\t\tinput.accept = extensions;\n \n\t\t\tinput.addEventListener(\"change\", (e) => {\n\t\t\t\tvar file = input.files[0],\n\t\t\t\treader = new FileReader();\n \n\t\t\t\tswitch(this.table.options.importReader){\n\t\t\t\t\tcase \"buffer\":\n\t\t\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"binary\":\n\t\t\t\t\t\treader.readAsBinaryString(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treader.readAsText(file);\n\t\t\t\t}\n \n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tresolve(reader.result);\n\t\t\t\t};\n \n\t\t\t\treader.onerror = (e) => {\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n \n\t\t\tinput.click();\n\t\t});\n\t}\n \n\timportData(importer, fileContents){\n\t\tvar data = importer.call(this.table, fileContents);\n \n\t\tif(data instanceof Promise){\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn data ? Promise.resolve(data) : Promise.reject();\n\t\t}\n\t}\n\n\tstructureData(parsedData){\n\t\tvar data = [];\n \n\t\tif(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\n\t\t\tif(this.table.options.autoColumns){\n\t\t\t\tdata = this.structureArrayToObject(parsedData);\n\t\t\t}else{\n\t\t\t\tdata = this.structureArrayToColumns(parsedData);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn parsedData;\n\t\t}\n\t}\n\n\tstructureArrayToObject(parsedData){\n\t\tvar columns = parsedData.shift();\n\n\t\tvar data = parsedData.map((values) => {\n\t\t\tvar row = {};\n\n\t\t\tcolumns.forEach((key, i) => {\n\t\t\t\trow[key] = values[i];\n\t\t\t});\n\n\t\t\treturn row;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tstructureArrayToColumns(parsedData){\n\t\tvar data = [],\n\t\tcolumns = this.table.getColumns();\n\n\t\t//remove first row if it is the column names\n\t\tif(columns[0] && parsedData[0][0]){\n\t\t\tif(columns[0].getDefinition().title === parsedData[0][0]){\n\t\t\t\tparsedData.shift();\n\t\t\t}\n\t\t}\n \n\t\t//convert row arrays to objects\n\t\tparsedData.forEach((rowData) => {\n\t\t\tvar row = {};\n\n\t\t\trowData.forEach((value, index) => {\n\t\t\t\tvar column = columns[index];\n\n\t\t\t\tif(column){\n\t\t\t\t\trow[column.getField()] = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdata.push(row);\n\t\t});\n\n\t\treturn data;\n\t}\n \n\tsetData(data){\n\t\treturn this.table.setData(data);\n\t}\n}\n\nImport.moduleName = \"import\";\n\n//load defaults\nImport.importers = defaultImporters;\n\nexport default Import;","import Module from '../../core/Module.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\n\nclass Interaction extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.eventMap = {\n\t\t\t//row events\n\t\t\trowClick:\"row-click\",\n\t\t\trowDblClick:\"row-dblclick\",\n\t\t\trowContext:\"row-contextmenu\",\n\t\t\trowMouseEnter:\"row-mouseenter\",\n\t\t\trowMouseLeave:\"row-mouseleave\",\n\t\t\trowMouseOver:\"row-mouseover\",\n\t\t\trowMouseOut:\"row-mouseout\",\n\t\t\trowMouseMove:\"row-mousemove\",\n\t\t\trowMouseDown:\"row-mousedown\",\n\t\t\trowMouseUp:\"row-mouseup\",\n\t\t\trowTap:\"row\",\n\t\t\trowDblTap:\"row\",\n\t\t\trowTapHold:\"row\",\n\n\t\t\t//cell events\n\t\t\tcellClick:\"cell-click\",\n\t\t\tcellDblClick:\"cell-dblclick\",\n\t\t\tcellContext:\"cell-contextmenu\",\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\n\t\t\tcellMouseOver:\"cell-mouseover\",\n\t\t\tcellMouseOut:\"cell-mouseout\",\n\t\t\tcellMouseMove:\"cell-mousemove\",\n\t\t\tcellMouseDown:\"cell-mousedown\",\n\t\t\tcellMouseUp:\"cell-mouseup\",\n\t\t\tcellTap:\"cell\",\n\t\t\tcellDblTap:\"cell\",\n\t\t\tcellTapHold:\"cell\",\n\n\t\t\t//column header events\n\t\t\theaderClick:\"column-click\",\n\t\t\theaderDblClick:\"column-dblclick\",\n\t\t\theaderContext:\"column-contextmenu\",\n\t\t\theaderMouseEnter:\"column-mouseenter\",\n\t\t\theaderMouseLeave:\"column-mouseleave\",\n\t\t\theaderMouseOver:\"column-mouseover\",\n\t\t\theaderMouseOut:\"column-mouseout\",\n\t\t\theaderMouseMove:\"column-mousemove\",\n\t\t\theaderMouseDown:\"column-mousedown\",\n\t\t\theaderMouseUp:\"column-mouseup\",\n\t\t\theaderTap:\"column\",\n\t\t\theaderDblTap:\"column\",\n\t\t\theaderTapHold:\"column\",\n\n\t\t\t//group header\n\t\t\tgroupClick:\"group-click\",\n\t\t\tgroupDblClick:\"group-dblclick\",\n\t\t\tgroupContext:\"group-contextmenu\",\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\n\t\t\tgroupMouseOver:\"group-mouseover\",\n\t\t\tgroupMouseOut:\"group-mouseout\",\n\t\t\tgroupMouseMove:\"group-mousemove\",\n\t\t\tgroupMouseDown:\"group-mousedown\",\n\t\t\tgroupMouseUp:\"group-mouseup\",\n\t\t\tgroupTap:\"group\",\n\t\t\tgroupDblTap:\"group\",\n\t\t\tgroupTapHold:\"group\",\n\t\t};\n\n\t\tthis.subscribers = {};\n\n\t\tthis.touchSubscribers = {};\n\n\t\tthis.columnSubscribers = {};\n\n\t\tthis.touchWatchers = {\n\t\t\trow:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcell:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcolumn:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tgroup:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t}\n\t\t};\n\n\t\tthis.registerColumnOption(\"headerClick\");\n\t\tthis.registerColumnOption(\"headerDblClick\");\n\t\tthis.registerColumnOption(\"headerContext\");\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\n\t\tthis.registerColumnOption(\"headerMouseOver\");\n\t\tthis.registerColumnOption(\"headerMouseOut\");\n\t\tthis.registerColumnOption(\"headerMouseMove\");\n\t\tthis.registerColumnOption(\"headerMouseDown\");\n\t\tthis.registerColumnOption(\"headerMouseUp\");\n\t\tthis.registerColumnOption(\"headerTap\");\n\t\tthis.registerColumnOption(\"headerDblTap\");\n\t\tthis.registerColumnOption(\"headerTapHold\");\n\n\t\tthis.registerColumnOption(\"cellClick\");\n\t\tthis.registerColumnOption(\"cellDblClick\");\n\t\tthis.registerColumnOption(\"cellContext\");\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\n\t\tthis.registerColumnOption(\"cellMouseOver\");\n\t\tthis.registerColumnOption(\"cellMouseOut\");\n\t\tthis.registerColumnOption(\"cellMouseMove\");\n\t\tthis.registerColumnOption(\"cellMouseDown\");\n\t\tthis.registerColumnOption(\"cellMouseUp\");\n\t\tthis.registerColumnOption(\"cellTap\");\n\t\tthis.registerColumnOption(\"cellDblTap\");\n\t\tthis.registerColumnOption(\"cellTapHold\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.initializeExternalEvents();\n\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.clearTouchWatchers.bind(this));\n\t\tthis.subscribe(\"scroll-vertical\", this.clearTouchWatchers.bind(this));\n\t}\n\n\tclearTouchWatchers(){\n\t\tvar types = Object.values(this.touchWatchers);\n\n\t\ttypes.forEach((type) => {\n\t\t\tfor(let key in type){\n\t\t\t\ttype[key] = null;\n\t\t\t}\n\t\t});\n\t}\n\t\t\n\tcellContentsSelectionFixer(e, cell){\n\t\tvar range;\n\n\t\tif(this.table.modExists(\"edit\")){\n\t\t\tif (this.table.modules.edit.currentCell === cell){\n\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\n\tinitializeExternalEvents(){\n\t\tfor(let key in this.eventMap){\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key));\n\t\t}\n\t}\n\n\tsubscriptionChanged(key, added){\n\t\tif(added){\n\t\t\tif(!this.subscribers[key]){\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t}else{\n\t\t\t\t\tthis.subscribeTouchEvents(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t\tdelete this.subscribers[key];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.unsubscribeTouchEvents(key);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tsubscribeTouchEvents(key){\n\t\tvar type = this.eventMap[key];\n\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\n\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\t\t}\n\n\t\tthis.subscribers[key] = true;\n\t}\n\n\tunsubscribeTouchEvents(key){\n\t\tvar noTouch = true,\n\t\ttype = this.eventMap[key];\n\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\n\t\t\tdelete this.subscribers[key];\n\n\t\t\tfor(let i in this.eventMap){\n\t\t\t\tif(this.eventMap[i] === type){\n\t\t\t\t\tif(this.subscribers[i]){\n\t\t\t\t\t\tnoTouch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(noTouch){\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\n\t\tfor(let key in this.eventMap){\n\t\t\tif(def[key]){\n\t\t\t\tthis.subscriptionChanged(key, true);\n\n\t\t\t\tif(!this.columnSubscribers[key]){\n\t\t\t\t\tthis.columnSubscribers[key] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.columnSubscribers[key].push(column);\n\t\t\t}\n\t\t}\n\t}\n\n\thandle(action, e, component){\n\t\tthis.dispatchEvent(action, e, component);\n\t}\n\n\thandleTouch(type, action, e, component){\n\t\tvar watchers = this.touchWatchers[type];\n\n\t\tif(type === \"column\"){\n\t\t\ttype = \"header\";\n\t\t}\n\n\t\tswitch(action){\n\t\t\tcase \"start\":\n\t\t\t\twatchers.tap = true;\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\n\t\t\t\twatchers.tapHold = setTimeout(() => {\n\t\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\t\twatchers.tapHold = null;\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\n\t\t\t\t}, 1000);\n\t\t\t\tbreak;\n\n\t\t\tcase \"end\":\n\t\t\t\tif(watchers.tap){\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\n\t\t\t\t}\n\n\t\t\t\tif(watchers.tapDbl){\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\n\t\t\t\t}else{\n\t\t\t\t\twatchers.tapDbl = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\t\twatchers.tapDbl = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\twatchers.tapHold = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdispatchEvent(action, e, component){\n\t\tvar componentObj = component.getComponent(),\n\t\tcallback;\n\n\t\tif(this.columnSubscribers[action]){\n\n\t\t\tif(component instanceof Cell){\n\t\t\t\tcallback = component.column.definition[action];\n\t\t\t}else if(component instanceof Column){\n\t\t\t\tcallback = component.definition[action];\n\t\t\t}\n\n\t\t\tif(callback){\n\t\t\t\tcallback(e, componentObj);\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchExternal(action, e, componentObj);\n\t}\n}\n\nInteraction.moduleName = \"interaction\";\n\nexport default Interaction;\n","export default {\n\tnavPrev:\"shift + 9\",\n\tnavNext:9,\n\tnavUp:38,\n\tnavDown:40,\n\tnavLeft:37,\n\tnavRight:39,\n\tscrollPageUp:33,\n\tscrollPageDown:34,\n\tscrollToStart:36,\n\tscrollToEnd:35,\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 67\"],\n\n\trangeJumpUp:[\"ctrl + 38\", \"meta + 38\"],\n\trangeJumpDown:[\"ctrl + 40\", \"meta + 40\"],\n\trangeJumpLeft:[\"ctrl + 37\", \"meta + 37\"],\n\trangeJumpRight:[\"ctrl + 39\", \"meta + 39\"],\n\trangeExpandUp:\"shift + 38\",\n\trangeExpandDown:\"shift + 40\",\n\trangeExpandLeft:\"shift + 37\",\n\trangeExpandRight:\"shift + 39\",\n\trangeExpandJumpUp:[\"ctrl + shift + 38\", \"meta + shift + 38\"],\n\trangeExpandJumpDown:[\"ctrl + shift + 40\", \"meta + shift + 40\"],\n\trangeExpandJumpLeft:[\"ctrl + shift + 37\", \"meta + shift + 37\"],\n\trangeExpandJumpRight:[\"ctrl + shift + 39\", \"meta + shift + 39\"],\n};\n","export default {\n\tkeyBlock:function(e){\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight;\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(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\n\t\tscrollMax = 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\n\t},\n\tscrollToStart:function(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(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(e){\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\n\t},\n\n\tnavNext:function(e){\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\n\t},\n\n\tnavLeft:function(e){\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\n\t},\n\n\tnavRight:function(e){\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\n\t},\n\n\tnavUp:function(e){\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\n\t},\n\n\tnavDown:function(e){\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\n\t},\n\n\trangeJumpLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", true, false);\n\t},\n\trangeJumpRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", true, false);\n\t},\n\trangeJumpUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", true, false);\n\t},\n\trangeJumpDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", true, false);\n\t},\n\trangeExpandLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", false, true);\n\t},\n\trangeExpandRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", false, true);\n\t},\n\trangeExpandUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", false, true);\n\t},\n\trangeExpandDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", false, true);\n\t},\n\trangeExpandJumpLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", true, true);\n\t},\n\trangeExpandJumpRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", true, true);\n\t},\n\trangeExpandJumpUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", true, true);\n\t},\n\trangeExpandJumpDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", true, true);\n\t},\n\n\tundo:function(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(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(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","import Module from '../../core/Module.js';\n\nimport defaultBindings from './defaults/bindings.js';\nimport defaultActions from './defaults/actions.js';\n\nclass Keybindings extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\n\t}\n\n\tinitialize(){\n\t\tvar bindings = this.table.options.keybindings,\n\t\tmergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif(bindings !== false){\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings);\n\t\t\tObject.assign(mergedBindings, bindings);\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t}\n\n\tmapBindings(bindings){\n\t\tfor(let key in bindings){\n\t\t\tif(Keybindings.actions[key]){\n\t\t\t\tif(bindings[key]){\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach((binding) => {\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\n\t\t\t\t\t\t\n\t\t\t\t\t\tbindingList.forEach((item) => {\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\n\t\t\t\t\t\t});\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapBinding(action, symbolsList){\n\t\tvar binding = {\n\t\t\taction: Keybindings.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false,\n\t\t\tmeta: false,\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach((symbol) => {\n\t\t\tswitch(symbol){\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"meta\":\n\t\t\t\t\tbinding.meta = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif(!this.watchKeys[symbol]){\n\t\t\t\t\t\tthis.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t}\n\n\tbindEvents(){\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function(binding){\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t}\n\n\tclearBindings(){\n\t\tif(this.keyupBinding){\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif(this.keydownBinding){\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t}\n\n\tcheckBinding(e, binding){\n\t\tvar match = true;\n\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\n\t\t\tbinding.keys.forEach((key) => {\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\n\n\t\t\t\tif(index == -1){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tbinding.action.call(this, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\nKeybindings.moduleName = \"keybindings\";\n\n//load defaults\nKeybindings.bindings = defaultBindings;\nKeybindings.actions = defaultActions;\n\nexport default Keybindings;","import Module from '../../core/Module.js';\n\nclass Menu extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.menuContainer = null;\n\t\tthis.nestedMenuBlock = false;\n\t\t\n\t\tthis.currentComponent = null;\n\t\tthis.rootPopup = null;\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\n\t\t\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\n\t\tthis.registerTableOption(\"rowDblClickMenu\", false);\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\n\t\tthis.registerTableOption(\"groupDblClickMenu\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextMenu\");\n\t\tthis.registerColumnOption(\"headerClickMenu\");\n\t\tthis.registerColumnOption(\"headerDblClickMenu\");\n\t\tthis.registerColumnOption(\"headerMenu\");\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\n\t\tthis.registerColumnOption(\"contextMenu\");\n\t\tthis.registerColumnOption(\"clickMenu\");\n\t\tthis.registerColumnOption(\"dblClickMenu\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tif(!this.deprecationCheck(\"menuContainer\", \"popupContainer\")){\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\n\t\t}\n\t}\t\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextMenu){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickMenu){\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowDblClickMenu){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextMenu){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickMenu){\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupDblClickMenu){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu));\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar\tdef = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){\n\t\t\tthis.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerDblClickMenu\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerMenu){\n\t\t\tthis.initializeColumnHeaderMenu(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\n\t\t}\n\t\t\n\t\tif(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){\n\t\t\tthis.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, \"dblClickMenu\");\n\t\t\tthis.subscribe(\"cell-dblclick\", this.columnSubscribers.dblClickMenu);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderMenu(column){\n\t\tvar icon = column.definition.headerMenuIcon,\n\t\theaderMenuEl;\n\t\t\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\n\t\t\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderMenuEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderMenuEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadMenuTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadMenuTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadMenuEvent(menu, e, component){\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\n\t\t\n\t\tthis.loadMenu(e, component, menu);\n\t}\n\t\n\tloadMenu(e, component, menu, parentEl, parentPopup){\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\n\t\tmenuEl = document.createElement(\"div\"),\n\t\tpopup;\n\t\t\n\t\tmenuEl.classList.add(\"tabulator-menu\");\n\t\t\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\t//abort if no menu set\n\t\tif(!menu || !menu.length){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!parentEl){\n\t\t\tif(this.nestedMenuBlock){\n\t\t\t\t//abort if child menu already open\n\t\t\t\tif(this.rootPopup){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\n\t\t\t\t\tthis.nestedMenuBlock = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\n\t\t\t\n\t\t}else{\n\t\t\tpopup = parentPopup.child(menuEl);\n\t\t}\n\t\t\n\t\tmenu.forEach((item) => {\n\t\t\tvar itemEl = document.createElement(\"div\"),\n\t\t\tlabel = item.label,\n\t\t\tdisabled = item.disabled;\n\t\t\t\n\t\t\tif(item.separator){\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t\t}else{\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\t\t\t\t\n\t\t\t\tif(typeof label == \"function\"){\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(label instanceof Node){\n\t\t\t\t\titemEl.appendChild(label);\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(typeof disabled == \"function\"){\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(disabled){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(item.action){\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\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\t\n\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmenuEl.appendChild(itemEl);\n\t\t});\n\t\t\n\t\tmenuEl.addEventListener(\"click\", (e) => {\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tpopup.show(parentEl || e);\n\t\t\n\t\tif(popup === this.rootPopup){\n\t\t\tthis.rootPopup.hideOnBlur(() => {\n\t\t\t\tthis.rootPopup = null;\n\t\t\t\t\n\t\t\t\tif(this.currentComponent){\n\t\t\t\t\tthis.dispatch(\"menu-closed\", menu, popup);\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\n\t\t\t\t\tthis.currentComponent = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.currentComponent = component;\n\t\t\t\n\t\t\tthis.dispatch(\"menu-opened\", menu, popup);\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nMenu.moduleName = \"menu\";\n\nexport default Menu;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the destination column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\t\t\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\n\t}\n\t\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.movableColumns){\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"alert-show\", this.abortMove.bind(this));\n\t\t}\n\t}\n\n\tabortMove(){\n\t\tclearTimeout(this.checkTimeout);\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\tcolEl;\n\t\t\n\t\tif(!column.modules.frozen && !column.isGroup){\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tconfig.mousemove = function(e){\n\t\t\t\tif(column.parent === self.moving.parent){\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\t\t\n\t\tcolumn.modules.moveColumn = config;\n\t}\n\t\n\tbindTouchEvents(column){\n\t\tvar colEl = column.getElement(),\n\t\tstartXMove = false, //shifting center position of the cell\n\t\tnextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\n\t\t\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\t\t\t\t\n\t\t\t\tthis.startMove(e, column);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\n\t\t\tvar diff, moveToCol;\n\t\t\t\n\t\t\tif(this.moving){\n\t\t\t\tthis.moveHover(e);\n\t\t\t\t\n\t\t\t\tif(!startXMove){\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\t\t\t\t\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\n\t\t\t\t\t\tmoveToCol = nextCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\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(prevCol && -diff - prevColWidthLast > prevColWidth){\n\t\t\t\t\t\tmoveToCol = prevCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(moveToCol){\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tstartMove(e, column){\n\t\tvar element = column.getElement(),\n\t\theaderElement = this.table.columnManager.getContentsElement(),\n\t\theadersElement = this.table.columnManager.getHeadersElement();\n\t\t\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\n\t\t\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\t\t\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t\t\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\t\t\n\t\theaderElement.appendChild(this.hoverElement);\n\t\t\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\n\t\t\n\t\tif(!this.touchMove){\n\t\t\tthis._bindMouseMove();\n\t\t\t\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t\t\n\t\tthis.moveHover(e);\n\t}\n\t\n\t_bindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_unbindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tmoveColumn(column, after){\n\t\tvar movingCells = this.moving.getCells();\n\t\t\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\t\t\n\t\tif(after){\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tendMove(e){\n\t\tif(e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\t\t\t\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\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\t\t\t\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(this.toCol){\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\t\t\t\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\t\t\t\n\t\t\tif(!this.touchMove){\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tmoveHover(e){\n\t\tvar columnHolder = this.table.columnManager.getContentsElement(),\n\t\tscrollLeft = columnHolder.scrollLeft,\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\n\t\tscrollPos;\n\t\t\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\n\t\t\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nMoveColumns.moduleName = \"moveColumn\";\n\nexport default MoveColumns;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the destination row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connectionSelectorsTables = false;\n\t\tthis.connectionSelectorsElements = false;\n\t\tthis.connectionElements = [];\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\n\n\t\tthis.registerColumnOption(\"rowHandle\");\n\t}\n\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.movableRows){\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeGroupHeader(group){\n\t\tvar self = this,\n\t\tconfig = {};\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, group);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl;\n\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\tif(rowEl.previousSibling){\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\trowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\n\t\tif(!this.hasHandle){\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tthis.hasHandle = true;\n\t\t}\n\t}\n\n\tinitializeCell(cell){\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tvar self = this,\n\t\t\tcellEl = cell.getElement(true);\n\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\n\t\t}\n\t}\n\n\tbindTouchEvents(row, element){\n\t\tvar startYMove = false, //shifting center position of the cell\n\t\tnextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tthis.startMove(e, row);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", (e) => {\n\n\t\t\tvar diff, moveToRow;\n\n\t\t\tif(this.moving){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthis.moveHover(e);\n\n\t\t\t\tif(!startYMove){\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\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(prevRow && -diff - prevRowHeightLast > prevRowHeight){\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(moveToRow){\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t\tthis.touchMove = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t_bindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\t_unbindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\tstartMove(e, row){\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif(!this.connection){\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t}else{\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif(this.connection){\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t}else{\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\n\n\t\tthis.moveHover(e);\n\t}\n\n\tsetStartPosition(e, row){\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\telement, position;\n\n\t\telement = row.getElement();\n\t\tif(this.connection){\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t}else{\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\n\t\t}\n\t}\n\n\tendMove(e){\n\t\tif(!e || e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif(!this.connection){\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif(this.toRow){\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif(this.connection){\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveRow(row, after){\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t}\n\n\tmoveHover(e){\n\t\tif(this.connection){\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t}else{\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t}\n\n\tmoveHoverTable(e){\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\tscrollTop = rowHolder.scrollTop,\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop;\n\t\t\n\t\tthis.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + \"px\";\n\t}\n\n\tmoveHoverConnections(e){\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\n\t}\n\n\telementRowDrop(e, element, row){\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\n\t}\n\n\t//establish connection with other tables\n\tconnectToTables(row){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\t\trow:row,\n\t\t\t});\n\t\t}\n\n\t\tif(this.connectionSelectorsElements){\n\n\t\t\tthis.connectionElements = [];\n\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t\t}\n\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\n\t\t\t\tif(typeof query === \"string\"){\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t\t}else{\n\t\t\t\t\tthis.connectionElements.push(query);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.connectionElements.forEach((element) => {\n\t\t\t\tvar dropEvent = (e) => {\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\n\t\t\t\t};\n\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t\t});\n\t\t}\n\t}\n\n\t//disconnect from other tables\n\tdisconnectFromTables(){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t\t}\n\n\t\tthis.connectionElements.forEach((element) => {\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\t\tdelete element.tabulatorElementDropEvent;\n\t\t});\n\t}\n\n\t//accept incomming connection\n\tconnect(table, row){\n\t\tif(!this.connectedTable){\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\n\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//close incoming connection\n\tdisconnect(table){\n\t\tif(table === this.connectedTable){\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t}\n\n\tdropComplete(table, row, success){\n\t\tvar sender = false;\n\n\t\tif(success){\n\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(sender){\n\t\t\t\tsender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table);\n\t\t\t}else{\n\t\t\t\tif(this.table.options.movableRowsSender){\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t}\n\n\ttableRowDrop(e, row){\n\t\tvar receiver = false,\n\t\tsuccess = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(receiver){\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif(success){\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow:row,\n\t\t\tsuccess:success,\n\t\t});\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t}\n\t}\n}\n\nMoveRows.prototype.receivers = {\n\tinsert:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate:function(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(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(fromRow, toRow, toTable){\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.moduleName = \"moveRow\";\n\nexport default MoveRows;","export default {};","import Module from '../../core/Module.js';\n\nimport defaultMutators from './defaults/mutators.js';\n\nclass Mutator extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of mutation types\n\t\tthis.enabled = true;\n\n\t\tthis.registerColumnOption(\"mutator\");\n\t\tthis.registerColumnOption(\"mutatorParams\");\n\t\tthis.registerColumnOption(\"mutatorData\");\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\n\t\tthis.registerColumnOption(\"mutatorEdit\");\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\n\t\tthis.registerColumnOption(\"mutateLink\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\n\t}\n\n\trowDataChanged(row, tempData, updatedData){\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\n\t}\n\n\t//initialize column mutator\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\tmutator;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\n\n\t\t\t\tif(mutator){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator:mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t}\n\n\tlookupMutator(value){\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Mutator.mutators[value]){\n\t\t\t\t\tmutator = Mutator.mutators[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t}\n\n\t//apply mutator to row\n\ttransformRow(data, type, updatedData){\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\tvalue;\n\n\t\tif(this.enabled){\n\n\t\t\tthis.table.columnManager.traverse((column) => {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif(column.modules.mutate){\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif(mutator){\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\t\tif((type == \"data\" && !updatedData)|| typeof value !== \"undefined\"){\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\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\treturn data;\n\t}\n\n\t//apply mutator to new cell value\n\ttransformCell(cell, value){\n\t\tif(cell.column.modules.mutate){\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t\t\ttempData = {};\n\n\t\t\tif(mutator){\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\t\t\tcell.column.setFieldValue(tempData, value);\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tmutateLink(cell){\n\t\tvar links = cell.column.definition.mutateLink;\n\n\t\tif(links){\n\t\t\tif(!Array.isArray(links)){\n\t\t\t\tlinks = [links];\n\t\t\t}\n\n\t\t\tlinks.forEach((link) => {\n\t\t\t\tvar linkCell = cell.row.getCell(link);\n\n\t\t\t\tif(linkCell){\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tenable(){\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(){\n\t\tthis.enabled = false;\n\t}\n}\n\nMutator.moduleName = \"mutator\";\n\n//load defaults\nMutator.mutators = defaultMutators;\n\nexport default Mutator;","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\n\tif(totalRows){\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\n\t\t\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\n\t\t\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(ofEl);\n\t\tel.appendChild(totalEl);\n\t\tel.appendChild(rowsEl);\n\t}else{\n\t\tvalueEl.innerHTML = \" 0 \";\n\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(rowsEl);\n\t}\n\t\n\treturn el;\n}","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\t\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\t\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\t\n\tel.appendChild(showingEl);\n\tel.appendChild(valueEl);\n\tel.appendChild(ofEl);\n\tel.appendChild(totalEl);\n\tel.appendChild(rowsEl);\n\t\n\treturn el;\n}","import rows from './pageCounters/rows.js';\nimport pages from './pageCounters/pages.js';\n\n\nexport default {\n\trows:rows,\n\tpages:pages,\n};","import Module from '../../core/Module.js';\n\nimport defaultPageCounters from './defaults/pageCounters.js';\n\nclass Page extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\t\t\n\t\tthis.element = null;\n\t\tthis.pageCounterElement = null;\n\t\tthis.pageCounter = null;\n\t\t\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.remoteRowCountEstimate = null;\n\t\t\n\t\tthis.initialLoad = true;\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\n\t\t\n\t\tthis.pageSizes = [];\n\t\t\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\n\t\t\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\n\t\t\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\n\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad){\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\n\t\t\t\n\t\t\tthis.createElements();\n\t\t\tthis.initializePageCounter();\n\t\t\tthis.initializePaginator();\n\t\t}else if(this.table.options.progressiveLoad){\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\t\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad);\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowAddingPosition(row, top){\n\t\tvar rowManager = this.table.rowManager,\n\t\tdisplayRows = rowManager.getDisplayRows(),\n\t\tindex;\n\t\t\n\t\tif(top){\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[0];\n\t\t\t}else{\n\t\t\t\tif(rowManager.activeRows.length){\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.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(displayRows.length){\n\t\t\t\tindex = displayRows[displayRows.length - 1];\n\t\t\t\ttop = displayRows.length < this.size ? false : true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {index, top};\n\t}\n\t\n\tcalculatePageSizes(){\n\t\tvar testElRow, testElCell;\n\t\t\n\t\tif(this.table.options.paginationSize){\n\t\t\tthis.size = this.table.options.paginationSize;\n\t\t}else{\n\t\t\ttestElRow = document.createElement(\"div\");\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\t\ttestElRow.style.visibility = \"hidden\";\n\t\t\t\n\t\t\ttestElCell = document.createElement(\"div\");\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\n\t\t\t\n\t\t\ttestElRow.appendChild(testElCell);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\n\t\t\t\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\n\t\t}\n\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\n\t\t\n\t\tthis.generatePageSizeSelectList();\n\t}\n\t\n\tinitialLoadComplete(){\n\t\tthis.initialLoad = false;\n\t}\n\t\n\tremotePageParams(data, config, silent, params){\n\t\tif(!this.initialLoad){\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\n\t\t\t\tthis.reset(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//configure request params\n\t\tparams.page = this.page;\n\t\t\n\t\t//set page size if defined\n\t\tif(this.size){\n\t\t\tparams.size = this.size;\n\t\t}\n\t\t\n\t\treturn params;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetPageToRow(row){\n\t\tif(this.table.options.pagination){\n\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\treturn this.setPageToRow(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Promise.reject();\n\t}\n\t\n\tuserSetPageSize(size){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.setPageSize(size);\n\t\t\treturn this.setPage(1);\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tscrollVertical(top, dir){\n\t\tvar element, diff, margin;\n\t\tif(!dir && !this.table.dataLoader.loading){\n\t\t\telement = this.table.rowManager.getElement();\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\n\t\t\t\n\t\t\tif(diff < margin){\n\t\t\t\tthis.nextPage()\n\t\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\n\t\t\t}\n\t\t}\n\t}\n\t\n\trestOnRenderBefore(rows, renderInPosition){\n\t\tif(!renderInPosition){\n\t\t\tif(this.mode === \"local\"){\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(){\n\t\tthis.refreshData(true, \"all\");\n\t}\n\t\n\tcreateElements(){\n\t\tvar button;\n\t\t\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\t\t\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\t\t\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\t\t\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\t\t\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\t\t\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\t\t\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\t\t\n\t\tif(this.table.options.paginationSizeSelector){\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t}\n\t\n\tgeneratePageSizeSelectList(){\n\t\tvar pageSizes = [];\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes = [];\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t}else{\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t\n\t\t\tpageSizes.forEach((item) => {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\t\n\t\t\t\tif(item === true){\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\n\t\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = item;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\t\t\t\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t}\n\t\n\tinitializePageCounter(){\n\t\tvar counter = this.table.options.paginationCounter,\n\t\tpageCounter = null;\n\t\t\n\t\tif(counter){\n\t\t\tif(typeof counter === \"function\"){\n\t\t\t\tpageCounter = counter;\n\t\t\t}else{\n\t\t\t\tpageCounter = Page.pageCounters[counter];\n\t\t\t}\n\t\t\t\n\t\t\tif(pageCounter){\n\t\t\t\tthis.pageCounter = pageCounter;\n\t\t\t\t\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup pagination\n\tinitializePaginator(hidden){\n\t\tvar pageSelectLabel, paginationCounterHolder;\n\t\t\n\t\tif(!hidden){\n\t\t\t//build pagination element\n\t\t\t\n\t\t\t//bind localizations\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\n\t\t\t\tthis.firstBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\n\t\t\t\tthis.prevBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\n\t\t\t\tthis.nextBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\n\t\t\t\tthis.lastBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\t//click bindings\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(1);\n\t\t\t});\n\t\t\t\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.previousPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.nextPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(this.max);\n\t\t\t});\n\t\t\t\n\t\t\tif(this.table.options.paginationElement){\n\t\t\t\tthis.element = this.table.options.paginationElement;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pageSizeSelect){\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\n\t\t\t\t\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\n\t\t\t\t\tthis.setPage(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//append to DOM\n\t\t\tthis.element.appendChild(this.firstBut);\n\t\t\tthis.element.appendChild(this.prevBut);\n\t\t\tthis.element.appendChild(this.pagesElement);\n\t\t\tthis.element.appendChild(this.nextBut);\n\t\t\tthis.element.appendChild(this.lastBut);\n\t\t\t\n\t\t\tif(!this.table.options.paginationElement){\n\t\t\t\tif(this.table.options.paginationCounter){\n\n\t\t\t\t\tpaginationCounterHolder; \n\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(paginationCounterHolder){\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\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\tthis.footerAppend(this.pageCounterElement);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.footerAppend(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.page = this.table.options.paginationInitialPage;\n\t\t\tthis.count = this.table.options.paginationButtonCount;\n\t\t}\n\t\t\n\t\t//set default values\n\t\tthis.mode = this.table.options.paginationMode;\n\t}\n\t\n\tinitializeProgressive(mode){\n\t\tthis.initializePaginator(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"page-changed\");\n\t}\n\t\n\t//calculate maximum page from number of rows\n\tsetMaxRows(rowCount){\n\t\tif(!rowCount){\n\t\t\tthis.max = 1;\n\t\t}else{\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\n\t\t}\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t}\n\t}\n\t\n\t//reset to first page without triggering action\n\treset(force){\n\t\tif(!this.initialLoad){\n\t\t\tif(this.mode == \"local\" || force){\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.trackChanges();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//set the maximum page\n\tsetMaxPage(max){\n\t\t\n\t\tmax = parseInt(max);\n\t\t\n\t\tthis.max = max || 1;\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t}\n\t\n\t//set current page number\n\tsetPage(page){\n\t\tswitch(page){\n\t\t\tcase \"first\":\n\t\t\t\treturn this.setPage(1);\n\t\n\t\t\tcase \"prev\":\n\t\t\t\treturn this.previousPage();\n\t\t\t\n\t\t\tcase \"next\":\n\t\t\t\treturn this.nextPage();\n\t\t\t\n\t\t\tcase \"last\":\n\t\t\t\treturn this.setPage(this.max);\n\t\t}\n\t\t\n\t\tpage = parseInt(page);\n\t\t\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\n\t\t\tthis.page = page;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageToRow(row){\n\t\tvar rows = this.displayRows(-1);\n\t\tvar index = rows.indexOf(row);\n\t\n\t\tif(index > -1){\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\n\t\t\t\n\t\t\treturn this.setPage(page);\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageSize(size){\n\t\tif(size !== true){\n\t\t\tsize = parseInt(size);\n\t\t}\n\n\t\tif(size > 0){\n\t\t\tthis.size = size;\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\n\t\t}\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\t_setPageCounter(totalRows, size, currentRow){\n\t\tvar content;\n\t\t\n\t\tif(this.pageCounter){\n\n\t\t\tif(this.mode === \"remote\"){\n\t\t\t\tsize = this.size;\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\n\t\t\t}\n\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\n\t\t\t\n\t\t\tswitch(typeof content){\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif(content instanceof Node){\n\t\t\t\t\t\n\t\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.pageCounterElement.appendChild(content);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\t\n\t\t\t\t\t\tif(content != null){\n\t\t\t\t\t\t\tconsole.warn(\"Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:\", content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.pageCounterElement.innerHTML = content;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup the pagination buttons\n\t_setPageButtons(){\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\n\t\t\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\n\t\t\n\t\tif(this.page == 1){\n\t\t\tthis.firstBut.disabled = true;\n\t\t\tthis.prevBut.disabled = true;\n\t\t}else{\n\t\t\tthis.firstBut.disabled = false;\n\t\t\tthis.prevBut.disabled = false;\n\t\t}\n\t\t\n\t\tif(this.page == this.max){\n\t\t\tthis.lastBut.disabled = true;\n\t\t\tthis.nextBut.disabled = true;\n\t\t}else{\n\t\t\tthis.lastBut.disabled = false;\n\t\t\tthis.nextBut.disabled = false;\n\t\t}\n\t\t\n\t\tfor(let i = min; i <= max; i++){\n\t\t\tif(i>0 && i <= this.max){\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.footerRedraw();\n\t}\n\t\n\t_generatePageButton(page){\n\t\tvar button = document.createElement(\"button\");\n\t\t\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif(page == this.page){\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\t\t\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\t\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t\t});\n\t\t\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\t\t\n\t\tbutton.addEventListener(\"click\", (e) => {\n\t\t\tthis.setPage(page);\n\t\t});\n\t\t\n\t\treturn button;\n\t}\n\t\n\t//previous page\n\tpreviousPage(){\n\t\tif(this.page > 1){\n\t\t\tthis.page--;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\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\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//next page\n\tnextPage(){\n\t\tif(this.page < this.max){\n\t\t\tthis.page++;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tif(!this.progressiveLoad){\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\n\t\t\t}\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//return current page number\n\tgetPage(){\n\t\treturn this.page;\n\t}\n\t\n\t//return max page number\n\tgetPageMax(){\n\t\treturn this.max;\n\t}\n\t\n\tgetPageSize(size){\n\t\treturn this.size;\n\t}\n\t\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\t\n\t//return appropriate rows for current page\n\tgetRows(data){\n\t\tvar actualRowPageSize = 0,\n\t\toutput, start, end, actualStartRow;\n\n\t\tvar actualRows = data.filter((row) => {\n\t\t\treturn row.type === \"row\";\n\t\t});\n\t\t\n\t\tif(this.mode == \"local\"){\n\t\t\toutput = [];\n\t\t\t\n\t\t\tthis.setMaxRows(data.length);\n\t\t\t\n\t\t\tif(this.size === true){\n\t\t\t\tstart = 0;\n\t\t\t\tend = data.length;\n\t\t\t}else{\n\t\t\t\tstart = this.size * (this.page - 1);\n\t\t\t\tend = start + parseInt(this.size);\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageButtons();\n\t\t\t\n\t\t\tfor(let i = start; i < end; i++){\n\t\t\t\tlet row = data[i];\n\n\t\t\t\tif(row){\n\t\t\t\t\toutput.push(row);\n\n\t\t\t\t\tif(row.type === \"row\"){\n\t\t\t\t\t\tif(!actualStartRow){\n\t\t\t\t\t\t\tactualStartRow = row;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tactualRowPageSize++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\n\t\t\t\n\t\t\treturn output;\n\t\t}else{\n\t\t\tthis._setPageButtons();\n\t\t\tthis._setPageCounter(actualRows.length);\n\t\t\t\n\t\t\treturn data.slice(0);\n\t\t}\n\t}\n\t\n\ttrigger(){\n\t\tvar left;\n\t\t\n\t\tswitch(this.mode){\n\t\t\tcase \"local\":\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\t\t\t\n\t\t\t\tthis.refreshData();\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\n\t\t\t\treturn Promise.resolve();\n\t\t\t\n\t\t\tcase \"remote\":\n\t\t\t\tthis.dataChanging = true;\n\t\t\t\treturn this.reloadData(null)\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.dataChanging = false;\n\t\t\t\t\t});\n\t\t\t\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\treturn this.reloadData(null, true);\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\n\t\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t_parseRemoteData(data){\n\t\tvar margin;\n\t\t\n\t\tif(typeof data.last_page === \"undefined\"){\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\n\t\t}\n\t\t\n\t\tif(data.data){\n\t\t\tthis.max = parseInt(data.last_page) || 1;\n\n\t\t\tthis.remoteRowCountEstimate = typeof data.last_row !== \"undefined\" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0));\n\t\t\t\n\t\t\tif(this.progressiveLoad){\n\t\t\t\tswitch(this.mode){\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page == 1){\n\t\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\n\t\t\t\t\t\n\t\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\n\t\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\n\t\t}\n\t\t\n\t\treturn data.data;\n\t}\n\t\n\t//handle the footer element being redrawn\n\tfooterRedraw(){\n\t\tvar footer = this.table.footerManager.containerElement;\n\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}else{\n\t\t\tthis.pagesElement.style.display = '';\n\t\t\t\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n}\n\nPage.moduleName = \"page\";\n\n//load defaults\nPage.pageCounters = defaultPageCounters;\n\nexport default Page;\n","// read persistance information from storage\nexport default {\n\tlocal:function(id, type){\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie:function(id, type){\n\t\tvar cookie = document.cookie,\n\t\tkey = id + \"-\" + type,\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\n\t\tend, 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.slice(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif(end > -1){\n\t\t\t\tcookie = cookie.slice(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","//write persistence information to storage\nexport default {\n\tlocal:function(id, type, data){\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie:function(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};","import Module from '../../core/Module.js';\n\nimport defaultReaders from './defaults/readers.js';\nimport defaultWriters from './defaults/writers.js';\n\nclass Persistence extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\t\tthis.defWatcherBlock = false;\n\t\tthis.config = {};\n\t\tthis.readFunc = false;\n\t\tthis.writeFunc = false;\n\n\t\tthis.registerTableOption(\"persistence\", false);\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\n\t}\n\n\t// Test for whether localStorage is available for use.\n\tlocalStorageTest() {\n\t\tvar testKey = \"_tabulator_test\";\n\n\t\ttry {\n\t\t\twindow.localStorage.setItem( testKey, testKey);\n\t\t\twindow.localStorage.removeItem( testKey );\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//setup parameters\n\tinitialize(){\n\t\tif(this.table.options.persistence){\n\t\t\t//determine persistent layout storage type\n\t\t\tvar mode = this.table.options.persistenceMode,\n\t\t\tid = this.table.options.persistenceID,\n\t\t\tretrievedData;\n\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\n\n\t\t\tif(this.table.options.persistenceReaderFunc){\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.readers[this.mode]){\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.table.options.persistenceWriterFunc){\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.writers[this.mode]){\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//set storage tag\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\n\n\t\t\tthis.config = {\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\t\t\theaderFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter,\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\n\t\t\t};\n\n\t\t\t//load pagination data if needed\n\t\t\tif(this.config.page){\n\t\t\t\tretrievedData = this.retrieveData(\"page\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\n\t\t\t\t\t\tthis.table.options.paginationSize = retrievedData.paginationSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof retrievedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retrievedData.paginationInitialPage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//load group data if needed\n\t\t\tif(this.config.group){\n\t\t\t\tretrievedData = this.retrieveData(\"group\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\n\t\t\t\t\t\tthis.table.options.groupBy = retrievedData.groupBy;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retrievedData.groupStartOpen;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\n\t\t\t\t\t\tthis.table.options.groupHeader = retrievedData.groupHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.config.columns){\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\n\t\t\t}\n\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\n\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"headerFilter\"));\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"column-width\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\n\t\t}\n\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\n\t}\n\n\teventSave(type){\n\t\tif(this.config[type]){\n\t\t\tthis.save(type);\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tvar sorters, filters, headerFilters;\n\n\t\tif(this.config.sort){\n\t\t\tsorters = this.load(\"sort\");\n\n\t\t\tif(!sorters === false){\n\t\t\t\tthis.table.options.initialSort = sorters;\n\t\t\t}\n\t\t}\n\n\t\tif(this.config.filter){\n\t\t\tfilters = this.load(\"filter\");\n\n\t\t\tif(!filters === false){\n\t\t\t\tthis.table.options.initialFilter = filters;\n\t\t\t}\n\t\t}\n\t\tif(this.config.headerFilter){\n\t\t\theaderFilters = this.load(\"headerFilter\");\n\n\t\t\tif(!headerFilters === false){\n\t\t\t\tthis.table.options.initialHeaderFilter = headerFilters;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\ttableRedraw(force){\n\t\tif(force && this.config.columns){\n\t\t\tthis.save(\"columns\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tgetColumnLayout(){\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\n\t}\n\n\tsetColumnLayout(layout){\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout, true));\n\t\treturn true;\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumn(column){\n\t\tvar def, keys;\n\n\t\tif(this.config.columns){\n\t\t\tthis.defWatcherBlock = true;\n\n\t\t\tdef = column.getDefinition();\n\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\t\tkeys.forEach((key)=>{\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\t\tvar value = def[key];\n\n\t\t\t\tif(props){\n\t\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\t\tset: (newValue) => {\n\t\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(props.set){\n\t\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget:() => {\n\t\t\t\t\t\t\tif(props.get){\n\t\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\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\tthis.defWatcherBlock = false;\n\t\t}\n\t}\n\n\t//load saved definitions\n\tload(type, current){\n\t\tvar data = this.retrieveData(type);\n\n\t\tif(current){\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//retrieve data from memory\n\tretrieveData(type){\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n\t}\n\n\t//merge old and new column definitions\n\tmergeDefinition(oldCols, newCols, mergeAllNew){\n\t\tvar output = [];\n\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach((column, to) => {\n\t\t\tvar from = this._findColumn(oldCols, column),\n\t\t\tkeys;\n\n\t\t\tif(from){\n\t\t\t\tif(mergeAllNew){\n\t\t\t\t\tkeys = Object.keys(column);\n\t\t\t\t}else if(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(from);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\n\t\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(from.columns){\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\n\t\toldCols.forEach((column, i) => {\n\t\t\tvar from = this._findColumn(newCols, column);\n\n\t\t\tif (!from) {\n\t\t\t\tif(output.length>i){\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t}else{\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//find matching columns\n\t_findColumn(columns, subject){\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\n\n\t\treturn columns.find(function(col){\n\t\t\tswitch(type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t}\n\t\t});\n\t}\n\n\t//save data\n\tsave(type){\n\t\tvar data = {};\n\n\t\tswitch(type){\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"headerFilter\":\n\t\t\t\tdata = this.table.modules.filter.getHeaderFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tdata = this.getGroupConfig();\n\t\t\t\tbreak;\n\n\t\t\tcase \"page\":\n\t\t\t\tdata = this.getPageConfig();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(this.writeFunc){\n\t\t\tthis.writeFunc(this.id, type, data);\n\t\t}\n\n\t}\n\n\t//ensure sorters contain no function data\n\tvalidateSorters(data){\n\t\tdata.forEach(function(item){\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetGroupConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.group){\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgetPageConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.page){\n\t\t\tif(this.config.page === true || this.config.page.size){\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t\t}\n\n\t\t\tif(this.config.page === true || this.config.page.page){\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\n\t//parse columns for data to store\n\tparseColumns(columns){\n\t\tvar definitions = [],\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\t\tcolumns.forEach((column) => {\n\t\t\tvar defStore = {},\n\t\t\tcolDef = column.getDefinition(),\n\t\t\tkeys;\n\n\t\t\tif(column.isGroup){\n\t\t\t\tdefStore.title = colDef.title;\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\n\t\t\t}else{\n\t\t\t\tdefStore.field = column.getField();\n\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t\tkeys.push(\"visible\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tswitch(key){\n\t\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\n\t\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\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\tdefinitions.push(defStore);\n\t\t});\n\n\t\treturn definitions;\n\t}\n}\n\nPersistence.moduleName = \"persistence\";\n\nPersistence.moduleInitOrder = -10;\n\n//load defaults\nPersistence.readers = defaultReaders;\nPersistence.writers = defaultWriters;\n\nexport default Persistence;","import Module from '../../core/Module.js';\n\nclass Popup extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\n\t\tthis.registerTableOption(\"rowDblClickPopup\", false);\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\n\t\tthis.registerTableOption(\"groupDblClickPopup\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextPopup\");\n\t\tthis.registerColumnOption(\"headerClickPopup\");\n\t\tthis.registerColumnOption(\"headerDblClickPopup\");\n\t\tthis.registerColumnOption(\"headerPopup\");\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\n\t\tthis.registerColumnOption(\"contextPopup\");\n\t\tthis.registerColumnOption(\"clickPopup\");\n\t\tthis.registerColumnOption(\"dblClickPopup\");\n\n\t\tthis.registerComponentFunction(\"cell\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"group\", \"popup\", this._componentPopupCall.bind(this));\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\t_componentPopupCall(component, contents, position){\n\t\tthis.loadPopupEvent(contents, null, component, position);\n\t}\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextPopup){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickPopup){\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\n\t\t}\n\n\t\tif(this.table.options.rowDblClickPopup){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextPopup){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickPopup){\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\n\t\t}\n\n\t\tif(this.table.options.groupDblClickPopup){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup));\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\n\t\t\n\t\t\n\t\t}if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){\n\t\t\tthis.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerDblClickPopup\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickPopup);\n\t\t}\n\t\t\n\t\tif(def.headerPopup){\n\t\t\tthis.initializeColumnHeaderPopup(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\n\t\t}\n\n\t\tif(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){\n\t\t\tthis.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, \"dblClickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.dblClickPopup);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderPopup(column){\n\t\tvar icon = column.definition.headerPopupIcon,\n\t\theaderPopupEl;\n\t\t\n\t\theaderPopupEl = document.createElement(\"span\");\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\n\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderPopupEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderPopupEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadPopupTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadPopupTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadPopupEvent(contents, e, component, position){\n\t\tvar renderedCallback;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\n\t\t\n\t\tthis.loadPopup(e, component, contents, renderedCallback, position);\n\t}\n\t\n\tloadPopup(e, component, contents, renderedCallback, position){\n\t\tvar touch = !(e instanceof MouseEvent),\n\t\tcontentsEl, popup;\n\t\t\n\t\tif(contents instanceof HTMLElement){\n\t\t\tcontentsEl = contents;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\tcontentsEl.innerHTML = contents;\n\t\t}\n\t\t\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\n\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\tpopup = this.popup(contentsEl);\n\n\t\tif(typeof renderedCallback === \"function\"){\n\t\t\tpopup.renderCallback(renderedCallback);\n\t\t}\n\n\t\tif(e){\n\t\t\tpopup.show(e);\n\t\t}else{\n\t\t\tpopup.show(component.getElement(), position || \"center\");\n\t\t}\n\n\t\t\n\t\tpopup.hideOnBlur(() => {\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\n\t\t});\n\n\n\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent());\n\t}\n}\n\nPopup.moduleName = \"popup\";\n\nexport default Popup;\n","import Module from '../../core/Module.js';\n\nclass Print extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t\tthis.beforeprintEventHandler = null;\n\t\tthis.afterprintEventHandler = null;\n\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\n\n\t\tthis.registerColumnOption(\"print\");\n\t\tthis.registerColumnOption(\"titlePrint\");\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\tthis.beforeprintEventHandler = this.replaceTable.bind(this);\n\t\t\tthis.afterprintEventHandler = this.cleanup.bind(this);\n\n\t\t\twindow.addEventListener(\"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.addEventListener(\"afterprint\", this.afterprintEventHandler);\n\t\t\tthis.subscribe(\"table-destroy\", this.destroy.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\n\t}\n\n\tdestroy(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\twindow.removeEventListener( \"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.removeEventListener( \"afterprint\", this.afterprintEventHandler );\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\treplaceTable(){\n\t\tif(!this.manualBlock){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t}\n\n\tcleanup(){\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif(this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t}\n\n\tprintFullscreen(visible, style, config){\n\t\tvar scrollX = window.scrollX,\n\t\tscrollY = window.scrollY,\n\t\theaderEl = document.createElement(\"div\"),\n\t\tfooterEl = document.createElement(\"div\"),\n\t\ttableEl = this.table.modules.export.generateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\n\t\theaderContent, footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif(this.table.options.printHeader){\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif(typeof headerContent == \"string\"){\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t}else{\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif(this.table.options.printFooter){\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\n\t\t\tif(typeof footerContent == \"string\"){\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t}else{\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif(this.table.options.printFormatter){\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t}\n}\n\nPrint.moduleName = \"print\";\n\nexport default Print;","import Module from '../../core/Module.js';\n\nclass ReactiveData extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t\t\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.reactiveData){\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\n\t\t}\n\t}\n\t\n\twatchData(data){\n\t\tvar self = this,\n\t\tversion;\n\t\t\n\t\tthis.currentVersion ++;\n\t\t\n\t\tversion = this.currentVersion;\n\t\t\n\t\tthis.unwatchData();\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\t//override array push function\n\t\tthis.origFuncs.push = data.push;\n\t\t\n\t\tObject.defineProperty(this.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\t\n\t\t\t\t\tself.block(\"data-push\");\n\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.push.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-push\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array unshift function\n\t\tthis.origFuncs.unshift = data.unshift;\n\t\t\n\t\tObject.defineProperty(this.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-unshift\");\n\t\t\t\t\t\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.unshift.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-unshift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array shift function\n\t\tthis.origFuncs.shift = data.shift;\n\t\t\n\t\tObject.defineProperty(this.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-shift\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.shift.call(data);\n\n\t\t\t\t\tself.unblock(\"data-shift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array pop function\n\t\tthis.origFuncs.pop = data.pop;\n\t\t\n\t\tObject.defineProperty(this.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-pop\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.pop.call(data);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-pop\");\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array splice function\n\t\tthis.origFuncs.splice = data.splice;\n\t\t\n\t\tObject.defineProperty(this.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\tend = args[1],\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\n\t\t\t\tstartRow, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-splice\");\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif(newRows){\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(startRow){\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\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\t\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif(end !== 0){\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\t\t\t\t\t\t\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 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\t\n\t\t\t\t\tif(newRows || end !== 0){\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.splice.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-splice\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result ;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchData(){\n\t\tif(this.data !== false){\n\t\t\tfor(var key in this.origFuncs){\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable:true,\n\t\t\t\t\twritable:true,\n\t\t\t\t\tvalue: this.origFuncs.key,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\t\t\n\t\tif(this.table.options.dataTree){\n\t\t\tthis.watchTreeChildren(row);\n\t\t}\n\t}\n\t\n\twatchTreeChildren (row){\n\t\tvar self = this,\n\t\tchildField = row.getData()[this.table.options.dataTreeChildField],\n\t\torigFuncs = {};\n\t\t\n\t\tif(childField){\n\t\t\t\n\t\t\torigFuncs.push = childField.push;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"push\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-push\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-push\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.unshift = childField.unshift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-unshift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-unshift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.shift = childField.shift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-shift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.shift.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-shift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.pop = childField.pop;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-pop\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.pop.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-pop\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.splice = childField.splice;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-splice\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-splice\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trebuildTree(row){\n\t\tthis.table.modules.dataTree.initializeRow(row);\n\t\tthis.table.modules.dataTree.layoutRow(row);\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\t\n\twatchKey(row, data, key){\n\t\tvar self = this,\n\t\tprops = Object.getOwnPropertyDescriptor(data, key),\n\t\tvalue = data[key],\n\t\tversion = this.currentVersion;\n\t\t\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: (newValue) => {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"key\");\n\t\t\t\t\t\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"key\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(props.set){\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget:() => {\n\t\t\t\t\n\t\t\t\tif(props.get){\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue:data[key],\n\t\t\t});\n\t\t}\n\t}\n\t\n\tblock(key){\n\t\tif(!this.blocked){\n\t\t\tthis.blocked = key;\n\t\t}\n\t}\n\t\n\tunblock(key){\n\t\tif(this.blocked === key){\n\t\t\tthis.blocked = false;\n\t\t}\n\t}\n}\n\nReactiveData.moduleName = \"reactiveData\";\n\nexport default ReactiveData;\n\n\n\n","import Module from '../../core/Module.js';\n\nclass ResizeColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.latestX = false;\n\t\tthis.handle = null;\n\t\tthis.initialNextColumn = null;\n\t\tthis.nextColumn = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.registerColumnOption(\"resizable\", true);\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\n\t}\n\t\n\tinitializeEventWatchers(){\n\t\tif(!this.initialized){\n\t\t\t\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\n\t\t\tthis.subscribe(\"column-width\", this.columnWidthUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t\n\tlayoutCellHandles(cell){\n\t\tif(cell.row.type === \"row\"){\n\t\t\tthis.deInitializeComponent(cell);\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\n\t\t}\n\t}\n\t\n\tlayoutColumnHeader(column){\n\t\tif(column.definition.resizable){\n\t\t\tthis.initializeEventWatchers();\n\t\t\tthis.deInitializeComponent(column);\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\n\t\t}\n\t}\n\t\n\tcolumnLayoutUpdated(column){\n\t\tvar prev = column.prevColumn();\n\t\t\n\t\tthis.reinitializeColumn(column);\n\t\t\n\t\tif(prev){\n\t\t\tthis.reinitializeColumn(prev);\n\t\t}\n\t}\n\t\n\tcolumnWidthUpdated(column){\n\t\tif(column.modules.frozen){\n\t\t\tif(this.table.modules.frozenColumns.leftColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}else if(this.table.modules.frozenColumns.rightColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfrozenColumnOffset(column){\n\t\tvar offset = false;\n\n\t\tif(column.modules.frozen){\n\t\t\toffset = column.modules.frozen.marginValue; \n\n\t\t\tif(column.modules.frozen.position === \"left\"){\n\t\t\t\toffset += column.getWidth() - 3;\n\t\t\t}else{\n\t\t\t\tif(offset){\n\t\t\t\t\toffset -= 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn offset !== false ? offset + \"px\" : false;\n\t}\n\t\n\treinitializeColumn(column){\n\t\tvar frozenOffset = this.frozenColumnOffset(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\n\t\t\t\tif(frozenOffset){\n\t\t\t\t\tcell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t\t\tcell.modules.resize.handleEl.style[\"z-index\"] = 11;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\n\t\t\tif(frozenOffset){\n\t\t\t\tcolumn.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\n\t\t}\n\t}\n\t\n\tinitializeColumn(type, component, column, element){\n\t\tvar self = this,\n\t\tvariableHeight = false,\n\t\tmode = column.definition.resizable,\n\t\tconfig = {},\n\t\tnearestColumn = column.getLastColumn();\n\t\t\n\t\t//set column resize mode\n\t\tif(type === \"header\"){\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tconfig = {variableHeight:variableHeight};\n\t\t}\n\t\t\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\n\t\t\t\n\t\t\tvar handle = document.createElement('span');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\t\t\t\n\t\t\thandle.addEventListener(\"click\", function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t\tvar handleDown = function(e){\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t};\n\t\t\t\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\t\t\t\n\t\t\t//resize column on double click\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\n\t\t\t\t\n\t\t\t\te.stopPropagation();\n\t\t\t\tnearestColumn.reinitializeWidth(true);\n\t\t\t\t\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(column.modules.frozen){\n\t\t\t\thandle.style.position = \"sticky\";\n\t\t\t\thandle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);\n\t\t\t}\n\t\t\t\n\t\t\tconfig.handleEl = handle;\n\t\t\t\n\t\t\tif(element.parentNode && column.visible){\n\t\t\t\telement.after(handle);\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tcomponent.modules.resize = config;\n\t}\n\t\n\tdeInitializeColumn(column){\n\t\tthis.deInitializeComponent(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tthis.deInitializeComponent(cell);\n\t\t});\n\t}\n\t\n\tdeInitializeComponent(component){\n\t\tvar handleEl;\n\t\t\n\t\tif(component.modules.resize){\n\t\t\thandleEl = component.modules.resize.handleEl;\n\t\t\t\n\t\t\tif(handleEl && handleEl.parentElement){\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tresizeHandle(component, height){\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\n\t\t}\n\t}\n\t\n\t_checkResizability(column){\n\t\treturn column.definition.resizable;\n\t}\n\t\n\t_mouseDown(e, column, handle){\n\t\tvar self = this;\n\t\t\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tfunction mouseMove(e){\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\n\t\t\tstartDiff = x - self.startX,\n\t\t\tmoveDiff = x - self.latestX,\n\t\t\tblockedBefore, blockedAfter;\n\t\t\t\n\t\t\tself.latestX = x;\n\t\t\t\n\t\t\tif(self.table.rtl){\n\t\t\t\tstartDiff = -startDiff;\n\t\t\t\tmoveDiff = -moveDiff;\n\t\t\t}\n\t\t\t\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\n\t\t\t\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tif(moveDiff < 0){\n\t\t\t\tself.nextColumn = self.initialNextColumn;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\n\t\t\t\t\n\t\t\t\tif(moveDiff > 0){\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(self.nextColumn){\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.table.columnManager.rerenderColumns(true);\n\t\t\t\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction mouseUp(e){\n\t\t\t\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif(self.startColumn.modules.edit){\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\t\t\t\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\t\t\t\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(self.startWidth !== column.getWidth()){\n\t\t\t\tself.table.columnManager.verticalAlignHeaders();\n\n\t\t\t\tself.dispatch(\"column-resized\", column);\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\n\t\t\t}\n\t\t}\n\t\t\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\t\t\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 = true;\n\t\t}\n\t\t\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.latestX = self.startX;\n\t\tself.startWidth = column.getWidth();\n\t\t\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeColumns.moduleName = \"resizeColumns\";\n\nexport default ResizeColumns;","import Module from '../../core/Module.js';\n\nclass ResizeRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.resizableRows){\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\trowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-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(e){\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\n\t\tprevHandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function(e){\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif(prevRow){\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\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\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t}\n\n\t_mouseDown(e, row, handle){\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e){\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e){\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\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 = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeRows.moduleName = \"resizeRows\";\n\nexport default ResizeRows;","import Module from '../../core/Module.js';\n\nclass ResizeTable extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.binding = false;\n\t\tthis.visibilityObserver = false;\n\t\tthis.resizeObserver = false;\n\t\tthis.containerObserver = false;\n\t\t\n\t\tthis.tableHeight = 0;\n\t\tthis.tableWidth = 0;\n\t\tthis.containerHeight = 0;\n\t\tthis.containerWidth = 0;\n\t\t\n\t\tthis.autoResize = false;\n\t\t\n\t\tthis.visible = false;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.initialRedraw = false;\n\t\t\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.autoResize){\n\t\t\tvar table = this.table,\n\t\t\ttableStyle;\n\t\t\t\n\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\n\t\t\tif(table.element.parentNode){\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof IntersectionObserver !== \"undefined\" && typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\n\t\t\t\t\n\t\t\t\tthis.initializeVisibilityObserver();\n\t\t\t\t\n\t\t\t\tthis.autoResize = true;\n\t\t\t\t\n\t\t\t\tthis.resizeObserver = new ResizeObserver((entry) => {\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(table.element.parentNode){\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.resizeObserver.observe(table.element);\n\t\t\t\t\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\n\t\t\t\t\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.binding = function(){\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\ttable.columnManager.rerenderColumns(true);\n\t\t\t\t\t\ttable.redraw();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeVisibilityObserver(){\n\t\tthis.visibilityObserver = new IntersectionObserver((entries) => {\n\t\t\tthis.visible = entries[0].isIntersecting;\n\t\t\t\n\t\t\tif(!this.initialized){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.initialRedraw = !this.visible;\n\t\t\t}else{\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.redrawTable(this.initialRedraw);\n\t\t\t\t\tthis.initialRedraw = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.visibilityObserver.observe(this.table.element);\n\t}\n\t\n\tredrawTable(force){\n\t\tif(this.initialized && this.visible){\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\t\t\tthis.table.redraw(force);\n\t\t}\n\t}\n\t\n\ttableResized(){\n\t\tthis.table.rowManager.redraw();\n\t}\n\t\n\tclearBindings(){\n\t\tif(this.binding){\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\t\t\n\t\tif(this.resizeObserver){\n\t\t\tthis.resizeObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.visibilityObserver){\n\t\t\tthis.visibilityObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.containerObserver){\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t\t}\n\t}\n}\n\nResizeTable.moduleName = \"resizeTable\";\n\nexport default ResizeTable;","import Module from '../../core/Module.js';\n\nclass ResponsiveLayout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t\tthis.collapseHandleColumn = false;\n\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\n\n\t\tthis.registerColumnOption(\"responsive\");\n\t}\n\n\t//generate responsive columns list\n\tinitialize(){\n\t\tif(this.table.options.responsiveLayout){\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\n\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.generateCollapsedRowContent.bind(this));\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\ttableRedraw(force){\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\n\t\t\tif(!force){\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeResponsivity(){\n\t\tvar columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//determine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\n\t\t\tif(column.modules.responsive){\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\n\t\t//assign collapse column\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\n\t\t\t\tthis.collapseHandleColumn = col;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(this.collapseHandleColumn){\n\t\t\tif(this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}else{\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//define layout information\n\tinitializeColumn(column){\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\n\t}\n\n\tinitializeRow(row){\n\t\tvar el;\n\n\t\tif(row.type !== \"calc\"){\n\t\t\tel = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement:el,\n\t\t\t\topen:this.collapseStartOpen,\n\t\t\t};\n\n\t\t\tif(!this.collapseStartOpen){\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tlayoutRow(row){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t}\n\n\t//update column visibility\n\tupdateColumnVisibility(column, responsiveToggle){\n\t\tif(!responsiveToggle && column.modules.responsive){\n\t\t\tcolumn.modules.responsive.visible = column.visible;\n\t\t\tthis.initializeResponsivity();\n\t\t}\n\t}\n\n\thideColumn(column){\n\t\tvar colCount = this.hiddenColumns.length;\n\n\t\tcolumn.hide(false, true);\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !colCount){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}\n\t\t}\n\t}\n\n\tshowColumn(column){\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//redraw columns to fit space\n\tupdate(){\n\t\tvar working = true;\n\n\t\twhile(working){\n\n\t\t\tlet width = this.table.modules.layout.getMode() == \"fitColumns\" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth();\n\n\t\t\tlet diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width;\n\n\t\t\tif(diff < 0){\n\t\t\t\t//table is too wide\n\t\t\t\tlet column = this.columns[this.index];\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.hideColumn(column);\n\t\t\t\t\tthis.index ++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t//table has spare space\n\t\t\t\tlet column = this.columns[this.index -1];\n\n\t\t\t\tif(column){\n\t\t\t\t\tif(diff > 0){\n\t\t\t\t\t\tif(diff >= column.getWidth()){\n\t\t\t\t\t\t\tthis.showColumn(column);\n\t\t\t\t\t\t\tthis.index --;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\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}\n\n\t\t\tif(!this.table.rowManager.activeRowsCount){\n\t\t\t\tthis.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedContent(){\n\t\tvar rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach((row) => {\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t});\n\t}\n\n\tgenerateCollapsedRowContent(row){\n\t\tvar el, contents;\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\n\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif(contents){\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedRowData(row){\n\t\tvar data = row.getData(),\n\t\toutput = [],\n\t\tmockCellComponent;\n\n\t\tthis.hiddenColumns.forEach((column) => {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif(column.definition.title && column.field){\n\t\t\t\tif(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue:false,\n\t\t\t\t\t\tdata:{},\n\t\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction onRendered(callback){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tformatCollapsedData(data){\n\t\tvar list = document.createElement(\"table\");\n\n\t\tdata.forEach(function(item){\n\t\t\tvar row = document.createElement(\"tr\");\n\t\t\tvar titleData = document.createElement(\"td\");\n\t\t\tvar valueData = document.createElement(\"td\");\n\t\t\tvar node_content;\n\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\t\ttitleData.appendChild(titleHighlight);\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\n\t\t\t});\n\n\t\t\tif(item.value instanceof Node){\n\t\t\t\tnode_content = document.createElement(\"div\");\n\t\t\t\tnode_content.appendChild(item.value);\n\t\t\t\tvalueData.appendChild(node_content);\n\t\t\t}else{\n\t\t\t\tvalueData.innerHTML = item.value;\n\t\t\t}\n\n\t\t\trow.appendChild(titleData);\n\t\t\trow.appendChild(valueData);\n\t\t\tlist.appendChild(row);\n\t\t}, this);\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t}\n}\n\nResponsiveLayout.moduleName = \"responsiveLayout\";\n\nexport default ResponsiveLayout;\n","import Module from '../../core/Module.js';\n\nclass SelectRow extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t\tthis.headerCheckboxElement = null; // hold header select element\n\t\t\n\t\tthis.registerTableOption(\"selectableRows\", \"highlight\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRowsRangeMode\", \"drag\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRowsRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\n\t\tthis.registerTableOption(\"selectableRowsPersistence\", true); // maintain selection when table view is updated\n\t\tthis.registerTableOption(\"selectableRowsCheck\", function(data, row){return true;}); //check whether row is selectable\n\t\t\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\n\t}\n\t\n\tinitialize(){\n\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tif(this.table.options.selectableRows === \"highlight\" && this.table.options.selectableRange){\n\t\t\tthis.table.options.selectableRows = false;\n\t\t}\n\n\t\tif(this.table.options.selectableRows !== false){\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.selectableRows && !this.table.options.selectableRowsPersistence){\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"selectable\", \"selectableRows\", true);\n\t\tthis.deprecationCheck(\"selectableRollingSelection\", \"selectableRowsRollingSelection\", true);\n\t\tthis.deprecationCheck(\"selectableRangeMode\", \"selectableRowsRangeMode\", true);\n\t\tthis.deprecationCheck(\"selectablePersistence\", \"selectableRowsPersistence\", true);\n\t\tthis.deprecationCheck(\"selectableCheck\", \"selectableRowsCheck\", true);\n\t}\n\t\n\trowRetrieve(type, prevValue){\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\n\t}\n\t\n\trowDeleted(row){\n\t\tthis._deselectRow(row, true);\n\t}\n\t\n\tclearSelectionData(silent){\n\t\tvar prevSelected = this.selectedRows.length;\n\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\t\t\n\t\tif(prevSelected && silent !== true){\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t}\n\t\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tselectable = self.checkRowSelectability(row),\n\t\telement = row.getElement();\n\t\t\n\t\t// trigger end of row selection\n\t\tvar endSelect = function(){\n\t\t\t\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\t\t\n\t\trow.modules.select = {selected:false};\n\n\t\telement.classList.toggle(\"tabulator-selectable\", selectable);\n\t\telement.classList.toggle(\"tabulator-unselectable\", !selectable);\n\t\t\n\t\t//set row selection class\n\t\tif(self.checkRowSelectability(row)){\t\t\t\n\t\t\tif(self.table.options.selectableRows && self.table.options.selectableRows != \"highlight\"){\n\t\t\t\tif(self.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\n\t\t\t\t}else{\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!self.selecting){\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selecting = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selectPrev = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\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\t\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\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\t\n\thandleComplexRowClick(row, e){\n\t\tif(e.shiftKey){\n\t\t\tthis.table._clearSelection();\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\n\t\t\t\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\n\t\t\t\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\t\t\t\n\t\t\tif(e.ctrlKey || e.metaKey){\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.options.selectableRows !== true && !this.isRowSelected(row)){\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectableRows){\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.lastClickedRow = row;\n\t\t\t}else{\n\t\t\t\tthis.deselectRows(undefined, true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.selectableRows !== true){\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectableRows){\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectableRows);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectRows(toggledRows);\n\t\t\t}\n\t\t\tthis.table._clearSelection();\n\t\t}\n\t\telse if(e.ctrlKey || e.metaKey){\n\t\t\tthis.toggleRow(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}else{\n\t\t\tthis.deselectRows(undefined, true);\n\t\t\tthis.selectRows(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}\n\t}\n\n\tcheckRowSelectability(row){\n\t\tif(row && row.type === \"row\"){\n\t\t\treturn this.table.options.selectableRowsCheck.call(this.table, row.getComponent());\n\t\t}\n\n\t\treturn false;\n\t}\n\t\n\t//toggle row selection\n\ttoggleRow(row){\n\t\tif(this.checkRowSelectability(row)){\n\t\t\tif(row.modules.select && row.modules.select.selected){\n\t\t\t\tthis._deselectRow(row);\n\t\t\t}else{\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//select a number of rows\n\tselectRows(rows){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"number\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._selectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(false, changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._selectRow(rowMatch, false, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//select an individual row\n\t_selectRow(rowInfo, silent, force){\n\t\t//handle max row count\n\t\tif(!isNaN(this.table.options.selectableRows) && this.table.options.selectableRows !== true && !force){\n\t\t\tif(this.selectedRows.length >= this.table.options.selectableRows){\n\t\t\t\tif(this.table.options.selectableRowsRollingSelection){\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t}else{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\t\t\n\t\tif(row){\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectedRows.push(row);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tthis._rowSelectionChanged(silent, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisRowSelected(row){\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t}\n\t\n\t//deselect a number of rows\n\tdeselectRows(rows, silent){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = Object.assign([], this.selectedRows);\n\t\t\t\tbreak;\n\n\t\t\tcase \"number\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._deselectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(silent, [], changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._deselectRow(rowMatch, silent, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//deselect an individual row\n\t_deselectRow(rowInfo, silent){\n\t\tvar self = this,\n\t\trow = self.table.rowManager.findRow(rowInfo),\n\t\tindex, element;\n\t\t\n\t\tif(row){\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\t\t\t\n\t\t\tif(index > -1){\n\n\t\t\t\telement = row.getElement();\n\t\t\t\t\n\t\t\t\tif(element){\n\t\t\t\t\telement.classList.remove(\"tabulator-selected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t\t}\n\t\t\t\tself.selectedRows.splice(index, 1);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tself._rowSelectionChanged(silent, undefined, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetSelectedData(){\n\t\tvar data = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetSelectedRows(){\n\t\tvar rows = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\trows.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t_rowSelectionChanged(silent, selected = [], deselected = []){\n\t\tif(this.headerCheckboxElement){\n\t\t\tif(this.selectedRows.length === 0){\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\n\t\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else {\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(!silent){\n\t\t\tif(!Array.isArray(selected)){\n\t\t\t\tselected = [selected];\n\t\t\t}\n\n\t\t\tselected = selected.map(row => row.getComponent());\n\n\t\t\tif(!Array.isArray(deselected)){\n\t\t\t\tdeselected = [deselected];\n\t\t\t}\n\n\t\t\tdeselected = deselected.map(row => row.getComponent());\n\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows(), selected, deselected);\n\t\t}\n\t}\n\t\n\tregisterRowSelectCheckbox (row, element) {\n\t\tif(!row._row.modules.select){\n\t\t\trow._row.modules.select = {};\n\t\t}\n\t\t\n\t\trow._row.modules.select.checkboxEl = element;\n\t}\n\t\n\tregisterHeaderSelectCheckbox (element) {\n\t\tthis.headerCheckboxElement = element;\n\t}\n\t\n\tchildRowSelection(row, select){\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\t\t\n\t\tif(select){\n\t\t\tfor(let child of children){\n\t\t\t\tthis._selectRow(child, true);\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let child of children){\n\t\t\t\tthis._deselectRow(child, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nSelectRow.moduleName = \"selectRow\";\n\nexport default SelectRow;","//sort numbers\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar decimal = params.decimalSeparator;\n\tvar thousand = params.thousandSeparator;\n\tvar emptyAlign = 0;\n\n\ta = String(a);\n\tb = String(b);\n\n\tif(thousand){\n\t\ta = a.split(thousand).join(\"\");\n\t\tb = b.split(thousand).join(\"\");\n\t}\n\n\tif(decimal){\n\t\ta = a.split(decimal).join(\".\");\n\t\tb = b.split(decimal).join(\".\");\n\t}\n\n\ta = parseFloat(a);\n\tb = parseFloat(b);\n\n\t//handle non numeric values\n\tif(isNaN(a)){\n\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t}else if(isNaN(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\treturn a - b;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort strings\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\tvar locale;\n\n\t//handle empty values\n\tif(!a){\n\t\temptyAlign = !b ? 0 : -1;\n\t}else if(!b){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\tswitch(typeof params.locale){\n\t\t\tcase \"boolean\":\n\t\t\t\tif(params.locale){\n\t\t\t\t\tlocale = this.langLocale();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tlocale = params.locale;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort datetime\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tif(typeof DT != \"undefined\"){\n\t\tif(!DT.isDateTime(a)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\ta = DT.fromISO(String(a));\n\t\t\t}else{\n\t\t\t\ta = DT.fromFormat(String(a), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!DT.isDateTime(b)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\tb = DT.fromISO(String(b));\n\t\t\t}else{\n\t\t\t\tb = DT.fromFormat(String(b), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!a.isValid){\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\n\t\t}else if(!b.isValid){\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\n\t}else{\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\n\t}\n}","import datetime from './datetime.js';\n\n//sort date\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"dd/MM/yyyy\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","import datetime from './datetime.js';\n\n//sort times\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"HH:mm\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","//sort booleans\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\treturn el1 - el2;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar type = params.type || \"length\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tfunction calc(value){\n\t\tvar result;\n\n\t\tswitch(type){\n\t\t\tcase \"length\":\n\t\t\t\tresult = value.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"sum\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"max\":\n\t\t\t\tresult = Math.max.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"min\":\n\t\t\t\tresult = Math.min.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"avg\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t}) / value.length;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t//handle non array values\n\tif(!Array.isArray(a)){\n\t\temptyAlign = !Array.isArray(b) ? 0 : -1;\n\t}else if(!Array.isArray(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\treturn calc(b) - calc(a);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\treturn el1 - el2;\n}","//sort alpha numeric strings\nexport default function(as, bs, aRow, bRow, column, dir, params){\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\n\t//handle empty values\n\tif(!as && as!== 0){\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t}else if(!bs && bs!== 0){\n\t\temptyAlign = 1;\n\t}else{\n\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\ta = String(as).toLowerCase();\n\t\tb = String(bs).toLowerCase();\n\t\tif(a === b) return 0;\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\ta = a.match(rx);\n\t\tb = b.match(rx);\n\t\tL = a.length > b.length ? b.length : a.length;\n\t\twhile(i < L){\n\t\t\ta1= a[i];\n\t\t\tb1= b[i++];\n\t\t\tif(a1 !== b1){\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\treturn a1 - b1;\n\t\t\t\t}\n\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\treturn a.length > b.length;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import number from './sorters/number.js';\nimport string from './sorters/string.js';\nimport date from './sorters/date.js';\nimport time from './sorters/time.js';\nimport datetime from './sorters/datetime.js';\nimport boolean from './sorters/boolean.js';\nimport array from './sorters/array.js';\nimport exists from './sorters/exists.js';\nimport alphanum from './sorters/alphanum.js';\n\nexport default {\n\tnumber:number,\n\tstring:string,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tboolean:boolean,\n\tarray:array,\n\texists:exists,\n\talphanum:alphanum\n};","import Module from '../../core/Module.js';\n\nimport defaultSorters from './defaults/sorters.js';\n\nclass Sort extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\t\t\n\t\tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\n\t\t\n\t\tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\n\t\tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\n\t\tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\n\t\tthis.registerTableOption(\"headerSortElement\", \"
        \"); //header sort element\n\t\tthis.registerTableOption(\"headerSortClickElement\", \"header\"); //element which triggers sort when clicked\n\t\t\n\t\tthis.registerColumnOption(\"sorter\");\n\t\tthis.registerColumnOption(\"sorterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"headerSort\", true);\n\t\tthis.registerColumnOption(\"headerSortStartingDir\");\n\t\tthis.registerColumnOption(\"headerSortTristate\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.registerDataHandler(this.sort.bind(this), 20);\n\t\t\n\t\tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\n\t\tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\n\t\tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\n\t\t\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\n\t\t}\n\t}\n\t\n\ttableBuilt(){\n\t\tif(this.table.options.initialSort){\n\t\t\tthis.setSort(this.table.options.initialSort);\n\t\t}\n\t}\n\t\n\tremoteSortParams(data, config, silent, params){\n\t\tvar sorters = this.getSort();\n\t\t\n\t\tsorters.forEach((item) => {\n\t\t\tdelete item.column;\n\t\t});\n\t\t\n\t\tparams.sort = sorters;\n\t\t\n\t\treturn params;\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetSort(sortList, dir){\n\t\tthis.setSort(sortList, dir);\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\t\n\tclearSort(){\n\t\tthis.clear();\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\t//initialize column header for sorting\n\tinitializeColumn(column){\n\t\tvar sorter = false,\n\t\tcolEl,\n\t\tarrowEl;\n\t\t\n\t\tswitch(typeof column.definition.sorter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Sort.sorters[column.definition.sorter]){\n\t\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tcolumn.modules.sort = {\n\t\t\tsorter:sorter, dir:\"none\",\n\t\t\tparams:column.definition.sorterParams || {},\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate,\n\t\t};\n\t\t\n\t\tif(column.definition.headerSort !== false){\n\t\t\t\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\t\t\t\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\t\t\t\n\t\t\tswitch(this.table.options.headerSortClickElement){\n\t\t\t\tcase \"icon\":\n\t\t\t\t\tarrowEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"header\":\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch(this.table.options.headerSortElement){\n\t\t\t\tcase \"function\":\n\t\t\t\t//do nothing\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"object\":\n\t\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t\t}\n\t\t\t\n\t\t\t//create sorter arrow\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\n\t\t\t\n\t\t\tcolumn.modules.sort.element = arrowEl;\n\t\t\t\n\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t\n\t\t\tif(this.table.options.headerSortClickElement === \"icon\"){\n\t\t\t\tarrowEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//sort on click\n\t\t\t(this.table.options.headerSortClickElement === \"icon\" ? arrowEl : colEl).addEventListener(\"click\", (e) => {\n\t\t\t\tvar dir = \"\",\n\t\t\t\tsorters=[],\n\t\t\t\tmatch = false;\n\t\t\t\t\n\t\t\t\tif(column.modules.sort){\n\t\t\t\t\tif(column.modules.sort.tristate){\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tdir = \"none\";\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\tswitch(column.modules.sort.dir){\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = this.getSort();\n\t\t\t\t\t\t\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(match > -1){\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\t\t\t\t\t\t\t\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}else{\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tthis.setSort(sorters);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(dir == \"none\"){\n\t\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tthis.setSort(column, dir);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\n\t\t\t\t\tthis.refreshSort();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trefreshSort(){\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.reloadData(null, false, false);\n\t\t}else{\n\t\t\tthis.refreshData(true);\n\t\t}\n\t\t\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\t\n\t//check if the sorters have changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\t\n\t//return current sorters\n\tgetSort(){\n\t\tvar self = this,\n\t\tsorters = [];\n\t\t\n\t\tself.sortList.forEach(function(item){\n\t\t\tif(item.column){\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn sorters;\n\t}\n\t\n\t//change sort list and trigger sort\n\tsetSort(sortList, dir){\n\t\tvar self = this,\n\t\tnewSortList = [];\n\t\t\n\t\tif(!Array.isArray(sortList)){\n\t\t\tsortList = [{column: sortList, dir:dir}];\n\t\t}\n\t\t\n\t\tsortList.forEach(function(item){\n\t\t\tvar column;\n\t\t\t\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t\tself.sortList = newSortList;\n\t\t\n\t\tthis.dispatch(\"sort-changed\");\n\t}\n\t\n\t//clear sorters\n\tclear(){\n\t\tthis.setSort([]);\n\t}\n\t\n\t//find appropriate sorter for column\n\tfindSorter(column){\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\tsorter = \"string\",\n\t\tfield, value;\n\t\t\n\t\tif(row){\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\t\t\t\n\t\t\tif(field){\n\t\t\t\t\n\t\t\t\tvalue = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Sort.sorters[sorter];\n\t}\n\t\n\t//work through sort list sorting data\n\tsort(data){\n\t\tvar self = this,\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t\tsortListActual = [],\n\t\trowComponents = [];\n\t\t\n\t\tif(this.subscribedExternal(\"dataSorting\")){\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\n\t\t}\n\t\t\n\t\tself.clearColumnHeaders();\n\t\t\n\t\tif(this.table.options.sortMode !== \"remote\"){\n\t\t\t\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tvar sortObj;\n\t\t\t\t\n\t\t\t\tif(item.column){\n\t\t\t\t\tsortObj = item.column.modules.sort;\n\t\t\t\t\t\n\t\t\t\t\tif(sortObj){\n\t\t\t\t\t\t\n\t\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\t\tif(!sortObj.sorter){\n\t\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\t\t\t\t\t\t\n\t\t\t\t\t\tsortListActual.push(item);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t//sort data\n\t\t\tif (sortListActual.length) {\n\t\t\t\tself._sortItems(data, sortListActual);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataSorted\")){\n\t\t\tdata.forEach((row) => {\n\t\t\t\trowComponents.push(row.getComponent());\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//clear sort arrows on columns\n\tclearColumnHeaders(){\n\t\tthis.table.columnManager.getRealColumns().forEach((column) => {\n\t\t\tif(column.modules.sort){\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//set the column header sort direction\n\tsetColumnHeader(column, dir){\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir === \"asc\" ? \"ascending\" : \"descending\");\n\t\tthis.setColumnHeaderSortIcon(column, dir);\n\t}\n\t\n\tsetColumnHeaderSortIcon(column, dir){\n\t\tvar sortEl = column.modules.sort.element,\n\t\tarrowEl;\n\t\t\n\t\tif(column.definition.headerSort && typeof this.table.options.headerSortElement === \"function\"){\n\t\t\twhile(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild);\n\t\t\t\n\t\t\tarrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir);\n\t\t\t\n\t\t\tif(typeof arrowEl === \"object\"){\n\t\t\t\tsortEl.appendChild(arrowEl);\n\t\t\t}else{\n\t\t\t\tsortEl.innerHTML = arrowEl;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//sort each item in sort list\n\t_sortItems(data, sortList){\n\t\tvar sorterCount = sortList.length - 1;\n\t\t\n\t\tdata.sort((a, b) => {\n\t\t\tvar result;\n\t\t\t\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\n\t\t\t\tlet sortItem = sortList[i];\n\t\t\t\t\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\t\t\t\t\n\t\t\t\tif(result !== 0){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn result;\n\t\t});\n\t}\n\t\n\t//process individual rows for a sort function on active data\n\t_sortRow(a, b, column, dir, params){\n\t\tvar el1Comp, el2Comp;\n\t\t\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\t\t\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\t\t\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\t\t\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\t\t\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t}\n}\n\nSort.moduleName = \"sort\";\n\n//load defaults\nSort.sorters = defaultSorters;\n\nexport default Sort;\n","class RangeComponent {\n\tconstructor(range) {\n\t\tthis._range = range;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function (target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t} else {\n\t\t\t\t\treturn target._range.table.componentFunctionBinder.handle(\"range\", target._range, name);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\tgetElement() {\n\t\treturn this._range.element;\n\t}\n\n\tgetData() {\n\t\treturn this._range.getData();\n\t}\n\n\tgetCells() {\n\t\treturn this._range.getCells(true);\n\t}\n\n\tgetStructuredCells() {\n\t\treturn this._range.getStructuredCells();\n\t}\n\n\tgetRows() {\n\t\treturn this._range.getRows().map((row) => row.getComponent());\n\t}\n\n\tgetColumns() {\n\t\treturn this._range.getColumns().map((column) => column.getComponent());\n\t}\n\t\n\tgetBounds() {\n\t\treturn this._range.getBounds();\n\t}\n\n\tgetTopEdge() {\n\t\treturn this._range.top;\n\t}\n\n\tgetBottomEdge() {\n\t\treturn this._range.bottom;\n\t}\n\n\tgetLeftEdge() {\n\t\treturn this._range.left;\n\t}\n\n\tgetRightEdge() {\n\t\treturn this._range.right;\n\t}\n\n\tsetBounds(start, end){\n\t\tif(this._range.destroyedGuard(\"setBounds\")){\n\t\t\tthis._range.setBounds(start ? start._cell : start, end ? end._cell : end);\n\t\t}\n\t}\n\n\tsetStartBound(start){\n\t\tif(this._range.destroyedGuard(\"setStartBound\")){\n\t\t\tthis._range.setEndBound(start ? start._cell : start);\n\t\t\tthis._range.rangeManager.layoutElement();\n\t\t}\n\t}\n\n\tsetEndBound(end){\n\t\tif(this._range.destroyedGuard(\"setEndBound\")){\n\t\t\tthis._range.setEndBound(end ? end._cell : end);\n\t\t\tthis._range.rangeManager.layoutElement();\n\t\t}\n\t}\n\n\tclearValues(){\n\t\tif(this._range.destroyedGuard(\"clearValues\")){\n\t\t\tthis._range.clearValues();\n\t\t}\n\t}\n\n\tremove(){\n\t\tif(this._range.destroyedGuard(\"remove\")){\n\t\t\tthis._range.destroy(true);\n\t\t}\n\t}\n}\n\nexport default RangeComponent;\n","import CoreFeature from '../../core/CoreFeature.js';\nimport RangeComponent from \"./RangeComponent\";\n\nclass Range extends CoreFeature{\n\tconstructor(table, rangeManager, start, end) {\n\t\tsuper(table);\n\t\t\n\t\tthis.rangeManager = rangeManager;\n\t\tthis.element = null;\n\t\tthis.initialized = false;\n\t\tthis.initializing = {\n\t\t\tstart:false,\n\t\t\tend:false,\n\t\t};\n\t\tthis.destroyed = false;\n\t\t\n\t\tthis.top = 0;\n\t\tthis.bottom = 0;\n\t\tthis.left = 0;\n\t\tthis.right = 0;\n\t\t\n\t\tthis.table = table;\n\t\tthis.start = {row:0, col:0};\n\t\tthis.end = {row:0, col:0};\n\n\t\tif(this.rangeManager.rowHeader){\n\t\t\tthis.left = 1;\n\t\t\tthis.right = 1;\n\t\t\tthis.start.col = 1;\n\t\t\tthis.end.col = 1;\n\t\t}\n\t\t\n\t\tthis.initElement();\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tthis.initBounds(start, end);\n\t\t});\n\t}\n\t\n\tinitElement(){\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-range\");\n\t}\n\t\n\tinitBounds(start, end){\n\t\tthis._updateMinMax();\n\t\t\n\t\tif(start){\n\t\t\tthis.setBounds(start, end || start);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Boundary Setup ///////\n\t///////////////////////////////////\n\t\n\tsetStart(row, col) {\n\t\tif(this.start.row !== row || this.start.col !== col){\n\t\t\tthis.start.row = row;\n\t\t\tthis.start.col = col;\n\t\t\t\n\t\t\tthis.initializing.start = true;\n\t\t\tthis._updateMinMax();\n\t\t}\n\t}\n\t\n\tsetEnd(row, col) {\n\t\tif(this.end.row !== row || this.end.col !== col){\n\t\t\tthis.end.row = row;\n\t\t\tthis.end.col = col;\n\t\t\t\n\t\t\tthis.initializing.end = true;\n\t\t\tthis._updateMinMax();\n\t\t}\n\t}\n\t\n\tsetBounds(start, end, visibleRows){\n\t\tif(start){\n\t\t\tthis.setStartBound(start);\n\t\t}\n\t\t\n\t\tthis.setEndBound(end || start);\n\t\tthis.rangeManager.layoutElement(visibleRows);\n\t}\n\t\n\tsetStartBound(element){\n\t\tvar row, col;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(this.rangeManager.columnSelection){\n\t\t\t\tthis.setStart(0, element.getPosition() - 1);\n\t\t\t}\n\t\t}else{\n\t\t\trow = element.row.position - 1;\n\t\t\tcol = element.column.getPosition() - 1;\n\t\t\t\n\t\t\tif (element.column === this.rangeManager.rowHeader) {\n\t\t\t\tthis.setStart(row, 1);\n\t\t\t} else {\n\t\t\t\tthis.setStart(row, col);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tsetEndBound(element){\n\t\tvar rowsCount = this._getTableRows().length,\n\t\trow, col, isRowHeader;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(this.rangeManager.columnSelection){\n\t\t\t\tif (this.rangeManager.selecting === \"column\") {\n\t\t\t\t\tthis.setEnd(rowsCount - 1, element.getPosition() - 1);\n\t\t\t\t} else if (this.rangeManager.selecting === \"cell\") {\n\t\t\t\t\tthis.setEnd(0, element.getPosition() - 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\trow = element.row.position - 1;\n\t\t\tcol = element.column.getPosition() - 1;\n\t\t\tisRowHeader = element.column === this.rangeManager.rowHeader;\n\t\t\t\n\t\t\tif (this.rangeManager.selecting === \"row\") {\n\t\t\t\tthis.setEnd(row, this._getTableColumns().length - 1);\n\t\t\t} else if (this.rangeManager.selecting !== \"row\" && isRowHeader) {\n\t\t\t\tthis.setEnd(row, 0);\n\t\t\t} else if (this.rangeManager.selecting === \"column\") {\n\t\t\t\tthis.setEnd(rowsCount - 1, col);\n\t\t\t} else {\n\t\t\t\tthis.setEnd(row, col);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_updateMinMax() {\n\t\tthis.top = Math.min(this.start.row, this.end.row);\n\t\tthis.bottom = Math.max(this.start.row, this.end.row);\n\t\tthis.left = Math.min(this.start.col, this.end.col);\n\t\tthis.right = Math.max(this.start.col, this.end.col);\n\t\t\n\t\tif(this.initialized){\n\t\t\tthis.dispatchExternal(\"rangeChanged\", this.getComponent());\n\t\t}else{\n\t\t\tif(this.initializing.start && this.initializing.end){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.dispatchExternal(\"rangeAdded\", this.getComponent());\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_getTableColumns() {\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex();\n\t}\n\t\n\t_getTableRows() {\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Rendering ///////\n\t///////////////////////////////////\n\t\n\tlayout() {\n\t\tvar _vDomTop = this.table.rowManager.renderer.vDomTop,\n\t\t_vDomBottom = this.table.rowManager.renderer.vDomBottom,\n\t\t_vDomLeft = this.table.columnManager.renderer.leftCol,\n\t\t_vDomRight = this.table.columnManager.renderer.rightCol,\t\t\n\t\ttop, bottom, left, right, topLeftCell, bottomRightCell;\n\t\t\n\t\tif (_vDomTop == null) {\n\t\t\t_vDomTop = 0;\n\t\t}\n\t\t\n\t\tif (_vDomBottom == null) {\n\t\t\t_vDomBottom = Infinity;\n\t\t}\n\t\t\n\t\tif (_vDomLeft == null) {\n\t\t\t_vDomLeft = 0;\n\t\t}\n\t\t\n\t\tif (_vDomRight == null) {\n\t\t\t_vDomRight = Infinity;\n\t\t}\n\t\t\n\t\tif (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) {\n\t\t\ttop = Math.max(this.top, _vDomTop);\n\t\t\tbottom = Math.min(this.bottom, _vDomBottom);\n\t\t\tleft = Math.max(this.left, _vDomLeft);\n\t\t\tright = Math.min(this.right, _vDomRight);\n\t\t\t\n\t\t\ttopLeftCell = this.rangeManager.getCell(top, left);\n\t\t\tbottomRightCell = this.rangeManager.getCell(bottom, right);\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-range-active\");\n\t\t\t// this.element.classList.toggle(\"tabulator-range-active\", this === this.rangeManager.activeRange);\n\t\t\t\n\t\t\tthis.element.style.left = topLeftCell.row.getElement().offsetLeft + topLeftCell.getElement().offsetLeft + \"px\";\n\t\t\tthis.element.style.top = topLeftCell.row.getElement().offsetTop + \"px\";\n\t\t\tthis.element.style.width = bottomRightCell.getElement().offsetLeft + bottomRightCell.getElement().offsetWidth - topLeftCell.getElement().offsetLeft + \"px\";\n\t\t\tthis.element.style.height = bottomRightCell.row.getElement().offsetTop + bottomRightCell.row.getElement().offsetHeight - topLeftCell.row.getElement().offsetTop + \"px\";\n\t\t}\n\t}\n\t\n\tatTopLeft(cell) {\n\t\treturn cell.row.position - 1 === this.top && cell.column.getPosition() - 1 === this.left;\n\t}\n\t\n\tatBottomRight(cell) {\n\t\treturn cell.row.position - 1 === this.bottom && cell.column.getPosition() - 1 === this.right;\n\t}\n\t\n\toccupies(cell) {\n\t\treturn this.occupiesRow(cell.row) && this.occupiesColumn(cell.column);\n\t}\n\t\n\toccupiesRow(row) {\n\t\treturn this.top <= row.position - 1 && row.position - 1 <= this.bottom;\n\t}\n\t\n\toccupiesColumn(col) {\n\t\treturn this.left <= col.getPosition() - 1 && col.getPosition() - 1 <= this.right;\n\t}\n\t\n\toverlaps(left, top, right, bottom) {\n\t\tif ((this.left > right || left > this.right) || (this.top > bottom || top > this.bottom)){\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\treturn true;\n\t}\n\t\n\tgetData() {\n\t\tvar data = [],\n\t\trows = this.getRows(),\n\t\tcolumns = this.getColumns();\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tvar rowData = row.getData(),\n\t\t\tresult = {};\n\t\t\t\n\t\t\tcolumns.forEach((column) => {\n\t\t\t\tresult[column.field] = rowData[column.field];\n\t\t\t});\n\t\t\t\n\t\t\tdata.push(result);\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetCells(structured, component) {\n\t\tvar cells = [],\n\t\trows = this.getRows(),\n\t\tcolumns = this.getColumns();\n\t\t\n\t\tif (structured) {\n\t\t\tcells = rows.map((row) => {\n\t\t\t\tvar arr = [];\n\t\t\t\t\n\t\t\t\trow.getCells().forEach((cell) => {\n\t\t\t\t\tif (columns.includes(cell.column)) {\n\t\t\t\t\t\tarr.push(component ? cell.getComponent() : cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn arr;\n\t\t\t});\n\t\t} else {\n\t\t\trows.forEach((row) => {\n\t\t\t\trow.getCells().forEach((cell) => {\n\t\t\t\t\tif (columns.includes(cell.column)) {\n\t\t\t\t\t\tcells.push(component ? cell.getComponent() : cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn cells;\n\t}\n\t\n\tgetStructuredCells() {\n\t\treturn this.getCells(true, true);\n\t}\n\t\n\tgetRows() {\n\t\treturn this._getTableRows().slice(this.top, this.bottom + 1);\n\t}\n\t\n\tgetColumns() {\n\t\treturn this._getTableColumns().slice(this.left, this.right + 1);\n\t}\n\t\n\tclearValues(){\n\t\tvar cells = this.getCells();\n\t\tvar clearValue = this.table.options.selectableRangeClearCellsValue;\n\t\t\n\t\tthis.table.blockRedraw();\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tcell.setValue(clearValue);\n\t\t});\n\t\t\n\t\tthis.table.restoreRedraw();\n\t\t\n\t}\n\t\n\tgetBounds(component){\n\t\tvar cells = this.getCells(false, component),\n\t\toutput = {\n\t\t\tstart:null,\n\t\t\tend:null,\n\t\t};\n\t\t\n\t\tif(cells.length){\n\t\t\toutput.start = cells[0];\n\t\t\toutput.end = cells[cells.length - 1];\n\t\t}else{\n\t\t\tconsole.warn(\"No bounds defined on range\");\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponent() {\n\t\tif (!this.component) {\n\t\t\tthis.component = new RangeComponent(this);\n\t\t}\n\t\treturn this.component;\n\t}\n\t\n\tdestroy(notify) {\n\t\tthis.destroyed = true;\n\t\t\n\t\tthis.element.remove();\n\t\t\n\t\tif(notify){\n\t\t\tthis.rangeManager.rangeRemoved(this);\n\t\t}\n\t\t\n\t\tif(this.initialized){\n\t\t\tthis.dispatchExternal(\"rangeRemoved\", this.getComponent());\n\t\t}\n\t}\n\t\n\tdestroyedGuard(func){\n\t\tif(this.destroyed){\n\t\t\tconsole.warn(\"You cannot call the \" + func + \" function on a destroyed range\");\n\t\t}\n\t\t\n\t\treturn !this.destroyed;\n\t}\n}\n\nexport default Range;\n","import Module from \"../../core/Module.js\";\nimport Range from \"./Range.js\";\n\nclass SelectRange extends Module {\n\tconstructor(table) {\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = \"cell\";\n\t\tthis.mousedown = false;\n\t\tthis.ranges = [];\n\t\tthis.overlay = null;\n\t\tthis.rowHeader = null;\n\t\tthis.layoutChangeTimeout = null;\n\t\tthis.columnSelection = false;\n\t\tthis.rowSelection = false;\n\t\tthis.maxRanges = 0;\n\t\tthis.activeRange = false;\n\t\tthis.blockKeydown = false;\n\t\t\n\t\tthis.keyDownEvent = this._handleKeyDown.bind(this);\n\t\tthis.mouseUpEvent = this._handleMouseUp.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"selectableRange\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeColumns\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeRows\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeClearCells\", false); //allow clearing of active range\n\t\tthis.registerTableOption(\"selectableRangeClearCellsValue\", undefined); //value for cleared active range\n\n\t\tthis.registerTableFunction(\"getRangesData\", this.getRangesData.bind(this));\n\t\tthis.registerTableFunction(\"getRanges\", this.getRanges.bind(this));\n\t\tthis.registerTableFunction(\"addRange\", this.addRangeFromComponent.bind(this));\n\n\t\tthis.registerComponentFunction(\"cell\", \"getRanges\", this.cellGetRanges.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getRanges\", this.rowGetRanges.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getRanges\", this.colGetRanges.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Initialization ///////\n\t///////////////////////////////////\n\t\n\tinitialize() {\n\t\tif (this.options(\"selectableRange\")) {\t\t\n\t\t\tif(!this.options(\"selectableRows\")){\n\t\t\t\t\n\t\t\t\tthis.maxRanges = this.options(\"selectableRange\");\n\t\t\t\t\n\t\t\t\tthis.initializeTable();\n\t\t\t\tthis.initializeWatchers();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"SelectRange functionality cannot be used in conjunction with row selection\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\tinitializeTable() {\t\t\n\t\tthis.overlay = document.createElement(\"div\");\n\t\tthis.overlay.classList.add(\"tabulator-range-overlay\");\n\t\t\n\t\tthis.rangeContainer = document.createElement(\"div\");\n\t\tthis.rangeContainer.classList.add(\"tabulator-range-container\");\n\t\t\n\t\tthis.activeRangeCellElement = document.createElement(\"div\");\n\t\tthis.activeRangeCellElement.classList.add(\"tabulator-range-cell-active\");\n\t\t\n\t\tthis.overlay.appendChild(this.rangeContainer);\n\t\tthis.overlay.appendChild(this.activeRangeCellElement);\n\t\t\n\t\tthis.table.rowManager.element.addEventListener(\"keydown\", this.keyDownEvent);\n\t\t\n\t\tthis.resetRanges();\n\t\t\n\t\tthis.table.rowManager.element.appendChild(this.overlay);\n\t\tthis.table.columnManager.element.setAttribute(\"tabindex\", 0);\n\t\tthis.table.element.classList.add(\"tabulator-ranges\");\n\t}\n\t\n\tinitializeWatchers() {\n\t\tthis.columnSelection = this.options(\"selectableRangeColumns\");\n\t\tthis.rowSelection = this.options(\"selectableRangeRows\");\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-mousedown\", this.handleColumnMouseDown.bind(this));\n\t\tthis.subscribe(\"column-mousemove\", this.handleColumnMouseMove.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.handleColumnResized.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"column-height\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"columns-loaded\", this.updateHeaderColumn.bind(this));\n\n\t\tthis.subscribe(\"cell-height\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.renderCell.bind(this));\n\t\tthis.subscribe(\"cell-mousedown\", this.handleCellMouseDown.bind(this));\n\t\tthis.subscribe(\"cell-mousemove\", this.handleCellMouseMove.bind(this));\n\t\tthis.subscribe(\"cell-click\", this.handleCellClick.bind(this));\n\t\tthis.subscribe(\"cell-editing\", this.handleEditingCell.bind(this));\n\t\t\n\t\tthis.subscribe(\"page-changed\", this.redraw.bind(this));\n\n\t\tthis.subscribe(\"scroll-vertical\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.layoutChange.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-destroy\", this.tableDestroyed.bind(this));\n\t\tthis.subscribe(\"data-processed\", this.resetRanges.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-layout\", this.layoutElement.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.redraw.bind(this));\n\t\tthis.subscribe(\"table-destroy\", this.tableDestroyed.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-editor-clear\", this.finishEditingCell.bind(this));\n\t\tthis.subscribe(\"edit-blur\", this.restoreFocus.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.keyNavigate.bind(this, \"left\"));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keyNavigate.bind(this, \"right\"));\n\t\tthis.subscribe(\"keybinding-nav-left\", this.keyNavigate.bind(this, \"left\"));\n\t\tthis.subscribe(\"keybinding-nav-right\", this.keyNavigate.bind(this, \"right\"));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.keyNavigate.bind(this, \"up\"));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.keyNavigate.bind(this, \"down\"));\n\t\tthis.subscribe(\"keybinding-nav-range\", this.keyNavigateRange.bind(this));\n\t}\n\t\n\t\n\tinitializeColumn(column) {\n\t\tif(this.columnSelection && column.definition.headerSort && this.options(\"headerSortClickElement\") !== \"icon\"){\n\t\t\tconsole.warn(\"Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'.\");\n\t\t}\n\t\t\n\t\tif (column.modules.edit) {\n\t\t\t// Block editor from taking action so we can trigger edit by\n\t\t\t// double clicking.\n\t\t\t// column.modules.edit.blocked = true;\n\t\t}\n\t}\n\t\n\tupdateHeaderColumn(){\n\t\tif(this.rowSelection){\n\t\t\tthis.rowHeader = this.table.columnManager.getVisibleColumnsByIndex()[0];\n\t\t\t\n\t\t\tif(this.rowHeader){\n\t\t\t\tthis.rowHeader.definition.cssClass = this.rowHeader.definition.cssClass + \" tabulator-range-row-header\";\n\t\t\t\t\n\t\t\t\tif(this.rowHeader.definition.headerSort){\n\t\t\t\t\tconsole.warn(\"Using column headerSort with selectableRangeRows option may result in unpredictable behavior\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.rowHeader.definition.editor){\n\t\t\t\t\tconsole.warn(\"Using column editor with selectableRangeRows option may result in unpredictable behavior\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Table Functions ///////\n\t///////////////////////////////////\n\t\n\tgetRanges(){\n\t\treturn this.ranges.map((range) => range.getComponent());\n\t}\n\t\n\tgetRangesData() {\n\t\treturn this.ranges.map((range) => range.getData());\n\t}\n\t\n\taddRangeFromComponent(start, end){\n\t\tstart = start ? start._cell : null;\n\t\tend = end ? end._cell : null;\n\t\t\n\t\treturn this.addRange(start, end);\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Component Functions ///////\n\t///////////////////////////////////\n\t\n\tcellGetRanges(cell){\n\t\tvar ranges = [];\n\t\t\n\t\tif (cell.column === this.rowHeader) {\n\t\t\tranges = this.ranges.filter((range) => range.occupiesRow(cell.row));\n\t\t} else {\n\t\t\tranges = this.ranges.filter((range) => range.occupies(cell));\n\t\t}\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\trowGetRanges(row){\n\t\tvar ranges = this.ranges.filter((range) => range.occupiesRow(row));\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\tcolGetRanges(col){\n\t\tvar ranges = this.ranges.filter((range) => range.occupiesColumn(col));\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Event Handlers /////////\n\t///////////////////////////////////\n\t\n\t_handleMouseUp(e){\n\t\tthis.mousedown = false;\n\t\tdocument.removeEventListener(\"mouseup\", this.mouseUpEvent);\n\t}\n\t\n\t_handleKeyDown(e) {\n\t\tif (!this.blockKeydown && (!this.table.modules.edit || (this.table.modules.edit && !this.table.modules.edit.currentCell))) {\n\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t// is editing a cell?\n\t\t\t\tif (this.table.modules.edit && this.table.modules.edit.currentCell) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.table.modules.edit.editCell(this.getActiveCell());\n\t\t\t\t\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\tif ((e.key === \"Backspace\" || e.key === \"Delete\") && this.options(\"selectableRangeClearCells\")) {\n\t\t\t\tif(this.activeRange){\n\t\t\t\t\tthis.activeRange.clearValues();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeFocus(cell){\n\t\tvar range;\n\t\t\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\t\n\trestoreFocus(element){\n\t\tthis.table.rowManager.element.focus();\n\t\t\n\t\treturn true;\n\t}\n\t\n\t///////////////////////////////////\n\t////// Column Functionality ///////\n\t///////////////////////////////////\n\t\n\thandleColumnResized(column) {\n\t\tvar selected;\n\t\t\n\t\tif (this.selecting !== \"column\" && this.selecting !== \"all\") {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tselected = this.ranges.some((range) => range.occupiesColumn(column));\n\t\t\n\t\tif (!selected) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.ranges.forEach((range) => {\n\t\t\tvar selectedColumns = range.getColumns(true);\n\t\t\t\n\t\t\tselectedColumns.forEach((selectedColumn) => {\n\t\t\t\tif (selectedColumn !== column) {\n\t\t\t\t\tselectedColumn.setWidth(column.width);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t\n\thandleColumnMouseDown(event, column) {\n\t\tif (event.button === 2 && (this.selecting === \"column\" || this.selecting === \"all\") && this.activeRange.occupiesColumn(column)) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.mousedown = true;\n\t\t\n\t\tdocument.addEventListener(\"mouseup\", this.mouseUpEvent);\n\t\t\n\t\tthis.newSelection(event, column);\n\t}\n\t\n\thandleColumnMouseMove(e, column) {\n\t\tif (column === this.rowHeader || !this.mousedown || this.selecting === 'all') {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRange.setBounds(false, column, true);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Cell Functionality ///////\n\t///////////////////////////////////\n\t\n\trenderCell(cell) {\n\t\tvar el = cell.getElement(),\n\t\trangeIdx = this.ranges.findIndex((range) => range.occupies(cell));\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", rangeIdx !== -1);\n\t\tel.classList.toggle(\"tabulator-range-only-cell-selected\", this.ranges.length === 1 && this.ranges[0].atTopLeft(cell) &&\tthis.ranges[0].atBottomRight(cell));\n\t\t\n\t\tel.dataset.range = rangeIdx;\n\t}\n\t\n\thandleCellMouseDown(event, cell) {\n\t\tif (event.button === 2 && (this.activeRange.occupies(cell) || ((this.selecting === \"row\" || this.selecting === \"all\") && this.activeRange.occupiesRow(cell.row)))) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.mousedown = true;\n\t\t\n\t\tdocument.addEventListener(\"mouseup\", this.mouseUpEvent);\n\t\t\n\t\tthis.newSelection(event, cell);\n\t}\n\t\n\thandleCellMouseMove(e, cell) {\n\t\tif (!this.mousedown || this.selecting === \"all\") {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRange.setBounds(false, cell, true);\n\t}\n\t\n\thandleCellClick(e, cell){\n\t\tthis.initializeFocus(cell);\n\t}\n\t\n\thandleEditingCell(cell) {\n\t\tif(this.activeRange){\n\t\t\tthis.activeRange.setBounds(cell);\n\t\t}\n\t}\n\t\n\tfinishEditingCell() {\n\t\tthis.blockKeydown = true;\n\t\tthis.table.rowManager.element.focus();\n\n\t\tsetTimeout(() => {\n\t\t\tthis.blockKeydown = false;\n\t\t}, 10);\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Navigation ///////\n\t///////////////////////////////////\n\t\n\tkeyNavigate(dir, e){\n\t\tif(this.navigate(false, false, dir)){\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\tkeyNavigateRange(e, dir, jump, expand){\n\t\tif(this.navigate(jump, expand, dir)){\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\tnavigate(jump, expand, dir) {\n\t\tvar moved = false,\n\t\trange, rangeEdge, nextRow, nextCol, row, column;\n\t\t\n\t\t// Don't navigate while editing\n\t\tif (this.table.modules.edit && this.table.modules.edit.currentCell) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// If there are more than 1 range, use the active range and destroy the others\n\t\tif (this.ranges.length > 1) {\n\t\t\tthis.ranges = this.ranges.filter((range) => {\n\t\t\t\tif (range === this.activeRange) {\n\t\t\t\t\trange.setEnd(range.start.row, range.start.col);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\trange.destroy();\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t\t\n\t\trange = this.activeRange;\n\t\t\n\t\trangeEdge = expand ? range.end : range.start;\n\t\tnextRow = rangeEdge.row;\n\t\tnextCol = rangeEdge.col;\n\t\t\n\t\tif(jump){\n\t\t\tswitch(dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnextCol = this.findJumpCellLeft(range.start.row, rangeEdge.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnextCol = this.findJumpCellRight(range.start.row, rangeEdge.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnextRow = this.findJumpCellUp(rangeEdge.row, range.start.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnextRow = this.findJumpCellDown(rangeEdge.row, range.start.col);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}else{\n\t\t\tif(expand){\n\t\t\t\tif ((this.selecting === 'row' && (dir === 'left' || dir === 'right')) || (this.selecting === 'column' && (dir === 'up' || dir === 'down'))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tswitch(dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnextCol = Math.max(nextCol - 1, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnextCol = Math.min(nextCol + 1, this.getTableColumns().length - 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnextRow = Math.max(nextRow - 1, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnextRow = Math.min(nextRow + 1, this.getTableRows().length - 1);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tmoved = nextCol !== rangeEdge.col || nextRow !== rangeEdge.row;\n\t\t\n\t\tif(!expand){\n\t\t\trange.setStart(nextRow, nextCol);\n\t\t}\n\t\t\n\t\trange.setEnd(nextRow, nextCol);\n\t\t\n\t\tif(!expand){\n\t\t\tthis.selecting = \"cell\";\n\t\t}\n\t\t\n\t\tif (moved) {\n\t\t\trow = this.getRowByRangePos(range.end.row);\n\t\t\tcolumn = this.getColumnByRangePos(range.end.col);\n\t\t\t\n\t\t\tif ((dir === 'left' || dir === 'right') && column.getElement().parentNode === null) {\n\t\t\t\tcolumn.getComponent().scrollTo(undefined, false);\n\t\t\t} else if ((dir === 'up' || dir === 'down') && row.getElement().parentNode === null) {\n\t\t\t\trow.getComponent().scrollTo(undefined, false);\n\t\t\t} else {\n\t\t\t\t// Use faster autoScroll when the elements are on the DOM\n\t\t\t\tthis.autoScroll(range, row.getElement(), column.getElement());\n\t\t\t}\n\t\t\t\n\t\t\tthis.layoutElement();\n\t\t\t\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\trangeRemoved(removed){\n\t\tthis.ranges = this.ranges.filter((range) => range !== removed);\n\t\t\n\t\tif(this.activeRange === removed){\n\t\t\tif(this.ranges.length){\n\t\t\t\tthis.activeRange = this.ranges[this.ranges.length - 1];\n\t\t\t}else{\n\t\t\t\tthis.addRange();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.layoutElement();\n\t}\n\t\n\tfindJumpCell(cells, reverse, emptyStart, emptySide){\n\t\tvar nextCell;\n\t\t\n\t\tif(reverse){\n\t\t\tcells = cells.reverse();\n\t\t}\n\t\t\n\t\tfor(let currentCell of cells){\n\t\t\tlet currentValue = currentCell.getValue();\n\t\t\t\n\t\t\tif(emptyStart){\n\t\t\t\tnextCell = currentCell;\n\t\t\t\tif(currentValue){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(emptySide){\n\t\t\t\t\tnextCell = currentCell;\n\t\t\t\t\t\n\t\t\t\t\tif(currentValue){\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(currentValue){\n\t\t\t\t\t\tnextCell = currentCell;\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\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindJumpCellLeft(rowPos, colPos){\n\t\tvar row = this.getRowByRangePos(rowPos),\n\t\tcells = row.cells.filter((cell) => cell.column.visible),\n\t\tisStartingCellEmpty = !cells[colPos].getValue(),\n\t\tisLeftOfStartingCellEmpty = cells[colPos] ? !cells[colPos].getValue() : false,\n\t\tjumpCol = colPos,\n\t\ttargetCells = this.rowHeader ? cells.slice(1, colPos) : cells.slice(0, colPos),\n\t\tnextCell = this.findJumpCell(targetCells, true, isStartingCellEmpty, isLeftOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpCol = nextCell.column.getPosition() - 1;\n\t\t}\n\t\t\n\t\treturn jumpCol;\n\t}\n\t\n\tfindJumpCellRight(rowPos, colPos){\n\t\tvar row = this.getRowByRangePos(rowPos),\n\t\tcells = row.cells.filter((cell) => cell.column.visible),\n\t\tisStartingCellEmpty = !cells[colPos].getValue(),\n\t\tisRightOfStartingCellEmpty = cells[colPos + 1] ? !cells[colPos + 1].getValue() : false,\n\t\tjumpCol = colPos,\n\t\tnextCell = this.findJumpCell(cells.slice(colPos + 1, cells.length), false, isStartingCellEmpty, isRightOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpCol = nextCell.column.getPosition() - 1;\n\t\t}\n\t\t\n\t\treturn jumpCol;\n\t}\n\t\n\tfindJumpCellUp(rowPos, colPos) {\n\t\tvar column = this.getColumnByRangePos(colPos),\n\t\tcells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)),\n\t\tisStartingCellEmpty = !cells[rowPos].getValue(),\n\t\tisTopOfStartingCellEmpty = cells[rowPos - 1] ? !cells[rowPos - 1].getValue() : false,\n\t\tjumpRow = rowPos,\n\t\tnextCell = this.findJumpCell(cells.slice(0, jumpRow), true, isStartingCellEmpty, isTopOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpRow = nextCell.row.position - 1;\n\t\t}\n\t\t\n\t\treturn jumpRow;\n\t}\n\t\n\tfindJumpCellDown(rowPos, colPos) {\n\t\tvar column = this.getColumnByRangePos(colPos),\n\t\tcells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)),\n\t\tisStartingCellEmpty = !cells[rowPos].getValue(),\n\t\tisBottomOfStartingCellEmpty = cells[rowPos + 1] ? !cells[rowPos + 1].getValue() : false,\n\t\tjumpRow = rowPos,\n\t\tnextCell = this.findJumpCell(cells.slice(jumpRow + 1, cells.length), false, isStartingCellEmpty, isBottomOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpRow = nextCell.row.position - 1;\n\t\t}\n\t\t\n\t\treturn jumpRow;\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Selection ///////\n\t///////////////////////////////////\n\tnewSelection(event, element) {\n\t\tvar range;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(!this.columnSelection){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif (element === this.rowHeader) {\n\t\t\t\trange = this.resetRanges();\n\t\t\t\tthis.selecting = \"all\";\n\t\t\t\t\n\t\t\t\tvar topLeftCell, bottomRightCell = this.getCell(-1, -1);\n\n\t\t\t\tif(this.rowHeader){\n\t\t\t\t\ttopLeftCell = this.getCell(0, 1);\n\t\t\t\t}else{\n\t\t\t\t\ttopLeftCell = this.getCell(0, 0);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trange.setBounds(topLeftCell, bottomRightCell);\t\t\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tthis.selecting = \"column\";\n\t\t\t}\n\t\t} else if (element.column === this.rowHeader) {\n\t\t\tthis.selecting = \"row\";\n\t\t} else {\n\t\t\tthis.selecting = \"cell\";\n\t\t}\n\t\t\n\t\tif (event.shiftKey) {\n\t\t\tthis.activeRange.setBounds(false, element);\n\t\t} else if (event.ctrlKey) {\n\t\t\tthis.addRange().setBounds(element);\n\t\t} else {\n\t\t\tthis.resetRanges().setBounds(element);\n\t\t}\n\t}\n\t\n\tautoScroll(range, row, column) {\n\t\tvar tableHolder = this.table.rowManager.element,\n\t\trowHeader, rect, view, withinHorizontalView, withinVerticalView;\n\n\t\tif (typeof row === 'undefined') {\n\t\t\trow = this.getRowByRangePos(range.end.row).getElement();\n\t\t}\n\t\t\n\t\tif (typeof column === 'undefined') {\n\t\t\tcolumn = this.getColumnByRangePos(range.end.col).getElement();\n\t\t}\n\n\t\tif (this.rowHeader) {\n\t\t\trowHeader = this.rowHeader.getElement();\n\t\t}\n\t\t\n\t\trect = {\n\t\t\tleft: column.offsetLeft,\n\t\t\tright: column.offsetLeft + column.offsetWidth,\n\t\t\ttop: row.offsetTop,\n\t\t\tbottom: row.offsetTop + row.offsetHeight,\n\t\t};\n\t\t\n\t\tview = {\n\t\t\tleft: tableHolder.scrollLeft,\n\t\t\tright: Math.ceil(tableHolder.scrollLeft + tableHolder.clientWidth),\n\t\t\ttop: tableHolder.scrollTop,\n\t\t\tbottom:\ttableHolder.scrollTop +\ttableHolder.offsetHeight - this.table.rowManager.scrollbarWidth,\n\t\t};\n\n\t\tif (rowHeader) {\n\t\t\tview.left += rowHeader.offsetWidth;\n\t\t}\n\t\t\n\t\twithinHorizontalView = view.left < rect.left &&\trect.left < view.right && view.left < rect.right &&\trect.right < view.right;\n\t\t\n\t\twithinVerticalView = view.top < rect.top &&\trect.top < view.bottom && view.top < rect.bottom &&\trect.bottom < view.bottom;\n\t\t\n\t\tif (!withinHorizontalView) {\n\t\t\tif (rect.left < view.left) {\n\t\t\t\ttableHolder.scrollLeft = rect.left;\n\t\t\t\tif (rowHeader) {\n\t\t\t\t\ttableHolder.scrollLeft -= rowHeader.offsetWidth;\n\t\t\t\t}\n\t\t\t} else if (rect.right > view.right) {\n\t\t\t\ttableHolder.scrollLeft = rect.right - tableHolder.clientWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (!withinVerticalView) {\n\t\t\tif (rect.top < view.top) {\n\t\t\t\ttableHolder.scrollTop = rect.top;\n\t\t\t} else if (rect.bottom > view.bottom) {\n\t\t\t\ttableHolder.scrollTop = rect.bottom - tableHolder.clientHeight;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t/////// Layout ///////\n\t///////////////////////////////////\n\t\n\tlayoutChange(){\n\t\tthis.overlay.style.visibility = \"hidden\";\n\t\tclearTimeout(this.layoutChangeTimeout);\n\t\tthis.layoutChangeTimeout = setTimeout(this.layoutRanges.bind(this), 200);\n\t}\n\t\n\tredraw(force) {\n\t\tif (force) {\n\t\t\tthis.selecting = 'cell';\n\t\t\tthis.resetRanges();\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\t\n\tlayoutElement(visibleRows) {\n\t\tvar rows;\n\t\t\n\t\tif (visibleRows) {\n\t\t\trows = this.table.rowManager.getVisibleRows(true);\n\t\t} else {\n\t\t\trows = this.table.rowManager.getRows();\n\t\t}\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\") {\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\trow.cells.forEach((cell) => this.renderCell(cell));\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.getTableColumns().forEach((column) => {\n\t\t\tthis.layoutColumn(column);\n\t\t});\n\t\t\n\t\tthis.layoutRanges();\n\t}\n\t\n\tlayoutRow(row) {\n\t\tvar el = row.getElement(),\n\t\tselected = false,\n\t\toccupied = this.ranges.some((range) => range.occupiesRow(row));\n\t\t\n\t\tif (this.selecting === \"row\") {\n\t\t\tselected = occupied;\n\t\t} else if (this.selecting === \"all\") {\n\t\t\tselected = true;\n\t\t}\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", selected);\n\t\tel.classList.toggle(\"tabulator-range-highlight\", occupied);\n\t}\n\t\n\tlayoutColumn(column) {\n\t\tvar el = column.getElement(),\t\t\n\t\tselected = false,\n\t\toccupied = this.ranges.some((range) => range.occupiesColumn(column));\n\t\t\n\t\tif (this.selecting === \"column\") {\n\t\t\tselected = occupied;\n\t\t} else if (this.selecting === \"all\") {\n\t\t\tselected = true;\n\t\t}\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", selected);\n\t\tel.classList.toggle(\"tabulator-range-highlight\", occupied);\n\t}\n\t\n\tlayoutRanges() {\n\t\tvar activeCell;\n\t\t\n\t\tif (!this.table.initialized) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tactiveCell = this.getActiveCell();\n\t\t\n\t\tif (!activeCell) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRangeCellElement.style.left = activeCell.row.getElement().offsetLeft + activeCell.getElement().offsetLeft + \"px\";\n\t\tthis.activeRangeCellElement.style.top =\tactiveCell.row.getElement().offsetTop + \"px\";\n\t\tthis.activeRangeCellElement.style.width = activeCell.getElement().offsetLeft + activeCell.getElement().offsetWidth - activeCell.getElement().offsetLeft + \"px\";\n\t\tthis.activeRangeCellElement.style.height = activeCell.row.getElement().offsetTop + activeCell.row.getElement().offsetHeight - activeCell.row.getElement().offsetTop + \"px\";\n\t\t\n\t\tthis.ranges.forEach((range) => range.layout());\n\t\t\n\t\tthis.overlay.style.visibility = \"visible\";\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t/////// Helper Functions ///////\n\t///////////////////////////////////\t\n\t\n\tgetCell(rowIdx, colIdx) {\n\t\tvar row;\n\t\t\n\t\tif (colIdx < 0) {\n\t\t\tcolIdx = this.getTableColumns().length + colIdx;\n\t\t\tif (colIdx < 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (rowIdx < 0) {\n\t\t\trowIdx = this.getTableRows().length + rowIdx;\n\t\t}\n\t\t\n\t\trow = this.table.rowManager.getRowFromPosition(rowIdx + 1);\n\t\t\n\t\treturn row ? row.getCells(false, true).filter((cell) => cell.column.visible)[colIdx] : null;\n\t}\n\t\n\t\n\tgetActiveCell() {\n\t\treturn this.getCell(this.activeRange.start.row, this.activeRange.start.col);\n\t}\n\t\n\tgetRowByRangePos(pos) {\n\t\treturn this.getTableRows()[pos];\n\t}\n\t\n\tgetColumnByRangePos(pos) {\n\t\treturn this.getTableColumns()[pos];\n\t}\n\t\n\tgetTableRows() {\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\t\n\tgetTableColumns() {\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex();\n\t}\n\t\n\taddRange(start, end) {\n\t\tvar range;\n\t\t\n\t\tif(this.maxRanges !== true && this.ranges.length >= this.maxRanges){\n\t\t\tthis.ranges.shift().destroy();\n\t\t}\n\t\t\n\t\trange = new Range(this.table, this, start, end);\n\t\t\n\t\tthis.activeRange = range;\n\t\tthis.ranges.push(range);\n\t\tthis.rangeContainer.appendChild(range.element);\n\t\t\n\t\treturn range;\n\t}\n\t\n\tresetRanges() {\n\t\tvar range, cell;\n\t\t\n\t\tthis.ranges.forEach((range) => range.destroy());\n\t\tthis.ranges = [];\n\t\t\n\t\trange = this.addRange();\n\t\t\n\t\tif(this.table.rowManager.activeRows.length){\n\t\t\tcell = this.table.rowManager.activeRows[0].cells[this.rowHeader ? 1 : 0];\n\n\t\t\tif(cell){\n\t\t\t\trange.setBounds(cell);\n\t\t\t\tthis.initializeFocus(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn range;\n\t}\n\t\n\ttableDestroyed(){\n\t\tdocument.removeEventListener(\"mouseup\", this.mouseUpEvent);\n\t\tthis.table.rowManager.element.removeEventListener(\"keydown\", this.keyDownEvent);\n\t}\n\t\n\tselectedRows(component) {\n\t\treturn component ? this.activeRange.getRows().map((row) => row.getComponent()) : this.activeRange.getRows();\n\t}\n\t\n\tselectedColumns(component) {\n\t\treturn component ? this.activeRange.getColumns().map((col) => col.getComponent()) : this.activeRange.getColumns();\n\t}\n}\n\nSelectRange.moduleName = \"selectRange\";\n\nexport default SelectRange;\n","import Module from '../../core/Module.js';\nimport Cell from '../../core/cell/Cell.js';\n\nclass Tooltip extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.tooltipSubscriber = null,\n\t\tthis.headerSubscriber = null,\n\t\t\n\t\tthis.timeout = null;\n\t\tthis.popupInstance = null;\n\t\t\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \n\t\t\n\t\tthis.registerColumnOption(\"tooltip\");\n\t\tthis.registerColumnOption(\"headerTooltip\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheckMsg(\"tooltipGenerationMode\", \"This option is no longer needed as tooltips are always generated on hover now\");\n\t}\t\n\t\n\tinitializeColumn(column){\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\n\t\t\tthis.headerSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\n\t\t}\n\t\t\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\n\t\t\tthis.tooltipSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\n\t\t}\n\t}\n\t\n\tmousemoveCheck(action, e, component){\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\n\t\t\n\t\tif(tooltip){\n\t\t\tthis.clearPopup();\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\n\t\t}\n\t}\n\n\tmouseoutCheck(action, e, component){\n\t\tif(!this.popupInstance){\n\t\t\tthis.clearPopup();\n\t\t}\n\t}\n\t\n\tclearPopup(action, e, component){\n\t\tclearTimeout(this.timeout);\n\t\tthis.timeout = null;\n\t\t\n\t\tif(this.popupInstance){\n\t\t\tthis.popupInstance.hide();\n\t\t}\n\t}\n\t\n\tloadTooltip(e, component, tooltip){\n\t\tvar contentsEl, renderedCallback, coords;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(typeof tooltip === \"function\"){\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\n\t\t}\n\t\t\n\t\tif(tooltip instanceof HTMLElement){\n\t\t\tcontentsEl = tooltip;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\t\n\t\t\tif(tooltip === true){\n\t\t\t\tif(component instanceof Cell){\n\t\t\t\t\ttooltip = component.value;\n\t\t\t\t}else{\n\t\t\t\t\tif(component.definition.field){\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\ttooltip = component.definition.title;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcontentsEl.innerHTML = tooltip;\n\t\t}\n\t\t\n\t\tif(tooltip || tooltip === 0 || tooltip === false){\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\n\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault());\n\t\t\t\n\t\t\tthis.popupInstance = this.popup(contentsEl);\n\t\t\t\n\t\t\tif(typeof renderedCallback === \"function\"){\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\n\t\t\t}\n\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\n\t\t\t\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\n\t\t\t\tthis.popupInstance = null;\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nTooltip.moduleName = \"tooltip\";\n\nexport default Tooltip;\n","export default {\n\t//is integer\n\tinteger: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function(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(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 alphanumeric\n\talphanumeric: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar reg = new RegExp(/^[a-z0-9]+$/i);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//maximum value\n\tmax: function(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(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(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(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\n\t//minimum string length\n\tminLength: function(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(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(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typeof parameters == \"string\"){\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function(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(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(cell, value, parameters){\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultValidators from './defaults/validators.js';\n\nclass Validate extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.invalidCells = [];\n\t\t\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\n\t\t\n\t\tthis.registerColumnOption(\"validator\");\n\t\t\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\n\t}\n\t\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Event Handling //////////\n\t///////////////////////////////////\n\t\n\teditValidate(cell, value, previousValue){\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\n\t\t\n\t\t// allow time for editor to make render changes then style cell\n\t\tif(valid !== true){\n\t\t\tsetTimeout(() => {\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn valid;\n\t}\n\t\n\teditorClear(cell, cancelled){\n\t\tif(cancelled){\n\t\t\tif(cell.column.modules.validate){\n\t\t\t\tthis.cellValidate(cell);\n\t\t\t}\n\t\t}\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t}\n\t\n\teditedClear(cell){\n\t\tif(cell.modules.validate){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Cell Functions /////////\n\t///////////////////////////////////\n\t\n\tcellIsValid(cell){\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\n\t}\n\t\n\tcellValidate(cell){\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Column Functions ////////\n\t///////////////////////////////////\n\t\n\tcolumnValidate(column){\n\t\tvar invalid = [];\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Row Functions //////////\n\t///////////////////////////////////\n\t\n\trowValidate(row){\n\t\tvar invalid = [];\n\t\t\n\t\trow.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\tuserClearCellValidation(cells){\n\t\tif(!cells){\n\t\t\tcells = this.getInvalidCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.clearValidation(cell._getSelf());\n\t\t});\n\t}\n\t\n\tuserValidate(cells){\n\t\tvar output = [];\n\t\t\n\t\t//clear row data\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trow = row.getComponent();\n\t\t\t\n\t\t\tvar valid = row.validate();\n\t\t\t\n\t\t\tif(valid !== true){\n\t\t\t\toutput = output.concat(valid);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output.length ? output : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.validator !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//validate\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = [],\n\t\tvalidator;\n\t\t\n\t\tif(column.definition.validator){\n\t\t\t\n\t\t\tif(Array.isArray(column.definition.validator)){\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\t\t\t\t\t\n\t\t\t\t\tif(validator){\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\t\t\t\t\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\t\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t}\n\t\n\t_extractValidator(value){\n\t\tvar type, params, pos;\n\t\t\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tpos = value.indexOf(':');\n\t\t\t\n\t\t\t\tif(pos > -1){\n\t\t\t\t\ttype = value.substring(0,pos);\n\t\t\t\t\tparams = value.substring(pos+1);\n\t\t\t\t}else{\n\t\t\t\t\ttype = value;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t}\n\t}\n\t\n\t_buildValidator(type, params){\n\t\t\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\n\t\t\n\t\tif(!func){\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn {\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc:func,\n\t\t\t\tparams:params,\n\t\t\t};\n\t\t}\n\t}\n\t\n\tvalidate(validators, cell, value){\n\t\tvar self = this,\n\t\tfailedValidators = [],\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\n\t\tif(validators){\n\t\t\tvalidators.forEach((item) => {\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\n\t\t\t\t\tfailedValidators.push({\n\t\t\t\t\t\ttype:item.type,\n\t\t\t\t\t\tparameters:item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(!cell.modules.validate){\n\t\t\tcell.modules.validate = {};\n\t\t}\n\t\t\n\t\tif(!failedValidators.length){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}else{\n\t\t\tcell.modules.validate.invalid = failedValidators;\n\t\t\t\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t}\n\t\t\t\n\t\t\tif(invalidIndex == -1){\n\t\t\t\tthis.invalidCells.push(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn failedValidators.length ? failedValidators : true;\n\t}\n\t\n\tgetInvalidCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.invalidCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearValidation(cell){\n\t\tvar invalidIndex;\n\t\t\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\n\t\t\t\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\t\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nValidate.moduleName = \"validate\";\n\n//load defaults\nValidate.validators = defaultValidators;\n\nexport default Validate;\n","export default {\n\n\tdebugEventsExternal:false, //flag to console log events\n\tdebugEventsInternal:false, //flag to console log events\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\n\tdebugInvalidComponentFuncs:true, //allow toggling of invalid component warnings\n\tdebugInitialization:true, //allow toggling of pre initialization function call warnings\n\tdebugDeprecation:true, //allow toggling of deprecation warnings\n\n\theight:false, //height of tabulator\n\tminHeight:false, //minimum height of tabulator\n\tmaxHeight:false, //maximum height of tabulator\n\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\n\n\tpopupContainer:false,\n\n\tcolumns:[],//store for colum header info\n\tcolumnDefaults:{}, //store column default props\n\n\tdata:false, //default starting data\n\n\tautoColumns:false, //build columns from data row structure\n\tautoColumnsDefinitions:false,\n\n\tnestedFieldSeparator:\".\", //separator for nested data\n\n\tfooterElement:false, //hold footer element\n\n\tindex:\"id\", //filed for row index\n\n\ttextDirection:\"auto\",\n\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\n\n\theaderVisible:true, //hide header\n\n\trenderVertical:\"virtual\",\n\trenderHorizontal:\"basic\",\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\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\trowHeight:null,\n\n\tplaceholder:false,\n\n\tdataLoader:true,\n\tdataLoaderLoading:false,\n\tdataLoaderError:false,\n\tdataLoaderErrorTimeout:3000,\n\n\tdataSendParams:{},\n\n\tdataReceiveParams:{},\n};\n","export default class OptionsList {\n\tconstructor(table, msgType, defaults = {}){\n\t\tthis.table = table;\n\t\tthis.msgType = msgType;\n\t\tthis.registeredDefaults = Object.assign({}, defaults);\n\t}\n\t\n\tregister(option, value){\n\t\tthis.registeredDefaults[option] = value;\n\t}\n\t\n\tgenerate(defaultOptions, userOptions = {}){\n\t\tvar output = Object.assign({}, this.registeredDefaults),\n\t\twarn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true;\n\t\t\n\t\tObject.assign(output, defaultOptions);\n\t\t\n\t\tfor (let key in userOptions){\n\t\t\tif(!output.hasOwnProperty(key)){\n\t\t\t\tif(warn){\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key);\n\t\t\t\t}\n\n\t\t\t\toutput[key] = userOptions.key;\n\t\t\t}\n\t\t}\n\t\n\t\t\n\t\tfor (let key in output){\n\t\t\tif(key in userOptions){\n\t\t\t\toutput[key] = userOptions[key];\n\t\t\t}else{\n\t\t\t\tif(Array.isArray(output[key])){\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\n\t\t\t\t\tdelete output[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Renderer extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.elementVertical = table.rowManager.element;\n\t\tthis.elementHorizontal = table.columnManager.element;\n\t\tthis.tableElement = table.rowManager.tableElement;\n\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determine how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the container without resizing it)\n\t}\n\n\n\t///////////////////////////////////\n\t/////// Internal Bindings /////////\n\t///////////////////////////////////\n\n\tinitialize(){\n\t\t//initialize core functionality\n\t}\n\n\tclearRows(){\n\t\t//clear down existing rows layout\n\t}\n\n\tclearColumns(){\n\t\t//clear down existing columns layout\n\t}\n\n\n\treinitializeColumnWidths(columns){\n\t\t//resize columns to fit data\n\t}\n\n\n\trenderRows(){\n\t\t//render rows from a clean slate\n\t}\n\n\trenderColumns(){\n\t\t//render columns from a clean slate\n\t}\n\n\trerenderRows(callback){\n\t\t// rerender rows and keep position\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t}\n\n\trerenderColumns(update, blockRedraw){\n\t\t//rerender columns\n\t}\n\n\trenderRowCells(row){\n\t\t//render the cells in a row\n\t}\n\n\trerenderRowCells(row, force){\n\t\t//rerender the cells in a row\n\t}\n\n\tscrollColumns(left, dir){\n\t\t//handle horizontal scrolling\n\t}\n\n\tscrollRows(top, dir){\n\t\t//handle vertical scrolling\n\t}\n\n\tresize(){\n\t\t//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\n\t}\n\n\tscrollToRow(row){\n\t\t//scroll to a specific row\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\t//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\t//return the visible rows\n\t\treturn [];\n\t}\n\n\t///////////////////////////////////\n\t//////// Helper Functions /////////\n\t///////////////////////////////////\n\n\trows(){\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t/////// External Triggers /////////\n\t/////// (DO NOT OVERRIDE) /////////\n\t///////////////////////////////////\n\n\tclear(){\n\t\t//clear down existing layout\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t}\n\n\trender(){\n\t\t//render from a clean slate\n\t\tthis.renderRows();\n\t\tthis.renderColumns();\n\t}\n\n\trerender(callback){\n\t\t// rerender and keep position\n\t\tthis.rerenderRows();\n\t\tthis.rerenderColumns();\n\t}\n\n\tscrollToRowPosition(row, position, ifVisible){\n\t\tvar rowIndex = this.rows().indexOf(row),\n\t\trowEl = row.getElement(),\n\t\toffset = 0;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(rowIndex > -1){\n\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif(position === \"nearest\"){\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\";\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\t\t\t\tthis.scrollToRow(row);\n\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"top\":\n\t\t\t\t\t\tthis.elementVertical.scrollTop = rowEl.offsetTop;\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class BasicHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\trenderRowCells(row, inFragment) {\n\t\tconst rowFrag = document.createDocumentFragment();\n\t\trow.cells.forEach((cell) => {\n\t\t\trowFrag.appendChild(cell.getElement());\n\t\t});\n\t\trow.element.appendChild(rowFrag);\n\t\t\n\t\tif(!inFragment){\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tcolumns.forEach(function(column){\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class VirtualDomHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftCol = 0;\n\t\tthis.rightCol = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\t\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t\t\n\t\tthis.fitDataColAvg = 0;\n\t\t\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\n\t\t\n\t\tthis.visibleRows = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.isFitData = false;\n\t\t\n\t\tthis.columns = [];\n\t}\n\t\n\tinitialize(){\n\t\tthis.compatibilityCheck();\n\t\tthis.layoutCheck();\n\t\tthis.vertScrollListen();\n\t}\n\t\n\tcompatibilityCheck(){\t\t\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\n\t\t}\n\t\t\n\t\tif(this.options(\"responsiveLayout\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\n\t\t}\n\t\t\n\t\tif(this.options(\"rtl\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\n\t\t}\n\t}\n\t\n\tlayoutCheck(){\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\n\t}\n\t\n\tvertScrollListen(){\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\n\t}\n\t\n\tclearVisRowCache(){\n\t\tthis.visibleRows = null;\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\t\n\trenderColumns(row, force){\n\t\tthis.dataChange();\n\t}\n\t\n\t\n\tscrollColumns(left, dir){\n\t\tif(this.scrollLeft != left){\n\t\t\tthis.scrollLeft = left;\n\t\t\t\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\n\t\t}\n\t}\n\t\n\tcalcWindowBuffer(){\n\t\tvar buffer = this.elementVertical.clientWidth;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\tvar width = column.getWidth();\n\t\t\t\t\n\t\t\t\tif(width > buffer){\n\t\t\t\t\tbuffer = width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.windowBuffer = buffer * 2;\n\t}\n\t\n\trerenderColumns(update, blockRedraw){\t\t\n\t\tvar old = {\n\t\t\tcols:this.columns,\n\t\t\tleftCol:this.leftCol,\n\t\t\trightCol:this.rightCol,\n\t\t},\n\t\tcolPos = 0;\n\t\t\n\t\tif(update && !this.initialized){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.clear();\n\t\t\n\t\tthis.calcWindowBuffer();\n\t\t\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\n\t\t\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tvar config = {},\n\t\t\twidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tif(!column.modules.frozen){\t\t\t\n\t\t\t\t\twidth = column.getWidth();\n\n\t\t\t\t\tconfig.leftPos = colPos;\n\t\t\t\t\tconfig.rightPos = colPos + width;\n\t\t\t\t\t\n\t\t\t\t\tconfig.width = width;\n\t\t\t\t\t\n\t\t\t\t\tif (this.isFitData) {\n\t\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\n\t\t\t\t\t\t//column is visible\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.leftCol == -1){\n\t\t\t\t\t\t\tthis.leftCol = this.columns.length;\n\t\t\t\t\t\t\tthis.vDomPadLeft = colPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.rightCol = this.columns.length;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// column is hidden\n\t\t\t\t\t\tif(this.leftCol !== -1){\n\t\t\t\t\t\t\tthis.vDomPadRight += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.columns.push(column);\n\t\t\t\t\t\n\t\t\t\t\tcolumn.modules.vdomHoz = config;\n\t\t\t\t\t\n\t\t\t\t\tcolPos += width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tif(!update || this.reinitChanged(old)){\n\t\t\t\tthis.reinitializeRows();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\n\t}\n\t\n\trenderRowCells(row){\n\t\tif(this.initialized){\n\t\t\tthis.initializeRow(row);\n\t\t}else{\n\t\t\tconst rowFrag = document.createDocumentFragment();\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\trowFrag.appendChild(cell.getElement());\n\t\t\t});\n\t\t\trow.element.appendChild(rowFrag);\n\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\trerenderRowCells(row, force){\n\t\tthis.reinitializeRow(row, force);\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\tthis.columns[i].reinitializeWidth();\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\t\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tclear(){\n\t\tthis.columns = [];\n\t\t\n\t\tthis.leftCol = -1;\n\t\tthis.rightCol = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t}\n\t\n\tdataChange(){\n\t\tvar change = false,\n\t\trow, rowEl;\n\t\t\n\t\tif(this.isFitData){\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif(!column.definition.width && column.visible){\n\t\t\t\t\tchange = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\t\t\n\t\t\t\trow = this.chain(\"rows-sample\", [1], [], () => {\n\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\n\t\t\t\t})[0];\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trowEl = row.getElement();\n\t\t\t\t\t\n\t\t\t\t\trow.generateCells();\n\t\t\t\t\t\n\t\t\t\t\tthis.tableElement.appendChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tfor(let colEnd = 0; colEnd < row.cells.length; colEnd++){\n\t\t\t\t\t\tlet cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\t\t\t\t\t\t\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\n\t\t\t\tthis.layoutRefresh();\n\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treinitChanged(old){\n\t\tvar match = true;\n\t\t\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\told.cols.forEach((col, i) => {\n\t\t\tif(col !== this.columns[i]){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn !match;\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.getVisibleRows(),\n\t\totherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\n\t\tvisibleRows.forEach((row) => {\n\t\t\tthis.reinitializeRow(row, true);\n\t\t});\n\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t}\n\t\n\tgetVisibleRows(){\n\t\tif (!this.visibleRows){\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\n\t\t}\n\t\t\n\t\treturn this.visibleRows;\t\n\t}\n\t\n\tscroll(diff){\n\t\tthis.vDomScrollPosLeft += diff;\n\t\tthis.vDomScrollPosRight += diff;\n\t\t\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\n\t\t\tthis.rerenderColumns();\n\t\t}else{\n\t\t\tif(diff > 0){\n\t\t\t\t//scroll right\n\t\t\t\tthis.addColRight();\n\t\t\t\tthis.removeColLeft();\n\t\t\t}else{\n\t\t\t\t//scroll left\n\t\t\t\tthis.addColLeft();\n\t\t\t\tthis.removeColRight();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcolPositionAdjust (start, end, diff){\n\t\tfor(let i = start; i < end; i++){\n\t\t\tlet column = this.columns[i];\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\n\t\t}\n\t}\n\t\n\taddColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\n\t\t\tlet column = this.columns[this.rightCol + 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);\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\t\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\n\t\t\t\t\t\tthis.vDomPadRight = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\taddColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol - 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());\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\t\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tif(diff){\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\n\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.rightCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message);\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\t\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\n\t\t\t\t\tthis.rightCol --;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message);\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\t\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\n\t\t\t\t\tthis.leftCol ++;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tfitDataColActualWidthCheck(column){\n\t\tvar newWidth, widthDiff;\n\t\t\n\t\tif(column.modules.vdomHoz.fitDataCheck){\n\t\t\tcolumn.reinitializeWidth();\n\t\t\t\n\t\t\tnewWidth = column.getWidth();\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\n\t\t\t\n\t\t\tif(widthDiff){\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\n\t\t}\n\t\t\n\t\treturn widthDiff;\n\t}\n\t\n\tinitializeRow(row){\n\t\tif(row.type !== \"group\"){\n\t\t\trow.modules.vdomHoz = {\n\t\t\t\tleftCol:this.leftCol,\n\t\t\t\trightCol:this.rightCol,\n\t\t\t};\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\t\tthis.appendCell(row, this.columns[i]);\n\t\t\t}\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tappendCell(row, column){\n\t\tif(column && column.visible){\n\t\t\tlet cell = row.getCell(column);\n\t\t\t\n\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\tcell.cellRendered();\n\t\t}\n\t}\n\t\n\treinitializeRow(row, force){\n\t\tif(row.type !== \"group\"){\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\n\t\t\t\t\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\n\n\t\t\t\tthis.initializeRow(row);\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Column from './column/Column.js';\nimport ColumnComponent from './column/ColumnComponent.js';\nimport Helpers from './tools/Helpers.js';\nimport OptionsList from './tools/OptionsList.js';\n\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\n\nimport defaultColumnOptions from './column/defaults/options.js';\n\nexport default class ColumnManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.blockHozScrollEvent = false;\n\t\tthis.headersElement = null;\n\t\tthis.contentsElement = null;\n\t\tthis.element = null ; //containing element\n\t\tthis.columns = []; // column definition object\n\t\tthis.columnsByIndex = []; //columns by index\n\t\tthis.columnsByField = {}; //columns by field\n\t\tthis.scrollLeft = 0;\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockUpdate = null; //store latest redraw update only status\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t////////////// Setup Functions /////////////////\n\t\n\tinitialize(){\n\t\tthis.initializeRenderer();\n\t\t\n\t\tthis.headersElement = this.createHeadersElement();\n\t\tthis.contentsElement = this.createHeaderContentsElement();\n\t\tthis.element = this.createHeaderElement();\n\t\t\n\t\tthis.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);\n\t\tthis.element.insertBefore(this.contentsElement, this.element.firstChild);\n\n\t\tthis.initializeScrollWheelWatcher();\n\t\t\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.padVerticalScrollbar.bind(this));\n\t}\n\n\tpadVerticalScrollbar(width){\n\t\tif(this.table.rtl){\n\t\t\tthis.headersElement.style.marginLeft = width + \"px\";\n\t\t}else{\n\t\t\tthis.headersElement.style.marginRight = width + \"px\";\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\n\t\t\t\"basic\": RendererBasicHorizontal,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderHorizontal;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderHorizontal);\n\t\t}\n\t}\n\t\n\t\n\tcreateHeadersElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-headers\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\treturn el;\n\t}\n\n\tcreateHeaderContentsElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header-contents\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateHeaderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tif(!this.table.options.headerVisible){\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\t\t\n\t\treturn el;\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return containing contents element\n\tgetContentsElement(){\n\t\treturn this.contentsElement;\n\t}\n\t\n\t\n\t//return header containing element\n\tgetHeadersElement(){\n\t\treturn this.headersElement;\n\t}\n\t\n\t//scroll horizontally to match table body\n\tscrollHorizontal(left){\n\t\tthis.contentsElement.scrollLeft = left;\n\n\t\tthis.scrollLeft = left;\n\t\t\n\t\tthis.renderer.scrollColumns(left);\n\t}\n\n\tinitializeScrollWheelWatcher(){\n\t\tthis.contentsElement.addEventListener(\"wheel\", (e) => {\n\t\t\tvar left;\n\n\t\t\tif(e.deltaX){\n\t\t\t\tleft = this.contentsElement.scrollLeft + e.deltaX;\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t///////////// Column Setup Functions /////////////\n\tgenerateColumnsFromRowData(data){\n\t\tvar cols = [],\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\n\t\trow, sorter;\n\t\t\n\t\tif(data && data.length){\n\t\t\t\n\t\t\trow = data[0];\n\t\t\t\n\t\t\tfor(var key in row){\n\t\t\t\tlet col = {\n\t\t\t\t\tfield:key,\n\t\t\t\t\ttitle:key,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tlet value = row[key];\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(value)){\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcol.sorter = sorter;\n\t\t\t\t\n\t\t\t\tcols.push(col);\n\t\t\t}\n\t\t\t\n\t\t\tif(definitions){\n\t\t\t\t\n\t\t\t\tswitch(typeof definitions){\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(definitions)){\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tvar match = definitions.find((def) => {\n\t\t\t\t\t\t\t\t\treturn def.field === col.field;\n\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\tif(match){\n\t\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tif(definitions[col.field]){\n\t\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.table.options.columns = cols;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.table.options.columns = cols;\n\t\t\t}\n\t\t\t\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t}\n\t\n\tsetColumns(cols, row){\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\n\t\t\n\t\tthis.columns = [];\n\t\tthis.columnsByIndex = [];\n\t\tthis.columnsByField = {};\n\t\t\n\t\tthis.dispatch(\"columns-loading\");\n\t\t\n\t\tcols.forEach((def, i) => {\n\t\t\tthis._addColumn(def);\n\t\t});\n\t\t\n\t\tthis._reIndexColumns();\n\t\t\n\t\tthis.dispatch(\"columns-loaded\");\n\t\t\n\t\tthis.rerenderColumns(false, true);\n\t\t\n\t\tthis.redraw(true);\n\t}\n\t\n\t_addColumn(definition, before, nextToColumn){\n\t\tvar column = new Column(definition, this),\n\t\tcolEl = column.getElement(),\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\t\t\n\t\tif(nextToColumn && index > -1){\n\t\t\tvar topColumn = nextToColumn.getTopColumn();\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\n\t\t\tvar nextEl = topColumn.getElement();\n\t\t\t\n\t\t\tif(before){\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t}else{\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t}else{\n\t\t\tif(before){\n\t\t\t\tthis.columns.unshift(column);\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t}else{\n\t\t\t\tthis.columns.push(column);\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\t\t\n\t\tcolumn.columnRendered();\n\t\t\n\t\treturn column;\n\t}\n\t\n\tregisterColumnField(col){\n\t\tif(col.definition.field){\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t}\n\t\n\tregisterColumnPosition(col){\n\t\tthis.columnsByIndex.push(col);\n\t}\n\t\n\t_reIndexColumns(){\n\t\tthis.columnsByIndex = [];\n\t\t\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t}\n\t\n\t//ensure column headers take up the correct amount of space in column groups\n\tverticalAlignHeaders(){\n\t\tvar minHeight = 0;\n\t\t\n\t\tif(!this.redrawBlock){\n\n\t\t\tthis.headersElement.style.height=\"\";\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.clearVerticalAlign();\n\t\t\t});\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tvar height = column.getHeight();\n\t\t\t\t\n\t\t\t\tif(height > minHeight){\n\t\t\t\t\tminHeight = height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.headersElement.style.height = minHeight + \"px\";\n\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\n\t\t\t});\n\t\t\t\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\t//////////////// Column Details /////////////////\n\tfindColumn(subject){\n\t\tvar columns;\n\n\t\tif(typeof subject == \"object\"){\n\t\t\t\n\t\t\tif(subject instanceof Column){\n\t\t\t\t//subject is column element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof ColumnComponent){\n\t\t\t\t//subject is public column component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\n\t\t\t\tcolumns = [];\n\n\t\t\t\tthis.columns.forEach((column) => {\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t\t});\n\n\t\t\t\t//subject is a HTML element of the column header\n\t\t\t\tlet match = columns.find((column) => {\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\t//subject should be treated as the field name of the column\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetColumnByField(field){\n\t\treturn this.columnsByField[field];\n\t}\n\t\n\tgetColumnsByFieldRoot(root){\n\t\tvar matches = [];\n\t\t\n\t\tObject.keys(this.columnsByField).forEach((field) => {\n\t\t\tvar fieldRoot = this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator)[0] : field;\n\t\t\tif(fieldRoot === root){\n\t\t\t\tmatches.push(this.columnsByField[field]);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn matches;\n\t}\n\t\n\tgetColumnByIndex(index){\n\t\treturn this.columnsByIndex[index];\n\t}\n\t\n\tgetFirstVisibleColumn(){\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\n\t\t\treturn col.visible;\n\t\t});\n\t\t\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t}\n\n\tgetVisibleColumnsByIndex() {\n\t\treturn this.columnsByIndex.filter((col) => col.visible);\n\t}\n\t\n\tgetColumns(){\n\t\treturn this.columns;\n\t}\n\t\n\tfindColumnIndex(column){\n\t\treturn this.columnsByIndex.findIndex((col) => {\n\t\t\treturn column === col;\n\t\t});\n\t}\n\t\n\t//return all columns that are not groups\n\tgetRealColumns(){\n\t\treturn this.columnsByIndex;\n\t}\n\t\n\t//traverse across columns and call action\n\ttraverse(callback){\n\t\tthis.columnsByIndex.forEach((column,i) =>{\n\t\t\tcallback(column, i);\n\t\t});\n\t}\n\t\n\t//get definitions of actual columns\n\tgetDefinitions(active){\n\t\tvar output = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(!active || (active && column.visible)){\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\t//get full nested definition tree\n\tgetDefinitionTree(){\n\t\tvar output = [];\n\t\t\n\t\tthis.columns.forEach((column) => {\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(structured){\n\t\tvar output = [],\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetWidth(){\n\t\tvar width = 0;\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn width;\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\n\t\t\n\t\tif(after){\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t\t}\n\t\t\n\t\tthis.moveColumnActual(from, to, after);\n\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\t\n\tmoveColumnActual(from, to, after){\n\t\tif(from.parent.isGroup){\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t\t}else{\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t\t}\n\t\t\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\t\t\n\t\tthis.rerenderColumns(true);\n\t\t\n\t\tthis.dispatch(\"column-moved\", from, to, after);\n\t\t\n\t\tif(this.subscribedExternal(\"columnMoved\")){\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\t}\n\t\n\t_moveColumnInArray(columns, from, to, after, updateRows){\n\t\tvar\tfromIndex = columns.indexOf(from),\n\t\ttoIndex, rows = [];\n\t\t\n\t\tif (fromIndex > -1) {\n\t\t\t\n\t\t\tcolumns.splice(fromIndex, 1);\n\t\t\t\n\t\t\ttoIndex = columns.indexOf(to);\n\t\t\t\n\t\t\tif (toIndex > -1) {\n\t\t\t\t\n\t\t\t\tif(after){\n\t\t\t\t\ttoIndex = toIndex+1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\t\t\t\n\t\t\tcolumns.splice(toIndex, 0, from);\n\t\t\t\n\t\t\tif(updateRows){\n\t\t\t\t\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\n\t\t\t\t\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\n\t\t\t\t\n\t\t\t\trows.forEach(function(row){\n\t\t\t\t\tif(row.cells.length){\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\t\n\tscrollToColumn(column, position, ifVisible){\n\t\tvar left = 0,\n\t\toffset = column.getLeftOffset(),\n\t\tadjust = 0,\n\t\tcolEl = column.getElement();\n\t\t\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\tadjust = -this.element.clientWidth / 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//check column visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//calculate scroll position\n\t\t\t\tleft = offset + adjust;\n\t\t\t\t\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t\t\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tgenerateCells(row){\n\t\tvar cells = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\t\t\n\t\treturn cells;\n\t}\n\t\n\t//////////////// Column Management /////////////////\n\tgetFlexBaseWidth(){\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\n\t\tfixedWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar if present\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\t\t\n\t\tthis.columnsByIndex.forEach(function(column){\n\t\t\tvar width, minWidth, colWidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\twidth = column.definition.width || 0;\n\t\t\t\t\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\t\t\t\t\n\t\t\t\tif(typeof(width) == \"string\"){\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn fixedWidth;\n\t}\n\t\n\taddColumn(definition, before, nextToColumn){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\t\t\t\n\t\t\tthis._reIndexColumns();\n\t\t\t\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\n\t\t\t\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\t\t\t\n\t\t\tthis.redraw(true);\n\t\t\t\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t\t\n\t\t\tthis.rerenderColumns();\n\t\t\t\n\t\t\tresolve(column);\n\t\t});\n\t}\n\t\n\t//remove column from system\n\tderegisterColumn(column){\n\t\tvar field = column.getField(),\n\t\tindex;\n\t\t\n\t\t//remove from field list\n\t\tif(field){\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\t\t\n\t\t//remove from index list\n\t\tindex = this.columnsByIndex.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\t\t\n\t\t//remove from column list\n\t\tindex = this.columns.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\t\t\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.redraw();\n\t}\n\t\n\trerenderColumns(update, silent){\n\t\tif(!this.redrawBlock){\n\t\t\tthis.renderer.rerenderColumns(update, silent);\n\t\t}else{\n\t\t\tif(update === false || (update === true && this.redrawBlockUpdate === null)){\n\t\t\t\tthis.redrawBlockUpdate = update;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockUpdate = null;\n\t}\n\t\n\trestoreRedraw(){\n\t\tthis.redrawBlock = false;\n\t\tthis.verticalAlignHeaders();\n\t\tthis.renderer.rerenderColumns(this.redrawBlockUpdate);\n\t\t\n\t}\n\t\n\t//redraw columns\n\tredraw(force){\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.verticalAlignHeaders();\n\t\t}\n\t\t\n\t\tif(force){\n\t\t\tthis.table.rowManager.resetScroll();\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\t\t\n\t\tif(!this.confirm(\"table-redrawing\", force)){\n\t\t\tthis.layoutRefresh(force);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-redraw\", force);\n\t\t\n\t\tthis.table.footerManager.redraw();\n\t}\n}","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class BasicVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.verticalFillMode = \"fill\";\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\t\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\t\t\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\t\n\t\telement.style.minWidth = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\t}\n\t\n\trenderRows() {\n\t\tvar element = this.tableElement,\n\t\tonlyGroupHeaders = true,\n\t\ttableFrag = document.createDocumentFragment(),\n\t\trows = this.rows();\n\t\t\n\t\trows.forEach((row, index) => {\n\t\t\tthis.styleRow(row, index);\n\t\t\trow.initialize(false, true);\n\t\t\t\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t\t\n\t\t\ttableFrag.appendChild(row.getElement());\n\t\t});\n\t\t\n\t\telement.appendChild(tableFrag);\n\t\t\n\t\trows.forEach((row) => {\n\t\t\trow.rendered();\n\t\t\t\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.calcHeight(true);\n\t\t\t}\n\t\t});\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.setCellHeight();\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n\t\n\trerenderRows(callback){\t\n\t\tthis.clearRows();\n\t\t\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t\t\n\t\tthis.renderRows();\n\n\t\tif(!this.rows().length){\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\t}\n\t\n\tscrollToRowNearestTop(row){\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\n\t\t\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\n\t}\n\t\n\tscrollToRow(row){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\n\t}\n\t\n\tvisibleRows(includingBuffer){\n\t\treturn this.rows();\n\t}\n\t\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class VirtualDomVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.verticalFillMode = \"fill\";\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\t\tthis.vDomBottom = 0; //hold position for last rendered row in the virtual DOM\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t}\n\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\telement.style.paddingTop = \"\";\n\t\telement.style.paddingBottom = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\n\t\tthis.elementVertical.scrollTop = 0;\n\t\tthis.elementVertical.scrollLeft = 0;\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\t\tthis.vDomBottom = 0;\n\t\tthis.vDomTopPad = 0;\n\t\tthis.vDomBottomPad = 0;\n\t\tthis.vDomScrollPosTop = 0;\n\t\tthis.vDomScrollPosBottom = 0;\n\t}\n\n\trenderRows(){\n\t\tthis._virtualRenderFill();\n\t}\n\n\trerenderRows(callback){\n\t\tvar scrollTop = this.elementVertical.scrollTop;\n\t\tvar topRow = false;\n\t\tvar topOffset = false;\n\n\t\tvar left = this.table.rowManager.scrollLeft;\n\n\t\tvar rows = this.rows();\n\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\n\t\t\tif(rows[i]){\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\n\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\ttopRow = i;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trows.forEach((row) => {\n\t\t\trow.deinitializeHeight();\n\t\t});\n\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\n\t\tif(this.rows().length){\n\t\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\n\t\t}else{\n\t\t\tthis.clear();\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\n\t\tthis.scrollColumns(left);\n\t}\n\n\tscrollColumns(left){\n\t\tthis.table.rowManager.scrollHorizontal(left);\n\t}\n\n\tscrollRows(top, dir){\n\t\tvar topDiff = top - this.vDomScrollPosTop;\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\t\tvar rows = this.rows();\n\n\t\tthis.scrollTop = top;\n\n\t\tif(-topDiff > margin || bottomDiff > margin){\n\t\t\t//if big scroll redraw table;\n\t\t\tvar left = this.table.rowManager.scrollLeft;\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\n\t\t\tthis.scrollColumns(left);\n\t\t}else{\n\n\t\t\tif(dir){\n\t\t\t\t//scrolling up\n\t\t\t\tif(topDiff < 0){\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\n\t\t\t\t}\n\n\t\t\t\tif(bottomDiff < 0){\n\t\t\t\t\t//hide bottom row if needed\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(bottomDiff >= 0){\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\n\t\t\t\t}\n\n\t\t\t\t//scrolling down\n\t\t\t\tif(topDiff >= 0){\n\t\t\t\t\t//hide top row if needed\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresize(){\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\tvar rowIndex = this.rows().indexOf(row);\n\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\n\t}\n\n\tscrollToRow(row){\n\t\tvar index = this.rows().indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tthis._virtualRenderFill(index, true);\n\t\t}\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\tvar topEdge = this.elementVertical.scrollTop,\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\n\t\ttopFound = false,\n\t\ttopRow = 0,\n\t\tbottomRow = 0,\n\t\trows = this.rows();\n\n\t\tif(includingBuffer){\n\t\t\ttopRow = this.vDomTop;\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}else{\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\t\t\t\tif(rows[i]){\n\t\t\t\t\tif(!topFound){\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tbreak;\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(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}\n\t\t\t}\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t}\n\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\n\t//full virtual render\n\t_virtualRenderFill(position, forceMove, offset) {\n\t\tvar\telement = this.tableElement,\n\t\tholder = this.elementVertical,\n\t\ttopPad = 0,\n\t\trowsHeight = 0,\n\t\trowHeight = 0,\n\t\theightOccupied = 0,\n\t\ttopPadHeight = 0,\n\t\ti = 0,\n\t\trows = this.rows(),\n\t\trowsCount = rows.length,\n\t\tindex = 0,\n\t\trow,\n\t\trowFragment,\n\t\trenderedRows = [],\n\t\ttotalRowsRendered = 0,\n\t\trowsToRender = 0,\n\t\tfixedHeight = this.table.rowManager.fixedHeight,\n\t\tcontainerHeight = this.elementVertical.clientHeight, \n\t\tavgRowHeight = this.table.options.rowHeight, \n\t\tresized = true;\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif(!position){\n\t\t\tthis.clear();\n\t\t}else {\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\t\t//check if position is too close to bottom of table\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\n\n\t\t\tif(heightOccupied < containerHeight){\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\n\t\t\t\tif(position < 0){\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\n\t\t\tthis.vDomTop = position;\n\t\t\tthis.vDomBottom = position -1;\n\n\t\t\tif(fixedHeight || this.table.options.maxHeight) {\n\t\t\t\tif(avgRowHeight) {\n\t\t\t\t\trowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight);\n\t\t\t\t}\n\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender));\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowsToRender = rowsCount;\n\t\t\t}\n\n\t\t\twhile(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) {\n\t\t\t\trenderedRows = [];\n\t\t\t\trowFragment = document.createDocumentFragment();\n\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {\t\n\t\t\t\t\tindex = this.vDomBottom + 1,\n\t\t\t\t\trow = rows[index];\n\n\t\t\t\t\tthis.styleRow(row, index);\n\n\t\t\t\t\trow.initialize(false, true);\n\t\t\t\t\tif(!row.heightInitialized && !this.table.options.rowHeight){\n\t\t\t\t\t\trow.clearCellHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\trowFragment.appendChild(row.getElement());\n\t\t\t\t\trenderedRows.push(row);\n\t\t\t\t\tthis.vDomBottom ++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif(!renderedRows.length){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telement.appendChild(rowFragment);\n\t\t\t\t\n\t\t\t\t// NOTE: The next 3 loops are separate on purpose\n\t\t\t\t// This is to batch up the dom writes and reads which drastically improves performance \n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trow.rendered();\n\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.calcHeight(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.setCellHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trowHeight = row.getHeight();\n\t\t\t\t\t\n\t\t\t\t\tif(totalRowsRendered < topPad){\n\t\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t\t}else {\n\t\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t}\n\t\t\t\t\ttotalRowsRendered++;\n\t\t\t\t});\n\n\t\t\t\tresized = this.table.rowManager.adjustTableSize();\n\t\t\t\tcontainerHeight = this.elementVertical.clientHeight;\n\t\t\t\tif(resized && (fixedHeight || this.table.options.maxHeight))\n\t\t\t\t{\n\t\t\t\t\tavgRowHeight = rowsHeight / totalRowsRendered;\n\t\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!position){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t//adjust row height to match average of rendered elements\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered);\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\n\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\n\t\t\t}else {\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\t\t\t\n\t\t\telement.style.paddingTop = this.vDomTopPad+\"px\";\n\t\t\telement.style.paddingBottom = this.vDomBottomPad+\"px\";\n\n\t\t\tif(forceMove){\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\tthis.dispatch(\"render-virtual-fill\");\n\t\t}\n\t}\n\n\t_addTopRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomTop -1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tif(this.vDomTop){\n\t\t\t\tlet row = rows[index],\n\t\t\t\trowHeight, initialized;\n\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\n\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.initialize();\n\n\t\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\t\tthis.vDomTop--;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t\ti++;\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad -= paddingAdjust;\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 < 1){\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 -= paddingAdjust;\n\t\t}\n\t}\n\n\t_removeTopRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomTop],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomTop++;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\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\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad += paddingAdjust;\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\n\t\t}\n\t}\n\n\t_addBottomRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomBottom + 1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[index],\n\t\t\trowHeight, initialized;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\ttable.appendChild(row.getElement());\n\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.initialize();\n\n\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tthis.vDomBottom++;\n\t\t\t\t\tindex++;\n\t\t\t\t\ti++;\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\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -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 += paddingAdjust;\n\t\t}\n\t}\n\n\t_removeBottomRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomBottom],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomBottom --;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\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\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad += paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\n\t\t}\n\t}\n\n\t_quickNormalizeRowHeight(rows){\n\t\tfor(let row of rows){\n\t\t\trow.calcHeight();\n\t\t}\n\n\t\tfor(let row of rows){\n\t\t\trow.setCellHeight();\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Row from './row/Row.js';\nimport RowComponent from './row/RowComponent.js';\nimport Helpers from './tools/Helpers.js';\n\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\n\nexport default class RowManager extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = this.createHolderElement(); //containing element\n\t\tthis.tableElement = this.createTableElement(); //table element\n\t\tthis.heightFixer = this.createTableElement(); //table element\n\t\tthis.placeholder = null; //placeholder element\n\t\tthis.placeholderContents = null; //placeholder element\n\t\t\n\t\tthis.firstRender = false; //handle first render\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\n\t\tthis.fixedHeight = false; //current rendering mode\n\t\t\n\t\tthis.rows = []; //hold row data objects\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\t\tthis.activeRowsCount = 0; //count of active rows\n\t\t\n\t\tthis.displayRows = []; //rows currently on display in the table\n\t\tthis.displayRowsCount = 0; //count of display rows\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\n\t\t\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\n\t\t\n\t\tthis.scrollbarWidth = 0;\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t//////////////// Setup Functions /////////////////\n\t\n\tcreateHolderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-tableholder\");\n\t\tel.setAttribute(\"tabindex\", 0);\n\t\t// el.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateTableElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-table\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitializePlaceholder(){\n\t\tvar placeholder = this.table.options.placeholder;\n\t\t\n\t\tif(typeof placeholder === \"function\"){\n\t\t\tplaceholder = placeholder.call(this.table);\n\t\t}\n\t\t\n\t\tplaceholder = this.chain(\"placeholder\", [placeholder], placeholder, placeholder) || placeholder;\n\t\t\n\t\t//configure placeholder element\n\t\tif(placeholder){\t\n\t\t\tlet el = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\t\t\t\n\t\t\tif(typeof placeholder == \"string\"){\n\t\t\t\tlet contents = document.createElement(\"div\");\n\t\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\n\t\t\t\tcontents.innerHTML = placeholder;\n\t\t\t\t\n\t\t\t\tel.appendChild(contents);\n\t\t\t\t\n\t\t\t\tthis.placeholderContents = contents;\n\t\t\t\t\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && placeholder instanceof HTMLElement){\n\t\t\t\t\n\t\t\t\tel.appendChild(placeholder);\n\t\t\t\tthis.placeholderContents = placeholder;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Invalid placeholder provided, must be string or HTML Element\", placeholder);\n\t\t\t\t\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.placeholder = el;\n\t\t}\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\t\n\t//return table element\n\tgetTableElement(){\n\t\treturn this.tableElement;\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializePlaceholder();\n\t\tthis.initializeRenderer();\n\t\t\n\t\t//initialize manager\n\t\tthis.element.appendChild(this.tableElement);\n\t\t\n\t\tthis.firstRender = true;\n\t\t\n\t\t//scroll header along with table body\n\t\tthis.element.addEventListener(\"scroll\", () => {\n\t\t\tvar left = this.element.scrollLeft,\n\t\t\tleftDir = this.scrollLeft > left,\n\t\t\ttop = this.element.scrollTop,\n\t\t\ttopDir = this.scrollTop > top;\n\t\t\t\n\t\t\t//handle horizontal scrolling\n\t\t\tif(this.scrollLeft != left){\n\t\t\t\tthis.scrollLeft = left;\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\n\t\t\t\t\n\t\t\t\tthis._positionPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\t//handle vertical scrolling\n\t\t\tif(this.scrollTop != top){\n\t\t\t\tthis.scrollTop = top;\n\t\t\t\t\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t////////////////// Row Manipulation //////////////////\n\tfindRow(subject){\n\t\tif(typeof subject == \"object\"){\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\t//subject is a HTML element of the row\n\t\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\t\treturn row.getElement() === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}else if(subject === null){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\treturn false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t\t\n\t\t\treturn match || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetRowFromDataObject(data){\n\t\tvar match = this.rows.find((row) => {\n\t\t\treturn row.data === data;\n\t\t});\n\t\t\n\t\treturn match || false;\n\t}\n\t\n\tgetRowFromPosition(position){\n\t\treturn this.getDisplayRows().find((row) => {\n\t\t\treturn row.getPosition() === position && row.isDisplayed();\n\t\t});\n\t}\n\t\n\tscrollToRow(row, position, ifVisible){\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\tsetData(data, renderInPosition, columnsChanged){\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\n\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\tthis._setDataActual(data, true);\n\t\t\t\t}else{\n\t\t\t\t\tthis.reRenderInPosition(() => {\n\t\t\t\t\t\tthis._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\t\t\t\tthis.resetScroll();\n\t\t\t\t\n\t\t\t\tthis._setDataActual(data);\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\t_setDataActual(data, renderInPosition){\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\n\t\t\n\t\tthis._wipeElements();\n\t\t\n\t\tif(Array.isArray(data)){\n\t\t\tthis.dispatch(\"data-processing\", data);\n\t\t\t\n\t\t\tdata.forEach((def, i) => {\n\t\t\t\tif(def && typeof def === \"object\"){\n\t\t\t\t\tvar row = new Row(def, this);\n\t\t\t\t\tthis.rows.push(row);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\n\t\t\t\n\t\t\tthis.dispatch(\"data-processed\", data);\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\n\t\t}else{\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\n\t\t}\n\t}\n\t\n\t_wipeElements(){\n\t\tthis.dispatch(\"rows-wipe\");\n\t\t\n\t\tthis.destroy();\n\t\t\n\t\tthis.adjustTableSize();\n\t\t\n\t\tthis.dispatch(\"rows-wiped\");\n\t}\n\t\n\tdestroy(){\n\t\tthis.rows.forEach((row) => {\n\t\t\trow.wipe();\n\t\t});\n\t\t\n\t\tthis.rows = [];\n\t\tthis.activeRows = [];\n\t\tthis.activeRowsPipeline = [];\n\t\tthis.activeRowsCount = 0;\n\t\tthis.displayRows = [];\n\t\tthis.displayRowsCount = 0;\n\t}\n\t\n\tdeleteRow(row, blockRedraw){\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\tactiveIndex = this.activeRows.indexOf(row);\n\t\t\n\t\tif(activeIndex > -1){\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\t\t\n\t\tif(allIndex > -1){\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tvar displayIndex = rows.indexOf(row);\n\t\t\t\n\t\t\tif(displayIndex > -1){\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis.tableEmpty();\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\n\t\t}\n\t}\n\t\n\taddRow(data, pos, index, blockRedraw){\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\t\treturn row;\n\t}\n\t\n\t//add multiple rows\n\taddRows(data, pos, index, refreshDisplayOnly){\n\t\tvar rows = [];\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tpos = this.findAddRowPos(pos);\n\t\t\t\n\t\t\tif(!Array.isArray(data)){\n\t\t\t\tdata = [data];\n\t\t\t}\n\t\t\t\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\n\t\t\t\tdata.reverse();\n\t\t\t}\n\t\t\t\n\t\t\tdata.forEach((item, i) => {\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\n\t\t\t\trows.push(row);\n\t\t\t\tthis.dispatch(\"row-added\", row, item, pos, index);\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(refreshDisplayOnly ? \"displayPipeline\" : false, false, true);\n\t\t\t\n\t\t\tthis.regenerateRowPositions();\n\t\t\t\n\t\t\tif(this.displayRowsCount){\n\t\t\t\tthis._clearPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\tresolve(rows);\n\t\t});\n\t}\n\t\n\tfindAddRowPos(pos){\n\t\tif(typeof pos === \"undefined\"){\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\t\t\n\t\tif(pos === \"pos\"){\n\t\t\tpos = true;\n\t\t}\n\t\t\n\t\tif(pos === \"bottom\"){\n\t\t\tpos = false;\n\t\t}\n\t\t\n\t\treturn pos;\n\t}\n\t\n\taddRowActual(data, pos, index, blockRedraw){\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\ttop = this.findAddRowPos(pos),\n\t\tallIndex = -1,\n\t\tactiveIndex, chainResult;\n\t\t\n\t\tif(!index){\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\n\t\t\t\n\t\t\tindex = chainResult.index;\n\t\t\ttop = chainResult.top;\n\t\t}\n\t\t\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tindex = this.findRow(index);\n\t\t}\n\t\t\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\n\t\t\n\t\tif(index){\n\t\t\tallIndex = this.rows.indexOf(index);\n\t\t}\n\t\t\n\t\tif(index && allIndex > -1){\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\n\t\t\t\n\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\t\t\t\t\n\t\t\t\tif(displayIndex > -1){\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(activeIndex > -1){\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\n\t\t\t}\n\t\t\t\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(top){\n\t\t\t\t\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.unshift(row);\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}else{\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.push(row);\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t}\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\treturn row;\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tthis.dispatch(\"row-move\", from, to, after);\n\t\t\n\t\tthis.moveRowActual(from, to, after);\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatch(\"row-moved\", from, to, after);\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\n\t}\n\t\n\tmoveRowActual(from, to, after){\n\t\tthis.moveRowInArray(this.rows, from, to, after);\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tthis.moveRowInArray(rows, from, to, after);\n\t\t});\n\t\t\n\t\tthis.dispatch(\"row-moving\", from, to, after);\n\t}\n\t\n\tmoveRowInArray(rows, from, to, after){\n\t\tvar\tfromIndex, toIndex, start, end;\n\t\t\n\t\tif(from !== to){\n\t\t\t\n\t\t\tfromIndex = rows.indexOf(from);\n\t\t\t\n\t\t\tif (fromIndex > -1) {\n\t\t\t\t\n\t\t\t\trows.splice(fromIndex, 1);\n\t\t\t\t\n\t\t\t\ttoIndex = rows.indexOf(to);\n\t\t\t\t\n\t\t\t\tif (toIndex > -1) {\n\t\t\t\t\t\n\t\t\t\t\tif(after){\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//restyle rows\n\t\t\tif(rows === this.getDisplayRows()){\n\t\t\t\t\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\n\t\t\t\t\n\t\t\t\tfor(let i = start; i <= end; i++){\n\t\t\t\t\tif(rows[i]){\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearData(){\n\t\tthis.setData([]);\n\t}\n\t\n\tgetRowIndex(row){\n\t\treturn this.findRowIndex(row, this.rows);\n\t}\n\t\n\tgetDisplayRowIndex(row){\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\t\treturn index > -1 ? index : false;\n\t}\n\t\n\tnextDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tnextRow = false;\n\t\t\n\t\t\n\t\tif(index !== false && index < this.displayRowsCount -1){\n\t\t\tnextRow = this.getDisplayRows()[index+1];\n\t\t}\n\t\t\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn nextRow;\n\t}\n\t\n\tprevDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tprevRow = false;\n\t\t\n\t\tif(index){\n\t\t\tprevRow = this.getDisplayRows()[index-1];\n\t\t}\n\t\t\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn prevRow;\n\t}\n\t\n\tfindRowIndex(row, list){\n\t\tvar rowIndex;\n\t\t\n\t\trow = this.findRow(row);\n\t\t\n\t\tif(row){\n\t\t\trowIndex = list.indexOf(row);\n\t\t\t\n\t\t\tif(rowIndex > -1){\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tgetData(active, transform){\n\t\tvar output = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tif(row.type == \"row\"){\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(active){\n\t\tvar\toutput = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetDataCount(active){\n\t\tvar rows = this.getRows(active);\n\t\t\n\t\treturn rows.length;\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tthis.scrollLeft = left;\n\t\tthis.element.scrollLeft = left;\n\t\t\n\t\tthis.dispatch(\"scroll-horizontal\", left);\n\t}\n\t\n\tregisterDataPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.dataPipeline.push({handler, priority});\n\t\t\tthis.dataPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\tregisterDisplayPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.displayPipeline.push({handler, priority});\n\t\t\tthis.displayPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\t//set active data set\n\trefreshActiveData(handler, skipStage, renderInPosition){\n\t\tvar table = this.table,\n\t\tstage = \"\",\n\t\tindex = 0,\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"];\n\t\t\n\t\tif(!this.table.destroyed){\n\t\t\tif(typeof handler === \"function\"){\n\t\t\t\tindex = this.dataPipeline.findIndex((item) => {\n\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(index > -1){\n\t\t\t\t\tstage = \"dataPipeline\";\n\t\t\t\t\t\n\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\tif(index == this.dataPipeline.length - 1){\n\t\t\t\t\t\t\tstage = \"display\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\n\t\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\tstage = \"displayPipeline\";\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\n\t\t\t\t\t\t\t\tstage = \"end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tindex++;\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\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstage = handler || \"all\";\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.redrawBlock){\n\t\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\n\t\t\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tskipStage: skipStage,\n\t\t\t\t\t\trenderInPosition: renderInPosition,\n\t\t\t\t\t\tstage:stage,\n\t\t\t\t\t\tindex:index,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\tif(Helpers.elVisible(this.element)){\n\t\t\t\t\tif(renderInPosition){\n\t\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!handler){\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.renderTable();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\n\t\t\t\t\t\t\tthis.table.columnManager.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"data-refreshed\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\trefreshPipelines(handler, stage, index, renderInPosition){\n\t\tthis.dispatch(\"data-refreshing\");\n\t\t\n\t\tif(!handler || !this.activeRowsPipeline[0]){\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\n\t\t}\n\t\t\n\t\t//cascade through data refresh stages\n\t\tswitch(stage){\n\t\t\tcase \"all\":\n\t\t\t//handle case where all data needs refreshing\n\t\t\t\n\t\t\tcase \"dataPipeline\":\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\n\t\t\t\t\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\tindex = 0;\n\t\t\t\tthis.resetDisplayRows();\n\t\t\t\n\t\t\tcase \"displayPipeline\":\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\n\t\t\t\t\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"end\":\n\t\t\t//case to handle scenario when trying to skip past end stage\n\t\t\t\tthis.regenerateRowPositions();\n\t\t}\n\t\t\n\t\tif(this.getDisplayRows().length){\n\t\t\tthis._clearPlaceholder();\n\t\t}\n\t}\n\t\n\t//regenerate row positions\n\tregenerateRowPositions(){\n\t\tvar rows = this.getDisplayRows();\n\t\tvar index = 1;\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\"){\n\t\t\t\trow.setPosition(index);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tsetActiveRows(activeRows){\n\t\tthis.activeRows = this.activeRows = Object.assign([], activeRows);\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t}\n\t\n\t//reset display rows array\n\tresetDisplayRows(){\n\t\tthis.displayRows = [];\n\t\t\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\t}\n\t\n\t//set display row pipeline data\n\tsetDisplayRows(displayRows, index){\n\t\tthis.displayRows[index] = displayRows;\n\t\t\n\t\tif(index == this.displayRows.length -1){\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t\t}\n\t}\n\t\n\tgetDisplayRows(index){\n\t\tif(typeof index == \"undefined\"){\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\n\t\t}else{\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t}\n\t\n\tgetVisibleRows(chain, viewable){\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\n\t\t\n\t\tif(chain){\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t//repeat action across display rows\n\tdisplayRowIterator(callback){\n\t\tthis.activeRowsPipeline.forEach(callback);\n\t\tthis.displayRows.forEach(callback);\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t}\n\t\n\t//return only actual rows (not group headers etc)\n\tgetRows(type){\n\t\tvar rows = [];\n\t\t\n\t\tswitch(type){\n\t\t\tcase \"active\":\n\t\t\t\trows = this.activeRows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.getVisibleRows(false, true);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t///////////////// Table Rendering /////////////////\n\t//trigger rerender of table in current position\n\treRenderInPosition(callback){\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.redrawBlockRenderInPosition = true;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\t\n\t\t\tthis.renderer.rerenderRows(callback);\n\t\t\t\n\t\t\tif(!this.fixedHeight){\n\t\t\t\tthis.adjustTableSize();\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"renderComplete\");\n\t\t}\n\t}\n\t\n\tscrollBarCheck(){\n\t\tvar scrollbarWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar moving table when present\n\t\tif(this.element.scrollHeight > this.element.clientHeight){\n\t\t\tscrollbarWidth = this.element.offsetWidth - this.element.clientWidth;\n\t\t}\n\t\t\n\t\tif(scrollbarWidth !== this.scrollbarWidth){\n\t\t\tthis.scrollbarWidth = scrollbarWidth;\n\t\t\tthis.dispatch(\"scrollbar-vertical\", scrollbarWidth);\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomVertical,\n\t\t\t\"basic\": RendererBasicVertical,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderVertical;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderMode = this.table.options.renderVertical;\n\t\t\t\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t\t\n\t\t\tif((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){\n\t\t\t\tthis.fixedHeight = true;\n\t\t\t}else{\n\t\t\t\tthis.fixedHeight = false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderVertical);\n\t\t}\n\t}\n\t\n\tgetRenderMode(){\n\t\treturn this.renderMode;\n\t}\n\t\n\trenderTable(){\n\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tthis._clearTable();\n\t\t\n\t\tif(this.displayRowsCount){\n\t\t\tthis.renderer.renderRows();\n\t\t\t\n\t\t\tif(this.firstRender){\n\t\t\t\tthis.firstRender = false;\n\t\t\t\t\n\t\t\t\tif(!this.fixedHeight){\n\t\t\t\t\tthis.adjustTableSize();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.layoutRefresh(true);\n\t\t\t}\n\t\t}else{\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t\t\n\t\tif(!this.fixedHeight){\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-layout\");\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis._showPlaceholder();\n\t\t}\n\t\t\n\t\tthis.scrollBarCheck();\n\t\t\n\t\tthis.dispatchExternal(\"renderComplete\");\n\t}\n\t\n\t//show scrollbars on empty table div\n\trenderEmptyScroll(){\n\t\tif(this.placeholder){\n\t\t\tthis.tableElement.style.display = \"none\";\n\t\t}else{\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\n\t\t}\n\t}\n\t\n\t_clearTable(){\t\n\t\tthis._clearPlaceholder();\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.renderer.clearRows();\n\t}\n\t\n\ttableEmpty(){\n\t\tthis.renderEmptyScroll();\n\t\tthis._showPlaceholder();\n\t}\n\n\tcheckPlaceholder(){\n\t\tif(this.displayRowsCount){\n\t\t\tthis._clearPlaceholder();\n\t\t}else{\n\t\t\tthis.tableEmpty();\n\t\t}\n\t}\n\t\n\t_showPlaceholder(){\n\t\tif(this.placeholder){\n\t\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t\t}\n\t\t\t\n\t\t\tthis.initializePlaceholder();\n\t\t\t\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\n\t\t\tthis.getElement().appendChild(this.placeholder);\n\t\t\tthis._positionPlaceholder();\n\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t}\n\t\n\t_clearPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t}\n\t\t\n\t\t// clear empty table placeholder min\n\t\tthis.tableElement.style.minWidth = \"\";\n\t\tthis.tableElement.style.display = \"\";\n\t}\n\t\n\t_positionPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\n\t\t}\n\t}\n\t\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\t\n\t//normalize height of active rows\n\tnormalizeHeight(){\n\t\tthis.activeRows.forEach(function(row){\n\t\t\trow.normalizeHeight();\n\t\t});\n\t}\n\t\n\t//adjust the height of the table holder to fit in the Tabulator element\n\tadjustTableSize(){\n\t\tlet initialHeight = this.element.clientHeight, minHeight;\n\t\tlet resized = false;\n\t\t\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\t\t\t\n\t\t\tif(this.fixedHeight){\n\t\t\t\tminHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + \"px\";\n\t\t\t\t\n\t\t\t\tconst height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.minHeight = minHeight || \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.height = height;\n\t\t\t\tthis.element.style.maxHeight = height;\n\t\t\t} else {\n\t\t\t\tthis.element.style.height = \"\";\n\t\t\t\tthis.element.style.height =\n\t\t\t\tthis.table.element.clientHeight - otherHeight + \"px\";\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t\t}\n\t\t\t\n\t\t\tthis.renderer.resize();\n\t\t\t\n\t\t\t//check if the table has changed size when dealing with variable height tables\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\n\t\t\t\tresized = true;\n\t\t\t\tif(this.subscribed(\"table-resize\")){\n\t\t\t\t\tthis.dispatch(\"table-resize\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t}\n\t\t\n\t\tthis._positionPlaceholder();\n\t\treturn resized;\n\t}\n\t\n\t//reinitialize all rows\n\treinitialize(){\n\t\tthis.rows.forEach(function(row){\n\t\t\trow.reinitialize(true);\n\t\t});\n\t}\n\t\n\t//prevent table from being redrawn\n\tblockRedraw (){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockRestoreConfig = false;\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw (){\n\t\tthis.redrawBlock = false;\n\t\t\n\t\tif(this.redrawBlockRestoreConfig){\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\t\t\t\n\t\t\tthis.redrawBlockRestoreConfig = false;\n\t\t}else{\n\t\t\tif(this.redrawBlockRenderInPosition){\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.redrawBlockRenderInPosition = false;\n\t}\n\t\n\t//redraw table\n\tredraw (force){\n\t\tthis.adjustTableSize();\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\t\t\n\t\tif(!force){\t\n\t\t\tthis.reRenderInPosition();\n\t\t\tthis.scrollHorizontal(this.scrollLeft);\n\t\t}else{\n\t\t\tthis.renderTable();\n\t\t}\n\t}\n\t\n\tresetScroll(){\n\t\tthis.element.scrollLeft = 0;\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tif(this.table.browser === \"ie\"){\n\t\t\tvar event = document.createEvent(\"Event\");\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\t\t\tthis.element.dispatchEvent(event);\n\t\t}else{\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\n\nexport default class FooterManager extends CoreFeature{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.active = false;\n\t\tthis.element = this.createElement(); //containing element\n\t\tthis.containerElement = this.createContainerElement(); //containing element\n\t\tthis.external = false;\n\t}\n\n\tinitialize(){\n\t\tthis.initializeElement();\n\t}\n\n\tcreateElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t}\n\n\t\n\tcreateContainerElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer-contents\");\n\n\t\tthis.element.appendChild(el);\n\n\t\treturn el;\n\t}\n\n\tinitializeElement(){\n\t\tif(this.table.options.footerElement){\n\n\t\t\tswitch(typeof this.table.options.footerElement){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\n\t\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.external = true;\n\t\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tappend(element){\n\t\tthis.activate();\n\n\t\tthis.containerElement.appendChild(element);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tprepend(element){\n\t\tthis.activate();\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tremove(element){\n\t\telement.parentNode.removeChild(element);\n\t\tthis.deactivate();\n\t}\n\n\tdeactivate(force){\n\t\tif(!this.element.firstChild || force){\n\t\t\tif(!this.external){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\tthis.active = false;\n\t\t}\n\t}\n\n\tactivate(){\n\t\tif(!this.active){\n\t\t\tthis.active = true;\n\t\t\tif(!this.external){\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tredraw(){\n\t\tthis.dispatch(\"footer-redraw\");\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Row from '../row/Row.js';\n\nexport default class InteractionManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.el = null;\n\t\t\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\n\t\t\n\t\tthis.previousTargets = {};\n\t\t\n\t\tthis.listeners = [\n\t\t\t\"click\",\n\t\t\t\"dblclick\",\n\t\t\t\"contextmenu\",\n\t\t\t\"mouseenter\",\n\t\t\t\"mouseleave\",\n\t\t\t\"mouseover\",\n\t\t\t\"mouseout\",\n\t\t\t\"mousemove\",\n\t\t\t\"mouseup\",\n\t\t\t\"mousedown\",\n\t\t\t\"touchstart\",\n\t\t\t\"touchend\",\n\t\t];\n\t\t\n\t\tthis.componentMap = {\n\t\t\t\"tabulator-cell\":\"cell\",\n\t\t\t\"tabulator-row\":\"row\",\n\t\t\t\"tabulator-group\":\"group\",\n\t\t\t\"tabulator-col\":\"column\",\n\t\t};\n\t\t\n\t\tthis.pseudoTrackers = {\n\t\t\t\"row\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"cell\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"group\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"column\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t};\n\t\t\n\t\tthis.pseudoTracking = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.el = this.table.element;\n\t\t\n\t\tthis.buildListenerMap();\n\t\tthis.bindSubscriptionWatchers();\n\t}\n\t\n\tbuildListenerMap(){\n\t\tvar listenerMap = {};\n\t\t\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistenerMap[listener] = {\n\t\t\t\thandler:null,\n\t\t\t\tcomponents:[],\n\t\t\t};\n\t\t});\n\t\t\n\t\tthis.listeners = listenerMap;\n\t}\n\t\n\tbindPseudoEvents(){\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\n\t\t});\n\t\t\n\t\tthis.pseudoTracking = true;\n\t}\n\t\n\tpseudoMouseEnter(key, e, target){\n\t\tif(this.pseudoTrackers[key].target !== target){\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\n\t\t\t}\n\t\t\t\n\t\t\tthis.pseudoMouseLeave(key, e);\n\t\t\t\n\t\t\tthis.pseudoTrackers[key].target = target;\n\t\t\t\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\n\t\t}\n\t}\n\t\n\tpseudoMouseLeave(key, e){\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\n\t\tlinkedKeys = {\n\t\t\t\"row\":[\"cell\"],\n\t\t\t\"cell\":[\"row\"],\n\t\t};\n\t\t\n\t\tleaveList = leaveList.filter((item) => {\n\t\t\tvar links = linkedKeys[key];\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\n\t\t});\n\t\t\n\t\t\n\t\tleaveList.forEach((key) => {\n\t\t\tvar target = this.pseudoTrackers[key].target;\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\n\t\t\t\t\n\t\t\t\tthis.pseudoTrackers[key].target = null;\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\tbindSubscriptionWatchers(){\n\t\tvar listeners = Object.keys(this.listeners),\n\t\tcomponents = Object.values(this.componentMap);\n\t\t\n\t\tfor(let comp of components){\n\t\t\tfor(let listener of listeners){\n\t\t\t\tlet key = comp + \"-\" + listener;\n\t\t\t\t\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this));\n\t}\n\t\n\tsubscriptionChanged(component, key, added){\n\t\tvar listener = this.listeners[key].components,\n\t\tindex = listener.indexOf(component),\n\t\tchanged = false;\n\t\t\n\t\tif(added){\n\t\t\tif(index === -1){\n\t\t\t\tlistener.push(component);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\n\t\t\t\tif(index > -1){\n\t\t\t\t\tlistener.splice(index, 1);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\n\t\t\tthis.bindPseudoEvents();\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.updateEventListeners();\n\t\t}\n\t}\n\t\n\tupdateEventListeners(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.components.length){\n\t\t\t\tif(!listener.handler){\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler);\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(listener.handler){\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\t\tlistener.handler = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\ttrack(type, e){\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\n\t\t\n\t\tvar targets = this.findTargets(path);\n\t\ttargets = this.bindComponents(type, targets);\n\t\t\n\t\tthis.triggerEvents(type, e, targets);\n\t\t\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\n\t\t}\n\t}\n\t\n\tfindTargets(path){\n\t\tvar targets = {};\n\t\t\n\t\tlet componentMap = Object.keys(this.componentMap);\n\t\t\n\t\tfor (let el of path) {\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\n\t\t\t\n\t\t\tlet abort = classList.filter((item) => {\n\t\t\t\treturn this.abortClasses.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tif(abort.length){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tlet elTargets = classList.filter((item) => {\n\t\t\t\treturn componentMap.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tfor (let target of elTargets) {\n\t\t\t\tif(!targets[this.componentMap[target]]){\n\t\t\t\t\ttargets[this.componentMap[target]] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(targets.group && targets.group === targets.row){\n\t\t\tdelete targets.row;\n\t\t}\n\n\t\treturn targets;\n\t}\n\t\n\tbindComponents(type, targets){\n\t\t//ensure row component is looked up before cell\n\t\tvar keys = Object.keys(targets).reverse(),\n\t\tlistener = this.listeners[type],\n\t\tmatches = {},\n\t\ttargetMatches = {};\n\t\t\n\t\tfor(let key of keys){\n\t\t\tlet component,\n\t\t\ttarget = targets[key],\n\t\t\tpreviousTarget = this.previousTargets[key];\n\t\t\t\n\t\t\tif(previousTarget && previousTarget.target === target){\n\t\t\t\tcomponent = previousTarget.component;\n\t\t\t}else{\n\t\t\t\tswitch(key){\n\t\t\t\t\tcase \"row\":\n\t\t\t\t\tcase \"group\":\n\t\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\n\t\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tcomponent = rows.find((row) => {\n\t\t\t\t\t\t\t\treturn row.getElement() === target;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\n\t\t\t\t\t\t\t\ttargets[key] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"column\":\n\t\t\t\t\t\tif(listener.components.includes(\"column\")){\n\t\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"cell\":\n\t\t\t\t\t\tif(listener.components.includes(\"cell\")){\n\t\t\t\t\t\t\tif(matches[\"row\"] instanceof Row){\n\t\t\t\t\t\t\t\tcomponent = matches[\"row\"].findCell(target);\n\t\t\t\t\t\t\t}else{\t\n\t\t\t\t\t\t\t\tif(targets[\"row\"]){\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(component){\n\t\t\t\tmatches[key] = component;\n\t\t\t\ttargetMatches[key] = {\n\t\t\t\t\ttarget:target,\n\t\t\t\t\tcomponent:component,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.previousTargets = targetMatches;\n\t\t\n\t\treturn matches;\n\t}\n\t\n\ttriggerEvents(type, e, targets){\n\t\tvar listener = this.listeners[type];\n\n\t\tfor(let key in targets){\n\t\t\tif(targets[key] && listener.components.includes(key)){\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearWatchers(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.handler){\n\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\tlistener.handler = null;\n\t\t\t}\n\t\t}\n\t}\n}\n","export default class ComponentFunctionBinder{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\n\t\tthis.bindings = {};\n\t}\n\n\tbind(type, funcName, handler){\n\t\tif(!this.bindings[type]){\n\t\t\tthis.bindings[type] = {};\n\t\t}\n\n\t\tif(this.bindings[type][funcName]){\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler);\n\t\t}else{\n\t\t\tthis.bindings[type][funcName] = handler;\n\t\t}\n\t}\n\n\thandle(type, component, name){\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\n\t\t\treturn this.bindings[type][name].bind(null, component);\n\t\t}else{\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\n\t\t\t\tif(this.table.options.debugInvalidComponentFuncs){\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\n\nexport default class DataLoader extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\n\t\tthis.loading = false;\n\t}\n\t\n\tinitialize(){}\n\t\n\tload(data, params, config, replace, silent, columnsChanged){\n\t\tvar requestNo = ++this.requestOrder;\n\n\t\tif(this.table.destroyed){\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\t\n\t\tthis.dispatchExternal(\"dataLoading\", data);\n\t\t\n\t\t//parse json data to array\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\n\t\t\tthis.loading = true;\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis.alertLoader();\n\t\t\t}\n\t\t\t\n\t\t\t//get params for request\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\n\t\t\t\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\n\t\t\t\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\n\t\t\t\n\t\t\treturn result.then((response) => {\n\t\t\t\tif(!this.table.destroyed){\n\t\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\n\t\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\n\t\t\t\t\t\n\t\t\t\t\tif(requestNo == this.requestOrder){\n\t\t\t\t\t\tthis.clearAlert();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(rowData !== false){\n\t\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\n\t\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - Table has been destroyed\");\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\n\t\t\t\t\n\t\t\t\tif(!silent){\n\t\t\t\t\tthis.alertError();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clearAlert();\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\n\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\n\t\t\t\n\t\t\tif(!data){\n\t\t\t\tdata = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.table.rowManager.setData(data, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\t\n\tmapParams(params, map){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in params){\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tobjectInvert(obj){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in obj){\n\t\t\toutput[obj[key]] = key;\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tblockActiveLoad(){\n\t\tthis.requestOrder++;\n\t}\n\t\n\talertLoader(){\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\n\t\t\n\t\tif(shouldLoad){\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\n\t\t}\n\t}\n\t\n\talertError(){\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\n\t}\n\t\n\tclearAlert(){\n\t\tthis.table.alertManager.clear();\n\t}\n}","export default class ExternalEventBus {\n\n\tconstructor(table, optionsList, debug){\n\t\tthis.table = table;\n\t\tthis.events = {};\n\t\tthis.optionsList = optionsList || {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push(callback);\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tdelete this.events[key];\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift(),\n\t\tresult;\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((callback, i) => {\n\t\t\t\tlet callResult = callback.apply(this.table, args);\n\n\t\t\t\tif(!i){\n\t\t\t\t\tresult = callResult;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"ExternalEvent:\" + args[0];\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n}","export default class InternalEventBus {\n\n\tconstructor(debug){\n\t\tthis.events = {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback, priority = 10000){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push({callback, priority});\n\n\t\tthis.events[key].sort((a, b) => {\n\t\t\treturn a.priority - b.priority;\n\t\t});\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item.callback === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_chain(key, args, initialValue, fallback){\n\t\tvar value = initialValue;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\n\t\t\t});\n\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\n\t\t}\n\t}\n\n\t_confirm(key, args){\n\t\tvar confirmed = false;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tif(subscriber.callback.apply(this, args)){\n\t\t\t\t\tconfirmed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn confirmed;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift();\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((subscriber) => {\n\t\t\t\tsubscriber.callback.apply(this, args);\n\t\t\t});\n\t\t}\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n\n\t_debugChain(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._chain(...arguments);\n\t}\n\n\t_debugConfirm(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._confirm(...arguments);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class DeprecationAdvisor extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\t_warnUser(){\n\t\tif(this.options(\"debugDeprecation\")){\n\t\t\tconsole.warn(...arguments);\n\t\t}\n\t}\n\t\n\tcheck(oldOption, newOption, convert){\n\t\tvar msg = \"\";\n\t\t\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tmsg = \"Deprecated Setup Option - Use of the %c\" + oldOption + \"%c option is now deprecated\";\n\t\t\t\n\t\t\tif(newOption){\n\t\t\t\tmsg = msg + \", Please use the %c\" + newOption + \"%c option instead\";\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\n\t\t\t\tif(convert){\n\t\t\t\t\tthis.table.options[newOption] = this.table.options[oldOption];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tcheckMsg(oldOption, msg){\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tthis._warnUser(\"%cDeprecated Setup Option - Use of the %c\" + oldOption + \" %c option is now deprecated, \" + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tmsg(msg){\n\t\tthis._warnUser(msg);\n\t}\n}","import Tabulator from '../Tabulator.js';\n\nclass TableRegistry {\n\n\tstatic register(table){\n\t\tTableRegistry.tables.push(table);\n\t}\n\n\tstatic deregister(table){\n\t\tvar index = TableRegistry.tables.indexOf(table);\n\n\t\tif(index > -1){\n\t\t\tTableRegistry.tables.splice(index, 1);\n\t\t}\n\t}\n\n\tstatic lookupTable(query, silent){\n\t\tvar results = [],\n\t\tmatches, 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 = TableRegistry.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\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\n\t\t\tmatch = TableRegistry.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(TableRegistry.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\n\tstatic matchElement(element){\n\t\treturn TableRegistry.tables.find(function(table){\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n}\n\nTableRegistry.tables = [];\n\nexport default TableRegistry;","//resize columns to fit data they contain\nexport default function(columns, forced){\n\tif(forced){\n\t\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\n\t}\n\t\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\nexport default function(columns, forced){\n\tcolumns.forEach(function(column){\n\t\tcolumn.reinitializeWidth();\n\t});\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data the contain and stretch last column to fill table\nexport default function(columns, forced){\n\tvar colsWidth = 0,\n\ttableWidth = this.table.rowManager.element.clientWidth,\n\tgap = 0,\n\tlastCol = false;\n\n\tcolumns.forEach((column, i) => {\n\t\tif(!column.widthFixed){\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\n\t\t\tlastCol = column;\n\t\t}\n\n\t\tif(column.visible){\n\t\t\tcolsWidth += column.getWidth();\n\t\t}\n\t});\n\n\tif(lastCol){\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tlastCol.setWidth(0);\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\tif(gap > 0){\n\t\t\tlastCol.setWidth(gap);\n\t\t}else{\n\t\t\tlastCol.reinitializeWidth();\n\t\t}\n\t}else{\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t}\n}","//resize columns to fit\nexport default function(columns, forced){\n\tvar totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width\n\tvar fixedWidth = 0; //total width of columns with a defined width\n\tvar flexWidth = 0; //total width available to flexible columns\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks across all columns\n\tvar flexColWidth = 0; //desired width of flexible columns\n\tvar flexColumns = []; //array of flexible width columns\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks across all columns\n\tvar overflowWidth = 0; //horizontal overflow width\n\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\tfunction calcWidth(width){\n\t\tvar colWidth;\n\n\t\tif(typeof(width) == \"string\"){\n\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\n\t\t\t}else{\n\t\t\t\tcolWidth = parseInt(width);\n\t\t\t}\n\t\t}else{\n\t\t\tcolWidth = width;\n\t\t}\n\n\t\treturn colWidth;\n\t}\n\n\t//ensure columns resize to take up the correct amount of space\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\n\t\tvar oversizeCols = [],\n\t\toversizeSpace = 0,\n\t\tremainingSpace = 0,\n\t\tnextColWidth = 0,\n\t\tremainingFlexGrowUnits = flexGrowUnits,\n\t\tgap = 0,\n\t\tchangeUnits = 0,\n\t\tundersizeCols = [];\n\n\t\tfunction calcGrow(col){\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\n\t\t}\n\n\t\tfunction calcShrink(col){\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));\n\t\t}\n\n\t\tcolumns.forEach(function(col, i){\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\t\t\tif(col.column.minWidth >= width){\n\t\t\t\toversizeCols.push(col);\n\t\t\t}else{\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\n\t\t\t\t\tcol.width = col.column.maxWidth;\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\n\t\t\t\t\tif(remainingFlexGrowUnits){\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tundersizeCols.push(col);\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(oversizeCols.length){\n\t\t\toversizeCols.forEach(function(col){\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t});\n\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\n\n\t\t\tgap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t}else{\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\n\n\t\t\tundersizeCols.forEach(function(column){\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t});\n\t\t}\n\n\t\treturn gap;\n\t}\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n\n\t//adjust for vertical scrollbar if present\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t}\n\n\tcolumns.forEach(function(column){\n\t\tvar width, minWidth, colWidth;\n\n\t\tif(column.visible){\n\n\t\t\twidth = column.definition.width;\n\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\tif(width){\n\n\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\tif(column.definition.widthShrink){\n\t\t\t\t\tfixedShrinkColumns.push({\n\t\t\t\t\t\tcolumn:column,\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\n\t\t\t\t\t});\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tflexColumns.push({\n\t\t\t\t\tcolumn:column,\n\t\t\t\t\twidth:0,\n\t\t\t\t});\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t//calculate available space\n\tflexWidth = totalWidth - fixedWidth;\n\n\t//calculate correct column size\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t//generate column widths\n\tgapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t//increase width of last column to account for rounding errors\n\tif(flexColumns.length && gapFill > 0){\n\t\tflexColumns[flexColumns.length-1].width += gapFill;\n\t}\n\n\t//calculate space for columns to be shrunk into\n\tflexColumns.forEach(function(col){\n\t\tflexWidth -= col.width;\n\t});\n\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t//shrink oversize columns if there is no available space\n\tif(overflowWidth > 0 && flexShrinkUnits){\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t}\n\n\t//decrease width of last column to account for rounding errors\n\tif(gapFill && fixedShrinkColumns.length){\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\n\t}\n\n\tflexColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n\n\tfixedShrinkColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n}\n","import fitData from './modes/fitData.js';\nimport fitDataGeneral from './modes/fitDataGeneral.js';\nimport fitDataStretch from './modes/fitDataStretch.js';\nimport fitColumns from './modes/fitColumns.js';\n\nexport default {\n\tfitData:fitData,\n\tfitDataFill:fitDataGeneral,\n\tfitDataTable:fitDataGeneral,\n\tfitDataStretch:fitDataStretch,\n\tfitColumns:fitColumns ,\n};","import Module from '../../core/Module.js';\n\nimport defaultModes from './defaults/modes.js';\n\nclass Layout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table, \"layout\");\n\n\t\tthis.mode = null;\n\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\n\n\t\tthis.registerColumnOption(\"widthGrow\");\n\t\tthis.registerColumnOption(\"widthShrink\");\n\t}\n\n\t//initialize layout system\n\tinitialize(){\n\t\tvar layout = this.table.options.layout;\n\n\t\tif(Layout.modes[layout]){\n\t\t\tthis.mode = layout;\n\t\t}else{\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.widthGrow){\n\t\t\tcolumn.definition.widthGrow = Number(column.definition.widthGrow);\n\t\t}\n\t\tif(column.definition.widthShrink){\n\t\t\tcolumn.definition.widthShrink = Number(column.definition.widthShrink);\n\t\t}\n\t}\n\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\n\t//trigger table layout\n\tlayout(dataChanged){\n\t\tthis.dispatch(\"layout-refreshing\");\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);\n\t\tthis.dispatch(\"layout-refreshed\");\n\t}\n}\n\nLayout.moduleName = \"layout\";\n\n//load defaults\nLayout.modes = defaultModes;\n\nexport default Layout;","export default {\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},\n\t\t\"data\":{\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\t\"counter\":{\n\t\t\t\t\"showing\": \"Showing\",\n\t\t\t\t\"of\": \"of\",\n\t\t\t\t\"rows\": \"rows\",\n\t\t\t\t\"pages\": \"pages\",\n\t\t\t}\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};","import Module from '../../core/Module.js';\n\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultLangs from './defaults/langs.js';\n\nclass Localize extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.locale = \"default\"; //current locale\n\t\tthis.lang = false; //current language\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t\tthis.langList = {};\n\n\t\tthis.registerTableOption(\"locale\", false); //current system language\n\t\tthis.registerTableOption(\"langs\", {});\n\t}\n\n\tinitialize(){\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\n\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor(let locale in this.table.options.langs){\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\n\t\t}\n\n\t\tthis.setLocale(this.table.options.locale);\n\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\n\t}\n\n\t//set header placeholder\n\tsetHeaderFilterPlaceholder(placeholder){\n\t\tthis.langList.default.headerFilters.default = placeholder;\n\t}\n\n\t//setup a lang description object\n\tinstallLang(locale, lang){\n\t\tif(this.langList[locale]){\n\t\t\tthis._setLangProp(this.langList[locale], lang);\n\t\t}else{\n\t\t\tthis.langList[locale] = lang;\n\t\t}\n\t}\n\n\t_setLangProp(lang, values){\n\t\tfor(let key in values){\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t}else{\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t//set current locale\n\tsetLocale(desiredLocale){\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching language values\n\t\tfunction traverseLang(trans, path){\n\t\t\tfor(var prop in trans){\n\t\t\t\tif(typeof trans[prop] == \"object\"){\n\t\t\t\t\tif(!path[prop]){\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t}else{\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determining correct locale to load\n\t\tif(desiredLocale === true && navigator.language){\n\t\t\t//get local from system\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif(desiredLocale){\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\t\t\tif(!this.langList[desiredLocale]){\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif(this.langList[prefix]){\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.locale = desiredLocale;\n\n\t\t//load default lang template\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\n\n\t\tif(desiredLocale != \"default\"){\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\n\t\t}\n\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\n\n\t\tthis._executeBindings();\n\t}\n\n\t//get current locale\n\tgetLocale(locale){\n\t\treturn this.locale;\n\t}\n\n\t//get lang object for given local or current if none provided\n\tgetLang(locale){\n\t\treturn locale ? this.langList[locale] : this.lang;\n\t}\n\n\t//get text for current locale\n\tgetText(path, value){\n\t\tvar fillPath = value ? path + \"|\" + value : path,\n\t\tpathArray = fillPath.split(\"|\"),\n\t\ttext = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t\t// }\n\n\t\treturn text || \"\";\n\t}\n\n\t//traverse langs object and find localized copy\n\t_getLangElement(path, locale){\n\t\tvar root = this.lang;\n\n\t\tpath.forEach(function(level){\n\t\t\tvar rootPath;\n\n\t\t\tif(root){\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif(typeof rootPath != \"undefined\"){\n\t\t\t\t\troot = rootPath;\n\t\t\t\t}else{\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t}\n\n\t//set update binding\n\tbind(path, callback){\n\t\tif(!this.bindings[path]){\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t}\n\n\t//iterate through bindings and trigger updates\n\t_executeBindings(){\n\t\tfor(let path in this.bindings){\n\t\t\tthis.bindings[path].forEach((binding) => {\n\t\t\t\tbinding(this.getText(path), this.lang);\n\t\t\t});\n\t\t}\n\t}\n}\n\nLocalize.moduleName = \"localize\";\n\n//load defaults\nLocalize.langs = defaultLangs;\n\nexport default Localize;","import Module from '../../core/Module.js';\nimport TableRegistry from '../../core/tools/TableRegistry.js';\n\nclass Comms extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\n\tinitialize(){\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\n\t}\n\n\tgetConnections(selectors){\n\t\tvar connections = [],\n\t\tconnection;\n\n\t\tconnection = TableRegistry.lookupTable(selectors);\n\n\t\tconnection.forEach((con) =>{\n\t\t\tif(this.table !== con){\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsend(selectors, module, action, data){\n\t\tvar connections = this.getConnections(selectors);\n\n\t\tconnections.forEach((connection) => {\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\n\t\t});\n\n\t\tif(!connections.length && selectors){\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t}\n\n\treceive(table, module, action, data){\n\t\tif(this.table.modExists(module)){\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t}else{\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t}\n}\n\nComms.moduleName = \"comms\";\n\nexport default Comms;","import * as coreModules from '../modules/core.js';\nimport TableRegistry from './TableRegistry.js';\n\nexport default class ModuleBinder {\n\t\n\tconstructor(tabulator, modules){\n\t\tthis.bindStaticFunctionality(tabulator);\n\t\tthis.bindModules(tabulator, coreModules, true);\n\t\t\n\t\tif(modules){\n\t\t\tthis.bindModules(tabulator, modules);\n\t\t}\n\t}\n\t\n\tbindStaticFunctionality(tabulator){\n\t\ttabulator.moduleBindings = {};\n\t\t\n\t\ttabulator.extendModule = function(name, property, values){\n\t\t\tif(tabulator.moduleBindings[name]){\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\n\t\t\t\t\n\t\t\t\tif(source){\n\t\t\t\t\tif(typeof values == \"object\"){\n\t\t\t\t\t\tfor(let key in values){\n\t\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t\t}\n\t\t};\n\t\t\n\t\ttabulator.registerModule = function(modules){\n\t\t\tif(!Array.isArray(modules)){\n\t\t\t\tmodules = [modules];\n\t\t\t}\n\t\t\t\n\t\t\tmodules.forEach((mod) => {\n\t\t\t\ttabulator.registerModuleBinding(mod);\n\t\t\t});\n\t\t};\n\t\t\n\t\ttabulator.registerModuleBinding = function(mod){\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\n\t\t};\n\t\t\n\t\ttabulator.findTable = function(query){\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\n\t\t};\n\t\t\n\t\t//ensure that module are bound to instantiated function\n\t\ttabulator.prototype.bindModules = function(){\n\t\t\tvar orderedStartMods = [],\n\t\t\torderedEndMods = [],\n\t\t\tunOrderedMods = [];\n\t\t\t\n\t\t\tthis.modules = {};\n\t\t\t\n\t\t\tfor(var name in tabulator.moduleBindings){\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\n\t\t\t\tlet module = new mod(this);\n\t\t\t\t\n\t\t\t\tthis.modules[name] = module;\n\t\t\t\t\n\t\t\t\tif(mod.prototype.moduleCore){\n\t\t\t\t\tthis.modulesCore.push(module);\n\t\t\t\t}else{\n\t\t\t\t\tif(mod.moduleInitOrder){\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\n\t\t\t\t\t\t\torderedStartMods.push(module);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\torderedEndMods.push(module);\n\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\tunOrderedMods.push(module);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\t\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\n\t\t};\n\t}\n\t\n\tbindModules(tabulator, modules, core){\n\t\tvar mods = Object.values(modules);\n\t\t\n\t\tif(core){\n\t\t\tmods.forEach((mod) => {\n\t\t\t\tmod.prototype.moduleCore = true;\n\t\t\t});\n\t\t}\n\t\t\n\t\ttabulator.registerModule(mods);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class Alert extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.element = this._createAlertElement();\n\t\tthis.msgElement = this._createMsgElement();\n\t\tthis.type = null;\n \n\t\tthis.element.appendChild(this.msgElement);\n\t}\n \n\t_createAlertElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert\");\n\t\treturn el;\n\t}\n \n\t_createMsgElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\t\treturn el;\n\t}\n \n\t_typeClass(){\n\t\treturn \"tabulator-alert-state-\" + this.type;\n\t}\n \n\talert(content, type = \"msg\"){\n\t\tif(content){\n\t\t\tthis.clear();\n\n\t\t\tthis.dispatch(\"alert-show\", type);\n \n\t\t\tthis.type = type;\n \n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\n \n\t\t\tthis.msgElement.classList.add(this._typeClass());\n \n\t\t\tif(typeof content === \"function\"){\n\t\t\t\tcontent = content();\n\t\t\t}\n \n\t\t\tif(content instanceof HTMLElement){\n\t\t\t\tthis.msgElement.appendChild(content);\n\t\t\t}else{\n\t\t\t\tthis.msgElement.innerHTML = content;\n\t\t\t}\n \n\t\t\tthis.table.element.appendChild(this.element);\n\t\t}\n\t}\n \n\tclear(){\n\t\tthis.dispatch(\"alert-hide\", this.type);\n\n\t\tif(this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n \n\t\tthis.msgElement.classList.remove(this._typeClass());\n\t}\n}","'use strict';\n\nimport defaultOptions from './defaults/options.js';\n\nimport ColumnManager from './ColumnManager.js';\nimport RowManager from './RowManager.js';\nimport FooterManager from './FooterManager.js';\n\nimport InteractionMonitor from './tools/InteractionMonitor.js';\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\nimport DataLoader from './tools/DataLoader.js';\n\nimport ExternalEventBus from './tools/ExternalEventBus.js';\nimport InternalEventBus from './tools/InternalEventBus.js';\n\nimport DeprecationAdvisor from './tools/DeprecationAdvisor.js';\n\nimport TableRegistry from './tools/TableRegistry.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nimport OptionsList from './tools/OptionsList.js';\n\nimport Alert from './tools/Alert.js';\n\nclass Tabulator {\n\t\n\tconstructor(element, options){\n\t\t\n\t\tthis.options = {};\n\t\t\n\t\tthis.columnManager = null; // hold Column Manager\n\t\tthis.rowManager = null; //hold Row Manager\n\t\tthis.footerManager = null; //holder Footer Manager\n\t\tthis.alertManager = null; //hold Alert Manager\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\n\t\tthis.externalEvents = null; //handle external event messaging\n\t\tthis.eventBus = null; //handle internal event messaging\n\t\tthis.interactionMonitor = false; //track user interaction\n\t\tthis.browser = \"\"; //hold current browser type\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\n\t\tthis.rtl = false; //check if the table is in RTL mode\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\n\t\t\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\n\t\tthis.dataLoader = false; //bind component functions\n\t\t\n\t\tthis.modules = {}; //hold all modules bound to this table\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\n\t\t\n\t\tthis.deprecationAdvisor = new DeprecationAdvisor(this);\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.destroyed = false;\n\t\t\n\t\tif(this.initializeElement(element)){\n\t\t\t\n\t\t\tthis.initializeCoreSystems(options);\n\t\t\t\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._create();\n\t\t\t});\n\t\t}\n\t\t\n\t\tTableRegistry.register(this); //register table for inter-device communication\n\t}\n\t\n\tinitializeElement(element){\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\n\t\t\tthis.element = element;\n\t\t\treturn true;\n\t\t}else if(typeof element === \"string\"){\n\t\t\tthis.element = document.querySelector(element);\n\t\t\t\n\t\t\tif(this.element){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tinitializeCoreSystems(options){\n\t\tthis.columnManager = new ColumnManager(this);\n\t\tthis.rowManager = new RowManager(this);\n\t\tthis.footerManager = new FooterManager(this);\n\t\tthis.dataLoader = new DataLoader(this);\n\t\tthis.alertManager = new Alert(this);\n\t\t\n\t\tthis.bindModules();\n\t\t\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options);\n\t\t\n\t\tthis._clearObjectPointers();\n\t\t\n\t\tthis._mapDeprecatedFunctionality();\n\t\t\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\n\t\t\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\n\t\t\n\t\tthis.dataLoader.initialize();\n\t\t// this.columnManager.initialize();\n\t\t// this.rowManager.initialize();\n\t\tthis.footerManager.initialize();\n\t}\n\t\n\t//convert deprecated functionality to new functions\n\t_mapDeprecatedFunctionality(){\n\t\t//all previously deprecated functionality removed in the 5.0 release\n\t}\n\t\n\t_clearSelection(){\n\t\t\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tif (window.getSelection) {\n\t\t\tif (window.getSelection().empty) { // Chrome\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) { // IE?\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\t\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t}\n\t\n\t//create table\n\t_create(){\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\n\t\tthis.eventBus.dispatch(\"table-building\");\n\t\t\n\t\tthis._rtlCheck();\n\t\t\n\t\tthis._buildElement();\n\t\t\n\t\tthis._initializeTable();\n\t\t\n\t\tthis._loadInitialData();\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\n\t}\n\t\n\t_rtlCheck(){\n\t\tvar style = window.getComputedStyle(this.element);\n\t\t\n\t\tswitch(this.options.textDirection){\n\t\t\tcase\"auto\":\n\t\t\t\tif(style.direction !== \"rtl\"){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"rtl\":\n\t\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\t\tthis.rtl = true;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"ltr\":\n\t\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis.rtl = false;\n\t\t}\n\t}\n\t\n\t//clear pointers to objects in default config object\n\t_clearObjectPointers(){\n\t\tthis.options.columns = this.options.columns.slice(0);\n\t\t\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t}\n\t\n\t//build tabulator element\n\t_buildElement(){\n\t\tvar element = this.element,\n\t\toptions = this.options,\n\t\tnewElement;\n\t\t\n\t\tif(element.tagName === \"TABLE\"){\n\t\t\tthis.originalElement = this.element;\n\t\t\tnewElement = document.createElement(\"div\");\n\t\t\t\n\t\t\t//transfer attributes to new element\n\t\t\tvar attributes = element.attributes;\n\t\t\t\n\t\t\t// loop through attributes and apply them on div\n\t\t\tfor(var i in attributes){\n\t\t\t\tif(typeof attributes[i] == \"object\"){\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// replace table with div element\n\t\t\telement.parentNode.replaceChild(newElement, element);\n\t\t\t\n\t\t\tthis.element = element = newElement;\n\t\t}\n\t\t\n\t\telement.classList.add(\"tabulator\");\n\t\telement.setAttribute(\"role\", \"grid\");\n\t\t\n\t\t//empty element\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\t//set table height\n\t\tif(options.height){\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\t\telement.style.height = options.height;\n\t\t}\n\t\t\n\t\t//set table min height\n\t\tif(options.minHeight !== false){\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\t\telement.style.minHeight = options.minHeight;\n\t\t}\n\t\t\n\t\t//set table maxHeight\n\t\tif(options.maxHeight !== false){\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\t\telement.style.maxHeight = options.maxHeight;\n\t\t}\n\t}\n\t\n\t//initialize core systems and modules\n\t_initializeTable(){\n\t\tvar element = this.element,\n\t\toptions = this.options;\n\t\t\n\t\tthis.interactionMonitor.initialize();\n\t\t\n\t\tthis.columnManager.initialize();\n\t\tthis.rowManager.initialize();\n\t\t\n\t\tthis._detectBrowser();\n\t\t\n\t\t//initialize core modules\n\t\tthis.modulesCore.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\t//build table elements\n\t\telement.appendChild(this.columnManager.getElement());\n\t\telement.appendChild(this.rowManager.getElement());\n\t\t\n\t\tif(options.footerElement){\n\t\t\tthis.footerManager.activate();\n\t\t}\n\t\t\n\t\tif(options.autoColumns && options.data){\n\t\t\t\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\t\t\n\t\t//initialize regular modules\n\t\tthis.modulesRegular.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\tthis.columnManager.setColumns(options.columns);\n\t\t\n\t\tthis.eventBus.dispatch(\"table-built\");\n\t}\n\t\n\t_loadInitialData(){\n\t\tthis.dataLoader.load(this.options.data);\n\t\tthis.columnManager.verticalAlignHeaders();\n\t}\n\t\n\t//deconstructor\n\tdestroy(){\n\t\tvar element = this.element;\n\t\t\n\t\tthis.destroyed = true;\n\t\t\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\n\t\t\n\t\tthis.eventBus.dispatch(\"table-destroy\");\n\t\t\n\t\t//clear row data\n\t\tthis.rowManager.destroy();\n\t\t\n\t\t//clear DOM\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\telement.classList.remove(\"tabulator\");\n\n\t\tthis.externalEvents.dispatch(\"tableDestroyed\");\n\t}\n\t\n\t_detectBrowser(){\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\n\t\t\n\t\tif(ua.indexOf(\"Trident\") > -1){\n\t\t\tthis.browser = \"ie\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\n\t\t\tthis.browser = \"edge\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\n\t\t\tthis.browser = \"firefox\";\n\t\t\tthis.browserSlow = false;\n\t\t}else if(ua.indexOf(\"Mac OS\") > -1){\n\t\t\tthis.browser = \"safari\";\n\t\t\tthis.browserSlow = false;\n\t\t}else{\n\t\t\tthis.browser = \"other\";\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t\t\n\t\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.slice(0,4));\n\t}\n\t\n\tinitGuard(func, msg){\n\t\tvar stack, line;\n\t\t\n\t\tif(this.options.debugInitialization && !this.initialized){\n\t\t\tif(!func){\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\n\t\t\t\t\n\t\t\t\tif(line[0] == \" \"){\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\n\t\t\t\t}else{\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn(\"Table Not Initialized - Calling the \" + func + \" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function.\" + (msg ? \" \" + msg : \"\"));\n\t\t}\n\t\t\n\t\treturn this.initialized;\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\t//block table redrawing\n\tblockRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocking\");\n\t\t\n\t\tthis.rowManager.blockRedraw();\n\t\tthis.columnManager.blockRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocked\");\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-restoring\");\n\n\t\tthis.rowManager.restoreRedraw();\n\t\tthis.columnManager.restoreRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-restored\");\n\t}\n\t\n\t//load data\n\tsetData(data, params, config){\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, false);\n\t}\n\t\n\t//clear data\n\tclearData(){\n\t\tthis.initGuard();\n\t\t\n\t\tthis.dataLoader.blockActiveLoad();\n\t\tthis.rowManager.clearData();\n\t}\n\t\n\t//get table data array\n\tgetData(active){\n\t\treturn this.rowManager.getData(active);\n\t}\n\t\n\t//get table data array count\n\tgetDataCount(active){\n\t\treturn this.rowManager.getDataCount(active);\n\t}\n\t\n\t//replace data, keeping table in position with same sort\n\treplaceData(data, params, config){\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, true, true);\n\t}\n\t\n\t//update table data\n\tupdateData(data){\n\t\tvar responses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\tresponses++;\n\t\t\t\t\t\t\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\t\treject(\"Update Error - Unable to update row\", item, e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treject(\"Update Error - Unable to find row\", item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\taddData(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data){\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\n\t\t\t\t\t.then((rows) => {\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\n\t\t\t\t\t\trows.forEach(function(row){\n\t\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\tresolve(output);\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//update table data\n\tupdateOrAddData(data){\n\t\tvar rows = [],\n\t\tresponses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tresponses++;\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.rowManager.addRows(item)\n\t\t\t\t\t\t\t.then((newRows)=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//get row object\n\tgetRow(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//get row object\n\tgetRowFromPosition(position){\n\t\tvar row = this.rowManager.getRowFromPosition(position);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//delete row from table\n\tdeleteRow(index){\n\t\tvar foundRows = [];\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(!Array.isArray(index)){\n\t\t\tindex = [index];\n\t\t}\n\t\t\n\t\t//find matching rows\n\t\tfor(let item of index){\n\t\t\tlet row = this.rowManager.findRow(item, true);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\tfoundRows.push(row);\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort((a, b) => {\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\t\t\n\t\t//delete rows\n\t\tfoundRows.forEach((row) =>{\n\t\t\trow.delete();\n\t\t});\n\t\t\n\t\tthis.rowManager.reRenderInPosition();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\t//add row to table\n\taddRow(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\treturn this.rowManager.addRows(data, pos, index, true)\n\t\t\t.then((rows)=>{\n\t\t\t\treturn rows[0].getComponent();\n\t\t\t});\n\t}\n\t\n\t//update a row if it exists otherwise create it\n\tupdateOrAddRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn row.getComponent();\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn this.rowManager.addRows(data)\n\t\t\t\t.then((rows)=>{\n\t\t\t\t\treturn rows[0].getComponent();\n\t\t\t\t});\n\t\t}\n\t}\n\t\n\t//update row data\n\tupdateRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn Promise.resolve(row.getComponent());\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\n\t\t}\n\t}\n\t\n\t//scroll to row in DOM\n\tscrollToRow(index, position, ifVisible){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible);\n\t\t}else{\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\n\t\t}\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tvar fromRow = this.rowManager.findRow(from);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromRow){\n\t\t\tfromRow.moveToRow(to, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t}\n\t\n\tgetRows(active){\n\t\treturn this.rowManager.getComponents(active);\t\n\t}\n\t\n\t//get position of row in table\n\tgetRowPosition(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getPosition();\n\t\t}else{\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/////////////// Column Functions ///////////////\n\tsetColumns(definition){\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\n\t\t\n\t\tthis.columnManager.setColumns(definition);\n\t}\n\t\n\tgetColumns(structured){\n\t\treturn this.columnManager.getComponents(structured);\n\t}\n\t\n\tgetColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tif(column){\n\t\t\treturn column.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetColumnDefinitions(){\n\t\treturn this.columnManager.getDefinitionTree();\n\t}\n\t\n\tshowColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.show();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\thideColumn(field){\n\t\tvar column = this.columnManager.findColumn(field); \n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.hide();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\ttoggleColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tif(column.visible){\n\t\t\t\tcolumn.hide();\n\t\t\t}else{\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\taddColumn(definition, before, field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.columnManager.addColumn(definition, before, column)\n\t\t\t.then((column) => {\n\t\t\t\treturn column.getComponent();\n\t\t\t});\n\t}\n\t\n\tdeleteColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.delete();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tupdateColumnDefinition(field, definition){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.updateDefinition(definition);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tvar fromColumn = this.columnManager.findColumn(from),\n\t\ttoColumn = this.columnManager.findColumn(to);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromColumn){\n\t\t\tif(toColumn){\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t\t}\n\t}\n\t\n\t//scroll to column in DOM\n\tscrollToColumn(field, position, ifVisible){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this.columnManager.findColumn(field);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//////////// General Public Functions ////////////\n\t//redraw list without updating data\n\tredraw(force){\n\t\tthis.initGuard();\n\n\t\tthis.columnManager.redraw(force);\n\t\tthis.rowManager.redraw(force);\n\t}\n\t\n\tsetHeight(height){\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.initializeRenderer();\n\t\tthis.rowManager.redraw(true);\n\t}\n\t\n\t//////////////////// Event Bus ///////////////////\n\t\n\ton(key, callback){\n\t\tthis.externalEvents.subscribe(key, callback);\n\t}\n\t\n\toff(key, callback){\n\t\tthis.externalEvents.unsubscribe(key, callback);\n\t}\n\t\n\tdispatchEvent(){\n\t\tvar args = Array.from(arguments);\n\t\targs.shift();\n\t\t\n\t\tthis.externalEvents.dispatch(...arguments);\n\t}\n\n\t//////////////////// Alerts ///////////////////\n\n\talert(contents, type){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.alert(contents, type);\n\t}\n\n\tclearAlert(){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.clear();\n\t}\n\t\n\t////////////// Extension Management //////////////\n\tmodExists(plugin, required){\n\t\tif(this.modules[plugin]){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tif(required){\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule(key){\n\t\tvar mod = this.modules[key];\n\t\t\n\t\tif(!mod){\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\n\t\t}\n\t\t\n\t\treturn mod;\n\t}\n}\n\n//default setup options\nTabulator.defaultOptions = defaultOptions;\n\n//bind modules and static functionality\nnew ModuleBinder(Tabulator);\n\nexport default Tabulator;\n","//tabulator with all modules installed\nimport {default as Tabulator} from './Tabulator.js';\nimport * as modules from '../core/modules/optional.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nclass TabulatorFull extends Tabulator {}\n\n//bind modules and static functionality\nnew ModuleBinder(TabulatorFull, modules);\n\nexport default TabulatorFull;\n","export default class PseudoRow {\n\n\tconstructor (type){\n\t\tthis.type = type;\n\t\tthis.element = this._createElement();\n\t}\n\n\t_createElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-row\");\n\t\treturn el;\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tgetComponent(){\n\t\treturn false;\n\t}\n\n\tgetData(){\n\t\treturn {};\n\t}\n\n\tgetHeight(){\n\t\treturn this.element.outerHeight;\n\t}\n\n\tinitialize(){}\n\n\treinitialize(){}\n\n\tnormalizeHeight(){}\n\n\tgenerateCells(){}\n\n\treinitializeHeight(){}\n\n\tcalcHeight(){}\n\n\tsetCellHeight(){}\n\n\tclearCellHeight(){}\n\n\trendered(){}\n}"],"names":["generateParamsList","defaultURLGenerator","defaultOptions","List","Edit","html","textarea","tickCross","datetime","star","progress","csv","json","array","Popup","number","date","time","RendererVirtualDomHorizontal","RendererBasicHorizontal","RendererVirtualDomVertical","RendererBasicVertical","InteractionMonitor"],"mappings":"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"} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/dist/js/tabulator_esm.min.js b/tmp/tabulator-5.6.1/dist/js/tabulator_esm.min.js deleted file mode 100644 index 9ee9214..0000000 --- a/tmp/tabulator-5.6.1/dist/js/tabulator_esm.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v5.6.1 (c) Oliver Folkerd 2024 */ -class e{constructor(e){this.table=e}reloadData(e,t,i){return this.table.dataLoader.load(e,void 0,void 0,void 0,t,i)}langText(){return this.table.modules.localize.getText(...arguments)}langBind(){return this.table.modules.localize.bind(...arguments)}langLocale(){return this.table.modules.localize.getLocale(...arguments)}commsConnections(){return this.table.modules.comms.getConnections(...arguments)}commsSend(){return this.table.modules.comms.send(...arguments)}layoutMode(){return this.table.modules.layout.getMode()}layoutRefresh(e){return this.table.modules.layout.layout(e)}subscribe(){return this.table.eventBus.subscribe(...arguments)}unsubscribe(){return this.table.eventBus.unsubscribe(...arguments)}subscribed(e){return this.table.eventBus.subscribed(e)}subscriptionChange(){return this.table.eventBus.subscriptionChange(...arguments)}dispatch(){return this.table.eventBus.dispatch(...arguments)}chain(){return this.table.eventBus.chain(...arguments)}confirm(){return this.table.eventBus.confirm(...arguments)}dispatchExternal(){return this.table.externalEvents.dispatch(...arguments)}subscribedExternal(e){return this.table.externalEvents.subscribed(e)}subscriptionChangeExternal(){return this.table.externalEvents.subscriptionChange(...arguments)}options(e){return this.table.options[e]}setOption(e,t){return void 0!==t&&(this.table.options[e]=t),this.table.options[e]}deprecationCheck(e,t,i){return this.table.deprecationAdvisor.check(e,t,i)}deprecationCheckMsg(e,t){return this.table.deprecationAdvisor.checkMsg(e,t)}deprecationMsg(e){return this.table.deprecationAdvisor.msg(e)}module(e){return this.table.module(e)}}class t{static elVisible(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)}static elOffset(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}}static retrieveNestedData(e,t,i){var s,o=e?t.split(e):[t],n=o.length;for(let e=0;ee.subject===l)),r>-1?t[n]=i[r].copy:(a=Object.assign(Array.isArray(l)?[]:{},l),i.unshift({subject:l,copy:a}),t[n]=this.deepClone(l,a,i)))}return t}}class i extends e{constructor(e,t,i){super(e),this.element=t,this.container=this._lookupContainer(),this.parent=i,this.reversedX=!1,this.childPopup=null,this.blurable=!1,this.blurCallback=null,this.blurEventsBound=!1,this.renderedCallback=null,this.visible=!1,this.hideable=!0,this.element.classList.add("tabulator-popup-container"),this.blurEvent=this.hide.bind(this,!1),this.escEvent=this._escapeCheck.bind(this),this.destroyBinding=this.tableDestroyed.bind(this),this.destroyed=!1}tableDestroyed(){this.destroyed=!0,this.hide(!0)}_lookupContainer(){var e=this.table.options.popupContainer;return"string"==typeof e?(e=document.querySelector(e))||console.warn("Menu Error - no container element found matching selector:",this.table.options.popupContainer,"(defaulting to document body)"):!0===e&&(e=this.table.element),e&&!this._checkContainerIsParent(e)&&(e=!1,console.warn("Menu Error - container element does not contain this table:",this.table.options.popupContainer,"(defaulting to document body)")),e||(e=document.body),e}_checkContainerIsParent(e,t=this.table.element){return e===t||!!t.parentNode&&this._checkContainerIsParent(e,t.parentNode)}renderCallback(e){this.renderedCallback=e}containerEventCoords(e){var i=!(e instanceof MouseEvent),s=i?e.touches[0].pageX:e.pageX,o=i?e.touches[0].pageY:e.pageY;if(this.container!==document.body){let e=t.elOffset(this.container);s-=e.left,o-=e.top}return{x:s,y:o}}elementPositionCoords(e,i="right"){var s,o,n,r=t.elOffset(e);switch(this.container!==document.body&&(s=t.elOffset(this.container),r.left-=s.left,r.top-=s.top),i){case"right":o=r.left+e.offsetWidth,n=r.top-1;break;case"bottom":o=r.left,n=r.top+e.offsetHeight;break;case"left":o=r.left,n=r.top-1;break;case"top":o=r.left,n=r.top;break;case"center":o=r.left+e.offsetWidth/2,n=r.top+e.offsetHeight/2}return{x:o,y:n,offset:r}}show(e,t){var i,s,o,n,r;return this.destroyed||this.table.destroyed||(e instanceof HTMLElement?(o=e,n=(r=this.elementPositionCoords(e,t)).offset,i=r.x,s=r.y):"number"==typeof e?(n={top:0,left:0},i=e,s=t):(i=(r=this.containerEventCoords(e)).x,s=r.y,this.reversedX=!1),this.element.style.top=s+"px",this.element.style.left=i+"px",this.container.appendChild(this.element),"function"==typeof this.renderedCallback&&this.renderedCallback(),this._fitToScreen(i,s,o,n,t),this.visible=!0,this.subscribe("table-destroy",this.destroyBinding),this.element.addEventListener("mousedown",(e=>{e.stopPropagation()}))),this}_fitToScreen(e,t,i,s,o){var n=this.container===document.body?document.documentElement.scrollTop:this.container.scrollTop;if((e+this.element.offsetWidth>=this.container.offsetWidth||this.reversedX)&&(this.element.style.left="",this.element.style.right=i?this.container.offsetWidth-s.left+"px":this.container.offsetWidth-e+"px",this.reversedX=!0),t+this.element.offsetHeight>Math.max(this.container.offsetHeight,n?this.container.scrollHeight:0))if(i)if("bottom"===o)this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight-i.offsetHeight-1+"px";else this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight+i.offsetHeight+1+"px";else this.element.style.top=parseInt(this.element.style.top)-this.element.offsetHeight+"px"}isVisible(){return this.visible}hideOnBlur(e){return this.blurable=!0,this.visible&&(setTimeout((()=>{this.visible&&(this.table.rowManager.element.addEventListener("scroll",this.blurEvent),this.subscribe("cell-editing",this.blurEvent),document.body.addEventListener("click",this.blurEvent),document.body.addEventListener("contextmenu",this.blurEvent),document.body.addEventListener("mousedown",this.blurEvent),window.addEventListener("resize",this.blurEvent),document.body.addEventListener("keydown",this.escEvent),this.blurEventsBound=!0)}),100),this.blurCallback=e),this}_escapeCheck(e){27==e.keyCode&&this.hide()}blockHide(){this.hideable=!1}restoreHide(){this.hideable=!0}hide(e=!1){return this.visible&&this.hideable&&(this.blurable&&this.blurEventsBound&&(document.body.removeEventListener("keydown",this.escEvent),document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),document.body.removeEventListener("mousedown",this.blurEvent),window.removeEventListener("resize",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent),this.unsubscribe("cell-editing",this.blurEvent),this.blurEventsBound=!1),this.childPopup&&this.childPopup.hide(),this.parent&&(this.parent.childPopup=null),this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.visible=!1,this.blurCallback&&!e&&this.blurCallback(),this.unsubscribe("table-destroy",this.destroyBinding)),this}child(e){return this.childPopup&&this.childPopup.hide(),this.childPopup=new i(this.table,e,this),this.childPopup}}class s extends e{constructor(e,t){super(e),this._handler=null}initialize(){}registerTableOption(e,t){this.table.optionsList.register(e,t)}registerColumnOption(e,t){this.table.columnManager.optionsList.register(e,t)}registerTableFunction(e,t){void 0===this.table[e]?this.table[e]=(...i)=>(this.table.initGuard(e),t(...i)):console.warn("Unable to bind table function, name already in use",e)}registerComponentFunction(e,t,i){return this.table.componentFunctionBinder.bind(e,t,i)}registerDataHandler(e,t){this.table.rowManager.registerDataPipelineHandler(e,t),this._handler=e}registerDisplayHandler(e,t){this.table.rowManager.registerDisplayPipelineHandler(e,t),this._handler=e}displayRows(e){var t,i=this.table.rowManager.displayRows.length-1;if(this._handler&&(t=this.table.rowManager.displayPipeline.findIndex((e=>e.handler===this._handler)))>-1&&(i=t),e&&(i+=e),this._handler)return i>-1?this.table.rowManager.getDisplayRows(i):this.activeRows()}activeRows(){return this.table.rowManager.activeRows}refreshData(e,t){t||(t=this._handler),t&&this.table.rowManager.refreshActiveData(t,!1,e)}footerAppend(e){return this.table.footerManager.append(e)}footerPrepend(e){return this.table.footerManager.prepend(e)}footerRemove(e){return this.table.footerManager.remove(e)}popup(e,t){return new i(this.table,e,t)}alert(e,t){return this.table.alertManager.alert(e,t)}clearAlert(){return this.table.alertManager.clear()}}class o extends s{constructor(e){super(e),this.allowedTypes=["","data","download","clipboard","print","htmlOutput"],this.registerColumnOption("accessor"),this.registerColumnOption("accessorParams"),this.registerColumnOption("accessorData"),this.registerColumnOption("accessorDataParams"),this.registerColumnOption("accessorDownload"),this.registerColumnOption("accessorDownloadParams"),this.registerColumnOption("accessorClipboard"),this.registerColumnOption("accessorClipboardParams"),this.registerColumnOption("accessorPrint"),this.registerColumnOption("accessorPrintParams"),this.registerColumnOption("accessorHtmlOutput"),this.registerColumnOption("accessorHtmlOutputParams")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-retrieve",this.transformRow.bind(this))}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="accessor"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupAccessor(e.definition[n]))&&(t=!0,i[n]={accessor:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.accessor=i)}lookupAccessor(e){var t=!1;switch(typeof e){case"string":o.accessors[e]?t=o.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,i){var s="accessor"+(i.charAt(0).toUpperCase()+i.slice(1)),o=e.getComponent(),n=t.deepClone(e.data||{});return this.table.columnManager.traverse((function(e){var t,r,a,l;e.modules.accessor&&(r=e.modules.accessor[s]||e.modules.accessor.accessor||!1)&&"undefined"!=(t=e.getFieldValue(n))&&(l=e.getComponent(),a="function"==typeof r.params?r.params(t,n,i,l,o):r.params,e.setFieldValue(n,r.accessor(t,n,i,a,l,o)))})),n}}o.moduleName="accessor",o.accessors={};function n(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(n(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(n(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}function r(e){var t=n(e),i=[];return t.forEach((function(e){i.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))})),i.join("&")}function a(e,t,i){return e&&i&&Object.keys(i).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+r(i))),e}function l(e,t){var i=[];if(t=t||"",Array.isArray(e))e.forEach(((e,s)=>{i=i.concat(l(e,t?t+"["+s+"]":s))}));else if("object"==typeof e)for(var s in e)i=i.concat(l(e[s],t?t+"["+s+"]":s));else i.push({key:t,value:e});return i}var h={json:{headers:{"Content-Type":"application/json"},body:function(e,t,i){return JSON.stringify(i)}},form:{headers:{},body:function(e,t,i){var s=l(i),o=new FormData;return s.forEach((function(e){o.append(e.key,e.value)})),o}}};class d extends s{constructor(e){super(e),this.config={},this.url="",this.urlGenerator=!1,this.params=!1,this.loaderPromise=!1,this.registerTableOption("ajaxURL",!1),this.registerTableOption("ajaxURLGenerator",!1),this.registerTableOption("ajaxParams",{}),this.registerTableOption("ajaxConfig","get"),this.registerTableOption("ajaxContentType","form"),this.registerTableOption("ajaxRequestFunc",!1),this.registerTableOption("ajaxRequesting",(function(){})),this.registerTableOption("ajaxResponse",!1),this.contentTypeFormatters=d.contentTypeFormatters}initialize(){this.loaderPromise=this.table.options.ajaxRequestFunc||d.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||d.defaultURLGenerator,this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.setDefaultConfig(this.table.options.ajaxConfig),this.registerTableFunction("getAjaxUrl",this.getUrl.bind(this)),this.subscribe("data-loading",this.requestDataCheck.bind(this)),this.subscribe("data-params",this.requestParams.bind(this)),this.subscribe("data-load",this.requestData.bind(this))}requestParams(e,t,i,s){var o=this.table.options.ajaxParams;return o&&("function"==typeof o&&(o=o.call(this.table)),s=Object.assign(Object.assign({},o),s)),s}requestDataCheck(e,t,i,s){return!((e||!this.url)&&"string"!=typeof e)}requestData(e,t,i,s,o){var n;return!o&&this.requestDataCheck(e)?(e&&this.setUrl(e),n=this.generateConfig(i),this.sendRequest(this.url,t,n)):o}setDefaultConfig(e={}){this.config=Object.assign({},d.defaultConfig),"string"==typeof e?this.config.method=e:Object.assign(this.config,e)}generateConfig(e={}){var t=Object.assign({},this.config);return"string"==typeof e?t.method=e:Object.assign(t,e),t}setUrl(e){this.url=e}getUrl(){return this.url}sendRequest(e,t,i){return!1!==this.table.options.ajaxRequesting.call(this.table,e,t)?this.loaderPromise(e,i,t).then((i=>(this.table.options.ajaxResponse&&(i=this.table.options.ajaxResponse.call(this.table,e,t,i)),i))):Promise.reject()}}d.moduleName="ajax",d.defaultConfig={method:"GET"},d.defaultURLGenerator=a,d.defaultLoaderPromise=function(e,t,i){var s;return new Promise(((o,n)=>{if(e=this.urlGenerator.call(this.table,e,t,i),"GET"!=t.method.toUpperCase())if(s="object"==typeof this.table.options.ajaxContentType?this.table.options.ajaxContentType:this.contentTypeFormatters[this.table.options.ajaxContentType]){for(var r in s.headers)t.headers||(t.headers={}),void 0===t.headers[r]&&(t.headers[r]=s.headers[r]);t.body=s.body.call(this,e,t,i)}else console.warn("Ajax Error - Invalid ajaxContentType value:",this.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers.Origin&&(t.headers.Origin=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then((e=>{e.ok?e.json().then((e=>{o(e)})).catch((e=>{n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)})):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))})).catch((e=>{console.error("Ajax Load Error - Connection Error: ",e),n(e)}))):(console.warn("Ajax Load Error - No URL Set"),o([]))}))},d.contentTypeFormatters=h;class c extends s{constructor(e){super(e),this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0,this.registerTableOption("clipboard",!1),this.registerTableOption("clipboardCopyStyled",!0),this.registerTableOption("clipboardCopyConfig",!1),this.registerTableOption("clipboardCopyFormatter",!1),this.registerTableOption("clipboardCopyRowRange","active"),this.registerTableOption("clipboardPasteParser","table"),this.registerTableOption("clipboardPasteAction","insert"),this.registerColumnOption("clipboard"),this.registerColumnOption("titleClipboard")}initialize(){this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(e=>{var t,i,s;this.blocked||(e.preventDefault(),this.customSelection?(t=this.customSelection,this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t))):(s=this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig,this.table.options.clipboardCopyStyled,this.rowRange,"clipboard"),t=(i=this.table.modules.export.generateHTMLTable(s))?this.generatePlainContent(s):"",this.table.options.clipboardCopyFormatter&&(t=this.table.options.clipboardCopyFormatter("plain",t),i=this.table.options.clipboardCopyFormatter("html",i))),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",t):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",t),i&&e.clipboardData.setData("text/html",i)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",t),i&&e.originalEvent.clipboardData.setData("text/html",i)),this.dispatchExternal("clipboardCopied",t,i),this.reset())})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(e=>{this.paste(e)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction),this.registerTableFunction("copyToClipboard",this.copy.bind(this))}reset(){this.blocked=!0,this.customSelection=!1}generatePlainContent(e){var t=[];return e.forEach((e=>{var i=[];e.columns.forEach((t=>{var s="";if(t)if("group"===e.type&&(t.value=t.component.getKey()),null===t.value)s="";else switch(typeof t.value){case"object":s=JSON.stringify(t.value);break;case"undefined":s="";break;default:s=t.value}i.push(s)})),t.push(i.join("\t"))})),t.join("\n")}copy(e,t){var i,s;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((e=document.createRange()).selectNodeContents(this.table.element),(i=window.getSelection()).toString()&&t&&(this.customSelection=i.toString()),i.removeAllRanges(),i.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((s=document.body.createTextRange()).moveToElementText(this.table.element),s.select()),document.execCommand("copy"),i&&i.removeAllRanges())}setPasteAction(e){switch(typeof e){case"string":this.pasteAction=c.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}}setPasteParser(e){switch(typeof e){case"string":this.pasteParser=c.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}}paste(e){var t,i,s;this.checkPasteOrigin(e)&&(t=this.getPasteData(e),(i=this.pasteParser.call(this,t))?(e.preventDefault(),this.table.modExists("mutator")&&(i=this.mutateData(i)),s=this.pasteAction.call(this,i),this.dispatchExternal("clipboardPasted",t,i,s)):this.dispatchExternal("clipboardPasteError",t))}mutateData(e){var t=[];return Array.isArray(e)?e.forEach((e=>{t.push(this.table.modules.mutator.transformRow(e,"clipboard"))})):t=e,t}checkPasteOrigin(e){var t=!0;return!this.confirm("clipboard-paste",[e])&&["DIV","SPAN"].includes(e.target.tagName)||(t=!1),t}getPasteData(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t}}c.moduleName="clipboard",c.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)},range:function(e){var t,i,s,o,n,r=[],a=this.table.modules.selectRange.activeRange,l=!1;return n=e.length,a&&(i=(t=a.getBounds()).start,t.start===t.end&&(l=!0),i&&(s=(r=this.table.rowManager.activeRows.slice()).indexOf(i.row),o=l?e.length:r.indexOf(t.end.row)-s+1,s>-1&&(this.table.blockRedraw(),(r=r.slice(s,s+o)).forEach(((t,i)=>{t.updateData(e[i%n])})),this.table.restoreRedraw()))),r}},c.pasteParsers={table:function(e){var t=[],i=!0,s=this.table.columnManager.columns,o=[],n=[];return(e=e.split("\n")).forEach((function(e){t.push(e.split("\t"))})),!(!t.length||1===t.length&&t[0].length<2)&&(t[0].forEach((function(e){var t=s.find((function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()}));t?o.push(t):i=!1})),i||(i=!0,o=[],t[0].forEach((function(e){var t=s.find((function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()}));t?o.push(t):i=!1})),i||(o=this.table.columnManager.columnsByIndex)),i&&t.shift(),t.forEach((function(e){var t={};e.forEach((function(e,i){o[i]&&(t[o[i].field]=e)})),n.push(t)})),n)},range:function(e){var t,i,s,o,n,r=[],a=[],l=this.table.modules.selectRange.activeRange,h=!1;return!!(l&&(i=(t=l.getBounds()).start,t.start===t.end&&(h=!0),i&&((e=e.split("\n")).forEach((function(e){r.push(e.split("\t"))})),r.length&&(n=(o=this.table.columnManager.getVisibleColumnsByIndex()).indexOf(i.column))>-1)))&&(s=h?r[0].length:o.indexOf(t.end.column)-n+1,o=o.slice(n,n+s),r.forEach((e=>{var t={},i=e.length;o.forEach((function(s,o){t[s.field]=e[o%i]})),a.push(t)})),a)}};class u{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getTable(){return this._row.table}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}_getSelf(){return this._row}}class m{constructor(e){return this._cell=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._cell.table.componentFunctionBinder.handle("cell",e._cell,t)}})}getValue(){return this._cell.getValue()}getOldValue(){return this._cell.getOldValue()}getInitialValue(){return this._cell.initialValue}getElement(){return this._cell.getElement()}getRow(){return this._cell.row.getComponent()}getData(e){return this._cell.row.getData(e)}getType(){return"cell"}getField(){return this._cell.column.getField()}getColumn(){return this._cell.column.getComponent()}setValue(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)}restoreOldValue(){this._cell.setValueActual(this._cell.getOldValue())}restoreInitialValue(){this._cell.setValueActual(this._cell.initialValue)}checkHeight(){this._cell.checkHeight()}getTable(){return this._cell.table}_getSelf(){return this._cell}}class p extends e{constructor(e,t){super(e.table),this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.initialValue,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.loaded=!1,this.build()}build(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value}generateElement(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell")}_configureCell(){var e=this.element,t=this.column.getField();(e.style.textAlign=this.column.hozAlign,this.column.vertAlign&&(e.style.display="inline-flex",e.style.alignItems={top:"flex-start",bottom:"flex-end",middle:"center"}[this.column.vertAlign]||"",this.column.hozAlign&&(e.style.justifyContent={left:"flex-start",right:"flex-end",center:"center"}[this.column.hozAlign]||"")),t&&e.setAttribute("tabulator-field",t),this.column.definition.cssClass)&&this.column.definition.cssClass.split(" ").forEach((t=>{e.classList.add(t)}));this.dispatch("cell-init",this),this.column.visible||this.hide()}_generateContents(){var e;switch(typeof(e=this.chain("cell-format",this,null,(()=>this.element.innerHTML=this.value)))){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":this.element.innerHTML="";break;default:this.element.innerHTML=e}}cellRendered(){this.dispatch("cell-rendered",this)}getElement(e){return this.loaded||(this.loaded=!0,e||this.layoutElement()),this.element}getValue(){return this.value}getOldValue(){return this.oldValue}setValue(e,t,i){this.setValueProcessData(e,t,i)&&(this.dispatch("cell-value-updated",this),this.cellRendered(),this.column.definition.cellEdited&&this.column.definition.cellEdited.call(this.table,this.getComponent()),this.dispatchExternal("cellEdited",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()))}setValueProcessData(e,t,i){var s=!1;return(this.value!==e||i)&&(s=!0,t&&(e=this.chain("cell-value-changing",[this,e],null,e))),this.setValueActual(e),s&&this.dispatch("cell-value-changed",this),s}setValueActual(e){this.oldValue=this.value,this.value=e,this.dispatch("cell-value-save-before",this),this.column.setFieldValue(this.row.data,e),this.dispatch("cell-value-save-after",this),this.loaded&&this.layoutElement()}layoutElement(){this._generateContents(),this.dispatch("cell-layout",this)}setWidth(){this.width=this.column.width,this.element.style.width=this.column.widthStyled}clearWidth(){this.width="",this.element.style.width=""}getWidth(){return this.width||this.element.offsetWidth}setMinWidth(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled}setMaxWidth(){this.maxWidth=this.column.maxWidth,this.element.style.maxWidth=this.column.maxWidthStyled}checkHeight(){this.row.reinitializeHeight()}clearHeight(){this.element.style.height="",this.height=null,this.dispatch("cell-height",this,"")}setHeight(){this.height=this.row.height,this.element.style.height=this.row.heightStyled,this.dispatch("cell-height",this,this.row.heightStyled)}getHeight(){return this.height||this.element.offsetHeight}show(){this.element.style.display=this.column.vertAlign?"inline-flex":""}hide(){this.element.style.display="none"}delete(){this.dispatch("cell-delete",this),!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}}getIndex(){return this.row.getCellIndex(this)}getComponent(){return this.component||(this.component=new m(this)),this.component}}class g{constructor(e){return this._column=e,this.type="ColumnComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._column.table.componentFunctionBinder.handle("column",e._column,t)}})}getElement(){return this._column.getElement()}getDefinition(){return this._column.getDefinition()}getField(){return this._column.getField()}getTitleDownload(){return this._column.getTitleDownload()}getCells(){var e=[];return this._column.cells.forEach((function(t){e.push(t.getComponent())})),e}isVisible(){return this._column.visible}show(){this._column.isGroup?this._column.columns.forEach((function(e){e.show()})):this._column.show()}hide(){this._column.isGroup?this._column.columns.forEach((function(e){e.hide()})):this._column.hide()}toggle(){this._column.visible?this.hide():this.show()}delete(){return this._column.delete()}getSubColumns(){var e=[];return this._column.columns.length&&this._column.columns.forEach((function(t){e.push(t.getComponent())})),e}getParentColumn(){return this._column.parent instanceof f&&this._column.parent.getComponent()}_getSelf(){return this._column}scrollTo(e,t){return this._column.table.columnManager.scrollToColumn(this._column,e,t)}getTable(){return this._column.table}move(e,t){var i=this._column.table.columnManager.findColumn(e);i?this._column.table.columnManager.moveColumn(this._column,i,t):console.warn("Move Error - No matching column found:",i)}getNextColumn(){var e=this._column.nextColumn();return!!e&&e.getComponent()}getPrevColumn(){var e=this._column.prevColumn();return!!e&&e.getComponent()}updateDefinition(e){return this._column.updateDefinition(e)}getWidth(){return this._column.getWidth()}setWidth(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.columnManager.rerenderColumns(!0),t}}var b={title:void 0,field:void 0,columns:void 0,visible:void 0,hozAlign:void 0,vertAlign:void 0,width:void 0,minWidth:40,maxWidth:void 0,maxInitialWidth:void 0,cssClass:void 0,variableHeight:void 0,headerVertical:void 0,headerHozAlign:void 0,headerWordWrap:!1,editableTitle:void 0};class f extends e{constructor(e,t){super(t.table),this.definition=e,this.parent=t,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleHolderElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleDownload=null,this.titleFormatterRendered=!1,this.mapDefinitions(),this.setField(this.definition.field),this.modules={},this.width=null,this.widthStyled="",this.maxWidth=null,this.maxWidthStyled="",this.maxInitialWidth=null,this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this.definition.columns?(this.isGroup=!0,this.definition.columns.forEach(((e,t)=>{var i=new f(e,this);this.attachColumn(i)})),this.checkColumnVisibility()):t.registerColumnField(this),this._initialize()}createElement(){var e=document.createElement("div");switch(e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),this.table.options.columnHeaderVertAlign){case"middle":e.style.justifyContent="center";break;case"bottom":e.style.justifyContent="flex-end"}return e}createGroupElement(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e}mapDefinitions(){var e=this.table.options.columnDefaults;if(e)for(let t in e)void 0===this.definition[t]&&(this.definition[t]=e[t]);this.definition=this.table.columnManager.optionsList.generate(f.defaultOptionList,this.definition)}checkDefinition(){Object.keys(this.definition).forEach((e=>{-1===f.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(this.field||this.definition.title)+"' column:",e)}))}setField(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData}registerColumnPosition(e){this.parent.registerColumnPosition(e)}registerColumnField(e){this.parent.registerColumnField(e)}reRegisterPosition(){this.isGroup?this.columns.forEach((function(e){e.reRegisterPosition()})):this.registerColumnPosition(this)}_initialize(){for(var e=this.definition;this.element.firstChild;)this.element.removeChild(this.element.firstChild);e.headerVertical&&(this.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&this.element.classList.add("tabulator-col-vertical-flip")),this.contentElement=this._buildColumnHeaderContent(),this.element.appendChild(this.contentElement),this.isGroup?this._buildGroupHeader():this._buildColumnHeader(),this.dispatch("column-init",this)}_buildColumnHeader(){var e=this.definition;(this.dispatch("column-layout",this),void 0!==e.visible&&(e.visible?this.show(!0):this.hide(!0)),e.cssClass)&&e.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));e.field&&this.element.setAttribute("tabulator-field",e.field),this.setMinWidth(parseInt(e.minWidth)),e.maxInitialWidth&&(this.maxInitialWidth=parseInt(e.maxInitialWidth)),e.maxWidth&&this.setMaxWidth(parseInt(e.maxWidth)),this.reinitializeWidth(),this.hozAlign=this.definition.hozAlign,this.vertAlign=this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign}_buildColumnHeaderContent(){var e=document.createElement("div");return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e}_buildColumnHeaderTitle(){var e=this.definition,t=document.createElement("div");if(t.classList.add("tabulator-col-title"),e.headerWordWrap&&t.classList.add("tabulator-col-title-wrap"),e.editableTitle){var i=document.createElement("input");i.classList.add("tabulator-title-editor"),i.addEventListener("click",(e=>{e.stopPropagation(),i.focus()})),i.addEventListener("mousedown",(e=>{e.stopPropagation()})),i.addEventListener("change",(()=>{e.title=i.value,this.dispatchExternal("columnTitleChanged",this.getComponent())})),t.appendChild(i),e.field?this.langBind("columns|"+e.field,(t=>{i.value=t||e.title||" "})):i.value=e.title||" "}else e.field?this.langBind("columns|"+e.field,(i=>{this._formatColumnHeaderTitle(t,i||e.title||" ")})):this._formatColumnHeaderTitle(t,e.title||" ");return t}_formatColumnHeaderTitle(e,t){var i=this.chain("column-format",[this,t,e],null,(()=>t));switch(typeof i){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.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:",i));break;case"undefined":e.innerHTML="";break;default:e.innerHTML=i}}_buildGroupHeader(){(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((e=>{this.element.classList.add(e)}));this.titleElement.style.textAlign=this.definition.headerHozAlign,this.element.appendChild(this.groupElement)}_getFlatData(e){return e[this.field]}_getNestedData(e){var t,i=e,s=this.fieldStructure,o=s.length;for(let e=0;e{t.push(e),t=t.concat(e.getColumns(!0))})):t=this.columns,t}getCells(){return this.cells}getTopColumn(){return this.parent.isGroup?this.parent.getTopColumn():this}getDefinition(e){var t=[];return this.isGroup&&e&&(this.columns.forEach((function(e){t.push(e.getDefinition(!0))})),this.definition.columns=t),this.definition}checkColumnVisibility(){var e=!1;this.columns.forEach((function(t){t.visible&&(e=!0)})),e?(this.show(),this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!1)):this.hide()}show(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(e){e.show()})),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager.verticalAlignHeaders(),this.dispatch("column-show",this,t),e||this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths(),this.silent||this.table.columnManager.rerenderColumns())}hide(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager.verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(e){e.hide()})),this.dispatch("column-hide",this,t),e||this.dispatchExternal("columnVisibilityChanged",this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths(),this.silent||this.table.columnManager.rerenderColumns())}matchChildWidths(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})),this.contentElement.style.maxWidth=e-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())}removeChild(e){var t=this.columns.indexOf(e);t>-1&&this.columns.splice(t,1),this.columns.length||this.delete()}setWidth(e){this.widthFixed=!0,this.setWidthActual(e)}setWidthActual(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.maxWidth&&(e=Math.min(this.maxWidth,e)),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(e){e.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.dispatch("column-width",this)}checkCellHeights(){var e=[];this.cells.forEach((function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)})),e.forEach((function(e){e.calcHeight()})),e.forEach((function(e){e.setCellHeight()}))}getWidth(){var e=0;return this.isGroup?this.columns.forEach((function(t){t.visible&&(e+=t.getWidth())})):e=this.width,e}getLeftOffset(){var e=this.element.offsetLeft;return this.parent.isGroup&&(e+=this.parent.getLeftOffset()),e}getHeight(){return Math.ceil(this.element.getBoundingClientRect().height)}setMinWidth(e){this.maxWidth&&e>this.maxWidth&&(e=this.maxWidth,console.warn("the minWidth ("+e+"px) for column '"+this.field+"' cannot be bigger that its maxWidth ("+this.maxWidthStyled+")")),this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(e){e.setMinWidth()}))}setMaxWidth(e){this.minWidth&&e{this.isGroup&&this.columns.forEach((function(e){e.delete()})),this.dispatch("column-delete",this);var i=this.cells.length;for(let e=0;e-1&&this._nextVisibleColumn(e+1)}_nextVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)}prevColumn(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)}_prevVisibleColumn(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)}reinitializeWidth(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.dispatch("column-width-fit-before",this),this.fitToData(e),this.dispatch("column-width-fit-after",this)}fitToData(e){if(!this.isGroup){this.widthFixed||(this.element.style.width="",this.cells.forEach((e=>{e.clearWidth()})));var t=this.element.offsetWidth;if((!this.width||!this.widthFixed)&&(this.cells.forEach((e=>{var i=e.getWidth();i>t&&(t=i)})),t)){var i=t+1;this.maxInitialWidth&&!e&&(i=Math.min(i,this.maxInitialWidth)),this.setWidthActual(i)}}}updateDefinition(e){var t;return this.isGroup||this.parent.isGroup?(console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"),Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(t=Object.assign({},this.getDefinition()),t=Object.assign(t,e),this.table.columnManager.addColumn(t,!1,this).then((e=>(t.field==this.field&&(this.field=!1),this.delete().then((()=>e.getComponent()))))))}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}getComponent(){return this.component||(this.component=new g(this)),this.component}getPosition(){return this.table.columnManager.getVisibleColumnsByIndex().indexOf(this)+1}}f.defaultOptionList=b;class v{constructor(e){return this._row=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._row.table.componentFunctionBinder.handle("row",e._row,t)}})}getData(e){return this._row.getData(e)}getElement(){return this._row.getElement()}getCells(){var e=[];return this._row.getCells().forEach((function(t){e.push(t.getComponent())})),e}getCell(e){var t=this._row.getCell(e);return!!t&&t.getComponent()}getIndex(){return this._row.getData("data")[this._row.table.options.index]}getPosition(){return this._row.getPosition()}watchPosition(e){return this._row.watchPosition(e)}delete(){return this._row.delete()}scrollTo(e,t){return this._row.table.rowManager.scrollToRow(this._row,e,t)}move(e,t){this._row.moveToRow(e,t)}update(e){return this._row.updateData(e)}normalizeHeight(){this._row.normalizeHeight(!0)}_getSelf(){return this._row}reformat(){return this._row.reinitialize()}getTable(){return this._row.table}getNextRow(){var e=this._row.nextRow();return e?e.getComponent():e}getPrevRow(){var e=this._row.prevRow();return e?e.getComponent():e}}class w extends e{constructor(e,t,i="row"){super(t.table),this.parent=t,this.data={},this.type=i,this.element=!1,this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.position=0,this.positionWatchers=[],this.component=null,this.created=!1,this.setData(e)}create(){this.created||(this.created=!0,this.generateElement())}createElement(){var e=document.createElement("div");e.classList.add("tabulator-row"),e.setAttribute("role","row"),this.element=e}getElement(){return this.create(),this.element}detachElement(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)}generateElement(){this.createElement(),this.dispatch("row-init",this)}generateCells(){this.cells=this.table.columnManager.generateCells(this)}initialize(e,t){if(this.create(),!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.dispatch("row-layout-before",this),this.generateCells(),this.initialized=!0,this.table.columnManager.renderer.renderRowCells(this,t),e&&this.normalizeHeight(),this.dispatch("row-layout",this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.dispatch("row-layout-after",this)}else this.table.columnManager.renderer.rerenderRowCells(this,t)}rendered(){this.cells.forEach((e=>{e.cellRendered()}))}reinitializeHeight(){this.heightInitialized=!1,this.element&&null!==this.element.offsetParent&&this.normalizeHeight(!0)}deinitialize(){this.initialized=!1}deinitializeHeight(){this.heightInitialized=!1}reinitialize(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),this.element&&null!==this.element.offsetParent&&this.initialize(!0),this.dispatch("row-relayout",this)}calcHeight(e){var t,i=0;this.table.options.rowHeight?this.height=this.table.options.rowHeight:(t=this.table.options.resizableRows?this.element.clientHeight:0,this.cells.forEach((function(e){var t=e.getHeight();t>i&&(i=t)})),this.height=e?Math.max(i,t):this.manualHeight?this.height:Math.max(i,t)),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight}setCellHeight(){this.cells.forEach((function(e){e.setHeight()})),this.heightInitialized=!0}clearCellHeight(){this.cells.forEach((function(e){e.clearHeight()}))}normalizeHeight(e){e&&!this.table.options.rowHeight&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()}setHeight(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)}getHeight(){return this.outerHeight}getWidth(){return this.element.offsetWidth}deleteCell(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}setData(e){this.data=this.chain("row-data-init-before",[this,e],void 0,e),this.dispatch("row-data-init-after",this)}updateData(e){var i,s=this.element&&t.elVisible(this.element),o={};return new Promise(((t,n)=>{"string"==typeof e&&(e=JSON.parse(e)),this.dispatch("row-data-save-before",this),this.subscribed("row-data-changing")&&(o=Object.assign(o,this.data),o=Object.assign(o,e)),i=this.chain("row-data-changing",[this,o,e],null,e);for(let e in i)this.data[e]=i[e];this.dispatch("row-data-save-after",this);for(let t in e){this.table.columnManager.getColumnsByFieldRoot(t).forEach((e=>{let t=this.getCell(e.getField());if(t){let o=e.getFieldValue(i);t.getValue()!==o&&(t.setValueProcessData(o),s&&t.cellRendered())}}))}s?(this.normalizeHeight(!0),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent())):(this.initialized=!1,this.height=0,this.heightStyled=""),this.dispatch("row-data-changed",this,s,e),this.dispatchExternal("rowUpdated",this.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),t()}))}getData(e){return e?this.chain("row-data-retrieve",[this,e],null,this.data):this.data}getCell(e){return e=this.table.columnManager.findColumn(e),this.initialized||0!==this.cells.length||this.generateCells(),this.cells.find((function(t){return t.column===e}))}getCellIndex(e){return this.cells.findIndex((function(t){return t===e}))}findCell(e){return this.cells.find((t=>t.element===e))}getCells(){return this.initialized||0!==this.cells.length||this.generateCells(),this.cells}nextRow(){return this.table.rowManager.nextDisplayRow(this,!0)||!1}prevRow(){return this.table.rowManager.prevDisplayRow(this,!0)||!1}moveToRow(e,t){var i=this.table.rowManager.findRow(e);i?(this.table.rowManager.moveRowActual(this,i,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)}delete(){return this.dispatch("row-delete",this),this.deleteActual(),Promise.resolve()}deleteActual(e){this.detachModules(),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.dispatch("row-deleted",this)}detachModules(){this.dispatch("row-deleting",this)}deleteCells(){var e=this.cells.length;for(let t=0;t{e(this.position)})))}watchPosition(e){this.positionWatchers.push(e),e(this.position)}getGroup(){return this.modules.group||!1}getComponent(){return this.component||(this.component=new v(this)),this.component}}var C={avg:function(e,t,i){var s=0,o=void 0!==i.precision?i.precision:2;return e.length&&(s=e.reduce((function(e,t){return Number(e)+Number(t)})),s/=e.length,s=!1!==o?s.toFixed(o):s),parseFloat(s).toString()},max:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))>s||null===s)&&(s=e)})),null!==s?!1!==o?s.toFixed(o):s:""},min:function(e,t,i){var s=null,o=void 0!==i.precision&&i.precision;return e.forEach((function(e){((e=Number(e))(e||0===t)&&e.indexOf(t)===i)).length}};class E extends s{constructor(e){super(e),this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.blocked=!1,this.recalcAfterBlock=!1,this.registerTableOption("columnCalcs",!0),this.registerColumnOption("topCalc"),this.registerColumnOption("topCalcParams"),this.registerColumnOption("topCalcFormatter"),this.registerColumnOption("topCalcFormatterParams"),this.registerColumnOption("bottomCalc"),this.registerColumnOption("bottomCalcParams"),this.registerColumnOption("bottomCalcFormatter"),this.registerColumnOption("bottomCalcFormatterParams")}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e}initialize(){this.genColumn=new f({field:"value"},this),this.subscribe("cell-value-changed",this.cellValueChanged.bind(this)),this.subscribe("column-init",this.initializeColumnCheck.bind(this)),this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("column-moved",this.recalcActiveRows.bind(this)),this.subscribe("column-add",this.recalcActiveRows.bind(this)),this.subscribe("data-refreshed",this.recalcActiveRowsRefresh.bind(this)),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("rows-visible",this.visibleRows.bind(this)),this.subscribe("scrollbar-vertical",this.adjustForScrollbar.bind(this)),this.subscribe("redraw-blocked",this.blockRedraw.bind(this)),this.subscribe("redraw-restored",this.restoreRedraw.bind(this)),this.subscribe("table-redrawing",this.resizeHolderWidth.bind(this)),this.subscribe("column-resized",this.resizeHolderWidth.bind(this)),this.subscribe("column-show",this.resizeHolderWidth.bind(this)),this.subscribe("column-hide",this.resizeHolderWidth.bind(this)),this.registerTableFunction("getCalcResults",this.getResults.bind(this)),this.registerTableFunction("recalc",this.userRecalc.bind(this)),this.resizeHolderWidth()}resizeHolderWidth(){this.topElement.style.minWidth=this.table.columnManager.headersElement.offsetWidth+"px"}tableRedraw(e){this.recalc(this.table.rowManager.activeRows),e&&this.redraw()}blockRedraw(){this.blocked=!0,this.recalcAfterBlock=!1}restoreRedraw(){this.blocked=!1,this.recalcAfterBlock&&(this.recalcAfterBlock=!1,this.recalcActiveRowsRefresh())}userRecalc(){this.recalc(this.table.rowManager.activeRows)}blockCheck(){return this.blocked&&(this.recalcAfterBlock=!0),this.blocked}visibleRows(e,t){return this.topRow&&t.unshift(this.topRow),this.botRow&&t.push(this.botRow),t}rowsUpdated(e){this.table.options.groupBy?this.recalcRowGroup(e):this.recalcActiveRows()}recalcActiveRowsRefresh(){this.table.options.groupBy&&this.table.options.dataTreeStartExpanded&&this.table.options.dataTree?this.recalcAll():this.recalcActiveRows()}recalcActiveRows(){this.recalc(this.table.rowManager.activeRows)}cellValueChanged(e){(e.column.definition.topCalc||e.column.definition.bottomCalc)&&(this.table.options.groupBy?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.recalcActiveRows(),"table"!=this.table.options.columnCalcs&&this.recalcRowGroup(e.row)):this.recalcActiveRows())}initializeColumnCheck(e){(e.definition.topCalc||e.definition.bottomCalc)&&this.initializeColumn(e)}initializeColumn(e){var t=e.definition,i={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(typeof t.topCalc){case"string":E.calculations[t.topCalc]?i.topCalc=E.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":i.topCalc=t.topCalc}i.topCalc&&(e.modules.columnCalcs=i,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(typeof t.bottomCalc){case"string":E.calculations[t.bottomCalc]?i.botCalc=E.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":i.botCalc=t.bottomCalc}i.botCalc&&(e.modules.columnCalcs=i,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}}registerColumnField(){}removeCalcs(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.footerRemove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()}reinitializeCalcs(){this.topCalcs.length&&this.initializeTopRow(),this.botCalcs.length&&this.initializeBottomRow()}initializeTopRow(){var e=document.createDocumentFragment();this.topInitialized||(e.appendChild(document.createElement("br")),e.appendChild(this.topElement),this.table.columnManager.getContentsElement().insertBefore(e,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)}initializeBottomRow(){this.botInitialized||(this.footerPrepend(this.botElement),this.botInitialized=!0)}scrollHorizontal(e){this.botInitialized&&this.botRow&&(this.botElement.scrollLeft=e)}recalc(e){var t,i;if(!this.blockCheck()&&(this.topInitialized||this.botInitialized)){if(t=this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),i=this.generateRow("top",t),this.topRow=i;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(i.getElement()),i.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),i=this.generateRow("bottom",t),this.botRow=i;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(i.getElement()),i.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}}recalcRowGroup(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))}recalcAll(){(this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalcActiveRows(),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs&&this.table.modules.groupRows.getChildGroups().forEach((e=>{this.recalcGroup(e)})))}recalcGroup(e){var t,i;this.blockCheck()||e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),i=this.generateRowData("bottom",t),e.calcs.bottom.updateData(i),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),i=this.generateRowData("top",t),e.calcs.top.updateData(i),e.calcs.top.reinitialize()))}generateTopRow(e){return this.generateRow("top",this.rowsToData(e))}generateBottomRow(e){return this.generateRow("bottom",this.rowsToData(e))}rowsToData(e){var t=[];return e.forEach((e=>{if(t.push(e.getData()),this.table.options.dataTree&&this.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree&&e.modules.dataTree.open){var i=this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(e));t=t.concat(i)}})),t}generateRow(e,t){var i,s=this.generateRowData(e,t);return this.table.modExists("mutator")&&this.table.modules.mutator.disable(),i=new w(s,this,"calc"),this.table.modExists("mutator")&&this.table.modules.mutator.enable(),i.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),i.component=!1,i.getComponent=()=>(i.component||(i.component=new u(i)),i.component),i.generateCells=()=>{var t=[];this.table.columnManager.columnsByIndex.forEach((s=>{this.genColumn.setField(s.getField()),this.genColumn.hozAlign=s.hozAlign,s.definition[e+"CalcFormatter"]&&this.table.modExists("format")?this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter(s.definition[e+"CalcFormatter"]),params:s.definition[e+"CalcFormatterParams"]||{}}:this.genColumn.modules.format={formatter:this.table.modules.format.getFormatter("plaintext"),params:{}},this.genColumn.definition.cssClass=s.definition.cssClass;var o=new p(this.genColumn,i);o.getElement(),o.column=s,o.setWidth(),s.cells.push(o),t.push(o),s.visible||o.hide()})),i.cells=t},i}generateRowData(e,t){var i,s,o={},n="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return n.forEach((function(e){var n=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach((function(t){n.push(e.getFieldValue(t))})),s=r+"Params",i="function"==typeof e.modules.columnCalcs[s]?e.modules.columnCalcs[s](n,t):e.modules.columnCalcs[s],e.setFieldValue(o,e.modules.columnCalcs[r](n,t,i)))})),o}hasTopCalcs(){return!!this.topCalcs.length}hasBottomCalcs(){return!!this.botCalcs.length}redraw(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)}getResults(){var e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.getGroups(!0).forEach((t=>{e[t.getKey()]=this.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e}getGroupResults(e){var t=e._getSelf(),i=e.getSubGroups(),s={};return i.forEach((e=>{s[e.getKey()]=this.getGroupResults(e)})),{top:t.calcs.top?t.calcs.top.getData():{},bottom:t.calcs.bottom?t.calcs.bottom.getData():{},groups:s}}adjustForScrollbar(e){this.botRow&&(this.table.rtl?this.botElement.style.paddingLeft=e+"px":this.botElement.style.paddingRight=e+"px")}}E.moduleName="columnCalcs",E.calculations=C;class y extends s{constructor(e){super(e),this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.registerTableOption("dataTree",!1),this.registerTableOption("dataTreeFilter",!0),this.registerTableOption("dataTreeSort",!0),this.registerTableOption("dataTreeElementColumn",!1),this.registerTableOption("dataTreeBranchElement",!0),this.registerTableOption("dataTreeChildIndent",9),this.registerTableOption("dataTreeChildField","_children"),this.registerTableOption("dataTreeCollapseElement",!1),this.registerTableOption("dataTreeExpandElement",!1),this.registerTableOption("dataTreeStartExpanded",!1),this.registerTableOption("dataTreeChildColumnCalcs",!1),this.registerTableOption("dataTreeSelectPropagate",!1),this.registerComponentFunction("row","treeCollapse",this.collapseRow.bind(this)),this.registerComponentFunction("row","treeExpand",this.expandRow.bind(this)),this.registerComponentFunction("row","treeToggle",this.toggleRow.bind(this)),this.registerComponentFunction("row","getTreeParent",this.getTreeParent.bind(this)),this.registerComponentFunction("row","getTreeChildren",this.getRowChildren.bind(this)),this.registerComponentFunction("row","addTreeChild",this.addTreeChildRow.bind(this)),this.registerComponentFunction("row","isTreeExpanded",this.isRowExpanded.bind(this))}initialize(){if(this.table.options.dataTree){var e=null,t=this.table.options;switch(this.field=t.dataTreeChildField,this.indent=t.dataTreeChildIndent,this.options("movableRows")&&console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"),t.dataTreeBranchElement?!0===t.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof t.dataTreeBranchElement?((e=document.createElement("div")).innerHTML=t.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=t.dataTreeBranchElement:(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch-empty")),t.dataTreeCollapseElement?"string"==typeof t.dataTreeCollapseElement?((e=document.createElement("div")).innerHTML=t.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=t.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="
        "),t.dataTreeExpandElement?"string"==typeof t.dataTreeExpandElement?((e=document.createElement("div")).innerHTML=t.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=t.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
        "),typeof t.dataTreeStartExpanded){case"boolean":this.startOpen=function(e,i){return t.dataTreeStartExpanded};break;case"function":this.startOpen=t.dataTreeStartExpanded;break;default:this.startOpen=function(e,i){return t.dataTreeStartExpanded[i]}}this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("row-deleted",this.rowDelete.bind(this),0),this.subscribe("row-data-changed",this.rowDataChanged.bind(this),10),this.subscribe("cell-value-updated",this.cellValueChanged.bind(this)),this.subscribe("edit-cancelled",this.cellValueChanged.bind(this)),this.subscribe("column-moving-rows",this.columnMoving.bind(this)),this.subscribe("table-built",this.initializeElementField.bind(this)),this.subscribe("table-redrawing",this.tableRedrawing.bind(this)),this.registerDisplayHandler(this.getRows.bind(this),30)}}tableRedrawing(e){e&&this.table.rowManager.getRows().forEach((e=>{this.reinitializeRowChildren(e)}))}initializeElementField(){var e=this.table.columnManager.getFirstVisibleColumn();this.elementField=this.table.options.dataTreeElementColumn||!!e&&e.field}getRowChildren(e){return this.getTreeChildren(e,!0)}columnMoving(){var e=[];return this.table.rowManager.rows.forEach((t=>{e=e.concat(this.getTreeChildren(t,!1,!0))})),e}rowDataChanged(e,t,i){this.redrawNeeded(i)&&(this.initializeRow(e),t&&(this.layoutRow(e),this.refreshData(!0)))}cellValueChanged(e){e.column.getField()===this.elementField&&this.layoutRow(e.row)}initializeRow(e){var t=e.getData()[this.field],i=Array.isArray(t),s=i||!i&&"object"==typeof t&&null!==t;!s&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!s&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!s&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!s)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:s}}reinitializeRowChildren(e){this.getTreeChildren(e,!1,!0).forEach((function(e){e.reinitialize(!0)}))}layoutRow(e){var t=(this.elementField?e.getCell(this.elementField):e.getCells()[0]).getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,t),e.getElement().classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),t.insertBefore(i.branchEl,t.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?t.style.paddingRight=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":t.style.paddingLeft=parseInt(window.getComputedStyle(t,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")}generateControlElement(e,t){var i=e.modules.dataTree,s=i.controlEl;t=t||e.getCells()[0].getElement(),!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.collapseRow(e)}))):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",(t=>{t.stopPropagation(),this.expandRow(e)}))),i.controlEl.addEventListener("mousedown",(e=>{e.stopPropagation()})),s&&s.parentNode===t?s.parentNode.replaceChild(i.controlEl,s):t.insertBefore(i.controlEl,t.firstChild))}getRows(e){var t=[];return e.forEach(((e,i)=>{var s;t.push(e),e instanceof w&&(e.create(),(s=e.modules.dataTree).index||!1===s.children||this.getChildren(e).forEach((e=>{e.create(),t.push(e)})))})),t}getChildren(e,t){var i=e.modules.dataTree,s=[],o=[];return!1!==i.children&&(i.open||t)&&(Array.isArray(i.children)||(i.children=this.generateChildren(e)),s=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(i.children):i.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(s),s.forEach((e=>{o.push(e),this.getChildren(e).forEach((e=>{o.push(e)}))}))),o}generateChildren(e){var t=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach((i=>{var s=new w(i||{},this.table.rowManager);s.create(),s.modules.dataTree.index=e.modules.dataTree.index+1,s.modules.dataTree.parent=e,s.modules.dataTree.children&&(s.modules.dataTree.open=this.startOpen(s.getComponent(),s.modules.dataTree.index)),t.push(s)})),t}expandRow(e,t){var i=e.modules.dataTree;!1!==i.children&&(i.open=!0,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowExpanded",e.getComponent(),e.modules.dataTree.index))}collapseRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.refreshData(!0),this.dispatchExternal("dataTreeRowCollapsed",e.getComponent(),e.modules.dataTree.index))}toggleRow(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))}isRowExpanded(e){return e.modules.dataTree.open}getTreeParent(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()}getTreeParentRoot(e){return e.modules.dataTree&&e.modules.dataTree.parent?this.getTreeParentRoot(e.modules.dataTree.parent):e}getFilteredTreeChildren(e){var t=e.modules.dataTree,i=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),(this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(t.children):t.children).forEach((e=>{e instanceof w&&i.push(e)}))),i}rowDelete(e){var t,i=e.modules.dataTree.parent;i&&(!1!==(t=this.findChildIndex(e,i))&&i.data[this.field].splice(t,1),i.data[this.field].length||delete i.data[this.field],this.initializeRow(i),this.layoutRow(i)),this.refreshData(!0)}addTreeChildRow(e,t,i,s){var o=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==s&&!1!==(o=this.findChildIndex(s,e))&&e.data[this.field].splice(i?o:o+1,0,t),!1===o&&(i?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.refreshData(!0)}findChildIndex(e,t){var i=!1;return"object"==typeof e?e instanceof w?i=e.data:e instanceof v?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?t.modules.dataTree&&(i=t.modules.dataTree.children.find((t=>t instanceof w&&t.element===e)))&&(i=i.data):null===e&&(i=!1):i=void 0!==e&&t.data[this.field].find((t=>t.data[this.table.options.index]==e)),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i}getTreeChildren(e,t,i){var s=e.modules.dataTree,o=[];return s&&s.children&&(Array.isArray(s.children)||(s.children=this.generateChildren(e)),s.children.forEach((e=>{e instanceof w&&(o.push(t?e.getComponent():e),i&&(o=o.concat(this.getTreeChildren(e,t,i))))}))),o}getChildField(){return this.field}redrawNeeded(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]}}y.moduleName="dataTree";var R={csv:function(e,t={},i){var s=t.delimiter?t.delimiter:",",o=[],n=[];e.forEach((e=>{var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(((e,t)=>{e&&1===e.depth&&(n[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')}));break;case"row":e.columns.forEach((e=>{if(e){switch(typeof e.value){case"object":e.value=null!==e.value?JSON.stringify(e.value):"";break;case"undefined":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}})),o.push(t.join(s))}})),n.length&&o.unshift(n.join(s)),o=o.join("\n"),t.bom&&(o="\ufeff"+o),i(o,"text/csv")},json:function(e,t,i){var s=[];e.forEach((e=>{var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),s.push(t)}})),i(s=JSON.stringify(s,null,"\t"),"application/json")},jsonLines:function(e,t,i){const s=[];e.forEach((e=>{const t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach((e=>{e&&(t[e.component.getTitleDownload()||e.component.getField()]=e.value)})),s.push(JSON.stringify(t))}})),i(s.join("\n"),"application/x-ndjson")},pdf:function(e,t={},i){var s=[],o=[],n={},r=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},a=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},l=t.jsPDF||{},h=t.title?t.title:"";function d(e,t){var i=[];return e.columns.forEach((e=>{var s;if(e){switch(typeof e.value){case"object":e.value=null!==e.value?JSON.stringify(e.value):"";break;case"undefined":e.value=""}s={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(s.styles=t),i.push(s)}})),i}l.orientation||(l.orientation=t.orientation||"landscape"),l.unit||(l.unit="pt"),e.forEach((e=>{switch(e.type){case"header":s.push(d(e));break;case"group":o.push(d(e,r));break;case"calc":o.push(d(e,a));break;case"row":o.push(d(e))}}));var c=new jspdf.jsPDF(l);t.autoTable&&(n="function"==typeof t.autoTable?t.autoTable(c)||{}:t.autoTable),h&&(n.didDrawPage=function(e){c.text(h,40,30)}),n.head=s,n.body=o,c.autoTable(n),t.documentProcessing&&t.documentProcessing(c),i(c.output("arraybuffer"),"application/pdf")},xlsx:function(t,i,s){var o=i.sheetName||"Sheet1",n=XLSX.utils.book_new(),r=new e(this),a=!("compress"in i)||i.compress,l=i.writeOptions||{bookType:"xlsx",bookSST:!0,compression:a};function h(){var e=[],i=[],s={},o={s:{c:0,r:0},e:{c:t[0]?t[0].columns.reduce(((e,t)=>e+(t&&t.width?t.width:1)),0):0,r:t.length}};return t.forEach(((t,s)=>{var o=[];t.columns.forEach((function(e,t){e?(o.push(e.value instanceof Date||"object"!=typeof e.value?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&(e.height>1||e.width>1)&&i.push({s:{r:s,c:t},e:{r:s+e.height-1,c:t+e.width-1}})):o.push("")})),e.push(o)})),XLSX.utils.sheet_add_aoa(s,e),s["!ref"]=XLSX.utils.encode_range(o),i.length&&(s["!merges"]=i),s}if(l.type="binary",n.SheetNames=[],n.Sheets={},i.sheetOnly)s(h());else{if(i.sheets)for(var d in i.sheets)!0===i.sheets[d]?(n.SheetNames.push(d),n.Sheets[d]=h()):(n.SheetNames.push(d),r.commsSend(i.sheets[d],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function(e){n.Sheets[d]=e}}));else n.SheetNames.push(o),n.Sheets[o]=h();i.documentProcessing&&(n=i.documentProcessing(n)),s(function(e){for(var t=new ArrayBuffer(e.length),i=new Uint8Array(t),s=0;s!=e.length;++s)i[s]=255&e.charCodeAt(s);return t}(XLSX.write(n,l)),"application/octet-stream")}},html:function(e,t,i){this.modExists("export",!0)&&i(this.modules.export.generateHTMLTable(e),"text/html")}};class x extends s{constructor(e){super(e),this.registerTableOption("downloadEncoder",(function(e,t){return new Blob([e],{type:t})})),this.registerTableOption("downloadReady",void 0),this.registerTableOption("downloadConfig",{}),this.registerTableOption("downloadRowRange","active"),this.registerColumnOption("download"),this.registerColumnOption("titleDownload")}initialize(){this.deprecatedOptionsCheck(),this.registerTableFunction("download",this.download.bind(this)),this.registerTableFunction("downloadToTab",this.downloadToTab.bind(this))}deprecatedOptionsCheck(){this.deprecationCheck("downloadReady","downloadEncoder")}downloadToTab(e,t,i,s){this.download(e,t,i,s,!0)}download(e,t,i,s,o){var n=!1;if("function"==typeof e?n=e:x.downloaders[e]?n=x.downloaders[e]:console.warn("Download Error - No such download type found: ",e),n){var r=this.generateExportList(s);n.call(this.table,r,i||{},function(i,s){o?!0===o?this.triggerDownload(i,s,e,t,!0):o(i):this.triggerDownload(i,s,e,t)}.bind(this))}}generateExportList(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),i=this.table.options.groupHeaderDownload;return i&&!Array.isArray(i)&&(i=[i]),t.forEach((e=>{var t;"group"===e.type&&(t=e.columns[0],i&&i[e.indent]&&(t.value=i[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))})),t}triggerDownload(e,t,i,s,o){var n=document.createElement("a"),r=this.table.options.downloadEncoder(e,t);r&&(o?window.open(window.URL.createObjectURL(r)):(s=s||"Tabulator."+("function"==typeof i?"txt":i),navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,s):(n.setAttribute("href",window.URL.createObjectURL(r)),n.setAttribute("download",s),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n))),this.dispatchExternal("downloadComplete"))}commsReceived(e,t,i){if("intercept"===t)this.download(i.type,"",i.options,i.active,i.intercept)}}function T(e,t){var i=t.mask,s=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",n=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*";function r(t){var a=i[t];void 0!==a&&a!==n&&a!==s&&a!==o&&(e.value=e.value+""+a,r(t+1))}e.addEventListener("keydown",(t=>{var r=e.value.length,a=t.key;if(t.keyCode>46&&!t.ctrlKey&&!t.metaKey){if(r>=i.length)return t.preventDefault(),t.stopPropagation(),!1;switch(i[r]){case s:if(a.toUpperCase()==a.toLowerCase())return t.preventDefault(),t.stopPropagation(),!1;break;case o:if(isNaN(a))return t.preventDefault(),t.stopPropagation(),!1;break;case n:break;default:if(a!==i[r])return t.preventDefault(),t.stopPropagation(),!1}}})),e.addEventListener("keyup",(i=>{i.keyCode>46&&t.maskAutoFill&&r(e.value.length)})),e.placeholder||(e.placeholder=i),t.maskAutoFill&&r(e.value.length)}x.moduleName="download",x.downloaders=R;class M{constructor(e,t,i,s,o,n){this.edit=e,this.table=e.table,this.cell=t,this.params=this._initializeParams(n),this.data=[],this.displayItems=[],this.currentItems=[],this.focusedItem=null,this.input=this._createInputElement(),this.listEl=this._createListElement(),this.initialValues=null,this.isFilter="header"===t.getType(),this.filterTimeout=null,this.filtered=!1,this.typing=!1,this.values=[],this.popup=null,this.listIteration=0,this.lastAction="",this.filterTerm="",this.blurable=!0,this.actions={success:s,cancel:o},this._deprecatedOptionsCheck(),this._initializeValue(),i(this._onRendered.bind(this))}_deprecatedOptionsCheck(){this.params.listItemFormatter&&this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.sortValuesList&&this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchFunc&&this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"),this.params.searchingPlaceholder&&this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options")}_initializeValue(){var e=this.cell.getValue();void 0===e&&void 0!==this.params.defaultValue&&(e=this.params.defaultValue),this.initialValues=this.params.multiselect?e:[e],this.isFilter&&(this.input.value=this.initialValues?this.initialValues.join(","):"",this.headerFilterInitialListGen())}_onRendered(){var e=this.cell.getElement();function t(e){e.stopPropagation()}this.isFilter||(this.input.style.height="100%",this.input.focus({preventScroll:!0})),e.addEventListener("click",t),setTimeout((()=>{e.removeEventListener("click",t)}),1e3),this.input.addEventListener("mousedown",this._preventPopupBlur.bind(this))}_createListElement(){var e=document.createElement("div");return e.classList.add("tabulator-edit-list"),e.addEventListener("mousedown",this._preventBlur.bind(this)),e.addEventListener("keydown",this._inputKeyDown.bind(this)),e}_setListWidth(){var e=this.isFilter?this.input:this.cell.getElement();this.listEl.style.minWidth=e.offsetWidth+"px",this.params.maxWidth&&(!0===this.params.maxWidth?this.listEl.style.maxWidth=e.offsetWidth+"px":"number"==typeof this.params.maxWidth?this.listEl.style.maxWidth=this.params.maxWidth+"px":this.listEl.style.maxWidth=this.params.maxWidth)}_createInputElement(){var e=this.params.elementAttributes,t=document.createElement("input");if(t.setAttribute("type",this.params.clearable?"search":"text"),t.style.padding="4px",t.style.width="100%",t.style.boxSizing="border-box",this.params.autocomplete||(t.style.cursor="default",t.style.caretColor="transparent"),e&&"object"==typeof e)for(let i in e)"+"==i.charAt(0)?(i=i.slice(1),t.setAttribute(i,t.getAttribute(i)+e["+"+i])):t.setAttribute(i,e[i]);return this.params.mask&&T(t,this.params),this._bindInputEvents(t),t}_initializeParams(e){var t,i=["values","valuesURL","valuesLookup"];return(e=Object.assign({},e)).verticalNavigation=e.verticalNavigation||"editor",e.placeholderLoading=void 0===e.placeholderLoading?"Searching ...":e.placeholderLoading,e.placeholderEmpty=void 0===e.placeholderEmpty?"No Results Found":e.placeholderEmpty,e.filterDelay=void 0===e.filterDelay?300:e.filterDelay,e.emptyValue=Object.keys(e).includes("emptyValue")?e.emptyValue:"",(t=Object.keys(e).filter((e=>i.includes(e))).length)?t>1&&console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"):console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"),e.autocomplete?e.multiselect&&(e.multiselect=!1,console.warn("list editor config error - multiselect option is not available when autocomplete is enabled")):(e.freetext&&(e.freetext=!1,console.warn("list editor config error - freetext option is only available when autocomplete is enabled")),e.filterFunc&&(e.filterFunc=!1,console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled")),e.filterRemote&&(e.filterRemote=!1,console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled")),e.mask&&(e.mask=!1,console.warn("list editor config error - mask option is only available when autocomplete is enabled")),e.allowEmpty&&(e.allowEmpty=!1,console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled")),e.listOnEmpty&&(e.listOnEmpty=!1,console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"))),e.filterRemote&&"function"!=typeof e.valuesLookup&&!e.valuesURL&&(e.filterRemote=!1,console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source")),e}_bindInputEvents(e){e.addEventListener("focus",this._inputFocus.bind(this)),e.addEventListener("click",this._inputClick.bind(this)),e.addEventListener("blur",this._inputBlur.bind(this)),e.addEventListener("keydown",this._inputKeyDown.bind(this)),e.addEventListener("search",this._inputSearch.bind(this)),this.params.autocomplete&&e.addEventListener("keyup",this._inputKeyUp.bind(this))}_inputFocus(e){this.rebuildOptionsList()}_filter(){this.params.filterRemote?(clearTimeout(this.filterTimeout),this.filterTimeout=setTimeout((()=>{this.rebuildOptionsList()}),this.params.filterDelay)):this._filterList()}_inputClick(e){e.stopPropagation()}_inputBlur(e){this.blurable&&(this.popup?this.popup.hide():this._resolveValue(!0))}_inputSearch(){this._clearChoices()}_inputKeyDown(e){switch(e.keyCode){case 38:this._keyUp(e);break;case 40:this._keyDown(e);break;case 37:case 39:this._keySide(e);break;case 13:this._keyEnter();break;case 27:this._keyEsc();break;case 36:case 35:this._keyHomeEnd(e);break;case 9:this._keyTab(e);break;default:this._keySelectLetter(e)}}_inputKeyUp(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:this._keyAutoCompLetter(e)}}_preventPopupBlur(){this.popup&&this.popup.blockHide(),setTimeout((()=>{this.popup&&this.popup.restoreHide()}),10)}_preventBlur(){this.blurable=!1,setTimeout((()=>{this.blurable=!0}),10)}_keyTab(e){this.params.autocomplete&&"typing"===this.lastAction?this._resolveValue(!0):this.focusedItem&&this._chooseItem(this.focusedItem,!0)}_keyUp(e){var t=this.displayItems.indexOf(this.focusedItem);("editor"==this.params.verticalNavigation||"hybrid"==this.params.verticalNavigation&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&this._focusItem(this.displayItems[t-1]))}_keyDown(e){var t=this.displayItems.indexOf(this.focusedItem);("editor"==this.params.verticalNavigation||"hybrid"==this.params.verticalNavigation&&t=38&&e.keyCode<=90&&this._scrollToValue(e.keyCode))}_keyAutoCompLetter(e){this._filter(),this.lastAction="typing",this.typing=!0}_scrollToValue(e){clearTimeout(this.filterTimeout);var t=String.fromCharCode(e).toLowerCase();this.filterTerm+=t.toLowerCase();var i=this.displayItems.find((e=>void 0!==e.label&&e.label.toLowerCase().startsWith(this.filterTerm)));i&&this._focusItem(i),this.filterTimeout=setTimeout((()=>{this.filterTerm=""}),800)}_focusItem(e){this.lastAction="focus",this.focusedItem&&this.focusedItem.element&&this.focusedItem.element.classList.remove("focused"),this.focusedItem=e,e&&e.element&&(e.element.classList.add("focused"),e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"}))}headerFilterInitialListGen(){this._generateOptions(!0)}rebuildOptionsList(){this._generateOptions().then(this._sortOptions.bind(this)).then(this._buildList.bind(this)).then(this._showList.bind(this)).catch((e=>{Number.isInteger(e)||console.error("List generation error",e)}))}_filterList(){this._buildList(this._filterOptions()),this._showList()}_generateOptions(e){var t=[],i=++this.listIteration;return this.filtered=!1,this.params.values?t=this.params.values:this.params.valuesURL?t=this._ajaxRequest(this.params.valuesURL,this.input.value):"function"==typeof this.params.valuesLookup?t=this.params.valuesLookup(this.cell,this.input.value):this.params.valuesLookup&&(t=this._uniqueColumnValues(this.params.valuesLookupField)),t instanceof Promise?(e||this._addPlaceholder(this.params.placeholderLoading),t.then().then((e=>this.listIteration===i?this._parseList(e):Promise.reject(i)))):Promise.resolve(this._parseList(t))}_addPlaceholder(e){var t=document.createElement("div");"function"==typeof e&&(e=e(this.cell.getComponent(),this.listEl)),e&&(this._clearList(),e instanceof HTMLElement?t=e:(t.classList.add("tabulator-edit-list-placeholder"),t.innerHTML=e),this.listEl.appendChild(t),this._showList())}_ajaxRequest(e,t){return e=a(e,{},this.params.filterRemote?{term:t}:{}),fetch(e).then((e=>e.ok?e.json().catch((e=>(console.warn("List Ajax Load Error - Invalid JSON returned",e),Promise.reject(e)))):(console.error("List Ajax Load Error - Connection Error: "+e.status,e.statusText),Promise.reject(e)))).catch((e=>(console.error("List Ajax Load Error - Connection Error: ",e),Promise.reject(e))))}_uniqueColumnValues(e){var t,i={},s=this.table.getData(this.params.valuesLookup);return(t=e?this.table.columnManager.getColumnByField(e):this.cell.getColumn()._getSelf())?s.forEach((e=>{var s=t.getFieldValue(e);null!=s&&""!==s&&(i[s]=!0)})):(console.warn("unable to find matching column to create select lookup list:",e),i=[]),Object.keys(i)}_parseList(e){var t=[];return Array.isArray(e)||(e=Object.entries(e).map((([e,t])=>({label:t,value:e})))),e.forEach((e=>{"object"!=typeof e&&(e={label:e,value:e}),this._parseListItem(e,t,0)})),!this.currentItems.length&&this.params.freetext&&(this.input.value=this.initialValues,this.typing=!0,this.lastAction="typing"),this.data=t,t}_parseListItem(e,t,i){var s={};e.options?s=this._parseListGroup(e,i+1):(s={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,selected:!1,visible:!0,level:i,original:e},this.initialValues&&this.initialValues.indexOf(e.value)>-1&&this._chooseItem(s,!0)),t.push(s)}_parseListGroup(e,t){var i={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1,visible:!0,level:t,options:[],original:e};return e.options.forEach((e=>{this._parseListItem(e,i.options,t)})),i}_sortOptions(e){var t;return this.params.sort&&(t="function"==typeof this.params.sort?this.params.sort:this._defaultSortFunction.bind(this),this._sortGroup(t,e)),e}_sortGroup(e,t){t.sort(((t,i)=>e(t.label,i.label,t.value,i.value,t.original,i.original))),t.forEach((t=>{t.group&&this._sortGroup(e,t.options)}))}_defaultSortFunction(e,t){var i,s,o,n,r,a=0,l=/(\d+)|(\D+)/g,h=/\d/,d=0;if("desc"===this.params.sort&&([e,t]=[t,e]),e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((i=String(e).toLowerCase())===(s=String(t).toLowerCase()))return 0;if(!h.test(i)||!h.test(s))return i>s?1:-1;for(i=i.match(l),s=s.match(l),r=i.length>s.length?s.length:i.length;an?1:-1;return i.length>s.length}d=1}else d=t||0===t?-1:0;return d}_filterOptions(){var e=this.params.filterFunc||this._defaultFilterFunc,t=this.input.value;return t?(this.filtered=!0,this.data.forEach((i=>{this._filterItem(e,t,i)}))):this.filtered=!1,this.data}_filterItem(e,t,i){var s=!1;return i.group?(i.options.forEach((i=>{this._filterItem(e,t,i)&&(s=!0)})),i.visible=s):i.visible=e(t,i.label,i.value,i.original),i.visible}_defaultFilterFunc(e,t,i,s){return e=String(e).toLowerCase(),null!=t&&(String(t).toLowerCase().indexOf(e)>-1||String(i).toLowerCase().indexOf(e)>-1)}_clearList(){for(;this.listEl.firstChild;)this.listEl.removeChild(this.listEl.firstChild);this.displayItems=[]}_buildList(e){this._clearList(),e.forEach((e=>{this._buildItem(e)})),this.displayItems.length||this._addPlaceholder(this.params.placeholderEmpty)}_buildItem(e){var t,i=e.element;if(!this.filtered||e.visible){if(!i){if((i=document.createElement("div")).tabIndex=0,(t=this.params.itemFormatter?this.params.itemFormatter(e.label,e.value,e.original,i):e.label)instanceof HTMLElement?i.appendChild(t):i.innerHTML=t,e.group?i.classList.add("tabulator-edit-list-group"):i.classList.add("tabulator-edit-list-item"),i.classList.add("tabulator-edit-list-group-level-"+e.level),e.elementAttributes&&"object"==typeof e.elementAttributes)for(let t in e.elementAttributes)"+"==t.charAt(0)?(t=t.slice(1),i.setAttribute(t,this.input.getAttribute(t)+e.elementAttributes["+"+t])):i.setAttribute(t,e.elementAttributes[t]);e.group?i.addEventListener("click",this._groupClick.bind(this,e)):i.addEventListener("click",this._itemClick.bind(this,e)),i.addEventListener("mousedown",this._preventBlur.bind(this)),e.element=i}this._styleItem(e),this.listEl.appendChild(i),e.group?e.options.forEach((e=>{this._buildItem(e)})):this.displayItems.push(e)}}_showList(){var e=this.popup&&this.popup.isVisible();if(this.input.parentNode){if(this.params.autocomplete&&""===this.input.value&&!this.params.listOnEmpty)return void(this.popup&&this.popup.hide(!0));this._setListWidth(),this.popup||(this.popup=this.edit.popup(this.listEl)),this.popup.show(this.cell.getElement(),"bottom"),e||setTimeout((()=>{this.popup.hideOnBlur(this._resolveValue.bind(this,!0))}),10)}}_styleItem(e){e&&e.element&&(e.selected?e.element.classList.add("active"):e.element.classList.remove("active"))}_itemClick(e,t){t.stopPropagation(),this._chooseItem(e)}_groupClick(e,t){t.stopPropagation()}_cancel(){this.popup.hide(!0),this.actions.cancel()}_clearChoices(){this.typing=!0,this.currentItems.forEach((e=>{e.selected=!1,this._styleItem(e)})),this.currentItems=[],this.focusedItem=null}_chooseItem(e,t){var i;this.typing=!1,this.params.multiselect?((i=this.currentItems.indexOf(e))>-1?(this.currentItems.splice(i,1),e.selected=!1):(this.currentItems.push(e),e.selected=!0),this.input.value=this.currentItems.map((e=>e.label)).join(","),this._styleItem(e)):(this.currentItems=[e],e.selected=!0,this.input.value=e.label,this._styleItem(e),t||this._resolveValue()),this._focusItem(e)}_resolveValue(e){var t,i;if(this.popup&&this.popup.hide(!0),this.params.multiselect)t=this.currentItems.map((e=>e.value));else if(e&&this.params.autocomplete&&this.typing){if(!(this.params.freetext||this.params.allowEmpty&&""===this.input.value))return void this.actions.cancel();t=this.input.value}else t=this.currentItems[0]?this.currentItems[0].value:null==(i=Array.isArray(this.initialValues)?this.initialValues[0]:this.initialValues)||""===i?i:this.params.emptyValue;""===t&&(t=this.params.emptyValue),this.actions.success(t),this.isFilter&&(this.initialValues=t&&!Array.isArray(t)?[t]:t,this.currentItems=[])}}var k={input:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type",o.search?"search":"text"),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(e){null==n&&""!==r.value||r.value!==n?i(r.value)&&(n=r.value):s()}return r.value=void 0!==n?n:"",t((function(){"cell"===e.getType()&&(r.focus({preventScroll:!0}),r.style.height="100%",o.selectContents&&r.select())})),r.addEventListener("change",a),r.addEventListener("blur",a),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s();break;case 35:case 36:e.stopPropagation()}})),o.mask&&T(r,o),r},textarea:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"hybrid",a=String(null!=n?n:""),l=document.createElement("textarea"),h=0;if(l.style.display="block",l.style.padding="2px",l.style.height="100%",l.style.width="100%",l.style.boxSizing="border-box",l.style.whiteSpace="pre-wrap",l.style.resize="none",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),l.setAttribute(e,l.getAttribute(e)+o.elementAttributes["+"+e])):l.setAttribute(e,o.elementAttributes[e]);function d(t){null==n&&""!==l.value||l.value!==n?(i(l.value)&&(n=l.value),setTimeout((function(){e.getRow().normalizeHeight()}),300)):s()}return l.value=a,t((function(){"cell"===e.getType()&&(l.focus({preventScroll:!0}),l.style.height="100%",l.scrollHeight,l.style.height=l.scrollHeight+"px",e.getRow().normalizeHeight(),o.selectContents&&l.select())})),l.addEventListener("change",d),l.addEventListener("blur",d),l.addEventListener("keyup",(function(){l.style.height="";var t=l.scrollHeight;l.style.height=t+"px",t!=h&&(h=t,e.getRow().normalizeHeight())})),l.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:e.shiftKey&&o.shiftEnterSubmit&&d();break;case 27:s();break;case 38:("editor"==r||"hybrid"==r&&l.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==r||"hybrid"==r&&l.selectionStart!==l.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&T(l,o),l},number:function(e,t,i,s,o){var n=e.getValue(),r=o.verticalNavigation||"editor",a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==o.max&&a.setAttribute("max",o.max),void 0!==o.min&&a.setAttribute("min",o.min),void 0!==o.step&&a.setAttribute("step",o.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),a.setAttribute(e,a.getAttribute(e)+o.elementAttributes["+"+e])):a.setAttribute(e,o.elementAttributes[e]);a.value=n;var l=function(e){h()};function h(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!==n?i(e)&&(n=e):s()}return t((function(){"cell"===e.getType()&&(a.removeEventListener("blur",l),a.focus({preventScroll:!0}),a.style.height="100%",a.addEventListener("blur",l),o.selectContents&&a.select())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:h();break;case 27:s();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}})),o.mask&&T(a,o),a},range:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input");if(r.setAttribute("type","range"),void 0!==o.max&&r.setAttribute("max",o.max),void 0!==o.min&&r.setAttribute("min",o.min),void 0!==o.step&&r.setAttribute("step",o.step),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function a(){var e=r.value;isNaN(e)||""===e||(e=Number(e)),e!=n?i(e)&&(n=e):s()}return r.value=n,t((function(){"cell"===e.getType()&&(r.focus({preventScroll:!0}),r.style.height="100%")})),r.addEventListener("blur",(function(e){a()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:a();break;case 27:s()}})),r},date:function(e,t,i,s,o){var n=o.format,r=o.verticalNavigation||"editor",a=n?window.DateTime||luxon.DateTime:null,l=e.getValue(),h=document.createElement("input");function d(e){return(a.isDateTime(e)?e:"iso"===n?a.fromISO(String(e)):a.fromFormat(String(e),n)).toFormat("yyyy-MM-dd")}if(h.type="date",h.style.padding="4px",h.style.width="100%",h.style.boxSizing="border-box",o.max&&h.setAttribute("max",n?d(o.max):o.max),o.min&&h.setAttribute("min",n?d(o.min):o.min),o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),h.setAttribute(e,h.getAttribute(e)+o.elementAttributes["+"+e])):h.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=h.value;if(null==l&&""!==t||t!==l){if(t&&n)switch(e=a.fromFormat(String(t),"yyyy-MM-dd"),n){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(n)}i(t)&&(l=h.value)}else s()}return l=void 0!==l?l:"",n&&(a?l=d(l):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),h.value=l,t((function(){"cell"===e.getType()&&(h.focus({preventScroll:!0}),h.style.height="100%",o.selectContents&&h.select())})),h.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==h)&&c()})),h.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation())}})),h},time:function(e,t,i,s,o){var n,r=o.format,a=o.verticalNavigation||"editor",l=r?window.DateTime||luxon.DateTime:null,h=e.getValue(),d=document.createElement("input");if(d.type="time",d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),d.setAttribute(e,d.getAttribute(e)+o.elementAttributes["+"+e])):d.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=d.value;if(null==h&&""!==t||t!==h){if(t&&r)switch(e=l.fromFormat(String(t),"hh:mm"),r){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(r)}i(t)&&(h=d.value)}else s()}return h=void 0!==h?h:"",r&&(l?(n=l.isDateTime(h)?h:"iso"===r?l.fromISO(String(h)):l.fromFormat(String(h),r),h=n.toFormat("HH:mm")):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),console.log("val",h),d.value=h,t((function(){"cell"==e.getType()&&(d.focus({preventScroll:!0}),d.style.height="100%",o.selectContents&&d.select())})),d.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==d)&&c()})),d.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}})),d},datetime:function(e,t,i,s,o){var n,r=o.format,a=o.verticalNavigation||"editor",l=r?window.DateTime||luxon.DateTime:null,h=e.getValue(),d=document.createElement("input");if(d.type="datetime-local",d.style.padding="4px",d.style.width="100%",d.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),d.setAttribute(e,d.getAttribute(e)+o.elementAttributes["+"+e])):d.setAttribute(e,o.elementAttributes[e]);function c(){var e,t=d.value;if(null==h&&""!==t||t!==h){if(t&&r)switch(e=l.fromISO(String(t)),r){case!0:t=e;break;case"iso":t=e.toISO();break;default:t=e.toFormat(r)}i(t)&&(h=d.value)}else s()}return h=void 0!==h?h:"",r&&(l?(n=l.isDateTime(h)?h:"iso"===r?l.fromISO(String(h)):l.fromFormat(String(h),r),h=n.toFormat("yyyy-MM-dd")+"T"+n.toFormat("HH:mm")):console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js")),d.value=h,t((function(){"cell"===e.getType()&&(d.focus({preventScroll:!0}),d.style.height="100%",o.selectContents&&d.select())})),d.addEventListener("blur",(function(e){(e.relatedTarget||e.rangeParent||e.explicitOriginalTarget!==d)&&c()})),d.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:c();break;case 27:s();break;case 35:case 36:e.stopPropagation();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}})),d},select:function(e,t,i,s,o){return this.deprecationMsg("The select editor has been deprecated, please use the new list editor"),new M(this,e,t,i,s,o).input},list:function(e,t,i,s,o){return new M(this,e,t,i,s,o).input},autocomplete:function(e,t,i,s,o){return this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"),o.autocomplete=!0,new M(this,e,t,i,s,o).input},star:function(e,t,i,s,o){var n=this,r=e.getElement(),a=e.getValue(),l=r.getElementsByTagName("svg").length||5,h=r.getElementsByTagName("svg")[0]?r.getElementsByTagName("svg")[0].getAttribute("width"):14,d=[],c=document.createElement("div"),u=document.createElementNS("http://www.w3.org/2000/svg","svg");function m(e){d.forEach((function(t,i){i'):("ie"==n.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')}))}function p(e){var t=document.createElement("span"),s=u.cloneNode(!0);d.push(s),t.addEventListener("mouseenter",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),m(e)})),t.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),t.addEventListener("click",(function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),r.blur()})),t.appendChild(s),c.appendChild(t)}function g(e){a=e,m(e)}if(r.style.whiteSpace="nowrap",r.style.overflow="hidden",r.style.textOverflow="ellipsis",c.style.verticalAlign="middle",c.style.display="inline-block",c.style.padding="4px",u.setAttribute("width",h),u.setAttribute("height",h),u.setAttribute("viewBox","0 0 512 512"),u.setAttribute("xml:space","preserve"),u.style.padding="0 1px",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),c.setAttribute(e,c.getAttribute(e)+o.elementAttributes["+"+e])):c.setAttribute(e,o.elementAttributes[e]);for(var b=1;b<=l;b++)p(b);return m(a=Math.min(parseInt(a),l)),c.addEventListener("mousemove",(function(e){m(0)})),c.addEventListener("click",(function(e){i(0)})),r.addEventListener("blur",(function(e){s()})),r.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:g(a+1);break;case 37:g(a-1);break;case 13:i(a);break;case 27:s()}})),c},progress:function(e,t,i,s,o){var n,r,a=e.getElement(),l=void 0===o.max?a.getElementsByTagName("div")[0]&&a.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,h=void 0===o.min?a.getElementsByTagName("div")[0]&&a.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,d=(l-h)/100,c=e.getValue()||0,u=document.createElement("div"),m=document.createElement("div");function p(){var e=window.getComputedStyle(a,null),t=d*Math.round(m.offsetWidth/((a.clientWidth-parseInt(e.getPropertyValue("padding-left"))-parseInt(e.getPropertyValue("padding-right")))/100))+h;i(t),a.setAttribute("aria-valuenow",t),a.setAttribute("aria-label",c)}if(u.style.position="absolute",u.style.right="0",u.style.top="0",u.style.bottom="0",u.style.width="5px",u.classList.add("tabulator-progress-handle"),m.style.display="inline-block",m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),m.setAttribute(e,m.getAttribute(e)+o.elementAttributes["+"+e])):m.setAttribute(e,o.elementAttributes[e]);return a.style.padding="4px 4px",c=Math.min(parseFloat(c),l),c=Math.max(parseFloat(c),h),c=Math.round((c-h)/d),m.style.width=c+"%",a.setAttribute("aria-valuemin",h),a.setAttribute("aria-valuemax",l),m.appendChild(u),u.addEventListener("mousedown",(function(e){n=e.screenX,r=m.offsetWidth})),u.addEventListener("mouseover",(function(){u.style.cursor="ew-resize"})),a.addEventListener("mousemove",(function(e){n&&(m.style.width=r+e.screenX-n+"px")})),a.addEventListener("mouseup",(function(e){n&&(e.stopPropagation(),e.stopImmediatePropagation(),n=!1,r=!1,p())})),a.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),m.style.width=m.clientWidth+a.clientWidth/100+"px";break;case 37:e.preventDefault(),m.style.width=m.clientWidth-a.clientWidth/100+"px";break;case 9:case 13:p();break;case 27:s()}})),a.addEventListener("blur",(function(){s()})),m},tickCross:function(e,t,i,s,o){var n=e.getValue(),r=document.createElement("input"),a=o.tristate,l=void 0===o.indeterminateValue?null:o.indeterminateValue,h=!1,d=Object.keys(o).includes("trueValue"),c=Object.keys(o).includes("falseValue");if(r.setAttribute("type","checkbox"),r.style.marginTop="5px",r.style.boxSizing="border-box",o.elementAttributes&&"object"==typeof o.elementAttributes)for(let e in o.elementAttributes)"+"==e.charAt(0)?(e=e.slice(1),r.setAttribute(e,r.getAttribute(e)+o.elementAttributes["+"+e])):r.setAttribute(e,o.elementAttributes[e]);function u(e){var t=r.checked;return d&&t?t=o.trueValue:c&&!t&&(t=o.falseValue),a?e?h?l:t:r.checked&&!h?(r.checked=!1,r.indeterminate=!0,h=!0,l):(h=!1,t):t}return r.value=n,!a||void 0!==n&&n!==l&&""!==n||(h=!0,r.indeterminate=!0),"firefox"!=this.table.browser&&"safari"!=this.table.browser&&t((function(){"cell"===e.getType()&&r.focus({preventScroll:!0})})),r.checked=d?n===o.trueValue:!0===n||"true"===n||"True"===n||1===n,r.addEventListener("change",(function(e){i(u())})),r.addEventListener("blur",(function(e){i(u(!0))})),r.addEventListener("keydown",(function(e){13==e.keyCode&&i(u()),27==e.keyCode&&s()})),r}};class L extends s{constructor(e){super(e),this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[],this.editors=L.editors,this.registerColumnOption("editable"),this.registerColumnOption("editor"),this.registerColumnOption("editorParams"),this.registerColumnOption("cellEditing"),this.registerColumnOption("cellEdited"),this.registerColumnOption("cellEditCancelled"),this.registerTableOption("editTriggerEvent","focus"),this.registerTableFunction("getEditedCells",this.getEditedCells.bind(this)),this.registerTableFunction("clearCellEdited",this.clearCellEdited.bind(this)),this.registerTableFunction("navigatePrev",this.navigatePrev.bind(this)),this.registerTableFunction("navigateNext",this.navigateNext.bind(this)),this.registerTableFunction("navigateLeft",this.navigateLeft.bind(this)),this.registerTableFunction("navigateRight",this.navigateRight.bind(this)),this.registerTableFunction("navigateUp",this.navigateUp.bind(this)),this.registerTableFunction("navigateDown",this.navigateDown.bind(this)),this.registerComponentFunction("cell","isEdited",this.cellIsEdited.bind(this)),this.registerComponentFunction("cell","clearEdited",this.clearEdited.bind(this)),this.registerComponentFunction("cell","edit",this.editCell.bind(this)),this.registerComponentFunction("cell","cancelEdit",this.cellCancelEdit.bind(this)),this.registerComponentFunction("cell","navigatePrev",this.navigatePrev.bind(this)),this.registerComponentFunction("cell","navigateNext",this.navigateNext.bind(this)),this.registerComponentFunction("cell","navigateLeft",this.navigateLeft.bind(this)),this.registerComponentFunction("cell","navigateRight",this.navigateRight.bind(this)),this.registerComponentFunction("cell","navigateUp",this.navigateUp.bind(this)),this.registerComponentFunction("cell","navigateDown",this.navigateDown.bind(this))}initialize(){this.subscribe("cell-init",this.bindEditor.bind(this)),this.subscribe("cell-delete",this.clearEdited.bind(this)),this.subscribe("cell-value-changed",this.updateCellClass.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("column-delete",this.columnDeleteCheck.bind(this)),this.subscribe("row-deleting",this.rowDeleteCheck.bind(this)),this.subscribe("row-layout",this.rowEditableCheck.bind(this)),this.subscribe("data-refreshing",this.cancelEdit.bind(this)),this.subscribe("clipboard-paste",this.pasteBlocker.bind(this)),this.subscribe("keybinding-nav-prev",this.navigatePrev.bind(this,void 0)),this.subscribe("keybinding-nav-next",this.keybindingNavigateNext.bind(this)),this.subscribe("keybinding-nav-up",this.navigateUp.bind(this,void 0)),this.subscribe("keybinding-nav-down",this.navigateDown.bind(this,void 0))}pasteBlocker(e){if(this.currentCell)return!0}keybindingNavigateNext(e){var t=this.currentCell,i=this.options("tabEndNewRow");t&&(this.navigateNext(t,e)||i&&(t.getElement().firstChild.blur(),this.invalidEdit||(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(t.row.getComponent())):this.table.addRow(Object.assign({},i))).then((()=>{setTimeout((()=>{t.getComponent().navigateNext()}))}))))}cellIsEdited(e){return!!e.modules.edit&&e.modules.edit.edited}cellCancelEdit(e){e===this.currentCell?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}updateCellClass(e){this.allowEdit(e)?e.getElement().classList.add("tabulator-editable"):e.getElement().classList.remove("tabulator-editable")}clearCellEdited(e){e||(e=this.table.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.table.modules.edit.clearEdited(e._getSelf())}))}navigatePrev(e=this.currentCell,t){var i,s;if(e){if(t&&t.preventDefault(),i=this.navigateLeft())return!0;if((s=this.table.rowManager.prevDisplayRow(e.row,!0))&&(i=this.findPrevEditableCell(s,s.cells.length)))return i.getComponent().edit(),!0}return!1}navigateNext(e=this.currentCell,t){var i,s;if(e){if(t&&t.preventDefault(),i=this.navigateRight())return!0;if((s=this.table.rowManager.nextDisplayRow(e.row,!0))&&(i=this.findNextEditableCell(s,-1)))return i.getComponent().edit(),!0}return!1}navigateLeft(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.findPrevEditableCell(e.row,i)))&&(s.getComponent().edit(),!0)}navigateRight(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.findNextEditableCell(e.row,i)))&&(s.getComponent().edit(),!0)}navigateUp(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.table.rowManager.prevDisplayRow(e.row,!0)))&&(s.cells[i].getComponent().edit(),!0)}navigateDown(e=this.currentCell,t){var i,s;return!!(e&&(t&&t.preventDefault(),i=e.getIndex(),s=this.table.rowManager.nextDisplayRow(e.row,!0)))&&(s.cells[i].getComponent().edit(),!0)}findNextEditableCell(e,i){var s=!1;if(i0)for(var o=i-1;o>=0;o--){let i=e.cells[o];if(i.column.modules.edit&&t.elVisible(i.getElement())){if(this.allowEdit(i)){s=i;break}}}return s}initializeColumnCheck(e){void 0!==e.definition.editor&&this.initializeColumn(e)}columnDeleteCheck(e){this.currentCell&&this.currentCell.column===e&&this.cancelEdit()}rowDeleteCheck(e){this.currentCell&&this.currentCell.row===e&&this.cancelEdit()}rowEditableCheck(e){e.getCells().forEach((e=>{e.column.modules.edit&&"function"==typeof e.column.modules.edit.check&&this.updateCellClass(e)}))}initializeColumn(e){var t={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(typeof e.definition.editor){case"string":this.editors[e.definition.editor]?t.editor=this.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":t.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?this.editors[e.definition.formatter]?t.editor=this.editors[e.definition.formatter]:t.editor=this.editors.input:console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}t.editor&&(e.modules.edit=t)}getCurrentCell(){return!!this.currentCell&&this.currentCell.getComponent()}clearEditor(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),this.dispatch("edit-editor-clear",i,e),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-editing"),i.table.element.classList.remove("tabulator-editing")}}cancelEdit(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.definition.cellEditCancelled&&e.column.definition.cellEditCancelled.call(this.table,t),this.dispatch("edit-cancelled",e),this.dispatchExternal("cellEditCancelled",t)}}bindEditor(e){if(e.column.modules.edit){var t=this,i=e.getElement(!0);this.updateCellClass(e),i.setAttribute("tabindex",0),i.addEventListener("mousedown",(function(e){2===e.button?e.preventDefault():t.mouseClick=!0})),"dblclick"===this.options("editTriggerEvent")&&i.addEventListener("dblclick",(function(s){i.classList.contains("tabulator-editing")||(i.focus({preventScroll:!0}),t.edit(e,s,!1))})),"focus"!==this.options("editTriggerEvent")&&"click"!==this.options("editTriggerEvent")||i.addEventListener("click",(function(s){i.classList.contains("tabulator-editing")||(i.focus({preventScroll:!0}),t.edit(e,s,!1))})),"focus"===this.options("editTriggerEvent")&&i.addEventListener("focus",(function(i){t.recursionBlock||t.edit(e,i,!1)}))}}focusCellNoEvent(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1}editCell(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)}focusScrollAdjust(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,s=e.row.getElement();s.offsetTopi&&(this.table.rowManager.element.scrollTop+=s.offsetTop+s.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,n=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin||0),n-=parseInt(this.table.modules.frozenColumns.rightMargin||0)),"virtual"===this.table.options.renderHorizontal&&(o-=parseInt(this.table.columnManager.renderer.vDomPadLeft),n-=parseInt(this.table.columnManager.renderer.vDomPadLeft)),r.offsetLeftn&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-n)}}allowEdit(e){var t=!!e.column.modules.edit;if(e.column.modules.edit)switch(typeof e.column.modules.edit.check){case"function":e.row.initialized&&(t=e.column.modules.edit.check(e.getComponent()));break;case"string":t=!!e.row.data[e.column.modules.edit.check];break;case"boolean":t=e.column.modules.edit.check}return t}edit(e,t,i){var s,o,n,r=this,a=function(){},l=e.getElement(),h=!1;if(!this.currentCell){if(e.column.modules.edit.blocked)return this.mouseClick=!1,this.blur(l),!1;if(t&&t.stopPropagation(),this.allowEdit(e)||i){if(r.cancelEdit(),r.currentCell=e,this.focusScrollAdjust(e),o=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.definition.cellClick&&e.column.definition.cellClick.call(this.table,t,o)),e.column.definition.cellEditing&&e.column.definition.cellEditing.call(this.table,o),this.dispatch("cell-editing",e),this.dispatchExternal("cellEditing",o),n="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(o):e.column.modules.edit.params,s=e.column.modules.edit.editor.call(r,o,(function(e){a=e}),(function(t){if(r.currentCell===e&&!h){var i=r.chain("edit-success",[e,t],!0,!0);return!0===i||"highlight"===r.table.options.validationMode?(h=!0,r.clearEditor(),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==r.editedCells.indexOf(e)&&r.editedCells.push(e),e.setValue(t,!0),!0===i):(h=!0,r.invalidEdit=!0,r.focusCellNoEvent(e,!0),a(),setTimeout((()=>{h=!1}),10),!1)}}),(function(){r.currentCell!==e||h||r.cancelEdit()}),n),!this.currentCell||!1===s)return this.blur(l),!1;if(!(s instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",s),this.blur(l),!1;for(l.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-editing"),e.table.element.classList.add("tabulator-editing");l.firstChild;)l.removeChild(l.firstChild);l.appendChild(s),a();for(var d=l.children,c=0;c{e.push(t.getComponent())})),e}clearEdited(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.edit.edited=!1,this.dispatch("edit-edited-clear",e)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)}}L.moduleName="edit",L.editors=k;class S{constructor(e,t,i,s){this.type=e,this.columns=t,this.component=i||!1,this.indent=s||0}}class D{constructor(e,t,i,s,o){this.value=e,this.component=t||!1,this.width=i,this.height=s,this.depth=o}}class P extends s{constructor(e){super(e),this.config={},this.cloneTableStyle=!0,this.colVisProp="",this.registerTableOption("htmlOutputConfig",!1),this.registerColumnOption("htmlOutput"),this.registerColumnOption("titleHtmlOutput")}initialize(){this.registerTableFunction("getHtml",this.getHtml.bind(this))}generateExportList(e,t,i,s){var o,n;if(this.cloneTableStyle=t,this.config=e||{},this.colVisProp=s,"range"===i){var r=this.table.modules.selectRange.selectedColumns();o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders(r)):[],n=this.bodyToExportRows(this.rowLookup(i),this.table.modules.selectRange.selectedColumns(!0))}else o=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],n=this.bodyToExportRows(this.rowLookup(i));return o.concat(n)}generateTable(e,t,i,s){var o=this.generateExportList(e,t,i,s);return this.generateTableElement(o)}rowLookup(e){var t=[];if("function"==typeof e)e.call(this.table).forEach((e=>{(e=this.table.rowManager.findRow(e))&&t.push(e)}));else switch(e){case!0:case"visible":t=this.table.rowManager.getVisibleRows(!1,!0);break;case"all":t=this.table.rowManager.rows;break;case"selected":t=this.table.modules.selectRow.selectedRows;break;case"range":t=this.table.modules.selectRange.selectedRows();break;default:t=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],t)}generateColumnGroupHeaders(e){var t=[];return e||(e=!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex),e.forEach((e=>{var i=this.processColumnGroup(e);i&&t.push(i)})),t}processColumnGroup(e){var t=e.columns,i=0,s={title:e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,column:e,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach((e=>{var t=this.processColumnGroup(e);t&&(s.width+=t.width,s.subGroups.push(t),t.depth>i&&(i=t.depth))})),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s}columnVisCheck(e){var t=e.definition[this.colVisProp];return"function"==typeof t&&(t=t.call(this.table,e.getComponent())),!1!==t&&(e.visible||!e.visible&&t)}headersToExportRows(e){var t=[],i=0,s=[];function o(e,s){var n=i-s;if(void 0===t[s]&&(t[s]=[]),e.height=e.subGroups?1:n-e.depth+1,t[s].push(e),e.height>1)for(let i=1;i1)for(let i=1;ii&&(i=e.depth)})),e.forEach((function(e){o(e,0)})),t.forEach((e=>{var t=[];e.forEach((e=>{if(e){let i=void 0===e.title?"":e.title;t.push(new D(i,e.column.getComponent(),e.width,e.height,e.depth))}else t.push(null)})),s.push(new S("header",t))})),s}bodyToExportRows(e,t=[]){var i=[];return 0===t.length&&this.table.columnManager.columnsByIndex.forEach((e=>{this.columnVisCheck(e)&&t.push(e.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),(e=e.filter((e=>{switch(e.type){case"group":return!1!==this.config.rowGroups;case"calc":return!1!==this.config.columnCalcs;case"row":return!(this.table.options.dataTree&&!1===this.config.dataTree&&e.modules.dataTree.parent)}return!0}))).forEach(((e,s)=>{var o=e.getData(this.colVisProp),n=[],r=0;switch(e.type){case"group":r=e.level,n.push(new D(e.key,e.getComponent(),t.length,1));break;case"calc":case"row":t.forEach((e=>{n.push(new D(e._column.getFieldValue(o),e,1,1))})),this.table.options.dataTree&&!1!==this.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new S(e.type,n,e.getComponent(),r))})),i}generateTableElement(e){var t=document.createElement("table"),i=document.createElement("thead"),s=document.createElement("tbody"),o=this.lookupTableStyles(),n=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r={};return r.rowFormatter=null!==n?n:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(r.treeElementField=this.table.modules.dataTree.elementField),r.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r.groupHeader&&!Array.isArray(r.groupHeader)&&(r.groupHeader=[r.groupHeader]),t.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(((e,t)=>{let n;switch(e.type){case"header":i.appendChild(this.generateHeaderElement(e,r,o));break;case"group":s.appendChild(this.generateGroupElement(e,r,o));break;case"calc":s.appendChild(this.generateCalcElement(e,r,o));break;case"row":n=this.generateRowElement(e,r,o),this.mapElementStyles(t%2&&o.evenRow?o.evenRow:o.oddRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s.appendChild(n)}})),i.innerHTML&&t.appendChild(i),t.appendChild(s),this.mapElementStyles(this.table.element,t,["border-top","border-left","border-right","border-bottom"]),t}lookupTableStyles(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e}generateHeaderElement(e,t,i){var s=document.createElement("tr");return e.columns.forEach((e=>{if(e){var t=document.createElement("th"),i=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,this.cloneTableStyle&&(t.style.boxSizing="border-box"),i.forEach((function(e){t.classList.add(e)})),this.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),this.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?this.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&this.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),s.appendChild(t)}})),s}generateGroupElement(e,t,i){var s=document.createElement("tr"),o=document.createElement("td"),n=e.columns[0];return s.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?n.value=t.groupHeader[e.indent](n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1!==t.groupHeader&&(n.value=e.component._group.generator(n.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)),o.colSpan=n.width,o.innerHTML=n.value,s.classList.add("tabulator-print-table-group"),s.classList.add("tabulator-group-level-"+e.indent),n.component.isVisible()&&s.classList.add("tabulator-group-visible"),this.mapElementStyles(i.firstGroup,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(i.firstGroup,o,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(o),s}generateCalcElement(e,t,i){var s=this.generateRowElement(e,t,i);return s.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(i.calcRow,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),s}generateRowElement(e,t,i){var s=document.createElement("tr");if(s.classList.add("tabulator-print-table-row"),e.columns.forEach(((o,n)=>{if(o){var r,a=document.createElement("td"),l=o.component._column,h=this.table,d=h.columnManager.findColumnIndex(l),c=o.value,u={modules:{},getValue:function(){return c},getField:function(){return l.definition.field},getElement:function(){return a},getType:function(){return"cell"},getColumn:function(){return l.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getTable:function(){return h},getComponent:function(){return u},column:l};if((l.definition.cssClass?l.definition.cssClass.split(" "):[]).forEach((function(e){a.classList.add(e)})),this.table.modExists("format")&&!1!==this.config.formatCells)c=this.table.modules.format.formatExportValue(u,this.colVisProp);else switch(typeof c){case"object":c=null!==c?JSON.stringify(c):"";break;case"undefined":c=""}c instanceof Node?a.appendChild(c):a.innerHTML=c,(r=i.styleCells&&i.styleCells[d]?i.styleCells[d]:i.firstCell)&&(this.mapElementStyles(r,a,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),l.definition.align&&(a.style.textAlign=l.definition.align)),this.table.options.dataTree&&!1!==this.config.dataTree&&(t.treeElementField&&t.treeElementField==l.field||!t.treeElementField&&0==n)&&(e.component._row.modules.dataTree.controlEl&&a.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),a.firstChild),e.component._row.modules.dataTree.branchEl&&a.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),a.firstChild)),s.appendChild(a),u.modules.format&&u.modules.format.renderedCallback&&u.modules.format.renderedCallback()}})),t.rowFormatter&&"row"===e.type&&!1!==this.config.formatCells){Object.assign(e.component).getElement=function(){return s},t.rowFormatter(e.component)}return s}generateHTMLTable(e){var t=document.createElement("div");return t.appendChild(this.generateTableElement(e)),t.innerHTML}getHtml(e,t,i,s){var o=this.generateExportList(i||this.table.options.htmlOutputConfig,t,e,s||"htmlOutput");return this.generateHTMLTable(o)}mapElementStyles(e,t,i){if(this.cloneTableStyle&&e&&t){var s={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var o=window.getComputedStyle(e);i.forEach((function(e){t.style[s[e]]||(t.style[s[e]]=o.getPropertyValue(e))}))}}}}P.moduleName="export";var z={"=":function(e,t,i,s){return t==e},"<":function(e,t,i,s){return t":function(e,t,i,s){return t>e},">=":function(e,t,i,s){return t>=e},"!=":function(e,t,i,s){return t!=e},regex:function(e,t,i,s){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,i,s){var o=e.toLowerCase().split(void 0===s.separator?" ":s.separator),n=String(null==t?"":t).toLowerCase(),r=[];return o.forEach((e=>{n.includes(e)&&r.push(!0)})),s.matchAll?r.length===o.length:!!r.length},starts:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,i,s){return null==e?t===e:null!=t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,i,s){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}};class H extends s{constructor(e){super(e),this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1,this.tableInitialized=!1,this.registerTableOption("filterMode","local"),this.registerTableOption("initialFilter",!1),this.registerTableOption("initialHeaderFilter",!1),this.registerTableOption("headerFilterLiveFilterDelay",300),this.registerTableOption("placeholderHeaderFilter",!1),this.registerColumnOption("headerFilter"),this.registerColumnOption("headerFilterPlaceholder"),this.registerColumnOption("headerFilterParams"),this.registerColumnOption("headerFilterEmptyCheck"),this.registerColumnOption("headerFilterFunc"),this.registerColumnOption("headerFilterFuncParams"),this.registerColumnOption("headerFilterLiveFilter"),this.registerTableFunction("searchRows",this.searchRows.bind(this)),this.registerTableFunction("searchData",this.searchData.bind(this)),this.registerTableFunction("setFilter",this.userSetFilter.bind(this)),this.registerTableFunction("refreshFilter",this.userRefreshFilter.bind(this)),this.registerTableFunction("addFilter",this.userAddFilter.bind(this)),this.registerTableFunction("getFilters",this.getFilters.bind(this)),this.registerTableFunction("setHeaderFilterFocus",this.userSetHeaderFilterFocus.bind(this)),this.registerTableFunction("getHeaderFilterValue",this.userGetHeaderFilterValue.bind(this)),this.registerTableFunction("setHeaderFilterValue",this.userSetHeaderFilterValue.bind(this)),this.registerTableFunction("getHeaderFilters",this.getHeaderFilters.bind(this)),this.registerTableFunction("removeFilter",this.userRemoveFilter.bind(this)),this.registerTableFunction("clearFilter",this.userClearFilter.bind(this)),this.registerTableFunction("clearHeaderFilter",this.userClearHeaderFilter.bind(this)),this.registerComponentFunction("column","headerFilterFocus",this.setHeaderFilterFocus.bind(this)),this.registerComponentFunction("column","reloadHeaderFilter",this.reloadHeaderFilter.bind(this)),this.registerComponentFunction("column","getHeaderFilterValue",this.getHeaderFilterValue.bind(this)),this.registerComponentFunction("column","setHeaderFilterValue",this.setHeaderFilterValue.bind(this))}initialize(){this.subscribe("column-init",this.initializeColumnHeaderFilter.bind(this)),this.subscribe("column-width-fit-before",this.hideHeaderFilterElements.bind(this)),this.subscribe("column-width-fit-after",this.showHeaderFilterElements.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.subscribe("placeholder",this.generatePlaceholder.bind(this)),"remote"===this.table.options.filterMode&&this.subscribe("data-params",this.remoteFilterParams.bind(this)),this.registerDataHandler(this.filter.bind(this),10)}tableBuilt(){this.table.options.initialFilter&&this.setFilter(this.table.options.initialFilter),this.table.options.initialHeaderFilter&&this.table.options.initialHeaderFilter.forEach((e=>{var t=this.table.columnManager.findColumn(e.field);if(!t)return console.warn("Column Filter Error - No matching column found:",e.field),!1;this.setHeaderFilterValue(t,e.value)})),this.tableInitialized=!0}remoteFilterParams(e,t,i,s){return s.filter=this.getFilters(!0,!0),s}generatePlaceholder(e){if(this.table.options.placeholderHeaderFilter&&Object.keys(this.headerFilters).length)return this.table.options.placeholderHeaderFilter}userSetFilter(e,t,i,s){this.setFilter(e,t,i,s),this.refreshFilter()}userRefreshFilter(){this.refreshFilter()}userAddFilter(e,t,i,s){this.addFilter(e,t,i,s),this.refreshFilter()}userSetHeaderFilterFocus(e){var t=this.table.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.setHeaderFilterFocus(t)}userGetHeaderFilterValue(e){var t=this.table.columnManager.findColumn(e);if(t)return this.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}userSetHeaderFilterValue(e,t){var i=this.table.columnManager.findColumn(e);if(!i)return console.warn("Column Filter Error - No matching column found:",e),!1;this.setHeaderFilterValue(i,t)}userRemoveFilter(e,t,i){this.removeFilter(e,t,i),this.refreshFilter()}userClearFilter(e){this.clearFilter(e),this.refreshFilter()}userClearHeaderFilter(){this.clearHeaderFilter(),this.refreshFilter()}searchRows(e,t,i){return this.search("rows",e,t,i)}searchData(e,t,i){return this.search("data",e,t,i)}initializeColumnHeaderFilter(e){e.definition.headerFilter&&this.initializeColumn(e)}initializeColumn(e,t){var i=this,s=e.getField();e.modules.filter={success:function(t){var o,n="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[s];else{switch(e.modules.filter.value=t,typeof e.definition.headerFilterFunc){case"string":H.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,H.filters[e.definition.headerFilterFunc](t,o,i,s)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=o=function(i){var s=e.definition.headerFilterFuncParams||{},o=e.getFieldValue(i);return s="function"==typeof s?s(t,o,i):s,e.definition.headerFilterFunc(t,o,i,s)}}if(!o)if("partial"===n)o=function(i){var s=e.getFieldValue(i);return null!=s&&String(s).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";else o=function(i){return e.getFieldValue(i)==t},r="=";i.headerFilters[s]={value:t,func:o,type:r}}e.modules.filter.value=t,a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.trackChanges(),i.refreshFilter())}return!0},attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)}generateHeaderFilterElement(e,t,i){var s,o,n,r,a,l,h,d,c=this,u=e.modules.filter.success,m=e.getField();if(e.modules.filter.value=t,e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),m){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&0!==e},(s=document.createElement("div")).classList.add("tabulator-header-filter"),typeof e.definition.headerFilter){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(o=c.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":o=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?o=e.modules.edit.editor:e.definition.formatter&&c.table.modules.edit.editors[e.definition.formatter]?(o=c.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):o=c.table.modules.edit.editors.input}if(o){if(r={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return s},getColumn:function(){return e.getComponent()},getTable:()=>this.table,getType:()=>"header",getRow:function(){return{normalizeHeight:function(){}}}},h="function"==typeof(h=e.definition.headerFilterParams||{})?h.call(c.table,r):h,!(n=o.call(this.table.modules.edit,r,(function(e){d=e}),u,(function(){}),h)))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor returned a value of false");if(!(n instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor should return an instance of Node, the editor returned:",n);c.langBind("headerFilters|columns|"+e.definition.field,(function(t){n.setAttribute("placeholder",void 0!==t&&t?t:e.definition.headerFilterPlaceholder||c.langText("headerFilters|default"))})),n.addEventListener("click",(function(e){e.stopPropagation(),n.focus()})),n.addEventListener("focus",(e=>{var t=this.table.columnManager.contentsElement.scrollLeft;t!==this.table.rowManager.element.scrollLeft&&(this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))})),a=!1,l=function(e){a&&clearTimeout(a),a=setTimeout((function(){u(n.value)}),c.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=n,e.modules.filter.attrType=n.hasAttribute("type")?n.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=n.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(n.addEventListener("keyup",l),n.addEventListener("search",l),"number"==e.modules.filter.attrType&&n.addEventListener("change",(function(e){u(n.value)})),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&n.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||n.addEventListener("mousedown",(function(e){e.stopPropagation()}))),s.appendChild(n),e.contentElement.appendChild(s),i||c.headerFilterColumns.push(e),d&&d()}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)}hideHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")}))}showHeaderFilterElements(){this.headerFilterColumns.forEach((function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")}))}setHeaderFilterFocus(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())}getHeaderFilterValue(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())}setHeaderFilterValue(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}reloadHeaderFilter(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))}refreshFilter(){this.tableInitialized&&("remote"===this.table.options.filterMode?this.reloadData(null,!1,!1):this.refreshData(!0))}trackChanges(){this.changed=!0,this.dispatch("filter-changed")}hasChanged(){var e=this.changed;return this.changed=!1,e}setFilter(e,t,i,s){this.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),this.addFilter(e)}addFilter(e,t,i,s){var o=!1;Array.isArray(e)||(e=[{field:e,type:t,value:i,params:s}]),e.forEach((e=>{(e=this.findFilter(e))&&(this.filterList.push(e),o=!0)})),o&&this.trackChanges()}findFilter(e){var t;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:H.filters[e.type]?i=(t=this.table.columnManager.getColumnByField(e.field))?function(i){return H.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return H.filters[e.type](e.value,t[e.field],t,e.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e}findSubFilters(e){var t=[];return e.forEach((e=>{(e=this.findFilter(e))&&t.push(e)})),!!t.length&&t}getFilters(e,t){var i=[];return e&&(i=this.getHeaderFilters()),t&&i.forEach((function(e){"function"==typeof e.type&&(e.type="function")})),i=i.concat(this.filtersToArray(this.filterList,t))}filtersToArray(e,t){var i=[];return e.forEach((e=>{var s;Array.isArray(e)?i.push(this.filtersToArray(e,t)):(s={field:e.field,type:e.type,value:e.value},t&&"function"==typeof s.type&&(s.type="function"),i.push(s))})),i}getHeaderFilters(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e}removeFilter(e,t,i){Array.isArray(e)||(e=[{field:e,type:t,value:i}]),e.forEach((e=>{var t=-1;(t="object"==typeof e.field?this.filterList.findIndex((t=>e===t)):this.filterList.findIndex((t=>e.field===t.field&&e.type===t.type&&e.value===t.value)))>-1?this.filterList.splice(t,1):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)})),this.trackChanges()}clearFilter(e){this.filterList=[],e&&this.clearHeaderFilter(),this.trackChanges()}clearHeaderFilter(){this.headerFilters={},this.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((e=>{void 0!==e.modules.filter.value&&delete e.modules.filter.value,e.modules.filter.prevSuccess=void 0,this.reloadHeaderFilter(e)})),this.trackChanges()}search(e,t,i,s){var o=[],n=[];return Array.isArray(t)||(t=[{field:t,type:i,value:s}]),t.forEach((e=>{(e=this.findFilter(e))&&n.push(e)})),this.table.rowManager.rows.forEach((t=>{var i=!0;n.forEach((e=>{this.filterRecurse(e,t.getData())||(i=!1)})),i&&o.push("data"===e?t.getData("data"):t.getComponent())})),o}filter(e,t){var i=[],s=[];return this.subscribedExternal("dataFiltering")&&this.dispatchExternal("dataFiltering",this.getFilters(!0)),"remote"!==this.table.options.filterMode&&(this.filterList.length||Object.keys(this.headerFilters).length)?e.forEach((e=>{this.filterRow(e)&&i.push(e)})):i=e.slice(0),this.subscribedExternal("dataFiltered")&&(i.forEach((e=>{s.push(e.getComponent())})),this.dispatchExternal("dataFiltered",this.getFilters(!0),s)),i}filterRow(e,t){var i=!0,s=e.getData();for(var o in this.filterList.forEach((e=>{this.filterRecurse(e,s)||(i=!1)})),this.headerFilters)this.headerFilters[o].func(s)||(i=!1);return i}filterRecurse(e,t){var i=!1;return Array.isArray(e)?e.forEach((e=>{this.filterRecurse(e,t)&&(i=!0)})):i=e.func(t),i}}H.moduleName="filter",H.filters=z;var F={plaintext:function(e,t,i){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,i){return e.getValue()},textarea:function(e,t,i){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,i){var s,o,n,r,a,l=parseFloat(e.getValue()),h="",d=t.decimal||".",c=t.thousand||",",u=t.negativeSign||"-",m=t.symbol||"",p=!!t.symbolAfter,g=void 0!==t.precision?t.precision:2;if(isNaN(l))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));if(l<0&&(l=Math.abs(l),h=u),s=!1!==g?l.toFixed(g):l,o=(s=String(s).split("."))[0],n=s.length>1?d+s[1]:"",!1!==t.thousand)for(r=/(\d+)(\d{3})/;r.test(o);)o=o.replace(r,"$1"+c+"$2");return a=o+n,!0===h?(a="("+a+")",p?a+m:m+a):p?h+a+m:h+m+a},link:function(e,i,s){var o,n=e.getValue(),r=i.urlPrefix||"",a=i.download,l=n,h=document.createElement("a");if(i.labelField&&(o=e.getData(),l=function e(t,i){var s=i[t.shift()];return t.length&&"object"==typeof s?e(t,s):s}(i.labelField.split(this.table.options.nestedFieldSeparator),o)),i.label)switch(typeof i.label){case"string":l=i.label;break;case"function":l=i.label(e)}if(l){if(i.urlField&&(o=e.getData(),n=t.retrieveNestedData(this.table.options.nestedFieldSeparator,i.urlField,o)),i.url)switch(typeof i.url){case"string":n=i.url;break;case"function":n=i.url(e)}return h.setAttribute("href",r+n),i.target&&h.setAttribute("target",i.target),i.download&&(a="function"==typeof a?a(e):!0===a?"":a,h.setAttribute("download",a)),h.innerHTML=this.emptyToSpace(this.sanitizeHTML(l)),h}return" "},image:function(e,t,i){var s=document.createElement("img"),o=e.getValue();switch(t.urlPrefix&&(o=t.urlPrefix+e.getValue()),t.urlSuffix&&(o+=t.urlSuffix),s.setAttribute("src",o),typeof t.height){case"number":s.style.height=t.height+"px";break;case"string":s.style.height=t.height}switch(typeof t.width){case"number":s.style.width=t.width+"px";break;case"string":s.style.width=t.width}return s.addEventListener("load",(function(){e.getRow().normalizeHeight()})),s},tickCross:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t.allowEmpty,r=t.allowTruthy,a=Object.keys(t).includes("trueValue"),l=void 0!==t.tickElement?t.tickElement:'',h=void 0!==t.crossElement?t.crossElement:'';return a&&s===t.trueValue||!a&&(r&&s||!0===s||"true"===s||"True"===s||1===s||"1"===s)?(o.setAttribute("aria-checked",!0),l||""):!n||"null"!==s&&""!==s&&null!=s?(o.setAttribute("aria-checked",!1),h||""):(o.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,i){var s,o=window.DateTime||luxon.DateTime,n=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=t.outputFormat||"dd/MM/yyyy HH:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=e.getValue();if(void 0!==o)return(s=o.isDateTime(l)?l:"iso"===n?o.fromISO(String(l)):o.fromFormat(String(l),n)).isValid?(t.timezone&&(s=s.setZone(t.timezone)),s.toFormat(r)):!0!==a&&l?"function"==typeof a?a(l):a:l;console.error("Format Error - 'datetime' formatter is dependant on luxon.js")},datetimediff:function(e,t,i){var s,o=window.DateTime||luxon.DateTime,n=t.inputFormat||"yyyy-MM-dd HH:mm:ss",r=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=void 0!==t.suffix&&t.suffix,l=void 0!==t.unit?t.unit:"days",h=void 0!==t.humanize&&t.humanize,d=void 0!==t.date?t.date:o.now(),c=e.getValue();if(void 0!==o)return(s=o.isDateTime(c)?c:"iso"===n?o.fromISO(String(c)):o.fromFormat(String(c),n)).isValid?h?s.diff(d,l).toHuman()+(a?" "+a:""):parseInt(s.diff(d,l)[l])+(a?" "+a:""):!0===r?c:"function"==typeof r?r(c):r;console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js")},lookup:function(e,t,i){var s=e.getValue();return void 0===t[s]?(console.warn("Missing display value for "+s),s):t[s]},star:function(e,t,i){var s=e.getValue(),o=e.getElement(),n=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",s=s&&!isNaN(s)?parseInt(s):0,s=Math.max(0,Math.min(s,n));for(var l=1;l<=n;l++){var h=a.cloneNode(!0);h.innerHTML=l<=s?'':'',r.appendChild(h)}return o.style.whiteSpace="nowrap",o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.setAttribute("aria-label",s),r},traffic:function(e,t,i){var s,o,n=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,h=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),o=parseFloat(n)<=a?parseFloat(n):a,o=parseFloat(o)>=l?parseFloat(o):l,s=(a-l)/100,o=Math.round((o-l)/s),typeof h){case"string":d=h;break;case"function":d=h(n);break;case"object":if(Array.isArray(h)){var c=100/h.length,u=Math.floor(o/c);u=Math.min(u,h.length-1),d=h[u=Math.max(u,0)];break}}return r.style.backgroundColor=d,r}},progress:function(e,t={},i){var s,o,n,r,a,l=this.sanitizeHTML(e.getValue())||0,h=e.getElement(),d=t.max?t.max:100,c=t.min?t.min:0,u=t.legendAlign?t.legendAlign:"center";switch(o=parseFloat(l)<=d?parseFloat(l):d,o=parseFloat(o)>=c?parseFloat(o):c,s=(d-c)/100,o=Math.round((o-c)/s),typeof t.color){case"string":n=t.color;break;case"function":n=t.color(l);break;case"object":if(Array.isArray(t.color)){let e=100/t.color.length,i=Math.floor(o/e);i=Math.min(i,t.color.length-1),i=Math.max(i,0),n=t.color[i];break}default:n="#2DC214"}switch(typeof t.legend){case"string":r=t.legend;break;case"function":r=t.legend(l);break;case"boolean":r=l;break;default:r=!1}switch(typeof t.legendColor){case"string":a=t.legendColor;break;case"function":a=t.legendColor(l);break;case"object":if(Array.isArray(t.legendColor)){let e=100/t.legendColor.length,i=Math.floor(o/e);i=Math.min(i,t.legendColor.length-1),i=Math.max(i,0),a=t.legendColor[i]}break;default:a="#000"}h.style.minWidth="30px",h.style.position="relative",h.setAttribute("aria-label",o);var p=document.createElement("div");p.style.display="inline-block",p.style.width=o+"%",p.style.backgroundColor=n,p.style.height="100%",p.setAttribute("data-max",d),p.setAttribute("data-min",c);var g=document.createElement("div");if(g.style.position="relative",g.style.width="100%",g.style.height="100%",r){var b=document.createElement("div");b.style.position="absolute",b.style.top=0,b.style.left=0,b.style.textAlign=u,b.style.width="100%",b.style.color=a,b.innerHTML=r}return i((function(){if(!(e instanceof m)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",h.appendChild(t),h=t}h.appendChild(g),g.appendChild(p),r&&g.appendChild(b)})),""},color:function(e,t,i){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,i){return''},buttonCross:function(e,t,i){return''},rownum:function(e,t,i){var s=document.createElement("span"),o=e.getRow(),n=e.getTable();return o.watchPosition((e=>{t.relativeToPage&&(e+=n.modules.page.getPageSize()*(n.modules.page.getPage()-1)),s.innerText=e})),s},handle:function(e,t,i){return e.getElement().classList.add("tabulator-row-handle"),"
        "},responsiveCollapse:function(e,t,i){var s=document.createElement("div"),o=e.getRow()._row.modules.responsiveLayout;function n(e){var t=o.element;o.open=e,t&&(o.open?(s.classList.add("open"),t.style.display=""):(s.classList.remove("open"),t.style.display="none"))}return s.classList.add("tabulator-responsive-collapse-toggle"),s.innerHTML='\n \n \n\n\n\n \n',e.getElement().classList.add("tabulator-row-handle"),s.addEventListener("click",(function(t){t.stopImmediatePropagation(),n(!o.open),e.getTable().rowManager.adjustTableSize()})),n(o.open),s},rowSelection:function(e,t,i){var s=document.createElement("input"),o=!1;if(s.type="checkbox",s.setAttribute("aria-label","Select Row"),this.table.modExists("selectRow",!0))if(s.addEventListener("click",(e=>{e.stopPropagation()})),"function"==typeof e.getRow){var n=e.getRow();n instanceof v?(s.addEventListener("change",(e=>{"click"===this.table.options.selectableRowsRangeMode&&o?o=!1:n.toggleSelect()})),"click"===this.table.options.selectableRowsRangeMode&&s.addEventListener("click",(e=>{o=!0,this.table.modules.selectRow.handleComplexRowClick(n._row,e)})),s.checked=n.isSelected&&n.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(n,s)):s=""}else s.addEventListener("change",(e=>{this.table.modules.selectRow.selectedRows.length?this.table.deselectRow():this.table.selectRow(t.rowRange)})),this.table.modules.selectRow.registerHeaderSelectCheckbox(s);return s}};class _ extends s{constructor(e){super(e),this.registerColumnOption("formatter"),this.registerColumnOption("formatterParams"),this.registerColumnOption("formatterPrint"),this.registerColumnOption("formatterPrintParams"),this.registerColumnOption("formatterClipboard"),this.registerColumnOption("formatterClipboardParams"),this.registerColumnOption("formatterHtmlOutput"),this.registerColumnOption("formatterHtmlOutputParams"),this.registerColumnOption("titleFormatter"),this.registerColumnOption("titleFormatterParams")}initialize(){this.subscribe("cell-format",this.formatValue.bind(this)),this.subscribe("cell-rendered",this.cellRendered.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-format",this.formatHeader.bind(this))}initializeColumn(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))}lookupFormatter(e,t){var i={params:e.definition["formatter"+t+"Params"]||{}},s=e.definition["formatter"+t];switch(typeof s){case"string":_.formatters[s]?i.formatter=_.formatters[s]:(console.warn("Formatter Error - No such formatter found: ",s),i.formatter=_.formatters.plaintext);break;case"function":i.formatter=s;break;default:i.formatter=_.formatters.plaintext}return i}cellRendered(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)}formatHeader(e,t,i){var s,o,n,r;return e.definition.titleFormatter?(s=this.getFormatter(e.definition.titleFormatter),n=t=>{e.titleFormatterRendered=t},r={getValue:function(){return t},getElement:function(){return i},getType:function(){return"header"},getColumn:function(){return e.getComponent()},getTable:()=>this.table},o="function"==typeof(o=e.definition.titleFormatterParams||{})?o():o,s.call(this,r,o,n)):t}formatValue(e){var t=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(t):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,t,i,(function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}))}formatExportValue(e,t){var i,s=e.column.modules.format[t];if(s){function o(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}return i="function"==typeof s.params?s.params(e.getComponent()):s.params,s.formatter.call(this,e.getComponent(),i,o)}return this.formatValue(e)}sanitizeHTML(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=/]/g,(function(e){return t[e]}))}return e}emptyToSpace(e){return null==e||""===e?" ":e}getFormatter(e){switch(typeof e){case"string":_.formatters[e]?e=_.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=_.formatters.plaintext);break;case"function":break;default:e=_.formatters.plaintext}return e}}_.moduleName="format",_.formatters=F;class O extends s{constructor(e){super(e),this.leftColumns=[],this.rightColumns=[],this.initializationMode="left",this.active=!1,this.blocked=!0,this.registerColumnOption("frozen")}reset(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.active=!1}initialize(){this.subscribe("cell-layout",this.layoutCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-width",this.layout.bind(this)),this.subscribe("row-layout-after",this.layoutRow.bind(this)),this.subscribe("table-layout",this.layout.bind(this)),this.subscribe("columns-loading",this.reset.bind(this)),this.subscribe("column-add",this.reinitializeColumns.bind(this)),this.subscribe("column-deleted",this.reinitializeColumns.bind(this)),this.subscribe("column-hide",this.reinitializeColumns.bind(this)),this.subscribe("column-show",this.reinitializeColumns.bind(this)),this.subscribe("columns-loaded",this.reinitializeColumns.bind(this)),this.subscribe("table-redraw",this.layout.bind(this)),this.subscribe("layout-refreshing",this.blockLayout.bind(this)),this.subscribe("layout-refreshed",this.unblockLayout.bind(this)),this.subscribe("scrollbar-vertical",this.adjustForScrollbar.bind(this))}blockLayout(){this.blocked=!0}unblockLayout(){this.blocked=!1}layoutCell(e){this.layoutElement(e.element,e.column)}reinitializeColumns(){this.reset(),this.table.columnManager.columnsByIndex.forEach((e=>{this.initializeColumn(e)})),this.layout()}initializeColumn(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")}frozenCheck(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen}layoutCalcRows(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow),this.table.modExists("groupRows")&&this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()))}layoutGroupCalcs(e){e.forEach((e=>{e.calcs.top&&this.layoutRow(e.calcs.top),e.calcs.bottom&&this.layoutRow(e.calcs.bottom),e.groupList&&e.groupList.length&&this.layoutGroupCalcs(e.groupList)}))}layoutColumnPosition(e){var t=[],i=0,s=0;this.leftColumns.forEach(((s,o)=>{if(s.modules.frozen.marginValue=i,s.modules.frozen.margin=s.modules.frozen.marginValue+"px",s.visible&&(i+=s.getWidth()),o==this.leftColumns.length-1?s.modules.frozen.edge=!0:s.modules.frozen.edge=!1,s.parent.isGroup){var n=this.getColGroupParentElement(s);t.includes(n)||(this.layoutElement(n,s),t.push(n)),n.classList.toggle("tabulator-frozen-left",s.modules.frozen.edge&&"left"===s.modules.frozen.position),n.classList.toggle("tabulator-frozen-right",s.modules.frozen.edge&&"right"===s.modules.frozen.position)}else this.layoutElement(s.getElement(),s);e&&s.cells.forEach((e=>{this.layoutElement(e.getElement(!0),s)}))})),this.rightColumns.forEach(((t,i)=>{t.modules.frozen.marginValue=s,t.modules.frozen.margin=t.modules.frozen.marginValue+"px",t.visible&&(s+=t.getWidth()),i==this.rightColumns.length-1?t.modules.frozen.edge=!0:t.modules.frozen.edge=!1,t.parent.isGroup?this.layoutElement(this.getColGroupParentElement(t),t):this.layoutElement(t.getElement(),t),e&&t.cells.forEach((e=>{this.layoutElement(e.getElement(!0),t)}))}))}getColGroupParentElement(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()}layout(){this.active&&!this.blocked&&(this.layoutColumnPosition(),this.reinitializeRows(),this.layoutCalcRows())}reinitializeRows(){var e=this.table.rowManager.getVisibleRows(!0);this.table.rowManager.getRows().filter((t=>!e.includes(t))).forEach((e=>{e.deinitialize()})),e.forEach((e=>{"row"===e.type&&this.layoutRow(e)}))}layoutRow(e){"fitDataFill"===this.table.options.layout&&this.rightColumns.length&&(this.table.rowManager.getTableElement().style.minWidth="calc(100% - "+this.rightMargin+")"),this.leftColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)})),this.rightColumns.forEach((t=>{var i=e.getCell(t);i&&this.layoutElement(i.getElement(!0),t)}))}layoutElement(e,t){var i;t.modules.frozen&&e&&(e.style.position="sticky",i=this.table.rtl?"left"===t.modules.frozen.position?"right":"left":t.modules.frozen.position,e.style[i]=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),e.classList.toggle("tabulator-frozen-left",t.modules.frozen.edge&&"left"===t.modules.frozen.position),e.classList.toggle("tabulator-frozen-right",t.modules.frozen.edge&&"right"===t.modules.frozen.position))}adjustForScrollbar(e){this.rightColumns.length&&(this.table.columnManager.getContentsElement().style.width="calc(100% - "+e+"px)")}_calcSpace(e,t){var i=0;for(let s=0;s{this.initializeRow(e)}))}initializeRow(e){var t=this.table.options.frozenRows,i=typeof t;"number"===i?e.getPosition()&&e.getPosition()+this.rows.length<=t&&this.freezeRow(e):"function"===i?t.call(this.table,e.getComponent())&&this.freezeRow(e):Array.isArray(t)&&t.includes(e.data[this.options("frozenRowsField")])&&this.freezeRow(e)}isRowFrozen(e){return this.rows.indexOf(e)>-1}isFrozen(){return!!this.rows.length}visibleRows(e,t){return this.rows.forEach((e=>{t.push(e)})),t}getRows(e){var t=e.slice(0);return this.rows.forEach((function(e){var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t}freezeRow(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.rows.push(e),this.refreshData(!1,"display"),this.table.rowManager.adjustTableSize(),this.styleRows())}unfreezeRow(e){e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.refreshData(!1,"display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")}detachRow(e){var t=this.rows.indexOf(e);if(t>-1){var i=e.getElement();i.parentNode&&i.parentNode.removeChild(i),this.rows.splice(t,1)}}styleRows(e){this.rows.forEach(((e,t)=>{this.table.rowManager.styleRow(e,t)}))}}A.moduleName="frozenRows";class B{constructor(e){return this._group=e,this.type="GroupComponent",new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._group.groupManager.table.componentFunctionBinder.handle("group",e._group,t)}})}getKey(){return this._group.key}getField(){return this._group.field}getElement(){return this._group.element}getRows(){return this._group.getRows(!0)}getSubGroups(){return this._group.getSubGroups(!0)}getParentGroup(){return!!this._group.parent&&this._group.parent.getComponent()}isVisible(){return this._group.visible}show(){this._group.show()}hide(){this._group.hide()}toggle(){this._group.toggleVisibility()}scrollTo(e,t){return this._group.groupManager.table.rowManager.scrollToRow(this._group,e,t)}_getSelf(){return this._group}getTable(){return this._group.groupManager.table}}class V{constructor(e,t,i,s,o,n,r){this.groupManager=e,this.parent=t,this.key=s,this.level=i,this.field=o,this.hasSubGroups=i{e.modules&&delete e.modules.group}))),this.element=!1,this.arrowElement=!1,this.elementContents=!1}createElements(){var e=document.createElement("div");e.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(e),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)}createValueGroups(){var e=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]&&this.groupManager.allowedValues[e].forEach((t=>{this._createGroup(t,e)}))}addBindings(){this.groupManager.table.options.groupToggleElement&&("arrow"==this.groupManager.table.options.groupToggleElement?this.arrowElement:this.element).addEventListener("click",(e=>{"arrow"===this.groupManager.table.options.groupToggleElement&&(e.stopPropagation(),e.stopImmediatePropagation()),setTimeout((()=>{this.toggleVisibility()}))}))}_createGroup(e,t){var i=t+"_"+e,s=new V(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[i]);this.groups[i]=s,this.groupList.push(s)}_addRowToGroup(e){var t=this.level+1;if(this.hasSubGroups){var i=this.groupManager.groupIDLookups[t].func(e.getData()),s=t+"_"+i;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[s]&&this.groups[s].addRow(e):(this.groups[s]||this._createGroup(i,t),this.groups[s].addRow(e))}}_addRow(e){this.rows.push(e),e.modules.group=this}insertRow(e,t,i){var s=this.conformRowData({});e.updateData(s);var o=this.rows.indexOf(t);o>-1?i?this.rows.splice(o+1,0,e):this.rows.splice(o,0,e):i?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)}scrollHeader(e){this.arrowElement&&(this.arrowElement.style.marginLeft=e,this.groupList.forEach((function(t){t.scrollHeader(e)})))}getRowIndex(e){}conformRowData(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e}removeRow(e){var t=this.rows.indexOf(e),i=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(i.parentNode&&i.parentNode.removeChild(i),this.groupManager.blockRedraw||(this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this))):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))}getHeadersAndRows(){var e=[];return e.push(this),this._visSet(),this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.visible?this.groupList.length?this.groupList.forEach((function(t){e=e.concat(t.getHeadersAndRows())})):("table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),e=e.concat(this.rows),"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))),e}getData(e,t){var i=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach((e=>{i.push(e.getData(t||"data"))})),i}getRowCount(){var e=0;return this.groupList.length?this.groupList.forEach((t=>{e+=t.getRowCount()})):e=this.rows.length,e}toggleVisibility(){this.visible?this.hide():this.show()}hide(){this.visible=!1,"basic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination||(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((e=>{e.getHeadersAndRows().forEach((e=>{e.detachElement()}))})):this.rows.forEach((e=>{var t=e.getElement();t.parentNode.removeChild(t)}))),this.groupManager.updateGroupRows(!0),this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!1)}show(){if(this.visible=!0,"basic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=this.generateElement();this.groupList.length?this.groupList.forEach((t=>{t.getHeadersAndRows().forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i}))})):this.rows.forEach((t=>{var i=t.getElement();e.parentNode.insertBefore(i,e.nextSibling),t.initialize(),e=i})),this.groupManager.updateGroupRows(!0)}this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged",this.getComponent(),!0)}_visSet(){var e=[];"function"==typeof this.visible&&(this.rows.forEach((function(t){e.push(t.getData())})),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))}getRowGroup(e){var t=!1;return this.groupList.length?this.groupList.forEach((function(i){var s=i.getRowGroup(e);s&&(t=s)})):this.rows.find((function(t){return t===e}))&&(t=this),t}getSubGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getRows(e,t){var i=[];return t&&this.groupList.length?this.groupList.forEach((s=>{i=i.concat(s.getRows(e,t))})):this.rows.forEach((function(t){i.push(e?t.getComponent():t)})),i}generateGroupHeaderContents(){var e=[];for(this.getRows(!1,!0).forEach((function(t){e.push(t.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)}getPath(e=[]){return e.unshift(this.key),this.parent&&this.parent.getPath(e),e}getElement(){return this.elementContents?this.element:this.generateElement()}generateElement(){this.addBindings=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;ei.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),this.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],this.langBind("groups|item",((e,t)=>{this.headerGenerator[0]=(i,s,o)=>(void 0===i?"":i)+"("+s+" "+(1===s?e:t.groups.items)+")"})),this.groupIDLookups=[],e)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs)this.table.columnManager.getRealColumns().forEach((e=>{e.definition.topCalc&&this.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&this.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(e)||(e=[e]),e.forEach(((e,t)=>{var i,s;i="function"==typeof e?e:(s=this.table.columnManager.getColumnByField(e))?function(e){return s.getFieldValue(e)}:function(t){return t[e]},this.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!this.allowedValues&&this.allowedValues[t]})})),t&&(Array.isArray(t)||(t=[t]),t.forEach((e=>{})),this.startOpen=t),i&&(this.headerGenerator=Array.isArray(i)?i:[i])}else this.groupList=[],this.groups={}}rowSample(e,t){if(this.table.options.groupBy){var i=this.getGroups(!1)[0];t.push(i.getRows(!1)[0])}return t}virtualRenderFill(){var e=this.table.rowManager.tableElement,t=this.table.rowManager.getVisibleRows();if(!this.table.options.groupBy)return t;t=t.filter((e=>"group"!==e.type)),e.style.minWidth=t.length?"":this.table.columnManager.getWidth()+"px"}rowAddingIndex(e,t,i){if(this.table.options.groupBy){this.assignRowToGroup(e);var s=e.modules.group.rows;return s.length>1&&(!t||t&&-1==s.indexOf(t)?i?s[0]!==e&&(t=s[0],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):s[s.length-1]!==e&&(t=s[s.length-1],this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)):this.table.rowManager.moveRowInArray(e.modules.group.rows,e,t,!i)),t}}trackChanges(){this.dispatch("group-changed")}setGroupBy(e){this.table.options.groupBy=e,this.initialized||this.initialize(),this.configureGroupSetup(),!e&&this.table.modExists("columnCalcs")&&!0===this.table.options.columnCalcs&&this.table.modules.columnCalcs.reinitializeCalcs(),this.refreshData(),this.trackChanges()}setGroupValues(e){this.table.options.groupValues=e,this.configureGroupSetup(),this.refreshData(),this.trackChanges()}setGroupStartOpen(e){this.table.options.groupStartOpen=e,this.configureGroupSetup(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}setGroupHeader(e){this.table.options.groupHeader=e,this.configureGroupSetup(),this.table.options.groupBy?(this.refreshData(),this.trackChanges()):console.warn("Grouping Update - cant refresh view, no groups have been set")}userGetGroups(e){return this.getGroups(!0)}userGetGroupedData(){return this.table.options.groupBy?this.getGroupedData():this.getData()}rowGetGroup(e){return!!e.modules.group&&e.modules.group.getComponent()}rowMoving(e,t,i){if(this.table.options.groupBy){!i&&t instanceof V&&(t=this.table.rowManager.prevDisplayRow(e)||t);var s=t instanceof V?t:t.modules.group,o=e instanceof V?e:e.modules.group;s===o?this.table.rowManager.moveRowInArray(s.rows,e,t,i):(o&&o.removeRow(e),s.insertRow(e,t,i))}}rowDeleting(e){this.table.options.groupBy&&e.modules.group&&e.modules.group.removeRow(e)}rowsUpdated(e){this.table.options.groupBy&&this.updateGroupRows(!0)}cellUpdated(e){this.table.options.groupBy&&this.reassignRowToGroup(e.row)}getRows(e){return this.table.options.groupBy&&this.groupIDLookups.length?(this.dispatchExternal("dataGrouping"),this.generateGroups(e),this.subscribedExternal("dataGrouped")&&this.dispatchExternal("dataGrouped",this.getGroups(!0)),this.updateGroupRows()):e.slice(0)}getGroups(e){var t=[];return this.groupList.forEach((function(i){t.push(e?i.getComponent():i)})),t}getChildGroups(e){var t=[];return e||(e=this),e.groupList.forEach((e=>{e.groupList.length?t=t.concat(this.getChildGroups(e)):t.push(e)})),t}wipe(){this.table.options.groupBy&&(this.groupList.forEach((function(e){e.wipe()})),this.groupList=[],this.groups={})}pullGroupListData(e){var t=[];return e.forEach((e=>{var i={level:0,rowCount:0,headerContent:""},s=[];e.hasSubGroups?(s=this.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=s.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),t.push(i),t=t.concat(s)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,t.push(i),e.getRows().forEach((e=>{t.push(e.getData("data"))})))})),t}getGroupedData(){return this.pullGroupListData(this.groupList)}getRowGroup(e){var t=!1;return this.options("dataTree")&&(e=this.table.modules.dataTree.getTreeParentRoot(e)),this.groupList.forEach((i=>{var s=i.getRowGroup(e);s&&(t=s)})),t}countGroups(){return this.groupList.length}generateGroups(e){var t=this.groups;this.groups={},this.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((e=>{this.createGroup(e,0,t)})),e.forEach((e=>{this.assignRowToExistingGroup(e,t)}))):e.forEach((e=>{this.assignRowToGroup(e,t)})),Object.values(t).forEach((e=>{e.wipe(!0)}))}createGroup(e,t,i){var s,o=t+"_"+e;i=i||[],s=new V(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],i[o]),this.groups[o]=s,this.groupList.push(s)}assignRowToExistingGroup(e,t){var i="0_"+this.groupIDLookups[0].func(e.getData());this.groups[i]&&this.groups[i].addRow(e)}assignRowToGroup(e,t){var i=this.groupIDLookups[0].func(e.getData()),s=!this.groups["0_"+i];return s&&this.createGroup(i,0,t),this.groups["0_"+i].addRow(e),!s}reassignRowToGroup(e){if("row"===e.type){var t=e.modules.group,i=t.getPath(),s=this.getExpectedPath(e);i.length==s.length&&i.every(((e,t)=>e===s[t]))||(t.removeRow(e),this.assignRowToGroup(e,this.groups),this.refreshData(!0))}}getExpectedPath(e){var t=[],i=e.getData();return this.groupIDLookups.forEach((e=>{t.push(e.func(i))})),t}updateGroupRows(e){var t=[];return this.blockRedraw||(this.groupList.forEach((e=>{t=t.concat(e.getHeadersAndRows())})),e&&this.refreshData(!0)),t}scrollHeaders(e){this.table.options.groupBy&&("virtual"===this.table.options.renderHorizontal&&(e-=this.table.columnManager.renderer.vDomPadLeft),e+="px",this.groupList.forEach((t=>{t.scrollHeader(e)})))}removeGroup(e){var t,i=e.level+"_"+e.key;this.groups[i]&&(delete this.groups[i],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))}checkBasicModeGroupHeaderWidth(){var e=this.table.rowManager.tableElement,t=!0;this.table.rowManager.getDisplayRows().forEach(((i,s)=>{this.table.rowManager.styleRow(i,s),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(t=!1)})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}}I.moduleName="groupRows";class N extends s{constructor(e){super(e),this.history=[],this.index=-1,this.registerTableOption("history",!1)}initialize(){this.table.options.history&&(this.subscribe("cell-value-updated",this.cellUpdated.bind(this)),this.subscribe("cell-delete",this.clearComponentHistory.bind(this)),this.subscribe("row-delete",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clear.bind(this)),this.subscribe("row-added",this.rowAdded.bind(this)),this.subscribe("row-move",this.rowMoved.bind(this))),this.registerTableFunction("undo",this.undo.bind(this)),this.registerTableFunction("redo",this.redo.bind(this)),this.registerTableFunction("getHistoryUndoSize",this.getHistoryUndoSize.bind(this)),this.registerTableFunction("getHistoryRedoSize",this.getHistoryRedoSize.bind(this)),this.registerTableFunction("clearHistory",this.clear.bind(this))}rowMoved(e,t,i){this.action("rowMove",e,{posFrom:e.getPosition(),posTo:t.getPosition(),to:t,after:i})}rowAdded(e,t,i,s){this.action("rowAdd",e,{data:t,pos:i,index:s})}rowDeleted(e){var t,i;this.table.options.groupBy?(t=(i=e.getComponent().getGroup()._getSelf().rows).indexOf(e))&&(t=i[t-1]):(t=e.table.rowManager.getRowIndex(e))&&(t=e.table.rowManager.rows[t-1]),this.action("rowDelete",e,{data:e.getData(),pos:!t,index:t})}cellUpdated(e){this.action("cellEdit",e,{oldValue:e.oldValue,newValue:e.value})}clear(){this.history=[],this.index=-1}action(e,t,i){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:i}),this.index++}getHistoryUndoSize(){return this.index+1}getHistoryRedoSize(){return this.history.length-(this.index+1)}clearComponentHistory(e){var t=this.history.findIndex((function(t){return t.component===e}));t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))}undo(){if(this.index>-1){let e=this.history[this.index];return N.undoers[e.type].call(this,e),this.index--,this.dispatchExternal("historyUndo",e.type,e.component.getComponent(),e.data),!0}return console.warn(this.options("history")?"History Undo Error - No more history to undo":"History module not enabled"),!1}redo(){if(this.history.length-1>this.index){this.index++;let e=this.history[this.index];return N.redoers[e.type].call(this,e),this.dispatchExternal("historyRedo",e.type,e.component.getComponent(),e.data),!0}return console.warn(this.options("history")?"History Redo Error - No more history to redo":"History module not enabled"),!1}_rebindRow(e,t){this.history.forEach((function(i){if(i.component instanceof w)i.component===e&&(i.component=t);else if(i.component instanceof p&&i.component.row===e){var s=i.component.column.getField();s&&(i.component=t.getCell(s))}}))}}N.moduleName="history",N.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue),e.component.cellRendered()},rowAdd:function(e){e.component.deleteActual(),this.table.rowManager.checkPlaceholder()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t),this.table.rowManager.checkPlaceholder()},rowMove:function(e){var t=e.data.posFrom-e.data.posTo>0;this.table.rowManager.moveRowActual(e.component,this.table.rowManager.getRowFromPosition(e.data.posFrom),t),this.table.rowManager.regenerateRowPositions(),this.table.rowManager.reRenderInPosition()}},N.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue),e.component.cellRendered()},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t),this.table.rowManager.checkPlaceholder()},rowDelete:function(e){e.component.deleteActual(),this.table.rowManager.checkPlaceholder()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.getRowFromPosition(e.data.posTo),e.data.after),this.table.rowManager.regenerateRowPositions(),this.table.rowManager.reRenderInPosition()}};class W extends s{constructor(e){super(e),this.fieldIndex=[],this.hasIndex=!1}initialize(){this.tableElementCheck()}tableElementCheck(){this.table.originalElement&&"TABLE"===this.table.originalElement.tagName&&(this.table.originalElement.childNodes.length?this.parseTable():console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."))}parseTable(){var e=this.table.originalElement,t=this.table.options,i=e.getElementsByTagName("th"),s=e.getElementsByTagName("tbody")[0],o=[];this.hasIndex=!1,this.dispatchExternal("htmlImporting"),s=s?s.getElementsByTagName("tr"):[],this._extractOptions(e,t),i.length?this._extractHeaders(i,s):this._generateBlankHeaders(i,s);for(var n=0;n{n[e.toLowerCase()]=e})),s){var a,l=s[r];l&&"object"==typeof l&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==n[a]&&(t[n[a]]=this._attribValue(l.value)))}}_attribValue(e){return"true"===e||"false"!==e&&e}_findCol(e){return this.table.options.columns.find((t=>t.title===e))||!1}_extractHeaders(e,t){for(var i=0;i(console.error("Import Error:",e||"Unable to import data"),Promise.reject(e))))}lookupImporter(e){var t;return e||(e=this.table.options.importFormat),(t="string"==typeof e?G.importers[e]:e)||console.error("Import Error - Importer not found:",e),t}importFromFile(e,t){var i=this.lookupImporter(e);if(i)return this.pickFile(t).then(this.importData.bind(this,i)).then(this.structureData.bind(this)).then(this.setData.bind(this)).catch((e=>(console.error("Import Error:",e||"Unable to import file"),Promise.reject(e))))}pickFile(e){return new Promise(((t,i)=>{var s=document.createElement("input");s.type="file",s.accept=e,s.addEventListener("change",(e=>{var o=s.files[0],n=new FileReader;switch(this.table.options.importReader){case"buffer":n.readAsArrayBuffer(o);break;case"binary":n.readAsBinaryString(o);break;case"url":n.readAsDataURL(o);break;default:n.readAsText(o)}n.onload=e=>{t(n.result)},n.onerror=e=>{console.warn("File Load Error - Unable to read file"),i()}})),s.click()}))}importData(e,t){var i=e.call(this.table,t);return i instanceof Promise?i:i?Promise.resolve(i):Promise.reject()}structureData(e){return Array.isArray(e)&&e.length&&Array.isArray(e[0])?this.table.options.autoColumns?this.structureArrayToObject(e):this.structureArrayToColumns(e):e}structureArrayToObject(e){var t=e.shift();return e.map((e=>{var i={};return t.forEach(((t,s)=>{i[t]=e[s]})),i}))}structureArrayToColumns(e){var t=[],i=this.table.getColumns();return i[0]&&e[0][0]&&i[0].getDefinition().title===e[0][0]&&e.shift(),e.forEach((e=>{var s={};e.forEach(((e,t)=>{var o=i[t];o&&(s[o.getField()]=e)})),t.push(s)})),t}setData(e){return this.table.setData(e)}}G.moduleName="import",G.importers=j;class U extends s{constructor(e){super(e),this.eventMap={rowClick:"row-click",rowDblClick:"row-dblclick",rowContext:"row-contextmenu",rowMouseEnter:"row-mouseenter",rowMouseLeave:"row-mouseleave",rowMouseOver:"row-mouseover",rowMouseOut:"row-mouseout",rowMouseMove:"row-mousemove",rowMouseDown:"row-mousedown",rowMouseUp:"row-mouseup",rowTap:"row",rowDblTap:"row",rowTapHold:"row",cellClick:"cell-click",cellDblClick:"cell-dblclick",cellContext:"cell-contextmenu",cellMouseEnter:"cell-mouseenter",cellMouseLeave:"cell-mouseleave",cellMouseOver:"cell-mouseover",cellMouseOut:"cell-mouseout",cellMouseMove:"cell-mousemove",cellMouseDown:"cell-mousedown",cellMouseUp:"cell-mouseup",cellTap:"cell",cellDblTap:"cell",cellTapHold:"cell",headerClick:"column-click",headerDblClick:"column-dblclick",headerContext:"column-contextmenu",headerMouseEnter:"column-mouseenter",headerMouseLeave:"column-mouseleave",headerMouseOver:"column-mouseover",headerMouseOut:"column-mouseout",headerMouseMove:"column-mousemove",headerMouseDown:"column-mousedown",headerMouseUp:"column-mouseup",headerTap:"column",headerDblTap:"column",headerTapHold:"column",groupClick:"group-click",groupDblClick:"group-dblclick",groupContext:"group-contextmenu",groupMouseEnter:"group-mouseenter",groupMouseLeave:"group-mouseleave",groupMouseOver:"group-mouseover",groupMouseOut:"group-mouseout",groupMouseMove:"group-mousemove",groupMouseDown:"group-mousedown",groupMouseUp:"group-mouseup",groupTap:"group",groupDblTap:"group",groupTapHold:"group"},this.subscribers={},this.touchSubscribers={},this.columnSubscribers={},this.touchWatchers={row:{tap:null,tapDbl:null,tapHold:null},cell:{tap:null,tapDbl:null,tapHold:null},column:{tap:null,tapDbl:null,tapHold:null},group:{tap:null,tapDbl:null,tapHold:null}},this.registerColumnOption("headerClick"),this.registerColumnOption("headerDblClick"),this.registerColumnOption("headerContext"),this.registerColumnOption("headerMouseEnter"),this.registerColumnOption("headerMouseLeave"),this.registerColumnOption("headerMouseOver"),this.registerColumnOption("headerMouseOut"),this.registerColumnOption("headerMouseMove"),this.registerColumnOption("headerMouseDown"),this.registerColumnOption("headerMouseUp"),this.registerColumnOption("headerTap"),this.registerColumnOption("headerDblTap"),this.registerColumnOption("headerTapHold"),this.registerColumnOption("cellClick"),this.registerColumnOption("cellDblClick"),this.registerColumnOption("cellContext"),this.registerColumnOption("cellMouseEnter"),this.registerColumnOption("cellMouseLeave"),this.registerColumnOption("cellMouseOver"),this.registerColumnOption("cellMouseOut"),this.registerColumnOption("cellMouseMove"),this.registerColumnOption("cellMouseDown"),this.registerColumnOption("cellMouseUp"),this.registerColumnOption("cellTap"),this.registerColumnOption("cellDblTap"),this.registerColumnOption("cellTapHold")}initialize(){this.initializeExternalEvents(),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("cell-dblclick",this.cellContentsSelectionFixer.bind(this)),this.subscribe("scroll-horizontal",this.clearTouchWatchers.bind(this)),this.subscribe("scroll-vertical",this.clearTouchWatchers.bind(this))}clearTouchWatchers(){Object.values(this.touchWatchers).forEach((e=>{for(let t in e)e[t]=null}))}cellContentsSelectionFixer(e,t){var i;if(!this.table.modExists("edit")||this.table.modules.edit.currentCell!==t){e.preventDefault();try{document.selection?((i=document.body.createTextRange()).moveToElementText(t.getElement()),i.select()):window.getSelection&&((i=document.createRange()).selectNode(t.getElement()),window.getSelection().removeAllRanges(),window.getSelection().addRange(i))}catch(e){}}}initializeExternalEvents(){for(let e in this.eventMap)this.subscriptionChangeExternal(e,this.subscriptionChanged.bind(this,e))}subscriptionChanged(e,t){t?this.subscribers[e]||(this.eventMap[e].includes("-")?(this.subscribers[e]=this.handle.bind(this,e),this.subscribe(this.eventMap[e],this.subscribers[e])):this.subscribeTouchEvents(e)):this.eventMap[e].includes("-")?!this.subscribers[e]||this.columnSubscribers[e]||this.subscribedExternal(e)||(this.unsubscribe(this.eventMap[e],this.subscribers[e]),delete this.subscribers[e]):this.unsubscribeTouchEvents(e)}subscribeTouchEvents(e){var t=this.eventMap[e];this.touchSubscribers[t+"-touchstart"]||(this.touchSubscribers[t+"-touchstart"]=this.handleTouch.bind(this,t,"start"),this.touchSubscribers[t+"-touchend"]=this.handleTouch.bind(this,t,"end"),this.subscribe(t+"-touchstart",this.touchSubscribers[t+"-touchstart"]),this.subscribe(t+"-touchend",this.touchSubscribers[t+"-touchend"])),this.subscribers[e]=!0}unsubscribeTouchEvents(e){var t=!0,i=this.eventMap[e];if(this.subscribers[e]&&!this.subscribedExternal(e)){delete this.subscribers[e];for(let e in this.eventMap)this.eventMap[e]===i&&this.subscribers[e]&&(t=!1);t&&(this.unsubscribe(i+"-touchstart",this.touchSubscribers[i+"-touchstart"]),this.unsubscribe(i+"-touchend",this.touchSubscribers[i+"-touchend"]),delete this.touchSubscribers[i+"-touchstart"],delete this.touchSubscribers[i+"-touchend"])}}initializeColumn(e){var t=e.definition;for(let i in this.eventMap)t[i]&&(this.subscriptionChanged(i,!0),this.columnSubscribers[i]||(this.columnSubscribers[i]=[]),this.columnSubscribers[i].push(e))}handle(e,t,i){this.dispatchEvent(e,t,i)}handleTouch(e,t,i,s){var o=this.touchWatchers[e];switch("column"===e&&(e="header"),t){case"start":o.tap=!0,clearTimeout(o.tapHold),o.tapHold=setTimeout((()=>{clearTimeout(o.tapHold),o.tapHold=null,o.tap=null,clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"TapHold",i,s)}),1e3);break;case"end":o.tap&&(o.tap=null,this.dispatchEvent(e+"Tap",i,s)),o.tapDbl?(clearTimeout(o.tapDbl),o.tapDbl=null,this.dispatchEvent(e+"DblTap",i,s)):o.tapDbl=setTimeout((()=>{clearTimeout(o.tapDbl),o.tapDbl=null}),300),clearTimeout(o.tapHold),o.tapHold=null}}dispatchEvent(e,t,i){var s,o=i.getComponent();this.columnSubscribers[e]&&(i instanceof p?s=i.column.definition[e]:i instanceof f&&(s=i.definition[e]),s&&s(t,o)),this.dispatchExternal(e,t,o)}}U.moduleName="interaction";class J extends s{constructor(e){super(e),this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1,this.registerTableOption("keybindings",{}),this.registerTableOption("tabEndNewRow",!1)}initialize(){var e=this.table.options.keybindings,t={};this.watchKeys={},this.pressedKeys=[],!1!==e&&(Object.assign(t,J.bindings),Object.assign(t,e),this.mapBindings(t),this.bindEvents()),this.subscribe("table-destroy",this.clearBindings.bind(this))}mapBindings(e){for(let t in e)J.actions[t]?e[t]&&("object"!=typeof e[t]&&(e[t]=[e[t]]),e[t].forEach((e=>{(Array.isArray(e)?e:[e]).forEach((e=>{this.mapBinding(t,e)}))}))):console.warn("Key Binding Error - no such action:",t)}mapBinding(e,t){var i={action:J.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach((e=>{switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=isNaN(e)?e.toUpperCase().charCodeAt(0):parseInt(e),i.keys.push(e),this.watchKeys[e]||(this.watchKeys[e]=[]),this.watchKeys[e].push(i)}}))}bindEvents(){var e=this;this.keyupBinding=function(t){var i=t.keyCode,s=e.watchKeys[i];s&&(e.pressedKeys.push(i),s.forEach((function(i){e.checkBinding(t,i)})))},this.keydownBinding=function(t){var i=t.keyCode;if(e.watchKeys[i]){var s=e.pressedKeys.indexOf(i);s>-1&&e.pressedKeys.splice(s,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)}clearBindings(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)}checkBinding(e,t){var i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach((e=>{-1==this.pressedKeys.indexOf(e)&&(i=!1)})),i&&t.action.call(this,e),!0)}}J.moduleName="keybindings",J.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,navLeft:37,navRight:39,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:["ctrl + 90","meta + 90"],redo:["ctrl + 89","meta + 89"],copyToClipboard:["ctrl + 67","meta + 67"],rangeJumpUp:["ctrl + 38","meta + 38"],rangeJumpDown:["ctrl + 40","meta + 40"],rangeJumpLeft:["ctrl + 37","meta + 37"],rangeJumpRight:["ctrl + 39","meta + 39"],rangeExpandUp:"shift + 38",rangeExpandDown:"shift + 40",rangeExpandLeft:"shift + 37",rangeExpandRight:"shift + 39",rangeExpandJumpUp:["ctrl + shift + 38","meta + shift + 38"],rangeExpandJumpDown:["ctrl + shift + 40","meta + shift + 40"],rangeExpandJumpLeft:["ctrl + shift + 37","meta + shift + 37"],rangeExpandJumpRight:["ctrl + shift + 39","meta + shift + 39"]},J.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,i=t.scrollTop-t.element.clientHeight;e.preventDefault(),t.displayRowsCount&&(i>=0?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,i=t.scrollTop+t.element.clientHeight,s=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(i<=s?t.element.scrollTop=i:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){this.dispatch("keybinding-nav-prev",e)},navNext:function(e){this.dispatch("keybinding-nav-next",e)},navLeft:function(e){this.dispatch("keybinding-nav-left",e)},navRight:function(e){this.dispatch("keybinding-nav-right",e)},navUp:function(e){this.dispatch("keybinding-nav-up",e)},navDown:function(e){this.dispatch("keybinding-nav-down",e)},rangeJumpLeft:function(e){this.dispatch("keybinding-nav-range",e,"left",!0,!1)},rangeJumpRight:function(e){this.dispatch("keybinding-nav-range",e,"right",!0,!1)},rangeJumpUp:function(e){this.dispatch("keybinding-nav-range",e,"up",!0,!1)},rangeJumpDown:function(e){this.dispatch("keybinding-nav-range",e,"down",!0,!1)},rangeExpandLeft:function(e){this.dispatch("keybinding-nav-range",e,"left",!1,!0)},rangeExpandRight:function(e){this.dispatch("keybinding-nav-range",e,"right",!1,!0)},rangeExpandUp:function(e){this.dispatch("keybinding-nav-range",e,"up",!1,!0)},rangeExpandDown:function(e){this.dispatch("keybinding-nav-range",e,"down",!1,!0)},rangeExpandJumpLeft:function(e){this.dispatch("keybinding-nav-range",e,"left",!0,!0)},rangeExpandJumpRight:function(e){this.dispatch("keybinding-nav-range",e,"right",!0,!0)},rangeExpandJumpUp:function(e){this.dispatch("keybinding-nav-range",e,"up",!0,!0)},rangeExpandJumpDown:function(e){this.dispatch("keybinding-nav-range",e,"down",!0,!0)},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}};class X extends s{constructor(e){super(e),this.menuContainer=null,this.nestedMenuBlock=!1,this.currentComponent=null,this.rootPopup=null,this.columnSubscribers={},this.registerTableOption("menuContainer",void 0),this.registerTableOption("rowContextMenu",!1),this.registerTableOption("rowClickMenu",!1),this.registerTableOption("rowDblClickMenu",!1),this.registerTableOption("groupContextMenu",!1),this.registerTableOption("groupClickMenu",!1),this.registerTableOption("groupDblClickMenu",!1),this.registerColumnOption("headerContextMenu"),this.registerColumnOption("headerClickMenu"),this.registerColumnOption("headerDblClickMenu"),this.registerColumnOption("headerMenu"),this.registerColumnOption("headerMenuIcon"),this.registerColumnOption("contextMenu"),this.registerColumnOption("clickMenu"),this.registerColumnOption("dblClickMenu")}initialize(){this.deprecatedOptionsCheck(),this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecatedOptionsCheck(){this.deprecationCheck("menuContainer","popupContainer")||(this.table.options.popupContainer=this.table.options.menuContainer)}initializeRowWatchers(){this.table.options.rowContextMenu&&(this.subscribe("row-contextmenu",this.loadMenuEvent.bind(this,this.table.options.rowContextMenu)),this.table.on("rowTapHold",this.loadMenuEvent.bind(this,this.table.options.rowContextMenu))),this.table.options.rowClickMenu&&this.subscribe("row-click",this.loadMenuEvent.bind(this,this.table.options.rowClickMenu)),this.table.options.rowDblClickMenu&&this.subscribe("row-dblclick",this.loadMenuEvent.bind(this,this.table.options.rowDblClickMenu))}initializeGroupWatchers(){this.table.options.groupContextMenu&&(this.subscribe("group-contextmenu",this.loadMenuEvent.bind(this,this.table.options.groupContextMenu)),this.table.on("groupTapHold",this.loadMenuEvent.bind(this,this.table.options.groupContextMenu))),this.table.options.groupClickMenu&&this.subscribe("group-click",this.loadMenuEvent.bind(this,this.table.options.groupClickMenu)),this.table.options.groupDblClickMenu&&this.subscribe("group-dblclick",this.loadMenuEvent.bind(this,this.table.options.groupDblClickMenu))}initializeColumn(e){var t=e.definition;t.headerContextMenu&&!this.columnSubscribers.headerContextMenu&&(this.columnSubscribers.headerContextMenu=this.loadMenuTableColumnEvent.bind(this,"headerContextMenu"),this.subscribe("column-contextmenu",this.columnSubscribers.headerContextMenu),this.table.on("headerTapHold",this.loadMenuTableColumnEvent.bind(this,"headerContextMenu"))),t.headerClickMenu&&!this.columnSubscribers.headerClickMenu&&(this.columnSubscribers.headerClickMenu=this.loadMenuTableColumnEvent.bind(this,"headerClickMenu"),this.subscribe("column-click",this.columnSubscribers.headerClickMenu)),t.headerDblClickMenu&&!this.columnSubscribers.headerDblClickMenu&&(this.columnSubscribers.headerDblClickMenu=this.loadMenuTableColumnEvent.bind(this,"headerDblClickMenu"),this.subscribe("column-dblclick",this.columnSubscribers.headerDblClickMenu)),t.headerMenu&&this.initializeColumnHeaderMenu(e),t.contextMenu&&!this.columnSubscribers.contextMenu&&(this.columnSubscribers.contextMenu=this.loadMenuTableCellEvent.bind(this,"contextMenu"),this.subscribe("cell-contextmenu",this.columnSubscribers.contextMenu),this.table.on("cellTapHold",this.loadMenuTableCellEvent.bind(this,"contextMenu"))),t.clickMenu&&!this.columnSubscribers.clickMenu&&(this.columnSubscribers.clickMenu=this.loadMenuTableCellEvent.bind(this,"clickMenu"),this.subscribe("cell-click",this.columnSubscribers.clickMenu)),t.dblClickMenu&&!this.columnSubscribers.dblClickMenu&&(this.columnSubscribers.dblClickMenu=this.loadMenuTableCellEvent.bind(this,"dblClickMenu"),this.subscribe("cell-dblclick",this.columnSubscribers.dblClickMenu))}initializeColumnHeaderMenu(e){var t,i=e.definition.headerMenuIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),i?("function"==typeof i&&(i=i(e.getComponent())),i instanceof HTMLElement?t.appendChild(i):t.innerHTML=i):t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.loadMenuEvent(e.definition.headerMenu,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}loadMenuTableCellEvent(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadMenuEvent(i.column.definition[e],t,i)}loadMenuTableColumnEvent(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadMenuEvent(i.definition[e],t,i)}loadMenuEvent(e,t,i){i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent()):e,this.loadMenu(t,i,e)}loadMenu(e,t,i,s,o){var n,r=!(e instanceof MouseEvent),a=document.createElement("div");if(a.classList.add("tabulator-menu"),r||e.preventDefault(),i&&i.length){if(s)n=o.child(a);else{if(this.nestedMenuBlock){if(this.rootPopup)return}else this.nestedMenuBlock=setTimeout((()=>{this.nestedMenuBlock=!1}),100);this.rootPopup&&this.rootPopup.hide(),this.rootPopup=n=this.popup(a)}i.forEach((e=>{var i=document.createElement("div"),s=e.label,o=e.disabled;e.separator?i.classList.add("tabulator-menu-separator"):(i.classList.add("tabulator-menu-item"),"function"==typeof s&&(s=s.call(this.table,t.getComponent())),s instanceof Node?i.appendChild(s):i.innerHTML=s,"function"==typeof o&&(o=o.call(this.table,t.getComponent())),o?(i.classList.add("tabulator-menu-item-disabled"),i.addEventListener("click",(e=>{e.stopPropagation()}))):e.menu&&e.menu.length?i.addEventListener("click",(s=>{s.stopPropagation(),this.loadMenu(s,t,e.menu,i,n)})):e.action&&i.addEventListener("click",(i=>{e.action(i,t.getComponent())})),e.menu&&e.menu.length&&i.classList.add("tabulator-menu-item-submenu")),a.appendChild(i)})),a.addEventListener("click",(e=>{this.rootPopup&&this.rootPopup.hide()})),n.show(s||e),n===this.rootPopup&&(this.rootPopup.hideOnBlur((()=>{this.rootPopup=null,this.currentComponent&&(this.dispatch("menu-closed",i,n),this.dispatchExternal("menuClosed",this.currentComponent.getComponent()),this.currentComponent=null)})),this.currentComponent=t,this.dispatch("menu-opened",i,n),this.dispatchExternal("menuOpened",t.getComponent()))}}}X.moduleName="menu";class q extends s{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.registerTableOption("movableColumns",!1)}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e}initialize(){this.table.options.movableColumns&&(this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("alert-show",this.abortMove.bind(this)))}abortMove(){clearTimeout(this.checkTimeout)}initializeColumn(e){var i,s=this,o={};e.modules.frozen||e.isGroup||(i=e.getElement(),o.mousemove=function(o){e.parent===s.moving.parent&&((s.touchMove?o.touches[0].pageX:o.pageX)-t.elOffset(i).left+s.table.columnManager.contentsElement.scrollLeft>e.getWidth()/2?s.toCol===e&&s.toColAfter||(i.parentNode.insertBefore(s.placeholderElement,i.nextSibling),s.moveColumn(e,!0)):(s.toCol!==e||s.toColAfter)&&(i.parentNode.insertBefore(s.placeholderElement,i),s.moveColumn(e,!1)))}.bind(s),i.addEventListener("mousedown",(function(t){s.touchMove=!1,1===t.which&&(s.checkTimeout=setTimeout((function(){s.startMove(t,e)}),s.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&s.checkTimeout&&clearTimeout(s.checkTimeout)})),s.bindTouchEvents(e)),e.modules.moveColumn=o}bindTouchEvents(e){var t,i,s,o,n,r,a=e.getElement(),l=!1;a.addEventListener("touchstart",(a=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,t=e.nextColumn(),s=t?t.getWidth()/2:0,i=e.prevColumn(),o=i?i.getWidth()/2:0,n=0,r=0,l=!1,this.startMove(a,e)}),this.checkPeriod)}),{passive:!0}),a.addEventListener("touchmove",(a=>{var h,d;this.moving&&(this.moveHover(a),l||(l=a.touches[0].pageX),(h=a.touches[0].pageX-l)>0?t&&h-n>s&&(d=t)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveColumn(d,!0)):i&&-h-r>o&&(d=i)!==e&&(l=a.touches[0].pageX,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveColumn(d,!1)),d&&(t=d.nextColumn(),n=s,s=t?t.getWidth()/2:0,i=d.prevColumn(),r=o,o=i?i.getWidth()/2:0))}),{passive:!0}),a.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&this.endMove(e)}))}startMove(e,i){var s=i.getElement(),o=this.table.columnManager.getContentsElement(),n=this.table.columnManager.getHeadersElement();this.moving=i,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-t.elOffset(s).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=i.getWidth()+"px",this.placeholderElement.style.height=i.getHeight()+"px",s.parentNode.insertBefore(this.placeholderElement,s),s.parentNode.removeChild(s),this.hoverElement=s.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),o.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom=o.clientHeight-n.offsetHeight+"px",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)}_bindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)}))}_unbindMouseMove(){this.table.columnManager.columnsByIndex.forEach((function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)}))}moveColumn(e,t){var i=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&i[t]&&s.parentNode.insertBefore(i[t].getElement(),s.nextSibling)})):e.getCells().forEach((function(e,t){var s=e.getElement(!0);s.parentNode&&i[t]&&s.parentNode.insertBefore(i[t].getElement(),s)}))}endMove(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))}moveHover(e){var i,s=this.table.columnManager.getContentsElement(),o=s.scrollLeft,n=(this.touchMove?e.touches[0].pageX:e.pageX)-t.elOffset(s).left+o;this.hoverElement.style.left=n-this.startX+"px",n-o{i=Math.max(0,o-5),this.table.rowManager.getElement().scrollLeft=i,this.autoScrollTimeout=!1}),1))),o+s.clientWidth-n{i=Math.min(s.clientWidth,o+5),this.table.rowManager.getElement().scrollLeft=i,this.autoScrollTimeout=!1}),1)))}}q.moduleName="moveColumn";class K extends s{constructor(e){super(e),this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1,this.registerTableOption("movableRows",!1),this.registerTableOption("movableRowsConnectedTables",!1),this.registerTableOption("movableRowsConnectedElements",!1),this.registerTableOption("movableRowsSender",!1),this.registerTableOption("movableRowsReceiver","insert"),this.registerColumnOption("rowHandle")}createPlaceholderElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e}initialize(){this.table.options.movableRows&&(this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements,this.subscribe("cell-init",this.initializeCell.bind(this)),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)))}initializeGroupHeader(e){var i=this,s={};s.mouseup=function(t){i.tableRowDrop(t,e)}.bind(i),s.mousemove=function(s){var o;s.pageY-t.elOffset(e.element).top+i.table.rowManager.element.scrollTop>e.getHeight()/2?i.toRow===e&&i.toRowAfter||((o=e.getElement()).parentNode.insertBefore(i.placeholderElement,o.nextSibling),i.moveRow(e,!0)):(i.toRow!==e||i.toRowAfter)&&(o=e.getElement()).previousSibling&&(o.parentNode.insertBefore(i.placeholderElement,o),i.moveRow(e,!1))}.bind(i),e.modules.moveRow=s}initializeRow(e){var i,s=this,o={};o.mouseup=function(t){s.tableRowDrop(t,e)}.bind(s),o.mousemove=function(i){var o=e.getElement();i.pageY-t.elOffset(o).top+s.table.rowManager.element.scrollTop>e.getHeight()/2?s.toRow===e&&s.toRowAfter||(o.parentNode.insertBefore(s.placeholderElement,o.nextSibling),s.moveRow(e,!0)):(s.toRow!==e||s.toRowAfter)&&(o.parentNode.insertBefore(s.placeholderElement,o),s.moveRow(e,!1))}.bind(s),this.hasHandle||((i=e.getElement()).addEventListener("mousedown",(function(t){1===t.which&&(s.checkTimeout=setTimeout((function(){s.startMove(t,e)}),s.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&s.checkTimeout&&clearTimeout(s.checkTimeout)})),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=o}initializeColumn(e){e.definition.rowHandle&&!1!==this.table.options.movableRows&&(this.hasHandle=!0)}initializeCell(e){if(e.column.definition.rowHandle&&!1!==this.table.options.movableRows){var t=this,i=e.getElement(!0);i.addEventListener("mousedown",(function(i){1===i.which&&(t.checkTimeout=setTimeout((function(){t.startMove(i,e.row)}),t.checkPeriod))})),i.addEventListener("mouseup",(function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)})),this.bindTouchEvents(e.row,i)}}bindTouchEvents(e,t){var i,s,o,n,r,a,l=!1;t.addEventListener("touchstart",(t=>{this.checkTimeout=setTimeout((()=>{this.touchMove=!0,i=e.nextRow(),o=i?i.getHeight()/2:0,s=e.prevRow(),n=s?s.getHeight()/2:0,r=0,a=0,l=!1,this.startMove(t,e)}),this.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",(t=>{var h,d;this.moving&&(t.preventDefault(),this.moveHover(t),l||(l=t.touches[0].pageY),(h=t.touches[0].pageY-l)>0?i&&h-r>o&&(d=i)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement().nextSibling),this.moveRow(d,!0)):s&&-h-a>n&&(d=s)!==e&&(l=t.touches[0].pageY,d.getElement().parentNode.insertBefore(this.placeholderElement,d.getElement()),this.moveRow(d,!1)),d&&(i=d.nextRow(),r=o,o=i?i.getHeight()/2:0,s=d.prevRow(),a=n,n=s?s.getHeight()/2:0))})),t.addEventListener("touchend",(e=>{this.checkTimeout&&clearTimeout(this.checkTimeout),this.moving&&(this.endMove(e),this.touchMove=!1)}))}_bindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)}))}_unbindMouseMove(){this.table.rowManager.getDisplayRows().forEach((e=>{("row"===e.type||"group"===e.type)&&e.modules.moveRow&&e.modules.moveRow.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)}))}startMove(e,t){var i=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(i.parentNode.insertBefore(this.placeholderElement,i),i.parentNode.removeChild(i)),this.hoverElement=i.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.dispatchExternal("rowMoving",t.getComponent()),this.moveHover(e)}setStartPosition(e,t){var i,s,o=this.touchMove?e.touches[0].pageX:e.pageX,n=this.touchMove?e.touches[0].pageY:e.pageY;i=t.getElement(),this.connection?(s=i.getBoundingClientRect(),this.startX=s.left-o+window.pageXOffset,this.startY=s.top-n+window.pageYOffset):this.startY=n-i.getBoundingClientRect().top}endMove(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow?this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter):this.dispatchExternal("rowMoveCancelled",this.moving.getComponent()),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))}moveRow(e,t){this.toRow=e,this.toRowAfter=t}moveHover(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)}moveHoverTable(e){var t=this.table.rowManager.getElement(),i=t.scrollTop,s=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+i;this.hoverElement.style.top=Math.min(s-this.startY,this.table.rowManager.element.scrollHeight-this.hoverElement.offsetHeight)+"px"}moveHoverConnections(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"}elementRowDrop(e,t,i){this.dispatchExternal("movableRowsElementDrop",e,t,!!i&&i.getComponent())}connectToTables(e){var t;this.connectionSelectorsTables&&(t=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStart",t),this.commsSend(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((e=>{"string"==typeof e?this.connectionElements=this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):this.connectionElements.push(e)})),this.connectionElements.forEach((e=>{var t=t=>{this.elementRowDrop(t,e,this.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")})))}disconnectFromTables(){var e;this.connectionSelectorsTables&&(e=this.commsConnections(this.connectionSelectorsTables),this.dispatchExternal("movableRowsSendingStop",e),this.commsSend(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((e=>{e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent}))}connect(e,t){return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStart",t,e),!0)}disconnect(e){e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((e=>{"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.dispatchExternal("movableRowsReceivingStop",e)):console.warn("Move Row Error - trying to disconnect from non connected table")}dropComplete(e,t,i){var s=!1;if(i){switch(typeof this.table.options.movableRowsSender){case"string":s=this.senders[this.table.options.movableRowsSender];break;case"function":s=this.table.options.movableRowsSender}s?s.call(this,this.moving?this.moving.getComponent():void 0,t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.dispatchExternal("movableRowsSent",this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.dispatchExternal("movableRowsSentFailed",this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()}tableRowDrop(e,t){var i=!1,s=!1;switch(e.stopImmediatePropagation(),typeof this.table.options.movableRowsReceiver){case"string":i=this.receivers[this.table.options.movableRowsReceiver];break;case"function":i=this.table.options.movableRowsReceiver}i?s=i.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),s?this.dispatchExternal("movableRowsReceived",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.dispatchExternal("movableRowsReceivedFailed",this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.commsSend(this.connectedTable,"moveRow","dropcomplete",{row:t,success:s})}commsReceived(e,t,i){switch(t){case"connect":return this.connect(e,i.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,i.row,i.success)}}}K.prototype.receivers={insert:function(e,t,i){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,i){return this.table.addRow(e.getData()),!0},update:function(e,t,i){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,i){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},K.prototype.senders={delete:function(e,t,i){e.delete()}},K.moduleName="moveRow";class Y extends s{constructor(e){super(e),this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0,this.registerColumnOption("mutator"),this.registerColumnOption("mutatorParams"),this.registerColumnOption("mutatorData"),this.registerColumnOption("mutatorDataParams"),this.registerColumnOption("mutatorEdit"),this.registerColumnOption("mutatorEditParams"),this.registerColumnOption("mutatorClipboard"),this.registerColumnOption("mutatorClipboardParams"),this.registerColumnOption("mutateLink")}initialize(){this.subscribe("cell-value-changing",this.transformCell.bind(this)),this.subscribe("cell-value-changed",this.mutateLink.bind(this)),this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("row-data-init-before",this.rowDataChanged.bind(this)),this.subscribe("row-data-changing",this.rowDataChanged.bind(this))}rowDataChanged(e,t,i){return this.transformRow(t,"data",i)}initializeColumn(e){var t=!1,i={};this.allowedTypes.forEach((s=>{var o,n="mutator"+(s.charAt(0).toUpperCase()+s.slice(1));e.definition[n]&&(o=this.lookupMutator(e.definition[n]))&&(t=!0,i[n]={mutator:o,params:e.definition[n+"Params"]||{}})})),t&&(e.modules.mutate=i)}lookupMutator(e){var t=!1;switch(typeof e){case"string":Y.mutators[e]?t=Y.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t}transformRow(e,t,i){var s,o="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&this.table.columnManager.traverse((n=>{var r,a,l;n.modules.mutate&&(r=n.modules.mutate[o]||n.modules.mutate.mutator||!1)&&(s=n.getFieldValue(void 0!==i?i:e),("data"==t&&!i||void 0!==s)&&(l=n.getComponent(),a="function"==typeof r.params?r.params(s,e,t,l):r.params,n.setFieldValue(e,r.mutator(s,e,t,a,l))))})),e}transformCell(e,t){if(e.column.modules.mutate){var i=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,s={};if(i)return s=Object.assign(s,e.row.getData()),e.column.setFieldValue(s,t),i.mutator(t,s,"edit",i.params,e.getComponent())}return t}mutateLink(e){var t=e.column.definition.mutateLink;t&&(Array.isArray(t)||(t=[t]),t.forEach((t=>{var i=e.row.getCell(t);i&&i.setValue(i.getValue(),!0,!0)})))}enable(){this.enabled=!0}disable(){this.enabled=!1}}Y.moduleName="mutator",Y.mutators={};var $={rows:function(e,t,i,s,o){var n=document.createElement("span"),r=document.createElement("span"),a=document.createElement("span"),l=document.createElement("span"),h=document.createElement("span"),d=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(e=>{r.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|of",(e=>{l.innerHTML=e})),this.table.modules.localize.langBind("pagination|counter|rows",(e=>{d.innerHTML=e})),s?(a.innerHTML=" "+t+"-"+Math.min(t+e-1,s)+" ",h.innerHTML=" "+s+" ",n.appendChild(r),n.appendChild(a),n.appendChild(l),n.appendChild(h),n.appendChild(d)):(a.innerHTML=" 0 ",n.appendChild(r),n.appendChild(a),n.appendChild(d)),n},pages:function(e,t,i,s,o){var n=document.createElement("span"),r=document.createElement("span"),a=document.createElement("span"),l=document.createElement("span"),h=document.createElement("span"),d=document.createElement("span");return this.table.modules.localize.langBind("pagination|counter|showing",(e=>{r.innerHTML=e})),a.innerHTML=" "+i+" ",this.table.modules.localize.langBind("pagination|counter|of",(e=>{l.innerHTML=e})),h.innerHTML=" "+o+" ",this.table.modules.localize.langBind("pagination|counter|pages",(e=>{d.innerHTML=e})),n.appendChild(r),n.appendChild(a),n.appendChild(l),n.appendChild(h),n.appendChild(d),n}};class Z extends s{constructor(e){super(e),this.mode="local",this.progressiveLoad=!1,this.element=null,this.pageCounterElement=null,this.pageCounter=null,this.size=0,this.page=1,this.count=5,this.max=1,this.remoteRowCountEstimate=null,this.initialLoad=!0,this.dataChanging=!1,this.pageSizes=[],this.registerTableOption("pagination",!1),this.registerTableOption("paginationMode","local"),this.registerTableOption("paginationSize",!1),this.registerTableOption("paginationInitialPage",1),this.registerTableOption("paginationCounter",!1),this.registerTableOption("paginationCounterElement",!1),this.registerTableOption("paginationButtonCount",5),this.registerTableOption("paginationSizeSelector",!1),this.registerTableOption("paginationElement",!1),this.registerTableOption("paginationAddRow","page"),this.registerTableOption("progressiveLoad",!1),this.registerTableOption("progressiveLoadDelay",0),this.registerTableOption("progressiveLoadScrollMargin",0),this.registerTableFunction("setMaxPage",this.setMaxPage.bind(this)),this.registerTableFunction("setPage",this.setPage.bind(this)),this.registerTableFunction("setPageToRow",this.userSetPageToRow.bind(this)),this.registerTableFunction("setPageSize",this.userSetPageSize.bind(this)),this.registerTableFunction("getPageSize",this.getPageSize.bind(this)),this.registerTableFunction("previousPage",this.previousPage.bind(this)),this.registerTableFunction("nextPage",this.nextPage.bind(this)),this.registerTableFunction("getPage",this.getPage.bind(this)),this.registerTableFunction("getPageMax",this.getPageMax.bind(this)),this.registerComponentFunction("row","pageTo",this.setPageToRow.bind(this))}initialize(){this.table.options.pagination?(this.subscribe("row-deleted",this.rowsUpdated.bind(this)),this.subscribe("row-added",this.rowsUpdated.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.subscribe("footer-redraw",this.footerRedraw.bind(this)),"page"==this.table.options.paginationAddRow&&this.subscribe("row-adding-position",this.rowAddingPosition.bind(this)),"remote"===this.table.options.paginationMode&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this))),this.table.options.progressiveLoad&&console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"),this.registerDisplayHandler(this.restOnRenderBefore.bind(this),40),this.registerDisplayHandler(this.getRows.bind(this),50),this.createElements(),this.initializePageCounter(),this.initializePaginator()):this.table.options.progressiveLoad&&(this.subscribe("data-params",this.remotePageParams.bind(this)),this.subscribe("data-loaded",this._parseRemoteData.bind(this)),this.subscribe("table-built",this.calculatePageSizes.bind(this)),this.subscribe("data-processed",this.initialLoadComplete.bind(this)),this.initializeProgressive(this.table.options.progressiveLoad),"scroll"===this.table.options.progressiveLoad&&this.subscribe("scroll-vertical",this.scrollVertical.bind(this)))}rowAddingPosition(e,t){var i,s=this.table.rowManager,o=s.getDisplayRows();return t?o.length?i=o[0]:s.activeRows.length&&(i=s.activeRows[s.activeRows.length-1],t=!1):o.length&&(i=o[o.length-1],t=!(o.length{}))}restOnRenderBefore(e,t){return t||"local"===this.mode&&this.reset(),e}rowsUpdated(){this.refreshData(!0,"all")}createElements(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),(e=document.createElement("button")).classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))}generatePageSizeSelectList(){var e=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))e=this.table.options.paginationSizeSelector,this.pageSizes=e,-1==this.pageSizes.indexOf(this.size)&&e.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){e=[];for(let t=1;t<5;t++)e.push(this.size*t);this.pageSizes=e}else e=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);e.forEach((e=>{var t=document.createElement("option");t.value=e,!0===e?this.langBind("pagination|all",(function(e){t.innerHTML=e})):t.innerHTML=e,this.pageSizeSelect.appendChild(t)})),this.pageSizeSelect.value=this.size}}initializePageCounter(){var e=this.table.options.paginationCounter,t=null;e&&((t="function"==typeof e?e:Z.pageCounters[e])?(this.pageCounter=t,this.pageCounterElement=document.createElement("span"),this.pageCounterElement.classList.add("tabulator-page-counter")):console.warn("Pagination Error - No such page counter found: ",e))}initializePaginator(e){var t,i;e||(this.langBind("pagination|first",(e=>{this.firstBut.innerHTML=e})),this.langBind("pagination|first_title",(e=>{this.firstBut.setAttribute("aria-label",e),this.firstBut.setAttribute("title",e)})),this.langBind("pagination|prev",(e=>{this.prevBut.innerHTML=e})),this.langBind("pagination|prev_title",(e=>{this.prevBut.setAttribute("aria-label",e),this.prevBut.setAttribute("title",e)})),this.langBind("pagination|next",(e=>{this.nextBut.innerHTML=e})),this.langBind("pagination|next_title",(e=>{this.nextBut.setAttribute("aria-label",e),this.nextBut.setAttribute("title",e)})),this.langBind("pagination|last",(e=>{this.lastBut.innerHTML=e})),this.langBind("pagination|last_title",(e=>{this.lastBut.setAttribute("aria-label",e),this.lastBut.setAttribute("title",e)})),this.firstBut.addEventListener("click",(()=>{this.setPage(1)})),this.prevBut.addEventListener("click",(()=>{this.previousPage()})),this.nextBut.addEventListener("click",(()=>{this.nextPage()})),this.lastBut.addEventListener("click",(()=>{this.setPage(this.max)})),this.table.options.paginationElement&&(this.element=this.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),this.langBind("pagination|page_size",(e=>{this.pageSizeSelect.setAttribute("aria-label",e),this.pageSizeSelect.setAttribute("title",e),t.innerHTML=e})),this.element.appendChild(t),this.element.appendChild(this.pageSizeSelect),this.pageSizeSelect.addEventListener("change",(e=>{this.setPageSize("true"==this.pageSizeSelect.value||this.pageSizeSelect.value),this.setPage(1)}))),this.element.appendChild(this.firstBut),this.element.appendChild(this.prevBut),this.element.appendChild(this.pagesElement),this.element.appendChild(this.nextBut),this.element.appendChild(this.lastBut),this.table.options.paginationElement||(this.table.options.paginationCounter&&(this.table.options.paginationCounterElement?this.table.options.paginationCounterElement instanceof HTMLElement?this.table.options.paginationCounterElement.appendChild(this.pageCounterElement):"string"==typeof this.table.options.paginationCounterElement&&((i=document.querySelector(this.table.options.paginationCounterElement))?i.appendChild(this.pageCounterElement):console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:",this.table.options.paginationCounterElement)):this.footerAppend(this.pageCounterElement)),this.footerAppend(this.element)),this.page=this.table.options.paginationInitialPage,this.count=this.table.options.paginationButtonCount),this.mode=this.table.options.paginationMode}initializeProgressive(e){this.initializePaginator(!0),this.mode="progressive_"+e,this.progressiveLoad=!0}trackChanges(){this.dispatch("page-changed")}setMaxRows(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)}reset(e){this.initialLoad||("local"==this.mode||e)&&(this.page=1,this.trackChanges())}setMaxPage(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())}setPage(e){switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return(e=parseInt(e))>0&&e<=this.max||"local"!==this.mode?(this.page=e,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Requested page is out of range of 1 - "+this.max+":",e),Promise.reject())}setPageToRow(e){var t=this.displayRows(-1).indexOf(e);if(t>-1){var i=!0===this.size?1:Math.ceil((t+1)/this.size);return this.setPage(i)}return console.warn("Pagination Error - Requested row is not visible"),Promise.reject()}setPageSize(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e,this.dispatchExternal("pageSizeChanged",e)),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.trackChanges()}_setPageCounter(e,t,i){var s;if(this.pageCounter)switch("remote"===this.mode&&(t=this.size,i=(this.page-1)*this.size+1,e=this.remoteRowCountEstimate),typeof(s=this.pageCounter.call(this,t,i,this.page,e,this.max))){case"object":if(s instanceof Node){for(;this.pageCounterElement.firstChild;)this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);this.pageCounterElement.appendChild(s)}else this.pageCounterElement.innerHTML="",null!=s&&console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:",s);break;case"undefined":this.pageCounterElement.innerHTML="";break;default:this.pageCounterElement.innerHTML=s}}_setPageButtons(){let e=Math.floor((this.count-1)/2),t=Math.ceil((this.count-1)/2),i=this.max-this.page+e+10&&e<=this.max&&this.pagesElement.appendChild(this._generatePageButton(e));this.footerRedraw()}_generatePageButton(e){var t=document.createElement("button");return t.classList.add("tabulator-page"),e==this.page&&t.classList.add("active"),t.setAttribute("type","button"),t.setAttribute("role","button"),this.langBind("pagination|page_title",(i=>{t.setAttribute("aria-label",i+" "+e),t.setAttribute("title",i+" "+e)})),t.setAttribute("data-page",e),t.textContent=e,t.addEventListener("click",(t=>{this.setPage(e)})),t}previousPage(){return this.page>1?(this.page--,this.trackChanges(),this.trigger()):(console.warn("Pagination Error - Previous page would be less than page 1:",0),Promise.reject())}nextPage(){return this.page"row"===e.type));if("local"==this.mode){t=[],this.setMaxRows(e.length),!0===this.size?(i=0,s=e.length):s=(i=this.size*(this.page-1))+parseInt(this.size),this._setPageButtons();for(let r=i;r{this.dataChanging=!1}));case"progressive_load":case"progressive_scroll":return this.reloadData(null,!0);default:return console.warn("Pagination Error - no such pagination mode:",this.mode),Promise.reject()}}_parseRemoteData(e){var t;if(void 0===e.last_page&&console.warn("Remote Pagination Error - Server response missing '"+(this.options("dataReceiveParams").last_page||"last_page")+"' property"),e.data){if(this.max=parseInt(e.last_page)||1,this.remoteRowCountEstimate=void 0!==e.last_row?e.last_row:e.last_page*this.size-(this.page==e.last_page?this.size-e.data.length:0),this.progressiveLoad){switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e.data,!1,1==this.page):this.table.rowManager.addRows(e.data),this.page{this.nextPage()}),this.table.options.progressiveLoadDelay);break;case"progressive_scroll":e=1===this.page?e.data:this.table.rowManager.getData().concat(e.data),this.table.rowManager.setData(e,1!==this.page,1==this.page),t=this.table.options.progressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,this.table.rowManager.element.scrollHeight<=this.table.rowManager.element.clientHeight+t&&this.page{this.nextPage()}))}return!1}this.dispatchExternal("pageLoaded",this.getPage())}else console.warn("Remote Pagination Error - Server response missing '"+(this.options("dataReceiveParams").data||"data")+"' property");return e.data}footerRedraw(){var e=this.table.footerManager.containerElement;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))}}Z.moduleName="page",Z.pageCounters=$;var Q={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&((i=(o=o.slice(r)).indexOf(";"))>-1&&(o=o.slice(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},ee={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}};class te extends s{constructor(e){super(e),this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1,this.registerTableOption("persistence",!1),this.registerTableOption("persistenceID",""),this.registerTableOption("persistenceMode",!0),this.registerTableOption("persistenceReaderFunc",!1),this.registerTableOption("persistenceWriterFunc",!1)}localStorageTest(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}initialize(){if(this.table.options.persistence){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:te.readers[this.table.options.persistenceReaderFunc]?this.readFunc=te.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):te.readers[this.mode]?this.readFunc=te.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:te.writers[this.table.options.persistenceWriterFunc]?this.writeFunc=te.writers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):te.writers[this.mode]?this.writeFunc=te.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,headerFilter:!0===this.table.options.persistence||this.table.options.persistence.headerFilter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retrieveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retrieveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader)),this.config.columns&&(this.table.options.columns=this.load("columns",this.table.options.columns),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-show",this.save.bind(this,"columns")),this.subscribe("column-hide",this.save.bind(this,"columns")),this.subscribe("column-moved",this.save.bind(this,"columns"))),this.subscribe("table-built",this.tableBuilt.bind(this),0),this.subscribe("table-redraw",this.tableRedraw.bind(this)),this.subscribe("filter-changed",this.eventSave.bind(this,"filter")),this.subscribe("filter-changed",this.eventSave.bind(this,"headerFilter")),this.subscribe("sort-changed",this.eventSave.bind(this,"sort")),this.subscribe("group-changed",this.eventSave.bind(this,"group")),this.subscribe("page-changed",this.eventSave.bind(this,"page")),this.subscribe("column-resized",this.eventSave.bind(this,"columns")),this.subscribe("column-width",this.eventSave.bind(this,"columns")),this.subscribe("layout-refreshed",this.eventSave.bind(this,"columns"))}this.registerTableFunction("getColumnLayout",this.getColumnLayout.bind(this)),this.registerTableFunction("setColumnLayout",this.setColumnLayout.bind(this))}eventSave(e){this.config[e]&&this.save(e)}tableBuilt(){var e,t,i;this.config.sort&&!1==!(e=this.load("sort"))&&(this.table.options.initialSort=e),this.config.filter&&!1==!(t=this.load("filter"))&&(this.table.options.initialFilter=t),this.config.headerFilter&&!1==!(i=this.load("headerFilter"))&&(this.table.options.initialHeaderFilter=i)}tableRedraw(e){e&&this.config.columns&&this.save("columns")}getColumnLayout(){return this.parseColumns(this.table.columnManager.getColumns())}setColumnLayout(e){return this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns,e,!0)),!0}initializeColumn(e){var t;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),(!0===this.config.columns?Object.keys(t):this.config.columns).forEach((e=>{var i=Object.getOwnPropertyDescriptor(t,e),s=t[e];i&&Object.defineProperty(t,e,{set:e=>{s=e,this.defWatcherBlock||this.save("columns"),i.set&&i.set(e)},get:()=>(i.get&&i.get(),s)})})),this.defWatcherBlock=!1)}load(e,t){var i=this.retrieveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i}retrieveData(e){return!!this.readFunc&&this.readFunc(this.id,e)}mergeDefinition(e,t,i){var s=[];return(t=t||[]).forEach(((t,o)=>{var n,r=this._findColumn(e,t);r&&(i?n=Object.keys(t):!0===this.config.columns||null==this.config.columns?(n=Object.keys(r)).push("width"):n=this.config.columns,n.forEach((e=>{"columns"!==e&&void 0!==t[e]&&(r[e]=t[e])})),r.columns&&(r.columns=this.mergeDefinition(r.columns,t.columns)),s.push(r))})),e.forEach(((e,i)=>{this._findColumn(t,e)||(s.length>i?s.splice(i,0,e):s.push(e))})),s}_findColumn(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find((function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}}))}save(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"headerFilter":t=this.table.modules.filter.getHeaderFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)}validateSorters(e){return e.forEach((function(e){e.column=e.field,delete e.field})),e}getGroupConfig(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e}getPageConfig(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e}parseColumns(e){var t=[],i=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach((e=>{var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=this.parseColumns(e.getColumns())):(o.field=e.getField(),!0===this.config.columns||null==this.config.columns?((s=Object.keys(n)).push("width"),s.push("visible")):s=this.config.columns,s.forEach((t=>{switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:"function"!=typeof n[t]&&-1===i.indexOf(t)&&(o[t]=n[t])}}))),t.push(o)})),t}}te.moduleName="persistence",te.moduleInitOrder=-10,te.readers=Q,te.writers=ee;class ie extends s{constructor(e){super(e),this.columnSubscribers={},this.registerTableOption("rowContextPopup",!1),this.registerTableOption("rowClickPopup",!1),this.registerTableOption("rowDblClickPopup",!1),this.registerTableOption("groupContextPopup",!1),this.registerTableOption("groupClickPopup",!1),this.registerTableOption("groupDblClickPopup",!1),this.registerColumnOption("headerContextPopup"),this.registerColumnOption("headerClickPopup"),this.registerColumnOption("headerDblClickPopup"),this.registerColumnOption("headerPopup"),this.registerColumnOption("headerPopupIcon"),this.registerColumnOption("contextPopup"),this.registerColumnOption("clickPopup"),this.registerColumnOption("dblClickPopup"),this.registerComponentFunction("cell","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("column","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("row","popup",this._componentPopupCall.bind(this)),this.registerComponentFunction("group","popup",this._componentPopupCall.bind(this))}initialize(){this.initializeRowWatchers(),this.initializeGroupWatchers(),this.subscribe("column-init",this.initializeColumn.bind(this))}_componentPopupCall(e,t,i){this.loadPopupEvent(t,null,e,i)}initializeRowWatchers(){this.table.options.rowContextPopup&&(this.subscribe("row-contextmenu",this.loadPopupEvent.bind(this,this.table.options.rowContextPopup)),this.table.on("rowTapHold",this.loadPopupEvent.bind(this,this.table.options.rowContextPopup))),this.table.options.rowClickPopup&&this.subscribe("row-click",this.loadPopupEvent.bind(this,this.table.options.rowClickPopup)),this.table.options.rowDblClickPopup&&this.subscribe("row-dblclick",this.loadPopupEvent.bind(this,this.table.options.rowDblClickPopup))}initializeGroupWatchers(){this.table.options.groupContextPopup&&(this.subscribe("group-contextmenu",this.loadPopupEvent.bind(this,this.table.options.groupContextPopup)),this.table.on("groupTapHold",this.loadPopupEvent.bind(this,this.table.options.groupContextPopup))),this.table.options.groupClickPopup&&this.subscribe("group-click",this.loadPopupEvent.bind(this,this.table.options.groupClickPopup)),this.table.options.groupDblClickPopup&&this.subscribe("group-dblclick",this.loadPopupEvent.bind(this,this.table.options.groupDblClickPopup))}initializeColumn(e){var t=e.definition;t.headerContextPopup&&!this.columnSubscribers.headerContextPopup&&(this.columnSubscribers.headerContextPopup=this.loadPopupTableColumnEvent.bind(this,"headerContextPopup"),this.subscribe("column-contextmenu",this.columnSubscribers.headerContextPopup),this.table.on("headerTapHold",this.loadPopupTableColumnEvent.bind(this,"headerContextPopup"))),t.headerClickPopup&&!this.columnSubscribers.headerClickPopup&&(this.columnSubscribers.headerClickPopup=this.loadPopupTableColumnEvent.bind(this,"headerClickPopup"),this.subscribe("column-click",this.columnSubscribers.headerClickPopup)),t.headerDblClickPopup&&!this.columnSubscribers.headerDblClickPopup&&(this.columnSubscribers.headerDblClickPopup=this.loadPopupTableColumnEvent.bind(this,"headerDblClickPopup"),this.subscribe("column-dblclick",this.columnSubscribers.headerDblClickPopup)),t.headerPopup&&this.initializeColumnHeaderPopup(e),t.contextPopup&&!this.columnSubscribers.contextPopup&&(this.columnSubscribers.contextPopup=this.loadPopupTableCellEvent.bind(this,"contextPopup"),this.subscribe("cell-contextmenu",this.columnSubscribers.contextPopup),this.table.on("cellTapHold",this.loadPopupTableCellEvent.bind(this,"contextPopup"))),t.clickPopup&&!this.columnSubscribers.clickPopup&&(this.columnSubscribers.clickPopup=this.loadPopupTableCellEvent.bind(this,"clickPopup"),this.subscribe("cell-click",this.columnSubscribers.clickPopup)),t.dblClickPopup&&!this.columnSubscribers.dblClickPopup&&(this.columnSubscribers.dblClickPopup=this.loadPopupTableCellEvent.bind(this,"dblClickPopup"),this.subscribe("cell-click",this.columnSubscribers.dblClickPopup))}initializeColumnHeaderPopup(e){var t,i=e.definition.headerPopupIcon;(t=document.createElement("span")).classList.add("tabulator-header-popup-button"),i?("function"==typeof i&&(i=i(e.getComponent())),i instanceof HTMLElement?t.appendChild(i):t.innerHTML=i):t.innerHTML="⋮",t.addEventListener("click",(t=>{t.stopPropagation(),t.preventDefault(),this.loadPopupEvent(e.definition.headerPopup,t,e)})),e.titleElement.insertBefore(t,e.titleElement.firstChild)}loadPopupTableCellEvent(e,t,i){i._cell&&(i=i._cell),i.column.definition[e]&&this.loadPopupEvent(i.column.definition[e],t,i)}loadPopupTableColumnEvent(e,t,i){i._column&&(i=i._column),i.definition[e]&&this.loadPopupEvent(i.definition[e],t,i)}loadPopupEvent(e,t,i,s){var o;i._group?i=i._group:i._row&&(i=i._row),e="function"==typeof e?e.call(this.table,t,i.getComponent(),(function(e){o=e})):e,this.loadPopup(t,i,e,o,s)}loadPopup(e,t,i,s,o){var n,r,a=!(e instanceof MouseEvent);i instanceof HTMLElement?n=i:(n=document.createElement("div")).innerHTML=i,n.classList.add("tabulator-popup"),n.addEventListener("click",(e=>{e.stopPropagation()})),a||e.preventDefault(),r=this.popup(n),"function"==typeof s&&r.renderCallback(s),e?r.show(e):r.show(t.getElement(),o||"center"),r.hideOnBlur((()=>{this.dispatchExternal("popupClosed",t.getComponent())})),this.dispatchExternal("popupOpened",t.getComponent())}}ie.moduleName="popup";class se extends s{constructor(e){super(e),this.element=!1,this.manualBlock=!1,this.beforeprintEventHandler=null,this.afterprintEventHandler=null,this.registerTableOption("printAsHtml",!1),this.registerTableOption("printFormatter",!1),this.registerTableOption("printHeader",!1),this.registerTableOption("printFooter",!1),this.registerTableOption("printStyled",!0),this.registerTableOption("printRowRange","visible"),this.registerTableOption("printConfig",{}),this.registerColumnOption("print"),this.registerColumnOption("titlePrint")}initialize(){this.table.options.printAsHtml&&(this.beforeprintEventHandler=this.replaceTable.bind(this),this.afterprintEventHandler=this.cleanup.bind(this),window.addEventListener("beforeprint",this.beforeprintEventHandler),window.addEventListener("afterprint",this.afterprintEventHandler),this.subscribe("table-destroy",this.destroy.bind(this))),this.registerTableFunction("print",this.printFullscreen.bind(this))}destroy(){this.table.options.printAsHtml&&(window.removeEventListener("beforeprint",this.beforeprintEventHandler),window.removeEventListener("afterprint",this.afterprintEventHandler))}replaceTable(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))}cleanup(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")}printFullscreen(e,t,i){var s,o,n=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),h=this.table.modules.export.generateTable(void 0!==i?i:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e||this.table.options.printRowRange,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),"string"==typeof(s="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?a.innerHTML=s:a.appendChild(s),this.element.appendChild(a)),this.element.appendChild(h),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),"string"==typeof(o="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?l.innerHTML=o:l.appendChild(o),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,h),window.print(),this.cleanup(),window.scrollTo(n,r),this.manualBlock=!1}}se.moduleName="print";class oe extends s{constructor(e){super(e),this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0,this.registerTableOption("reactiveData",!1)}initialize(){this.table.options.reactiveData&&(this.subscribe("cell-value-save-before",this.block.bind(this,"cellsave")),this.subscribe("cell-value-save-after",this.unblock.bind(this,"cellsave")),this.subscribe("row-data-save-before",this.block.bind(this,"rowsave")),this.subscribe("row-data-save-after",this.unblock.bind(this,"rowsave")),this.subscribe("row-data-init-after",this.watchRow.bind(this)),this.subscribe("data-processing",this.watchData.bind(this)),this.subscribe("table-destroy",this.unwatchData.bind(this)))}watchData(e){var t,i=this;this.currentVersion++,t=this.currentVersion,this.unwatchData(),this.data=e,this.origFuncs.push=e.push,Object.defineProperty(this.data,"push",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments);return i.blocked||t!==i.currentVersion||(i.block("data-push"),o.forEach((e=>{i.table.rowManager.addRowActual(e,!1)})),s=i.origFuncs.push.apply(e,arguments),i.unblock("data-push")),s}}),this.origFuncs.unshift=e.unshift,Object.defineProperty(this.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var s,o=Array.from(arguments);return i.blocked||t!==i.currentVersion||(i.block("data-unshift"),o.forEach((e=>{i.table.rowManager.addRowActual(e,!0)})),s=i.origFuncs.unshift.apply(e,arguments),i.unblock("data-unshift")),s}}),this.origFuncs.shift=e.shift,Object.defineProperty(this.data,"shift",{enumerable:!1,configurable:!0,value:function(){var s,o;return i.blocked||t!==i.currentVersion||(i.block("data-shift"),i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[0]))&&s.deleteActual(),o=i.origFuncs.shift.call(e),i.unblock("data-shift")),o}}),this.origFuncs.pop=e.pop,Object.defineProperty(this.data,"pop",{enumerable:!1,configurable:!0,value:function(){var s,o;return i.blocked||t!==i.currentVersion||(i.block("data-pop"),i.data.length&&(s=i.table.rowManager.getRowFromDataObject(i.data[i.data.length-1]))&&s.deleteActual(),o=i.origFuncs.pop.call(e),i.unblock("data-pop")),o}}),this.origFuncs.splice=e.splice,Object.defineProperty(this.data,"splice",{enumerable:!1,configurable:!0,value:function(){var s,o,n=Array.from(arguments),r=n[0]<0?e.length+n[0]:n[0],a=n[1],l=!!n[2]&&n.slice(2);if(!i.blocked&&t===i.currentVersion){if(i.block("data-splice"),l&&((s=!!e[r]&&i.table.rowManager.getRowFromDataObject(e[r]))?l.forEach((e=>{i.table.rowManager.addRowActual(e,!0,s,!0)})):(l=l.slice().reverse()).forEach((e=>{i.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==a){var h=e.slice(r,void 0===n[1]?n[1]:r+a);h.forEach(((e,t)=>{var s=i.table.rowManager.getRowFromDataObject(e);s&&s.deleteActual(t!==h.length-1)}))}(l||0!==a)&&i.table.rowManager.reRenderInPosition(),o=i.origFuncs.splice.apply(e,arguments),i.unblock("data-splice")}return o}})}unwatchData(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})}watchRow(e){var t=e.getData();for(var i in t)this.watchKey(e,t,i);this.table.options.dataTree&&this.watchTreeChildren(e)}watchTreeChildren(e){var t=this,i=e.getData()[this.table.options.dataTreeChildField],s={};i&&(s.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-push");var o=s.push.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-push")}return o}}),s.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-unshift");var o=s.unshift.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-unshift")}return o}}),s.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-shift");var o=s.shift.call(i);this.rebuildTree(e),t.unblock("tree-shift")}return o}}),s.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-pop");var o=s.pop.call(i);this.rebuildTree(e),t.unblock("tree-pop")}return o}}),s.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:()=>{if(!t.blocked){t.block("tree-splice");var o=s.splice.apply(i,arguments);this.rebuildTree(e),t.unblock("tree-splice")}return o}}))}rebuildTree(e){this.table.modules.dataTree.initializeRow(e),this.table.modules.dataTree.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)}watchKey(e,t,i){var s=this,o=Object.getOwnPropertyDescriptor(t,i),n=t[i],r=this.currentVersion;Object.defineProperty(t,i,{set:t=>{if(n=t,!s.blocked&&r===s.currentVersion){s.block("key");var a={};a[i]=t,e.updateData(a),s.unblock("key")}o.set&&o.set(t)},get:()=>(o.get&&o.get(),n)})}unwatchRow(e){var t=e.getData();for(var i in t)Object.defineProperty(t,i,{value:t[i]})}block(e){this.blocked||(this.blocked=e)}unblock(e){this.blocked===e&&(this.blocked=!1)}}oe.moduleName="reactiveData";class ne extends s{constructor(e){super(e),this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.latestX=!1,this.handle=null,this.initialNextColumn=null,this.nextColumn=null,this.initialized=!1,this.registerColumnOption("resizable",!0),this.registerTableOption("resizableColumnFit",!1)}initialize(){this.subscribe("column-rendered",this.layoutColumnHeader.bind(this))}initializeEventWatchers(){this.initialized||(this.subscribe("cell-rendered",this.layoutCellHandles.bind(this)),this.subscribe("cell-delete",this.deInitializeComponent.bind(this)),this.subscribe("cell-height",this.resizeHandle.bind(this)),this.subscribe("column-moved",this.columnLayoutUpdated.bind(this)),this.subscribe("column-hide",this.deInitializeColumn.bind(this)),this.subscribe("column-show",this.columnLayoutUpdated.bind(this)),this.subscribe("column-width",this.columnWidthUpdated.bind(this)),this.subscribe("column-delete",this.deInitializeComponent.bind(this)),this.subscribe("column-height",this.resizeHandle.bind(this)),this.initialized=!0)}layoutCellHandles(e){"row"===e.row.type&&(this.deInitializeComponent(e),this.initializeColumn("cell",e,e.column,e.element))}layoutColumnHeader(e){e.definition.resizable&&(this.initializeEventWatchers(),this.deInitializeComponent(e),this.initializeColumn("header",e,e,e.element))}columnLayoutUpdated(e){var t=e.prevColumn();this.reinitializeColumn(e),t&&this.reinitializeColumn(t)}columnWidthUpdated(e){e.modules.frozen&&(this.table.modules.frozenColumns.leftColumns.includes(e)?this.table.modules.frozenColumns.leftColumns.forEach((e=>{this.reinitializeColumn(e)})):this.table.modules.frozenColumns.rightColumns.includes(e)&&this.table.modules.frozenColumns.rightColumns.forEach((e=>{this.reinitializeColumn(e)})))}frozenColumnOffset(e){var t=!1;return e.modules.frozen&&(t=e.modules.frozen.marginValue,"left"===e.modules.frozen.position?t+=e.getWidth()-3:t&&(t-=3)),!1!==t&&t+"px"}reinitializeColumn(e){var t=this.frozenColumnOffset(e);e.cells.forEach((i=>{i.modules.resize&&i.modules.resize.handleEl&&(t&&(i.modules.resize.handleEl.style[e.modules.frozen.position]=t,i.modules.resize.handleEl.style["z-index"]=11),i.element.after(i.modules.resize.handleEl))})),e.modules.resize&&e.modules.resize.handleEl&&(t&&(e.modules.resize.handleEl.style[e.modules.frozen.position]=t),e.element.after(e.modules.resize.handleEl))}initializeColumn(e,t,i,s){var o=this,n=i.definition.resizable,r={},a=i.getLastColumn();if("header"===e&&(r={variableHeight:"textarea"==i.definition.formatter||i.definition.variableHeight}),(!0===n||n==e)&&this._checkResizability(a)){var l=document.createElement("span");l.className="tabulator-col-resize-handle",l.addEventListener("click",(function(e){e.stopPropagation()}));var h=function(e){o.startColumn=i,o.initialNextColumn=o.nextColumn=a.nextColumn(),o._mouseDown(e,a,l)};l.addEventListener("mousedown",h),l.addEventListener("touchstart",h,{passive:!0}),l.addEventListener("dblclick",(e=>{var t=a.getWidth();e.stopPropagation(),a.reinitializeWidth(!0),t!==a.getWidth()&&(o.dispatch("column-resized",a),o.table.externalEvents.dispatch("columnResized",a.getComponent()))})),i.modules.frozen&&(l.style.position="sticky",l.style[i.modules.frozen.position]=this.frozenColumnOffset(i)),r.handleEl=l,s.parentNode&&i.visible&&s.after(l)}t.modules.resize=r}deInitializeColumn(e){this.deInitializeComponent(e),e.cells.forEach((e=>{this.deInitializeComponent(e)}))}deInitializeComponent(e){var t;e.modules.resize&&(t=e.modules.resize.handleEl)&&t.parentElement&&t.parentElement.removeChild(t)}resizeHandle(e,t){e.modules.resize&&e.modules.resize.handleEl&&(e.modules.resize.handleEl.style.height=t)}_checkResizability(e){return e.definition.resizable}_mouseDown(e,t,i){var s=this;function o(e){var i,o,n=void 0===e.screenX?e.touches[0].screenX:e.screenX,r=n-s.startX,a=n-s.latestX;if(s.latestX=n,s.table.rtl&&(r=-r,a=-a),i=t.width==t.minWidth||t.width==t.maxWidth,t.setWidth(s.startWidth+r),o=t.width==t.minWidth||t.width==t.maxWidth,a<0&&(s.nextColumn=s.initialNextColumn),s.table.options.resizableColumnFit&&s.nextColumn&&(!i||!o)){let e=s.nextColumn.getWidth();a>0&&e<=s.nextColumn.minWidth&&(s.nextColumn=s.nextColumn.nextColumn()),s.nextColumn&&s.nextColumn.setWidth(s.nextColumn.getWidth()-a)}s.table.columnManager.rerenderColumns(!0),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.startWidth!==t.getWidth()&&(s.table.columnManager.verticalAlignHeaders(),s.dispatch("column-resized",t),s.table.externalEvents.dispatch("columnResized",t.getComponent()))}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.latestX=s.startX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}ne.moduleName="resizeColumns";class re extends s{constructor(e){super(e),this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null,this.registerTableOption("resizableRows",!1)}initialize(){this.table.options.resizableRows&&this.subscribe("row-layout-after",this.initializeRow.bind(this))}initializeRow(e){var t=this,i=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var o=document.createElement("div");o.className="tabulator-row-resize-handle prev",s.addEventListener("click",(function(e){e.stopPropagation()}));var n=function(i){t.startRow=e,t._mouseDown(i,e,s)};s.addEventListener("mousedown",n),s.addEventListener("touchstart",n,{passive:!0}),o.addEventListener("click",(function(e){e.stopPropagation()}));var r=function(i){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(i,s,o))};o.addEventListener("mousedown",r),o.addEventListener("touchstart",r,{passive:!0}),i.appendChild(s),i.appendChild(o)}_mouseDown(e,t,i){var s=this;function o(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.dispatchExternal("rowResized",t.getComponent())}s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)}}re.moduleName="resizeRows";class ae extends s{constructor(e){super(e),this.binding=!1,this.visibilityObserver=!1,this.resizeObserver=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1,this.visible=!1,this.initialized=!1,this.initialRedraw=!1,this.registerTableOption("autoResize",!0)}initialize(){if(this.table.options.autoResize){var e,t=this.table;this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),"undefined"!=typeof IntersectionObserver&&"undefined"!=typeof ResizeObserver&&"virtual"===t.rowManager.getRenderMode()?(this.initializeVisibilityObserver(),this.autoResize=!0,this.resizeObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&(!t.modules.edit||t.modules.edit&&!t.modules.edit.currentCell)){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.tableHeight==i&&this.tableWidth==s||(this.tableHeight=i,this.tableWidth=s,t.element.parentNode&&(this.containerHeight=t.element.parentNode.clientHeight,this.containerWidth=t.element.parentNode.clientWidth),this.redrawTable())}})),this.resizeObserver.observe(t.element),e=window.getComputedStyle(t.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(e.getPropertyValue("max-height")||e.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((e=>{if(!t.browserMobile||t.browserMobile&&(!t.modules.edit||t.modules.edit&&!t.modules.edit.currentCell)){var i=Math.floor(e[0].contentRect.height),s=Math.floor(e[0].contentRect.width);this.containerHeight==i&&this.containerWidth==s||(this.containerHeight=i,this.containerWidth=s,this.tableHeight=t.element.clientHeight,this.tableWidth=t.element.clientWidth),this.redrawTable()}})),this.containerObserver.observe(this.table.element.parentNode)),this.subscribe("table-resize",this.tableResized.bind(this))):(this.binding=function(){(!t.browserMobile||t.browserMobile&&(!t.modules.edit||t.modules.edit&&!t.modules.edit.currentCell))&&(t.columnManager.rerenderColumns(!0),t.redraw())},window.addEventListener("resize",this.binding)),this.subscribe("table-destroy",this.clearBindings.bind(this))}}initializeVisibilityObserver(){this.visibilityObserver=new IntersectionObserver((e=>{this.visible=e[0].isIntersecting,this.initialized?this.visible&&(this.redrawTable(this.initialRedraw),this.initialRedraw=!1):(this.initialized=!0,this.initialRedraw=!this.visible)})),this.visibilityObserver.observe(this.table.element)}redrawTable(e){this.initialized&&this.visible&&(this.table.columnManager.rerenderColumns(!0),this.table.redraw(e))}tableResized(){this.table.rowManager.redraw()}clearBindings(){this.binding&&window.removeEventListener("resize",this.binding),this.resizeObserver&&this.resizeObserver.unobserve(this.table.element),this.visibilityObserver&&this.visibilityObserver.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)}}ae.moduleName="resizeTable";class le extends s{constructor(e){super(e),this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1,this.registerTableOption("responsiveLayout",!1),this.registerTableOption("responsiveLayoutCollapseStartOpen",!0),this.registerTableOption("responsiveLayoutCollapseUseFormatters",!0),this.registerTableOption("responsiveLayoutCollapseFormatter",!1),this.registerColumnOption("responsive")}initialize(){this.table.options.responsiveLayout&&(this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("column-show",this.updateColumnVisibility.bind(this)),this.subscribe("column-hide",this.updateColumnVisibility.bind(this)),this.subscribe("columns-loaded",this.initializeResponsivity.bind(this)),this.subscribe("column-moved",this.initializeResponsivity.bind(this)),this.subscribe("column-add",this.initializeResponsivity.bind(this)),this.subscribe("column-delete",this.initializeResponsivity.bind(this)),this.subscribe("table-redrawing",this.tableRedraw.bind(this)),"collapse"===this.table.options.responsiveLayout&&(this.subscribe("row-data-changed",this.generateCollapsedRowContent.bind(this)),this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-layout",this.layoutRow.bind(this))))}tableRedraw(e){-1===["fitColumns","fitDataStretch"].indexOf(this.layoutMode())&&(e||this.update())}initializeResponsivity(){var e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(((t,i)=>{t.modules.responsive&&t.modules.responsive.order&&t.modules.responsive.visible&&(t.modules.responsive.index=i,e.push(t),t.visible||"collapse"!==this.mode||this.hiddenColumns.push(t))})),e=(e=e.reverse()).sort(((e,t)=>t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index)),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent();for(let e of this.table.columnManager.columnsByIndex)if("responsiveCollapse"==e.definition.formatter){this.collapseHandleColumn=e;break}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())}initializeColumn(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}}initializeRow(e){var t;"calc"!==e.type&&((t=document.createElement("div")).classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))}layoutRow(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))}updateColumnVisibility(e,t){!t&&e.modules.responsive&&(e.modules.responsive.visible=e.visible,this.initializeResponsivity())}hideColumn(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())}showColumn(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&((t=this.hiddenColumns.indexOf(e))>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())}update(){for(var e=!0;e;){let t="fitColumns"==this.table.modules.layout.getMode()?this.table.columnManager.getFlexBaseWidth():this.table.columnManager.getWidth(),i=(this.table.options.headerVisible?this.table.columnManager.element.clientWidth:this.table.element.clientWidth)-t;if(i<0){let t=this.columns[this.index];t?(this.hideColumn(t),this.index++):e=!1}else{let t=this.columns[this.index-1];t&&i>0&&i>=t.getWidth()?(this.showColumn(t),this.index--):e=!1}this.table.rowManager.activeRowsCount||this.table.rowManager.renderEmptyScroll()}}generateCollapsedContent(){this.table.rowManager.getDisplayRows().forEach((e=>{this.generateCollapsedRowContent(e)}))}generateCollapsedRowContent(e){var t,i;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);(i=this.collapseFormatter(this.generateCollapsedRowData(e)))&&t.appendChild(i)}}generateCollapsedRowData(e){var t,i=e.getData(),s=[];return this.hiddenColumns.forEach((o=>{var n=o.getFieldValue(i);if(o.definition.title&&o.field)if(o.modules.format&&this.table.options.responsiveLayoutCollapseUseFormatters){function r(e){e()}t={value:!1,data:{},getValue:function(){return n},getData:function(){return i},getType:function(){return"cell"},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return o.getComponent()},getTable:()=>this.table},s.push({field:o.field,title:o.definition.title,value:o.modules.format.formatter.call(this.table.modules.format,t,o.modules.format.params,r)})}else s.push({field:o.field,title:o.definition.title,value:n})})),s}formatCollapsedData(e){var t=document.createElement("table");return e.forEach((function(e){var i,s=document.createElement("tr"),o=document.createElement("td"),n=document.createElement("td"),r=document.createElement("strong");o.appendChild(r),this.langBind("columns|"+e.field,(function(t){r.innerHTML=t||e.title})),e.value instanceof Node?((i=document.createElement("div")).appendChild(e.value),n.appendChild(i)):n.innerHTML=e.value,s.appendChild(o),s.appendChild(n),t.appendChild(s)}),this),Object.keys(e).length?t:""}}le.moduleName="responsiveLayout";class he extends s{constructor(e){super(e),this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null,this.registerTableOption("selectableRows","highlight"),this.registerTableOption("selectableRowsRangeMode","drag"),this.registerTableOption("selectableRowsRollingSelection",!0),this.registerTableOption("selectableRowsPersistence",!0),this.registerTableOption("selectableRowsCheck",(function(e,t){return!0})),this.registerTableFunction("selectRow",this.selectRows.bind(this)),this.registerTableFunction("deselectRow",this.deselectRows.bind(this)),this.registerTableFunction("toggleSelectRow",this.toggleRow.bind(this)),this.registerTableFunction("getSelectedRows",this.getSelectedRows.bind(this)),this.registerTableFunction("getSelectedData",this.getSelectedData.bind(this)),this.registerComponentFunction("row","select",this.selectRows.bind(this)),this.registerComponentFunction("row","deselect",this.deselectRows.bind(this)),this.registerComponentFunction("row","toggleSelect",this.toggleRow.bind(this)),this.registerComponentFunction("row","isSelected",this.isRowSelected.bind(this))}initialize(){this.deprecatedOptionsCheck(),"highlight"===this.table.options.selectableRows&&this.table.options.selectableRange&&(this.table.options.selectableRows=!1),!1!==this.table.options.selectableRows&&(this.subscribe("row-init",this.initializeRow.bind(this)),this.subscribe("row-deleting",this.rowDeleted.bind(this)),this.subscribe("rows-wipe",this.clearSelectionData.bind(this)),this.subscribe("rows-retrieve",this.rowRetrieve.bind(this)),this.table.options.selectableRows&&!this.table.options.selectableRowsPersistence&&this.subscribe("data-refreshing",this.deselectRows.bind(this)))}deprecatedOptionsCheck(){this.deprecationCheck("selectable","selectableRows",!0),this.deprecationCheck("selectableRollingSelection","selectableRowsRollingSelection",!0),this.deprecationCheck("selectableRangeMode","selectableRowsRangeMode",!0),this.deprecationCheck("selectablePersistence","selectableRowsPersistence",!0),this.deprecationCheck("selectableCheck","selectableRowsCheck",!0)}rowRetrieve(e,t){return"selected"===e?this.selectedRows:t}rowDeleted(e){this._deselectRow(e,!0)}clearSelectionData(e){var t=this.selectedRows.length;this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],t&&!0!==e&&this._rowSelectionChanged()}initializeRow(e){var t=this,i=t.checkRowSelectability(e),s=e.getElement(),o=function(){setTimeout((function(){t.selecting=!1}),50),document.body.removeEventListener("mouseup",o)};e.modules.select={selected:!1},s.classList.toggle("tabulator-selectable",i),s.classList.toggle("tabulator-unselectable",!i),t.checkRowSelectability(e)&&t.table.options.selectableRows&&"highlight"!=t.table.options.selectableRows&&("click"===t.table.options.selectableRowsRangeMode?s.addEventListener("click",this.handleComplexRowClick.bind(this,e)):(s.addEventListener("click",(function(i){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)})),s.addEventListener("mousedown",(function(i){if(i.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",o),document.body.addEventListener("keyup",o),t.toggleRow(e),!1})),s.addEventListener("mouseenter",(function(i){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))})),s.addEventListener("mouseout",(function(i){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))}))))}handleComplexRowClick(e,t){if(t.shiftKey){this.table._clearSelection(),this.lastClickedRow=this.lastClickedRow||e;var i=this.table.rowManager.getDisplayRowIndex(this.lastClickedRow),s=this.table.rowManager.getDisplayRowIndex(e),o=i<=s?i:s,n=i>=s?i:s,r=this.table.rowManager.getDisplayRows().slice(0).splice(o,n-o+1);t.ctrlKey||t.metaKey?(r.forEach((t=>{t!==this.lastClickedRow&&(!0===this.table.options.selectableRows||this.isRowSelected(e)||this.selectedRows.lengththis.table.options.selectableRows&&(r=r.slice(0,this.table.options.selectableRows)),this.selectRows(r)),this.table._clearSelection()}else t.ctrlKey||t.metaKey?(this.toggleRow(e),this.lastClickedRow=e):(this.deselectRows(void 0,!0),this.selectRows(e),this.lastClickedRow=e)}checkRowSelectability(e){return!(!e||"row"!==e.type)&&this.table.options.selectableRowsCheck.call(this.table,e.getComponent())}toggleRow(e){this.checkRowSelectability(e)&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))}selectRows(e){var t,i,s=[];switch(typeof e){case"undefined":t=this.table.rowManager.rows;break;case"number":t=this.table.rowManager.findRow(e);break;case"string":(t=this.table.rowManager.findRow(e))||(t=this.table.rowManager.getRows(e));break;default:t=e}Array.isArray(t)?t.length&&(t.forEach((e=>{(i=this._selectRow(e,!0,!0))&&s.push(i)})),this._rowSelectionChanged(!1,s)):t&&this._selectRow(t,!1,!0)}_selectRow(e,t,i){if(!isNaN(this.table.options.selectableRows)&&!0!==this.table.options.selectableRows&&!i&&this.selectedRows.length>=this.table.options.selectableRows){if(!this.table.options.selectableRowsRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var s=this.table.rowManager.findRow(e);if(s){if(-1==this.selectedRows.indexOf(s))return s.getElement().classList.add("tabulator-selected"),s.modules.select||(s.modules.select={}),s.modules.select.selected=!0,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!0),this.selectedRows.push(s),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!0),this.dispatchExternal("rowSelected",s.getComponent()),this._rowSelectionChanged(t,s),s}else t||console.warn("Selection Error - No such row found, ignoring selection:"+e)}isRowSelected(e){return-1!==this.selectedRows.indexOf(e)}deselectRows(e,t){var i,s,o=[];switch(typeof e){case"undefined":i=Object.assign([],this.selectedRows);break;case"number":i=this.table.rowManager.findRow(e);break;case"string":(i=this.table.rowManager.findRow(e))||(i=this.table.rowManager.getRows(e));break;default:i=e}Array.isArray(i)?i.length&&(i.forEach((e=>{(s=this._deselectRow(e,!0,!0))&&o.push(s)})),this._rowSelectionChanged(t,[],o)):i&&this._deselectRow(i,t,!0)}_deselectRow(e,t){var i,s,o=this,n=o.table.rowManager.findRow(e);if(n){if((i=o.selectedRows.findIndex((function(e){return e==n})))>-1)return(s=n.getElement())&&s.classList.remove("tabulator-selected"),n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),o.selectedRows.splice(i,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),this.dispatchExternal("rowDeselected",n.getComponent()),o._rowSelectionChanged(t,void 0,n),n}else t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)}getSelectedData(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getData())})),e}getSelectedRows(){var e=[];return this.selectedRows.forEach((function(t){e.push(t.getComponent())})),e}_rowSelectionChanged(e,t=[],i=[]){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||(Array.isArray(t)||(t=[t]),t=t.map((e=>e.getComponent())),Array.isArray(i)||(i=[i]),i=i.map((e=>e.getComponent())),this.dispatchExternal("rowSelectionChanged",this.getSelectedData(),this.getSelectedRows(),t,i))}registerRowSelectCheckbox(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t}registerHeaderSelectCheckbox(e){this.headerCheckboxElement=e}childRowSelection(e,t){var i=this.table.modules.dataTree.getChildren(e,!0);if(t)for(let e of i)this._selectRow(e,!0);else for(let e of i)this._deselectRow(e,!0)}}function de(e,t,i,s,o,n,r){var a=window.DateTime||luxon.DateTime,l=r.format||"dd/MM/yyyy HH:mm:ss",h=r.alignEmptyValues,d=0;if(void 0!==a){if(a.isDateTime(e)||(e="iso"===l?a.fromISO(String(e)):a.fromFormat(String(e),l)),a.isDateTime(t)||(t="iso"===l?a.fromISO(String(t)):a.fromFormat(String(t),l)),e.isValid){if(t.isValid)return e-t;d=1}else d=t.isValid?-1:0;return("top"===h&&"desc"===n||"bottom"===h&&"asc"===n)&&(d*=-1),d}console.error("Sort Error - 'datetime' sorter is dependant on luxon.js")}he.moduleName="selectRow";var ce={number:function(e,t,i,s,o,n,r){var a=r.alignEmptyValues,l=r.decimalSeparator,h=r.thousandSeparator,d=0;if(e=String(e),t=String(t),h&&(e=e.split(h).join(""),t=t.split(h).join("")),l&&(e=e.split(l).join("."),t=t.split(l).join(".")),e=parseFloat(e),t=parseFloat(t),isNaN(e))d=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;d=1}return("top"===a&&"desc"===n||"bottom"===a&&"asc"===n)&&(d*=-1),d},string:function(e,t,i,s,o,n,r){var a,l=r.alignEmptyValues,h=0;if(e){if(t){switch(typeof r.locale){case"boolean":r.locale&&(a=this.langLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}h=1}else h=t?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},date:function(e,t,i,s,o,n,r){return r.format||(r.format="dd/MM/yyyy"),de.call(this,e,t,i,s,o,n,r)},time:function(e,t,i,s,o,n,r){return r.format||(r.format="HH:mm"),de.call(this,e,t,i,s,o,n,r)},datetime:de,boolean:function(e,t,i,s,o,n,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,i,s,o,n,r){var a=r.type||"length",l=r.alignEmptyValues,h=0;function d(e){var t;switch(a){case"length":t=e.length;break;case"sum":t=e.reduce((function(e,t){return e+t}));break;case"max":t=Math.max.apply(null,e);break;case"min":t=Math.min.apply(null,e);break;case"avg":t=e.reduce((function(e,t){return e+t}))/e.length}return t}if(Array.isArray(e)){if(Array.isArray(t))return d(t)-d(e);h=1}else h=Array.isArray(t)?-1:0;return("top"===l&&"desc"===n||"bottom"===l&&"asc"===n)&&(h*=-1),h},exists:function(e,t,i,s,o,n,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,i,s,o,n,r){var a,l,h,d,c,u=0,m=/(\d+)|(\D+)/g,p=/\d/,g=r.alignEmptyValues,b=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if((a=String(e).toLowerCase())===(l=String(t).toLowerCase()))return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(m),l=l.match(m),c=a.length>l.length?l.length:a.length;ud?1:-1;return a.length>l.length}b=1}else b=t||0===t?-1:0;return("top"===g&&"desc"===n||"bottom"===g&&"asc"===n)&&(b*=-1),b}};class ue extends s{constructor(e){super(e),this.sortList=[],this.changed=!1,this.registerTableOption("sortMode","local"),this.registerTableOption("initialSort",!1),this.registerTableOption("columnHeaderSortMulti",!0),this.registerTableOption("sortOrderReverse",!1),this.registerTableOption("headerSortElement","
        "),this.registerTableOption("headerSortClickElement","header"),this.registerColumnOption("sorter"),this.registerColumnOption("sorterParams"),this.registerColumnOption("headerSort",!0),this.registerColumnOption("headerSortStartingDir"),this.registerColumnOption("headerSortTristate")}initialize(){this.subscribe("column-layout",this.initializeColumn.bind(this)),this.subscribe("table-built",this.tableBuilt.bind(this)),this.registerDataHandler(this.sort.bind(this),20),this.registerTableFunction("setSort",this.userSetSort.bind(this)),this.registerTableFunction("getSorters",this.getSort.bind(this)),this.registerTableFunction("clearSort",this.clearSort.bind(this)),"remote"===this.table.options.sortMode&&this.subscribe("data-params",this.remoteSortParams.bind(this))}tableBuilt(){this.table.options.initialSort&&this.setSort(this.table.options.initialSort)}remoteSortParams(e,t,i,s){var o=this.getSort();return o.forEach((e=>{delete e.column})),s.sort=o,s}userSetSort(e,t){this.setSort(e,t),this.refreshSort()}clearSort(){this.clear(),this.refreshSort()}initializeColumn(e){var t,i,s=!1;switch(typeof e.definition.sorter){case"string":ue.sorters[e.definition.sorter]?s=ue.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}if(e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:e.definition.headerSortTristate},!1!==e.definition.headerSort){if((t=e.getElement()).classList.add("tabulator-sortable"),(i=document.createElement("div")).classList.add("tabulator-col-sorter"),"icon"===this.table.options.headerSortClickElement)i.classList.add("tabulator-col-sorter-element");else t.classList.add("tabulator-col-sorter-element");switch(this.table.options.headerSortElement){case"function":break;case"object":i.appendChild(this.table.options.headerSortElement);break;default:i.innerHTML=this.table.options.headerSortElement}e.titleHolderElement.appendChild(i),e.modules.sort.element=i,this.setColumnHeaderSortIcon(e,"none"),"icon"===this.table.options.headerSortClickElement&&i.addEventListener("mousedown",(e=>{e.stopPropagation()})),("icon"===this.table.options.headerSortClickElement?i:t).addEventListener("click",(t=>{var i="",s=[],o=!1;if(e.modules.sort){if(e.modules.sort.tristate)i="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":i="desc";break;case"desc":i="asc";break;default:i=e.modules.sort.startingDir}this.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(o=(s=this.getSort()).findIndex((t=>t.field===e.getField())),o>-1?(s[o].dir=i,o=s.splice(o,1)[0],"none"!=i&&s.push(o)):"none"!=i&&s.push({column:e,dir:i}),this.setSort(s)):"none"==i?this.clear():this.setSort(e,i),this.refreshSort()}}))}}refreshSort(){"remote"===this.table.options.sortMode?this.reloadData(null,!1,!1):this.refreshData(!0)}hasChanged(){var e=this.changed;return this.changed=!1,e}getSort(){var e=[];return this.sortList.forEach((function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})})),e}setSort(e,t){var i=this,s=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach((function(e){var t;(t=i.table.columnManager.findColumn(e.column))?(e.column=t,s.push(e),i.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)})),i.sortList=s,this.dispatch("sort-changed")}clear(){this.setSort([])}findSorter(e){var t,i=this.table.rowManager.activeRows[0],s="string";if(i&&(i=i.getData(),e.getField()))switch(typeof(t=e.getFieldValue(i))){case"undefined":s="string";break;case"boolean":s="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(s="alphanum"):s="number"}return ue.sorters[s]}sort(e){var t=this,i=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,s=[],o=[];return this.subscribedExternal("dataSorting")&&this.dispatchExternal("dataSorting",t.getSort()),t.clearColumnHeaders(),"remote"!==this.table.options.sortMode?(i.forEach((function(e,i){var o;e.column&&((o=e.column.modules.sort)&&(o.sorter||(o.sorter=t.findSorter(e.column)),e.params="function"==typeof o.params?o.params(e.column.getComponent(),e.dir):o.params,s.push(e)),t.setColumnHeader(e.column,e.dir))})),s.length&&t._sortItems(e,s)):i.forEach((function(e,i){t.setColumnHeader(e.column,e.dir)})),this.subscribedExternal("dataSorted")&&(e.forEach((e=>{o.push(e.getComponent())})),this.dispatchExternal("dataSorted",t.getSort(),o)),e}clearColumnHeaders(){this.table.columnManager.getRealColumns().forEach((e=>{e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"),this.setColumnHeaderSortIcon(e,"none"))}))}setColumnHeader(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort","asc"===t?"ascending":"descending"),this.setColumnHeaderSortIcon(e,t)}setColumnHeaderSortIcon(e,t){var i,s=e.modules.sort.element;if(e.definition.headerSort&&"function"==typeof this.table.options.headerSortElement){for(;s.firstChild;)s.removeChild(s.firstChild);"object"==typeof(i=this.table.options.headerSortElement.call(this.table,e.getComponent(),t))?s.appendChild(i):s.innerHTML=i}}_sortItems(e,t){var i=t.length-1;e.sort(((e,s)=>{for(var o,n=i;n>=0;n--){let i=t[n];if(0!==(o=this._sortRow(e,s,i.column,i.dir,i.params)))break}return o}))}_sortRow(e,t,i,s,o){var n,r,a="asc"==s?e:t,l="asc"==s?t:e;return e=void 0!==(e=i.getFieldValue(a.getData()))?e:"",t=void 0!==(t=i.getFieldValue(l.getData()))?t:"",n=a.getComponent(),r=l.getComponent(),i.modules.sort.sorter.call(this,e,t,n,r,i.getComponent(),s,o)}}ue.moduleName="sort",ue.sorters=ce;class me{constructor(e){return this._range=e,new Proxy(this,{get:function(e,t,i){return void 0!==e[t]?e[t]:e._range.table.componentFunctionBinder.handle("range",e._range,t)}})}getElement(){return this._range.element}getData(){return this._range.getData()}getCells(){return this._range.getCells(!0)}getStructuredCells(){return this._range.getStructuredCells()}getRows(){return this._range.getRows().map((e=>e.getComponent()))}getColumns(){return this._range.getColumns().map((e=>e.getComponent()))}getBounds(){return this._range.getBounds()}getTopEdge(){return this._range.top}getBottomEdge(){return this._range.bottom}getLeftEdge(){return this._range.left}getRightEdge(){return this._range.right}setBounds(e,t){this._range.destroyedGuard("setBounds")&&this._range.setBounds(e?e._cell:e,t?t._cell:t)}setStartBound(e){this._range.destroyedGuard("setStartBound")&&(this._range.setEndBound(e?e._cell:e),this._range.rangeManager.layoutElement())}setEndBound(e){this._range.destroyedGuard("setEndBound")&&(this._range.setEndBound(e?e._cell:e),this._range.rangeManager.layoutElement())}clearValues(){this._range.destroyedGuard("clearValues")&&this._range.clearValues()}remove(){this._range.destroyedGuard("remove")&&this._range.destroy(!0)}}class pe extends e{constructor(e,t,i,s){super(e),this.rangeManager=t,this.element=null,this.initialized=!1,this.initializing={start:!1,end:!1},this.destroyed=!1,this.top=0,this.bottom=0,this.left=0,this.right=0,this.table=e,this.start={row:0,col:0},this.end={row:0,col:0},this.rangeManager.rowHeader&&(this.left=1,this.right=1,this.start.col=1,this.end.col=1),this.initElement(),setTimeout((()=>{this.initBounds(i,s)}))}initElement(){this.element=document.createElement("div"),this.element.classList.add("tabulator-range")}initBounds(e,t){this._updateMinMax(),e&&this.setBounds(e,t||e)}setStart(e,t){this.start.row===e&&this.start.col===t||(this.start.row=e,this.start.col=t,this.initializing.start=!0,this._updateMinMax())}setEnd(e,t){this.end.row===e&&this.end.col===t||(this.end.row=e,this.end.col=t,this.initializing.end=!0,this._updateMinMax())}setBounds(e,t,i){e&&this.setStartBound(e),this.setEndBound(t||e),this.rangeManager.layoutElement(i)}setStartBound(e){var t,i;"column"===e.type?this.rangeManager.columnSelection&&this.setStart(0,e.getPosition()-1):(t=e.row.position-1,i=e.column.getPosition()-1,e.column===this.rangeManager.rowHeader?this.setStart(t,1):this.setStart(t,i))}setEndBound(e){var t,i,s,o=this._getTableRows().length;"column"===e.type?this.rangeManager.columnSelection&&("column"===this.rangeManager.selecting?this.setEnd(o-1,e.getPosition()-1):"cell"===this.rangeManager.selecting&&this.setEnd(0,e.getPosition()-1)):(t=e.row.position-1,i=e.column.getPosition()-1,s=e.column===this.rangeManager.rowHeader,"row"===this.rangeManager.selecting?this.setEnd(t,this._getTableColumns().length-1):"row"!==this.rangeManager.selecting&&s?this.setEnd(t,0):"column"===this.rangeManager.selecting?this.setEnd(o-1,i):this.setEnd(t,i))}_updateMinMax(){this.top=Math.min(this.start.row,this.end.row),this.bottom=Math.max(this.start.row,this.end.row),this.left=Math.min(this.start.col,this.end.col),this.right=Math.max(this.start.col,this.end.col),this.initialized?this.dispatchExternal("rangeChanged",this.getComponent()):this.initializing.start&&this.initializing.end&&(this.initialized=!0,this.dispatchExternal("rangeAdded",this.getComponent()))}_getTableColumns(){return this.table.columnManager.getVisibleColumnsByIndex()}_getTableRows(){return this.table.rowManager.getDisplayRows()}layout(){var e,t,i,s,o,n,r=this.table.rowManager.renderer.vDomTop,a=this.table.rowManager.renderer.vDomBottom,l=this.table.columnManager.renderer.leftCol,h=this.table.columnManager.renderer.rightCol;null==r&&(r=0),null==a&&(a=1/0),null==l&&(l=0),null==h&&(h=1/0),this.overlaps(l,r,h,a)&&(e=Math.max(this.top,r),t=Math.min(this.bottom,a),i=Math.max(this.left,l),s=Math.min(this.right,h),o=this.rangeManager.getCell(e,i),n=this.rangeManager.getCell(t,s),this.element.classList.add("tabulator-range-active"),this.element.style.left=o.row.getElement().offsetLeft+o.getElement().offsetLeft+"px",this.element.style.top=o.row.getElement().offsetTop+"px",this.element.style.width=n.getElement().offsetLeft+n.getElement().offsetWidth-o.getElement().offsetLeft+"px",this.element.style.height=n.row.getElement().offsetTop+n.row.getElement().offsetHeight-o.row.getElement().offsetTop+"px")}atTopLeft(e){return e.row.position-1===this.top&&e.column.getPosition()-1===this.left}atBottomRight(e){return e.row.position-1===this.bottom&&e.column.getPosition()-1===this.right}occupies(e){return this.occupiesRow(e.row)&&this.occupiesColumn(e.column)}occupiesRow(e){return this.top<=e.position-1&&e.position-1<=this.bottom}occupiesColumn(e){return this.left<=e.getPosition()-1&&e.getPosition()-1<=this.right}overlaps(e,t,i,s){return!(this.left>i||e>this.right||this.top>s||t>this.bottom)}getData(){var e=[],t=this.getRows(),i=this.getColumns();return t.forEach((t=>{var s=t.getData(),o={};i.forEach((e=>{o[e.field]=s[e.field]})),e.push(o)})),e}getCells(e,t){var i=[],s=this.getRows(),o=this.getColumns();return e?i=s.map((e=>{var i=[];return e.getCells().forEach((e=>{o.includes(e.column)&&i.push(t?e.getComponent():e)})),i})):s.forEach((e=>{e.getCells().forEach((e=>{o.includes(e.column)&&i.push(t?e.getComponent():e)}))})),i}getStructuredCells(){return this.getCells(!0,!0)}getRows(){return this._getTableRows().slice(this.top,this.bottom+1)}getColumns(){return this._getTableColumns().slice(this.left,this.right+1)}clearValues(){var e=this.getCells(),t=this.table.options.selectableRangeClearCellsValue;this.table.blockRedraw(),e.forEach((e=>{e.setValue(t)})),this.table.restoreRedraw()}getBounds(e){var t=this.getCells(!1,e),i={start:null,end:null};return t.length?(i.start=t[0],i.end=t[t.length-1]):console.warn("No bounds defined on range"),i}getComponent(){return this.component||(this.component=new me(this)),this.component}destroy(e){this.destroyed=!0,this.element.remove(),e&&this.rangeManager.rangeRemoved(this),this.initialized&&this.dispatchExternal("rangeRemoved",this.getComponent())}destroyedGuard(e){return this.destroyed&&console.warn("You cannot call the "+e+" function on a destroyed range"),!this.destroyed}}class ge extends s{constructor(e){super(e),this.selecting="cell",this.mousedown=!1,this.ranges=[],this.overlay=null,this.rowHeader=null,this.layoutChangeTimeout=null,this.columnSelection=!1,this.rowSelection=!1,this.maxRanges=0,this.activeRange=!1,this.blockKeydown=!1,this.keyDownEvent=this._handleKeyDown.bind(this),this.mouseUpEvent=this._handleMouseUp.bind(this),this.registerTableOption("selectableRange",!1),this.registerTableOption("selectableRangeColumns",!1),this.registerTableOption("selectableRangeRows",!1),this.registerTableOption("selectableRangeClearCells",!1),this.registerTableOption("selectableRangeClearCellsValue",void 0),this.registerTableFunction("getRangesData",this.getRangesData.bind(this)),this.registerTableFunction("getRanges",this.getRanges.bind(this)),this.registerTableFunction("addRange",this.addRangeFromComponent.bind(this)),this.registerComponentFunction("cell","getRanges",this.cellGetRanges.bind(this)),this.registerComponentFunction("row","getRanges",this.rowGetRanges.bind(this)),this.registerComponentFunction("column","getRanges",this.colGetRanges.bind(this))}initialize(){this.options("selectableRange")&&(this.options("selectableRows")?console.warn("SelectRange functionality cannot be used in conjunction with row selection"):(this.maxRanges=this.options("selectableRange"),this.initializeTable(),this.initializeWatchers()))}initializeTable(){this.overlay=document.createElement("div"),this.overlay.classList.add("tabulator-range-overlay"),this.rangeContainer=document.createElement("div"),this.rangeContainer.classList.add("tabulator-range-container"),this.activeRangeCellElement=document.createElement("div"),this.activeRangeCellElement.classList.add("tabulator-range-cell-active"),this.overlay.appendChild(this.rangeContainer),this.overlay.appendChild(this.activeRangeCellElement),this.table.rowManager.element.addEventListener("keydown",this.keyDownEvent),this.resetRanges(),this.table.rowManager.element.appendChild(this.overlay),this.table.columnManager.element.setAttribute("tabindex",0),this.table.element.classList.add("tabulator-ranges")}initializeWatchers(){this.columnSelection=this.options("selectableRangeColumns"),this.rowSelection=this.options("selectableRangeRows"),this.subscribe("column-init",this.initializeColumn.bind(this)),this.subscribe("column-mousedown",this.handleColumnMouseDown.bind(this)),this.subscribe("column-mousemove",this.handleColumnMouseMove.bind(this)),this.subscribe("column-resized",this.handleColumnResized.bind(this)),this.subscribe("column-width",this.layoutChange.bind(this)),this.subscribe("column-height",this.layoutChange.bind(this)),this.subscribe("column-resized",this.layoutChange.bind(this)),this.subscribe("columns-loaded",this.updateHeaderColumn.bind(this)),this.subscribe("cell-height",this.layoutChange.bind(this)),this.subscribe("cell-rendered",this.renderCell.bind(this)),this.subscribe("cell-mousedown",this.handleCellMouseDown.bind(this)),this.subscribe("cell-mousemove",this.handleCellMouseMove.bind(this)),this.subscribe("cell-click",this.handleCellClick.bind(this)),this.subscribe("cell-editing",this.handleEditingCell.bind(this)),this.subscribe("page-changed",this.redraw.bind(this)),this.subscribe("scroll-vertical",this.layoutChange.bind(this)),this.subscribe("scroll-horizontal",this.layoutChange.bind(this)),this.subscribe("data-destroy",this.tableDestroyed.bind(this)),this.subscribe("data-processed",this.resetRanges.bind(this)),this.subscribe("table-layout",this.layoutElement.bind(this)),this.subscribe("table-redraw",this.redraw.bind(this)),this.subscribe("table-destroy",this.tableDestroyed.bind(this)),this.subscribe("edit-editor-clear",this.finishEditingCell.bind(this)),this.subscribe("edit-blur",this.restoreFocus.bind(this)),this.subscribe("keybinding-nav-prev",this.keyNavigate.bind(this,"left")),this.subscribe("keybinding-nav-next",this.keyNavigate.bind(this,"right")),this.subscribe("keybinding-nav-left",this.keyNavigate.bind(this,"left")),this.subscribe("keybinding-nav-right",this.keyNavigate.bind(this,"right")),this.subscribe("keybinding-nav-up",this.keyNavigate.bind(this,"up")),this.subscribe("keybinding-nav-down",this.keyNavigate.bind(this,"down")),this.subscribe("keybinding-nav-range",this.keyNavigateRange.bind(this))}initializeColumn(e){this.columnSelection&&e.definition.headerSort&&"icon"!==this.options("headerSortClickElement")&&console.warn("Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'."),e.modules.edit}updateHeaderColumn(){this.rowSelection&&(this.rowHeader=this.table.columnManager.getVisibleColumnsByIndex()[0],this.rowHeader&&(this.rowHeader.definition.cssClass=this.rowHeader.definition.cssClass+" tabulator-range-row-header",this.rowHeader.definition.headerSort&&console.warn("Using column headerSort with selectableRangeRows option may result in unpredictable behavior"),this.rowHeader.definition.editor&&console.warn("Using column editor with selectableRangeRows option may result in unpredictable behavior")))}getRanges(){return this.ranges.map((e=>e.getComponent()))}getRangesData(){return this.ranges.map((e=>e.getData()))}addRangeFromComponent(e,t){return e=e?e._cell:null,t=t?t._cell:null,this.addRange(e,t)}cellGetRanges(e){var t=[];return t=e.column===this.rowHeader?this.ranges.filter((t=>t.occupiesRow(e.row))):this.ranges.filter((t=>t.occupies(e))),t.map((e=>e.getComponent()))}rowGetRanges(e){var t=this.ranges.filter((t=>t.occupiesRow(e)));return t.map((e=>e.getComponent()))}colGetRanges(e){var t=this.ranges.filter((t=>t.occupiesColumn(e)));return t.map((e=>e.getComponent()))}_handleMouseUp(e){this.mousedown=!1,document.removeEventListener("mouseup",this.mouseUpEvent)}_handleKeyDown(e){if(!this.blockKeydown&&(!this.table.modules.edit||this.table.modules.edit&&!this.table.modules.edit.currentCell)){if("Enter"===e.key){if(this.table.modules.edit&&this.table.modules.edit.currentCell)return;this.table.modules.edit.editCell(this.getActiveCell()),e.preventDefault()}"Backspace"!==e.key&&"Delete"!==e.key||!this.options("selectableRangeClearCells")||this.activeRange&&this.activeRange.clearValues()}}initializeFocus(e){var t;try{document.selection?((t=document.body.createTextRange()).moveToElementText(e.getElement()),t.select()):window.getSelection&&((t=document.createRange()).selectNode(e.getElement()),window.getSelection().removeAllRanges(),window.getSelection().addRange(t))}catch(e){}}restoreFocus(e){return this.table.rowManager.element.focus(),!0}handleColumnResized(e){var t;"column"!==this.selecting&&"all"!==this.selecting||(t=this.ranges.some((t=>t.occupiesColumn(e))),t&&this.ranges.forEach((t=>{t.getColumns(!0).forEach((t=>{t!==e&&t.setWidth(e.width)}))})))}handleColumnMouseDown(e,t){(2!==e.button||"column"!==this.selecting&&"all"!==this.selecting||!this.activeRange.occupiesColumn(t))&&(this.mousedown=!0,document.addEventListener("mouseup",this.mouseUpEvent),this.newSelection(e,t))}handleColumnMouseMove(e,t){t!==this.rowHeader&&this.mousedown&&"all"!==this.selecting&&this.activeRange.setBounds(!1,t,!0)}renderCell(e){var t=e.getElement(),i=this.ranges.findIndex((t=>t.occupies(e)));t.classList.toggle("tabulator-range-selected",-1!==i),t.classList.toggle("tabulator-range-only-cell-selected",1===this.ranges.length&&this.ranges[0].atTopLeft(e)&&this.ranges[0].atBottomRight(e)),t.dataset.range=i}handleCellMouseDown(e,t){2===e.button&&(this.activeRange.occupies(t)||("row"===this.selecting||"all"===this.selecting)&&this.activeRange.occupiesRow(t.row))||(this.mousedown=!0,document.addEventListener("mouseup",this.mouseUpEvent),this.newSelection(e,t))}handleCellMouseMove(e,t){this.mousedown&&"all"!==this.selecting&&this.activeRange.setBounds(!1,t,!0)}handleCellClick(e,t){this.initializeFocus(t)}handleEditingCell(e){this.activeRange&&this.activeRange.setBounds(e)}finishEditingCell(){this.blockKeydown=!0,this.table.rowManager.element.focus(),setTimeout((()=>{this.blockKeydown=!1}),10)}keyNavigate(e,t){this.navigate(!1,!1,e)&&t.preventDefault()}keyNavigateRange(e,t,i,s){this.navigate(i,s,t)&&e.preventDefault()}navigate(e,t,i){var s,o,n,r,a,l,h;if(this.table.modules.edit&&this.table.modules.edit.currentCell)return!1;if(this.ranges.length>1&&(this.ranges=this.ranges.filter((e=>e===this.activeRange?(e.setEnd(e.start.row,e.start.col),!0):(e.destroy(),!1)))),o=this.activeRange,r=(n=t?o.end:o.start).row,a=n.col,e)switch(i){case"left":a=this.findJumpCellLeft(o.start.row,n.col);break;case"right":a=this.findJumpCellRight(o.start.row,n.col);break;case"up":r=this.findJumpCellUp(n.row,o.start.col);break;case"down":r=this.findJumpCellDown(n.row,o.start.col)}else{if(t&&("row"===this.selecting&&("left"===i||"right"===i)||"column"===this.selecting&&("up"===i||"down"===i)))return;switch(i){case"left":a=Math.max(a-1,0);break;case"right":a=Math.min(a+1,this.getTableColumns().length-1);break;case"up":r=Math.max(r-1,0);break;case"down":r=Math.min(r+1,this.getTableRows().length-1)}}return s=a!==n.col||r!==n.row,t||o.setStart(r,a),o.setEnd(r,a),t||(this.selecting="cell"),s?(l=this.getRowByRangePos(o.end.row),h=this.getColumnByRangePos(o.end.col),"left"!==i&&"right"!==i||null!==h.getElement().parentNode?"up"!==i&&"down"!==i||null!==l.getElement().parentNode?this.autoScroll(o,l.getElement(),h.getElement()):l.getComponent().scrollTo(void 0,!1):h.getComponent().scrollTo(void 0,!1),this.layoutElement(),!0):void 0}rangeRemoved(e){this.ranges=this.ranges.filter((t=>t!==e)),this.activeRange===e&&(this.ranges.length?this.activeRange=this.ranges[this.ranges.length-1]:this.addRange()),this.layoutElement()}findJumpCell(e,t,i,s){var o;t&&(e=e.reverse());for(let t of e){let e=t.getValue();if(i){if(o=t,e)break}else if(s){if(o=t,e)break}else{if(!e)break;o=t}}return o}findJumpCellLeft(e,t){var i=this.getRowByRangePos(e).cells.filter((e=>e.column.visible)),s=!i[t].getValue(),o=!!i[t]&&!i[t].getValue(),n=t,r=this.rowHeader?i.slice(1,t):i.slice(0,t),a=this.findJumpCell(r,!0,s,o);return a&&(n=a.column.getPosition()-1),n}findJumpCellRight(e,t){var i=this.getRowByRangePos(e).cells.filter((e=>e.column.visible)),s=!i[t].getValue(),o=!!i[t+1]&&!i[t+1].getValue(),n=t,r=this.findJumpCell(i.slice(t+1,i.length),!1,s,o);return r&&(n=r.column.getPosition()-1),n}findJumpCellUp(e,t){var i=this.getColumnByRangePos(t).cells.filter((e=>this.table.rowManager.activeRows.includes(e.row))),s=!i[e].getValue(),o=!!i[e-1]&&!i[e-1].getValue(),n=e,r=this.findJumpCell(i.slice(0,n),!0,s,o);return r&&(n=r.row.position-1),n}findJumpCellDown(e,t){var i=this.getColumnByRangePos(t).cells.filter((e=>this.table.rowManager.activeRows.includes(e.row))),s=!i[e].getValue(),o=!!i[e+1]&&!i[e+1].getValue(),n=e,r=this.findJumpCell(i.slice(n+1,i.length),!1,s,o);return r&&(n=r.row.position-1),n}newSelection(e,t){var i;if("column"===t.type){if(!this.columnSelection)return;if(t===this.rowHeader){i=this.resetRanges(),this.selecting="all";var s,o=this.getCell(-1,-1);return s=this.rowHeader?this.getCell(0,1):this.getCell(0,0),void i.setBounds(s,o)}this.selecting="column"}else t.column===this.rowHeader?this.selecting="row":this.selecting="cell";e.shiftKey?this.activeRange.setBounds(!1,t):e.ctrlKey?this.addRange().setBounds(t):this.resetRanges().setBounds(t)}autoScroll(e,t,i){var s,o,n,r,a,l=this.table.rowManager.element;void 0===t&&(t=this.getRowByRangePos(e.end.row).getElement()),void 0===i&&(i=this.getColumnByRangePos(e.end.col).getElement()),this.rowHeader&&(s=this.rowHeader.getElement()),o={left:i.offsetLeft,right:i.offsetLeft+i.offsetWidth,top:t.offsetTop,bottom:t.offsetTop+t.offsetHeight},n={left:l.scrollLeft,right:Math.ceil(l.scrollLeft+l.clientWidth),top:l.scrollTop,bottom:l.scrollTop+l.offsetHeight-this.table.rowManager.scrollbarWidth},s&&(n.left+=s.offsetWidth),r=n.leftn.right&&(l.scrollLeft=o.right-l.clientWidth)),a||(o.topn.bottom&&(l.scrollTop=o.bottom-l.clientHeight))}layoutChange(){this.overlay.style.visibility="hidden",clearTimeout(this.layoutChangeTimeout),this.layoutChangeTimeout=setTimeout(this.layoutRanges.bind(this),200)}redraw(e){e&&(this.selecting="cell",this.resetRanges(),this.layoutElement())}layoutElement(e){(e?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getRows()).forEach((e=>{"row"===e.type&&(this.layoutRow(e),e.cells.forEach((e=>this.renderCell(e))))})),this.getTableColumns().forEach((e=>{this.layoutColumn(e)})),this.layoutRanges()}layoutRow(e){var t=e.getElement(),i=!1,s=this.ranges.some((t=>t.occupiesRow(e)));"row"===this.selecting?i=s:"all"===this.selecting&&(i=!0),t.classList.toggle("tabulator-range-selected",i),t.classList.toggle("tabulator-range-highlight",s)}layoutColumn(e){var t=e.getElement(),i=!1,s=this.ranges.some((t=>t.occupiesColumn(e)));"column"===this.selecting?i=s:"all"===this.selecting&&(i=!0),t.classList.toggle("tabulator-range-selected",i),t.classList.toggle("tabulator-range-highlight",s)}layoutRanges(){var e;this.table.initialized&&(e=this.getActiveCell())&&(this.activeRangeCellElement.style.left=e.row.getElement().offsetLeft+e.getElement().offsetLeft+"px",this.activeRangeCellElement.style.top=e.row.getElement().offsetTop+"px",this.activeRangeCellElement.style.width=e.getElement().offsetLeft+e.getElement().offsetWidth-e.getElement().offsetLeft+"px",this.activeRangeCellElement.style.height=e.row.getElement().offsetTop+e.row.getElement().offsetHeight-e.row.getElement().offsetTop+"px",this.ranges.forEach((e=>e.layout())),this.overlay.style.visibility="visible")}getCell(e,t){var i;return t<0&&(t=this.getTableColumns().length+t)<0?null:(e<0&&(e=this.getTableRows().length+e),(i=this.table.rowManager.getRowFromPosition(e+1))?i.getCells(!1,!0).filter((e=>e.column.visible))[t]:null)}getActiveCell(){return this.getCell(this.activeRange.start.row,this.activeRange.start.col)}getRowByRangePos(e){return this.getTableRows()[e]}getColumnByRangePos(e){return this.getTableColumns()[e]}getTableRows(){return this.table.rowManager.getDisplayRows()}getTableColumns(){return this.table.columnManager.getVisibleColumnsByIndex()}addRange(e,t){var i;return!0!==this.maxRanges&&this.ranges.length>=this.maxRanges&&this.ranges.shift().destroy(),i=new pe(this.table,this,e,t),this.activeRange=i,this.ranges.push(i),this.rangeContainer.appendChild(i.element),i}resetRanges(){var e,t;return this.ranges.forEach((e=>e.destroy())),this.ranges=[],e=this.addRange(),this.table.rowManager.activeRows.length&&(t=this.table.rowManager.activeRows[0].cells[this.rowHeader?1:0])&&(e.setBounds(t),this.initializeFocus(t)),e}tableDestroyed(){document.removeEventListener("mouseup",this.mouseUpEvent),this.table.rowManager.element.removeEventListener("keydown",this.keyDownEvent)}selectedRows(e){return e?this.activeRange.getRows().map((e=>e.getComponent())):this.activeRange.getRows()}selectedColumns(e){return e?this.activeRange.getColumns().map((e=>e.getComponent())):this.activeRange.getColumns()}}ge.moduleName="selectRange";class be extends s{constructor(e){super(e),this.tooltipSubscriber=null,this.headerSubscriber=null,this.timeout=null,this.popupInstance=null,this.registerTableOption("tooltipGenerationMode",void 0),this.registerTableOption("tooltipDelay",300),this.registerColumnOption("tooltip"),this.registerColumnOption("headerTooltip")}initialize(){this.deprecatedOptionsCheck(),this.subscribe("column-init",this.initializeColumn.bind(this))}deprecatedOptionsCheck(){this.deprecationCheckMsg("tooltipGenerationMode","This option is no longer needed as tooltips are always generated on hover now")}initializeColumn(e){e.definition.headerTooltip&&!this.headerSubscriber&&(this.headerSubscriber=!0,this.subscribe("column-mousemove",this.mousemoveCheck.bind(this,"headerTooltip")),this.subscribe("column-mouseout",this.mouseoutCheck.bind(this,"headerTooltip"))),e.definition.tooltip&&!this.tooltipSubscriber&&(this.tooltipSubscriber=!0,this.subscribe("cell-mousemove",this.mousemoveCheck.bind(this,"tooltip")),this.subscribe("cell-mouseout",this.mouseoutCheck.bind(this,"tooltip")))}mousemoveCheck(e,t,i){var s="tooltip"===e?i.column.definition.tooltip:i.definition.headerTooltip;s&&(this.clearPopup(),this.timeout=setTimeout(this.loadTooltip.bind(this,t,i,s),this.table.options.tooltipDelay))}mouseoutCheck(e,t,i){this.popupInstance||this.clearPopup()}clearPopup(e,t,i){clearTimeout(this.timeout),this.timeout=null,this.popupInstance&&this.popupInstance.hide()}loadTooltip(e,t,i){var s,o,n;"function"==typeof i&&(i=i(e,t.getComponent(),(function(e){o=e}))),i instanceof HTMLElement?s=i:(s=document.createElement("div"),!0===i&&(t instanceof p?i=t.value:t.definition.field?this.langBind("columns|"+t.definition.field,(e=>{s.innerHTML=i=e||t.definition.title})):i=t.definition.title),s.innerHTML=i),(i||0===i||!1===i)&&(s.classList.add("tabulator-tooltip"),s.addEventListener("mousemove",(e=>e.preventDefault())),this.popupInstance=this.popup(s),"function"==typeof o&&this.popupInstance.renderCallback(o),n=this.popupInstance.containerEventCoords(e),this.popupInstance.show(n.x+15,n.y+15).hideOnBlur((()=>{this.dispatchExternal("TooltipClosed",t.getComponent()),this.popupInstance=null})),this.dispatchExternal("TooltipOpened",t.getComponent()))}}be.moduleName="tooltip";var fe={integer:function(e,t,i){return""===t||null==t||(t=Number(t),!isNaN(t)&&isFinite(t)&&Math.floor(t)===t)},float:function(e,t,i){return""===t||null==t||(t=Number(t),!isNaN(t)&&isFinite(t)&&t%1!=0)},numeric:function(e,t,i){return""===t||null==t||!isNaN(t)},string:function(e,t,i){return""===t||null==t||isNaN(t)},alphanumeric:function(e,t,i){return""===t||null==t||new RegExp(/^[a-z0-9]+$/i).test(t)},max:function(e,t,i){return""===t||null==t||parseFloat(t)<=i},min:function(e,t,i){return""===t||null==t||parseFloat(t)>=i},starts:function(e,t,i){return""===t||null==t||String(t).toLowerCase().startsWith(String(i).toLowerCase())},ends:function(e,t,i){return""===t||null==t||String(t).toLowerCase().endsWith(String(i).toLowerCase())},minLength:function(e,t,i){return""===t||null==t||String(t).length>=i},maxLength:function(e,t,i){return""===t||null==t||String(t).length<=i},in:function(e,t,i){return""===t||null==t||("string"==typeof i&&(i=i.split("|")),i.indexOf(t)>-1)},regex:function(e,t,i){return""===t||null==t||new RegExp(i).test(t)},unique:function(e,t,i){if(""===t||null==t)return!0;var s=!0,o=e.getData(),n=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(e){var i=e.getData();i!==o&&t==n.getFieldValue(i)&&(s=!1)})),s},required:function(e,t,i){return""!==t&&null!=t}};class ve extends s{constructor(e){super(e),this.invalidCells=[],this.registerTableOption("validationMode","blocking"),this.registerColumnOption("validator"),this.registerTableFunction("getInvalidCells",this.getInvalidCells.bind(this)),this.registerTableFunction("clearCellValidation",this.userClearCellValidation.bind(this)),this.registerTableFunction("validate",this.userValidate.bind(this)),this.registerComponentFunction("cell","isValid",this.cellIsValid.bind(this)),this.registerComponentFunction("cell","clearValidation",this.clearValidation.bind(this)),this.registerComponentFunction("cell","validate",this.cellValidate.bind(this)),this.registerComponentFunction("column","validate",this.columnValidate.bind(this)),this.registerComponentFunction("row","validate",this.rowValidate.bind(this))}initialize(){this.subscribe("cell-delete",this.clearValidation.bind(this)),this.subscribe("column-layout",this.initializeColumnCheck.bind(this)),this.subscribe("edit-success",this.editValidate.bind(this)),this.subscribe("edit-editor-clear",this.editorClear.bind(this)),this.subscribe("edit-edited-clear",this.editedClear.bind(this))}editValidate(e,t,i){var s="manual"===this.table.options.validationMode||this.validate(e.column.modules.validate,e,t);return!0!==s&&setTimeout((()=>{e.getElement().classList.add("tabulator-validation-fail"),this.dispatchExternal("validationFailed",e.getComponent(),t,s)})),s}editorClear(e,t){t&&e.column.modules.validate&&this.cellValidate(e),e.getElement().classList.remove("tabulator-validation-fail")}editedClear(e){e.modules.validate&&(e.modules.validate.invalid=!1)}cellIsValid(e){return e.modules.validate&&e.modules.validate.invalid||!0}cellValidate(e){return this.validate(e.column.modules.validate,e,e.getValue())}columnValidate(e){var t=[];return e.cells.forEach((e=>{!0!==this.cellValidate(e)&&t.push(e.getComponent())})),!t.length||t}rowValidate(e){var t=[];return e.cells.forEach((e=>{!0!==this.cellValidate(e)&&t.push(e.getComponent())})),!t.length||t}userClearCellValidation(e){e||(e=this.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach((e=>{this.clearValidation(e._getSelf())}))}userValidate(e){var t=[];return this.table.rowManager.rows.forEach((e=>{var i=(e=e.getComponent()).validate();!0!==i&&(t=t.concat(i))})),!t.length||t}initializeColumnCheck(e){void 0!==e.definition.validator&&this.initializeColumn(e)}initializeColumn(e){var t,i=this,s=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach((e=>{(t=i._extractValidator(e))&&s.push(t)})):(t=this._extractValidator(e.definition.validator))&&s.push(t),e.modules.validate=!!s.length&&s)}_extractValidator(e){var t,i,s;switch(typeof e){case"string":return(s=e.indexOf(":"))>-1?(t=e.substring(0,s),i=e.substring(s+1)):t=e,this._buildValidator(t,i);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}}_buildValidator(e,t){var i="function"==typeof e?e:ve.validators[e];return i?{type:"function"==typeof e?"function":e,func:i,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)}validate(e,t,i){var s=this,o=[],n=this.invalidCells.indexOf(t);return e&&e.forEach((e=>{e.func.call(s,t.getComponent(),i,e.params)||o.push({type:e.type,parameters:e.params})})),t.modules.validate||(t.modules.validate={}),o.length?(t.modules.validate.invalid=o,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==n&&this.invalidCells.push(t)):(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),n>-1&&this.invalidCells.splice(n,1)),!o.length||o}getInvalidCells(){var e=[];return this.invalidCells.forEach((t=>{e.push(t.getComponent())})),e}clearValidation(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))}}ve.moduleName="validate",ve.validators=fe;var we=Object.freeze({__proto__:null,AccessorModule:o,AjaxModule:d,ClipboardModule:c,ColumnCalcsModule:E,DataTreeModule:y,DownloadModule:x,EditModule:L,ExportModule:P,FilterModule:H,FormatModule:_,FrozenColumnsModule:O,FrozenRowsModule:A,GroupRowsModule:I,HistoryModule:N,HtmlTableImportModule:W,ImportModule:G,InteractionModule:U,KeybindingsModule:J,MenuModule:X,MoveColumnsModule:q,MoveRowsModule:K,MutatorModule:Y,PageModule:Z,PersistenceModule:te,PopupModule:ie,PrintModule:se,ReactiveDataModule:oe,ResizeColumnsModule:ne,ResizeRowsModule:re,ResizeTableModule:ae,ResponsiveLayoutModule:le,SelectRowModule:he,SortModule:ue,SelectRangeModule:ge,TooltipModule:be,ValidateModule:ve});class Ce{constructor(e,t,i={}){this.table=e,this.msgType=t,this.registeredDefaults=Object.assign({},i)}register(e,t){this.registeredDefaults[e]=t}generate(e,t={}){var i=Object.assign({},this.registeredDefaults),s=this.table.options.debugInvalidOptions||!0===t.debugInvalidOptions;Object.assign(i,e);for(let e in t)i.hasOwnProperty(e)||(s&&console.warn("Invalid "+this.msgType+" option:",e),i[e]=t.key);for(let e in i)e in t?i[e]=t[e]:Array.isArray(i[e])?i[e]=Object.assign([],i[e]):"object"==typeof i[e]&&null!==i[e]?i[e]=Object.assign({},i[e]):void 0===i[e]&&delete i[e];return i}}class Ee extends e{constructor(e){super(e),this.elementVertical=e.rowManager.element,this.elementHorizontal=e.columnManager.element,this.tableElement=e.rowManager.tableElement,this.verticalFillMode="fit"}initialize(){}clearRows(){}clearColumns(){}reinitializeColumnWidths(e){}renderRows(){}renderColumns(){}rerenderRows(e){e&&e()}rerenderColumns(e,t){}renderRowCells(e){}rerenderRowCells(e,t){}scrollColumns(e,t){}scrollRows(e,t){}resize(){}scrollToRow(e){}scrollToRowNearestTop(e){}visibleRows(e){return[]}rows(){return this.table.rowManager.getDisplayRows()}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}clear(){this.clearRows(),this.clearColumns()}render(){this.renderRows(),this.renderColumns()}rerender(e){this.rerenderRows(),this.rerenderColumns()}scrollToRowPosition(e,i,s){var o=this.rows().indexOf(e),n=e.getElement(),r=0;return new Promise(((a,l)=>{if(o>-1){if(void 0===s&&(s=this.table.options.scrollToRowIfVisible),!s&&t.elVisible(n)&&(r=t.elOffset(n).top-t.elOffset(this.elementVertical).top)>0&&r{i.appendChild(e.getElement())})),e.element.appendChild(i),t||e.cells.forEach((e=>{e.cellRendered()}))}reinitializeColumnWidths(e){e.forEach((function(e){e.reinitializeWidth()}))}}class Re extends Ee{constructor(e){super(e),this.leftCol=0,this.rightCol=0,this.scrollLeft=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0,this.fitDataColAvg=0,this.windowBuffer=200,this.visibleRows=null,this.initialized=!1,this.isFitData=!1,this.columns=[]}initialize(){this.compatibilityCheck(),this.layoutCheck(),this.vertScrollListen()}compatibilityCheck(){"fitDataTable"==this.options("layout")&&console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"),this.options("responsiveLayout")&&console.warn("Horizontal Virtual DOM is not compatible with responsive columns"),this.options("rtl")&&console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction")}layoutCheck(){this.isFitData=this.options("layout").startsWith("fitData")}vertScrollListen(){this.subscribe("scroll-vertical",this.clearVisRowCache.bind(this)),this.subscribe("data-refreshed",this.clearVisRowCache.bind(this))}clearVisRowCache(){this.visibleRows=null}renderColumns(e,t){this.dataChange()}scrollColumns(e,t){this.scrollLeft!=e&&(this.scrollLeft=e,this.scroll(e-(this.vDomScrollPosLeft+this.windowBuffer)))}calcWindowBuffer(){var e=this.elementVertical.clientWidth;this.table.columnManager.columnsByIndex.forEach((t=>{if(t.visible){var i=t.getWidth();i>e&&(e=i)}})),this.windowBuffer=2*e}rerenderColumns(e,t){var i={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol},s=0;e&&!this.initialized||(this.clear(),this.calcWindowBuffer(),this.scrollLeft=this.elementVertical.scrollLeft,this.vDomScrollPosLeft=this.scrollLeft-this.windowBuffer,this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,this.table.columnManager.columnsByIndex.forEach((e=>{var t,i={};e.visible&&(e.modules.frozen||(t=e.getWidth(),i.leftPos=s,i.rightPos=s+t,i.width=t,this.isFitData&&(i.fitDataCheck=!e.modules.vdomHoz||e.modules.vdomHoz.fitDataCheck),s+t>this.vDomScrollPosLeft&&s{t.appendChild(e.getElement())})),e.element.appendChild(t),e.cells.forEach((e=>{e.cellRendered()}))}}rerenderRowCells(e,t){this.reinitializeRow(e,t)}reinitializeColumnWidths(e){for(let e=this.leftCol;e<=this.rightCol;e++)this.columns[e].reinitializeWidth()}deinitialize(){this.initialized=!1}clear(){this.columns=[],this.leftCol=-1,this.rightCol=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0}dataChange(){var e,t,i=!1;if(this.isFitData){if(this.table.columnManager.columnsByIndex.forEach((e=>{!e.definition.width&&e.visible&&(i=!0)})),i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.elementVertical.clientWidth+this.windowBuffer,e=this.chain("rows-sample",[1],[],(()=>this.table.rowManager.getDisplayRows()))[0])){t=e.getElement(),e.generateCells(),this.tableElement.appendChild(t);for(let i=0;i{e!==this.columns[i]&&(t=!1)})),!t)}reinitializeRows(){var e=this.getVisibleRows(),t=this.table.rowManager.getRows().filter((t=>!e.includes(t)));e.forEach((e=>{this.reinitializeRow(e,!0)})),t.forEach((e=>{e.deinitialize()}))}getVisibleRows(){return this.visibleRows||(this.visibleRows=this.table.rowManager.getVisibleRows()),this.visibleRows}scroll(e){this.vDomScrollPosLeft+=e,this.vDomScrollPosRight+=e,Math.abs(e)>this.windowBuffer/2?this.rerenderColumns():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())}colPositionAdjust(e,t,i){for(let s=e;s{if("group"!==e.type){var t=e.getCell(i);e.getElement().insertBefore(t.getElement(),e.getCell(this.columns[this.rightCol]).getElement().nextSibling),t.cellRendered()}})),this.fitDataColActualWidthCheck(i),this.rightCol++,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.rightCol=this.rightCol)})),this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=i.getWidth()):t=!1}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}addColLeft(){for(var e=!1,t=!0;t;){let i=this.columns[this.leftCol-1];if(i)if(i.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft){e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var t=e.getCell(i);e.getElement().insertBefore(t.getElement(),e.getCell(this.columns[this.leftCol]).getElement()),t.cellRendered()}})),this.leftCol--,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.leftCol=this.leftCol)})),this.leftCol<=0?this.vDomPadLeft=0:this.vDomPadLeft-=i.getWidth();let t=this.fitDataColActualWidthCheck(i);t&&(this.scrollLeft=this.elementVertical.scrollLeft=this.elementVertical.scrollLeft+t,this.vDomPadRight-=t)}else t=!1;else t=!1}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}removeColRight(){for(var e=!1,t=!0;t;){let i=this.columns[this.rightCol];i&&i.modules.vdomHoz.leftPos>this.vDomScrollPosRight?(e=!0,this.getVisibleRows().forEach((e=>{if("group"!==e.type){var t=e.getCell(i);try{e.getElement().removeChild(t.getElement())}catch(e){console.warn("Could not removeColRight",e.message)}}})),this.vDomPadRight+=i.getWidth(),this.rightCol--,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.rightCol=this.rightCol)}))):t=!1}e&&(this.tableElement.style.paddingRight=this.vDomPadRight+"px")}removeColLeft(){for(var e=!1,t=!0;t;){let i=this.columns[this.leftCol];i&&i.modules.vdomHoz.rightPos{if("group"!==e.type){var t=e.getCell(i);try{e.getElement().removeChild(t.getElement())}catch(e){console.warn("Could not removeColLeft",e.message)}}})),this.vDomPadLeft+=i.getWidth(),this.leftCol++,this.getVisibleRows().forEach((e=>{"group"!==e.type&&(e.modules.vdomHoz.leftCol=this.leftCol)}))):t=!1}e&&(this.tableElement.style.paddingLeft=this.vDomPadLeft+"px")}fitDataColActualWidthCheck(e){var t,i;return e.modules.vdomHoz.fitDataCheck&&(e.reinitializeWidth(),(i=(t=e.getWidth())-e.modules.vdomHoz.width)&&(e.modules.vdomHoz.rightPos+=i,e.modules.vdomHoz.width=t,this.colPositionAdjust(this.columns.indexOf(e)+1,this.columns.length,i)),e.modules.vdomHoz.fitDataCheck=!1),i}initializeRow(e){if("group"!==e.type){e.modules.vdomHoz={leftCol:this.leftCol,rightCol:this.rightCol},this.table.modules.frozenColumns&&this.table.modules.frozenColumns.leftColumns.forEach((t=>{this.appendCell(e,t)}));for(let t=this.leftCol;t<=this.rightCol;t++)this.appendCell(e,this.columns[t]);this.table.modules.frozenColumns&&this.table.modules.frozenColumns.rightColumns.forEach((t=>{this.appendCell(e,t)}))}}appendCell(e,t){if(t&&t.visible){let i=e.getCell(t);e.getElement().appendChild(i.getElement()),i.cellRendered()}}reinitializeRow(e,t){if("group"!==e.type&&(t||!e.modules.vdomHoz||e.modules.vdomHoz.leftCol!==this.leftCol||e.modules.vdomHoz.rightCol!==this.rightCol)){for(var i=e.getElement();i.firstChild;)i.removeChild(i.firstChild);this.initializeRow(e)}}}class xe extends e{constructor(e){super(e),this.blockHozScrollEvent=!1,this.headersElement=null,this.contentsElement=null,this.element=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.optionsList=new Ce(this.table,"column definition",b),this.redrawBlock=!1,this.redrawBlockUpdate=null,this.renderer=null}initialize(){this.initializeRenderer(),this.headersElement=this.createHeadersElement(),this.contentsElement=this.createHeaderContentsElement(),this.element=this.createHeaderElement(),this.contentsElement.insertBefore(this.headersElement,this.contentsElement.firstChild),this.element.insertBefore(this.contentsElement,this.element.firstChild),this.initializeScrollWheelWatcher(),this.subscribe("scroll-horizontal",this.scrollHorizontal.bind(this)),this.subscribe("scrollbar-vertical",this.padVerticalScrollbar.bind(this))}padVerticalScrollbar(e){this.table.rtl?this.headersElement.style.marginLeft=e+"px":this.headersElement.style.marginRight=e+"px"}initializeRenderer(){var e,t={virtual:Re,basic:ye};(e="string"==typeof this.table.options.renderHorizontal?t[this.table.options.renderHorizontal]:this.table.options.renderHorizontal)?(this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize()):console.error("Unable to find matching renderer:",this.table.options.renderHorizontal)}createHeadersElement(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e.setAttribute("role","row"),e}createHeaderContentsElement(){var e=document.createElement("div");return e.classList.add("tabulator-header-contents"),e.setAttribute("role","rowgroup"),e}createHeaderElement(){var e=document.createElement("div");return e.classList.add("tabulator-header"),e.setAttribute("role","rowgroup"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e}getElement(){return this.element}getContentsElement(){return this.contentsElement}getHeadersElement(){return this.headersElement}scrollHorizontal(e){this.contentsElement.scrollLeft=e,this.scrollLeft=e,this.renderer.scrollColumns(e)}initializeScrollWheelWatcher(){this.contentsElement.addEventListener("wheel",(e=>{var t;e.deltaX&&(t=this.contentsElement.scrollLeft+e.deltaX,this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t))}))}generateColumnsFromRowData(e){var t,i,s=[],o=this.table.options.autoColumnsDefinitions;if(e&&e.length){for(var n in t=e[0]){let e={field:n,title:n},o=t[n];switch(typeof o){case"undefined":i="string";break;case"boolean":i="boolean";break;case"object":i=Array.isArray(o)?"array":"string";break;default:i=isNaN(o)||""===o?o.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}e.sorter=i,s.push(e)}if(o)switch(typeof o){case"function":this.table.options.columns=o.call(this.table,s);break;case"object":Array.isArray(o)?s.forEach((e=>{var t=o.find((t=>t.field===e.field));t&&Object.assign(e,t)})):s.forEach((e=>{o[e.field]&&Object.assign(e,o[e.field])})),this.table.options.columns=s}else this.table.options.columns=s;this.setColumns(this.table.options.columns)}}setColumns(e,t){for(;this.headersElement.firstChild;)this.headersElement.removeChild(this.headersElement.firstChild);this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.dispatch("columns-loading"),e.forEach(((e,t)=>{this._addColumn(e)})),this._reIndexColumns(),this.dispatch("columns-loaded"),this.rerenderColumns(!1,!0),this.redraw(!0)}_addColumn(e,t,i){var s=new f(e,this),o=s.getElement(),n=i?this.findColumnIndex(i):i;if(i&&n>-1){var r=i.getTopColumn(),a=this.columns.indexOf(r),l=r.getElement();t?(this.columns.splice(a,0,s),l.parentNode.insertBefore(o,l)):(this.columns.splice(a+1,0,s),l.parentNode.insertBefore(o,l.nextSibling))}else t?(this.columns.unshift(s),this.headersElement.insertBefore(s.getElement(),this.headersElement.firstChild)):(this.columns.push(s),this.headersElement.appendChild(s.getElement()));return s.columnRendered(),s}registerColumnField(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)}registerColumnPosition(e){this.columnsByIndex.push(e)}_reIndexColumns(){this.columnsByIndex=[],this.columns.forEach((function(e){e.reRegisterPosition()}))}verticalAlignHeaders(){var e=0;this.redrawBlock||(this.headersElement.style.height="",this.columns.forEach((e=>{e.clearVerticalAlign()})),this.columns.forEach((t=>{var i=t.getHeight();i>e&&(e=i)})),this.headersElement.style.height=e+"px",this.columns.forEach((t=>{t.verticalAlign(this.table.options.columnHeaderVertAlign,e)})),this.table.rowManager.adjustTableSize())}findColumn(e){var t;if("object"!=typeof e)return this.columnsByField[e]||!1;if(e instanceof f)return e;if(e instanceof g)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t=[],this.columns.forEach((e=>{t.push(e),t=t.concat(e.getColumns(!0))})),t.find((t=>t.element===e))||!1}return!1}getColumnByField(e){return this.columnsByField[e]}getColumnsByFieldRoot(e){var t=[];return Object.keys(this.columnsByField).forEach((i=>{(this.table.options.nestedFieldSeparator?i.split(this.table.options.nestedFieldSeparator)[0]:i)===e&&t.push(this.columnsByField[i])})),t}getColumnByIndex(e){return this.columnsByIndex[e]}getFirstVisibleColumn(){var e=this.columnsByIndex.findIndex((e=>e.visible));return e>-1&&this.columnsByIndex[e]}getVisibleColumnsByIndex(){return this.columnsByIndex.filter((e=>e.visible))}getColumns(){return this.columns}findColumnIndex(e){return this.columnsByIndex.findIndex((t=>e===t))}getRealColumns(){return this.columnsByIndex}traverse(e){this.columnsByIndex.forEach(((t,i)=>{e(t,i)}))}getDefinitions(e){var t=[];return this.columnsByIndex.forEach((i=>{(!e||e&&i.visible)&&t.push(i.getDefinition())})),t}getDefinitionTree(){var e=[];return this.columns.forEach((t=>{e.push(t.getDefinition(!0))})),e}getComponents(e){var t=[];return(e?this.columns:this.columnsByIndex).forEach((e=>{t.push(e.getComponent())})),t}getWidth(){var e=0;return this.columnsByIndex.forEach((t=>{t.visible&&(e+=t.getWidth())})),e}moveColumn(e,t,i){t.element.parentNode.insertBefore(e.element,t.element),i&&t.element.parentNode.insertBefore(t.element,e.element),this.moveColumnActual(e,t,i),this.verticalAlignHeaders(),this.table.rowManager.reinitialize()}moveColumnActual(e,t,i){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,i):this._moveColumnInArray(this.columns,e,t,i),this._moveColumnInArray(this.columnsByIndex,e,t,i,!0),this.rerenderColumns(!0),this.dispatch("column-moved",e,t,i),this.subscribedExternal("columnMoved")&&this.dispatchExternal("columnMoved",e.getComponent(),this.table.columnManager.getComponents())}_moveColumnInArray(e,t,i,s,o){var n,r=e.indexOf(t);r>-1&&(e.splice(r,1),(n=e.indexOf(i))>-1?s&&(n+=1):n=r,e.splice(n,0,t),o&&(this.chain("column-moving-rows",[t,i,s],null,[])||[]).concat(this.table.rowManager.rows).forEach((function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(n,0,t)}})))}scrollToColumn(e,t,i){var s=0,o=e.getLeftOffset(),n=0,r=e.getElement();return new Promise(((a,l)=>{if(void 0===t&&(t=this.table.options.scrollToColumnPosition),void 0===i&&(i=this.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":n=-this.element.clientWidth/2;break;case"right":n=r.clientWidth-this.headersElement.clientWidth}if(!i&&o>0&&o+r.offsetWidth{t.push(i.generateCell(e))})),t}getFlexBaseWidth(){var e=this.table.element.clientWidth,t=0;return this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(e-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(i){var s,o,n;i.visible&&(s=i.definition.width||0,o=parseInt(i.minWidth),n="string"==typeof s?s.indexOf("%")>-1?e/100*parseInt(s):parseInt(s):s,t+=n>o?n:o)})),t}addColumn(e,t,i){return new Promise(((s,o)=>{var n=this._addColumn(e,t,i);this._reIndexColumns(),this.dispatch("column-add",e,t,i),"fitColumns"!=this.layoutMode()&&n.reinitializeWidth(),this.redraw(!0),this.table.rowManager.reinitialize(),this.rerenderColumns(),s(n)}))}deregisterColumn(e){var t,i=e.getField();i&&delete this.columnsByField[i],(t=this.columnsByIndex.indexOf(e))>-1&&this.columnsByIndex.splice(t,1),(t=this.columns.indexOf(e))>-1&&this.columns.splice(t,1),this.verticalAlignHeaders(),this.redraw()}rerenderColumns(e,t){this.redrawBlock?(!1===e||!0===e&&null===this.redrawBlockUpdate)&&(this.redrawBlockUpdate=e):this.renderer.rerenderColumns(e,t)}blockRedraw(){this.redrawBlock=!0,this.redrawBlockUpdate=null}restoreRedraw(){this.redrawBlock=!1,this.verticalAlignHeaders(),this.renderer.rerenderColumns(this.redrawBlockUpdate)}redraw(e){t.elVisible(this.element)&&this.verticalAlignHeaders(),e&&(this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),this.confirm("table-redrawing",e)||this.layoutRefresh(e),this.dispatch("table-redraw",e),this.table.footerManager.redraw()}}class Te extends Ee{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.scrollTop=0,e.scrollLeft=0,e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility=""}renderRows(){var e=this.tableElement,t=!0,i=document.createDocumentFragment(),s=this.rows();s.forEach(((e,s)=>{this.styleRow(e,s),e.initialize(!1,!0),"group"!==e.type&&(t=!1),i.appendChild(e.getElement())})),e.appendChild(i),s.forEach((e=>{e.rendered(),e.heightInitialized||e.calcHeight(!0)})),s.forEach((e=>{e.heightInitialized||e.setCellHeight()})),e.style.minWidth=t?this.table.columnManager.getWidth()+"px":""}rerenderRows(e){this.clearRows(),e&&e(),this.renderRows(),this.rows().length||this.table.rowManager.tableEmpty()}scrollToRowNearestTop(e){var i=t.elOffset(e.getElement()).top;return!(Math.abs(this.elementVertical.scrollTop-i)>Math.abs(this.elementVertical.scrollTop+this.elementVertical.clientHeight-i))}scrollToRow(e){var i=e.getElement();this.elementVertical.scrollTop=t.elOffset(i).top-t.elOffset(this.elementVertical).top+this.elementVertical.scrollTop}visibleRows(e){return this.rows()}}class Me extends Ee{constructor(e){super(e),this.verticalFillMode="fill",this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]}clearRows(){for(var e=this.tableElement;e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.elementVertical.scrollTop=0,this.elementVertical.scrollLeft=0,this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0}renderRows(){this._virtualRenderFill()}rerenderRows(e){for(var t=this.elementVertical.scrollTop,i=!1,s=!1,o=this.table.rowManager.scrollLeft,n=this.rows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(n[r]){var a=t-n[r].getElement().offsetTop;if(!(!1===s||Math.abs(a){e.deinitializeHeight()})),e&&e(),this.rows().length?this._virtualRenderFill(!1===i?this.rows.length-1:i,!0,s||0):(this.clear(),this.table.rowManager.tableEmpty()),this.scrollColumns(o)}scrollColumns(e){this.table.rowManager.scrollHorizontal(e)}scrollRows(e,t){var i=e-this.vDomScrollPosTop,s=e-this.vDomScrollPosBottom,o=2*this.vDomWindowBuffer,n=this.rows();if(this.scrollTop=e,-i>o||s>o){var r=this.table.rowManager.scrollLeft;this._virtualRenderFill(Math.floor(this.elementVertical.scrollTop/this.elementVertical.scrollHeight*n.length)),this.scrollColumns(r)}else t?(i<0&&this._addTopRow(n,-i),s<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(n,-s):this.vDomScrollPosBottom=this.scrollTop)):(s>=0&&this._addBottomRow(n,s),i>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(n,i):this.vDomScrollPosTop=this.scrollTop))}resize(){this.vDomWindowBuffer=this.table.options.renderVerticalBuffer||this.elementVertical.clientHeight}scrollToRowNearestTop(e){var t=this.rows().indexOf(e);return!(Math.abs(this.vDomTop-t)>Math.abs(this.vDomBottom-t))}scrollToRow(e){var t=this.rows().indexOf(e);t>-1&&this._virtualRenderFill(t,!0)}visibleRows(e){var t=this.elementVertical.scrollTop,i=this.elementVertical.clientHeight+t,s=!1,o=0,n=0,r=this.rows();if(e)o=this.vDomTop,n=this.vDomBottom;else for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(s){if(!(i-r[a].getElement().offsetTop>=0))break;n=a}else if(t-r[a].getElement().offsetTop>=0)o=a;else{if(s=!0,!(i-r[a].getElement().offsetTop>=0))break;n=a}return r.slice(o,n+1)}_virtualRenderFill(e,i,s){var o,n,r=this.tableElement,a=this.elementVertical,l=0,h=0,d=0,c=0,u=0,m=0,p=this.rows(),g=p.length,b=0,f=[],v=0,w=0,C=this.table.rowManager.fixedHeight,E=this.elementVertical.clientHeight,y=this.table.options.rowHeight,R=!0;if(s=s||0,e=e||0){for(;r.firstChild;)r.removeChild(r.firstChild);(c=(g-e+1)*this.vDomRowHeight){e.rendered(),e.heightInitialized||e.calcHeight(!0)})),f.forEach((e=>{e.heightInitialized||e.setCellHeight()})),f.forEach((e=>{d=e.getHeight(),vthis.vDomWindowBuffer&&(this.vDomWindowBuffer=2*d),v++})),R=this.table.rowManager.adjustTableSize(),E=this.elementVertical.clientHeight,R&&(C||this.table.options.maxHeight)&&(y=h/v,w=Math.max(this.vDomWindowMinTotalRows,Math.ceil(E/y+this.vDomWindowBuffer/y)))}e?(this.vDomTopPad=i?this.vDomRowHeight*this.vDomTop+s:this.scrollTop-u,this.vDomBottomPad=this.vDomBottom==g-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-h-u,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((h+u)/v),this.vDomBottomPad=this.vDomRowHeight*(g-this.vDomBottom-1),this.vDomScrollHeight=u+h+this.vDomBottomPad-E),r.style.paddingTop=this.vDomTopPad+"px",r.style.paddingBottom=this.vDomBottomPad+"px",i&&(this.scrollTop=this.vDomTopPad+u+s-(this.elementVertical.scrollWidth>this.elementVertical.clientWidth?this.elementVertical.offsetHeight-E:0)),this.scrollTop=Math.min(this.scrollTop,this.elementVertical.scrollHeight-E),this.elementVertical.scrollWidth>this.elementVertical.clientWidth&&i&&(this.scrollTop+=this.elementVertical.offsetHeight-E),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,a.scrollTop=this.scrollTop,this.dispatch("render-virtual-fill")}}_addTopRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomTop-1,r=0,a=!0;a;)if(this.vDomTop){let l,h,d=e[n];d&&r=l?(this.styleRow(d,n),i.insertBefore(d.getElement(),i.firstChild),d.initialized&&d.heightInitialized||s.push(d),d.initialize(),h||(l=d.getElement().offsetHeight,l>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l)),t-=l,o+=l,this.vDomTop--,n--,r++):a=!1):a=!1}else a=!1;for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomTopPad-=o,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n<1&&(this.vDomTopPad=0),i.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=o)}_removeTopRow(e,t){for(var i=[],s=0,o=0,n=!0;n;){let r,a=e[this.vDomTop];a&&o=r?(this.vDomTop++,t-=r,s+=r,i.push(a),o++):n=!1):n=!1}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomTopPad+=s,this.tableElement.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?s:s+this.vDomWindowBuffer)}_addBottomRow(e,t){for(var i=this.tableElement,s=[],o=0,n=this.vDomBottom+1,r=0,a=!0;a;){let l,h,d=e[n];d&&r=l?(this.styleRow(d,n),i.appendChild(d.getElement()),d.initialized&&d.heightInitialized||s.push(d),d.initialize(),h||(l=d.getElement().offsetHeight,l>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l)),t-=l,o+=l,this.vDomBottom++,n++,r++):a=!1):a=!1}for(let e of s)e.clearCellHeight();this._quickNormalizeRowHeight(s),o&&(this.vDomBottomPad-=o,(this.vDomBottomPad<0||n==e.length-1)&&(this.vDomBottomPad=0),i.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=o)}_removeBottomRow(e,t){for(var i=[],s=0,o=0,n=!0;n;){let r,a=e[this.vDomBottom];a&&o=r?(this.vDomBottom--,t-=r,s+=r,i.push(a),o++):n=!1):n=!1}for(let e of i){let t=e.getElement();t.parentNode&&t.parentNode.removeChild(t)}s&&(this.vDomBottomPad+=s,this.vDomBottomPad<0&&(this.vDomBottomPad=0),this.tableElement.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=s)}_quickNormalizeRowHeight(e){for(let t of e)t.calcHeight();for(let t of e)t.setCellHeight()}}class ke extends e{constructor(e){super(e),this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.placeholder=null,this.placeholderContents=null,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRowsPipeline=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRenderInPosition=!1,this.dataPipeline=[],this.displayPipeline=[],this.scrollbarWidth=0,this.renderer=null}createHolderElement(){var e=document.createElement("div");return e.classList.add("tabulator-tableholder"),e.setAttribute("tabindex",0),e}createTableElement(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e.setAttribute("role","rowgroup"),e}initializePlaceholder(){var e=this.table.options.placeholder;if("function"==typeof e&&(e=e.call(this.table)),e=this.chain("placeholder",[e],e,e)||e){let t=document.createElement("div");if(t.classList.add("tabulator-placeholder"),"string"==typeof e){let i=document.createElement("div");i.classList.add("tabulator-placeholder-contents"),i.innerHTML=e,t.appendChild(i),this.placeholderContents=i}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(t.appendChild(e),this.placeholderContents=e):(console.warn("Invalid placeholder provided, must be string or HTML Element",e),this.el=null);this.placeholder=t}}getElement(){return this.element}getTableElement(){return this.tableElement}initialize(){this.initializePlaceholder(),this.initializeRenderer(),this.element.appendChild(this.tableElement),this.firstRender=!0,this.element.addEventListener("scroll",(()=>{var e=this.element.scrollLeft,t=this.scrollLeft>e,i=this.element.scrollTop,s=this.scrollTop>i;this.scrollLeft!=e&&(this.scrollLeft=e,this.dispatch("scroll-horizontal",e,t),this.dispatchExternal("scrollHorizontal",e,t),this._positionPlaceholder()),this.scrollTop!=i&&(this.scrollTop=i,this.renderer.scrollRows(i,s),this.dispatch("scroll-vertical",i,s),this.dispatchExternal("scrollVertical",i,s))}))}findRow(e){if("object"!=typeof e){if(void 0===e)return!1;return this.rows.find((t=>t.data[this.table.options.index]==e))||!1}if(e instanceof w)return e;if(e instanceof v)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return this.rows.find((t=>t.getElement()===e))||!1}return!1}getRowFromDataObject(e){return this.rows.find((t=>t.data===e))||!1}getRowFromPosition(e){return this.getDisplayRows().find((t=>t.getPosition()===e&&t.isDisplayed()))}scrollToRow(e,t,i){return this.renderer.scrollToRowPosition(e,t,i)}setData(e,t,i){return new Promise(((s,o)=>{t&&this.getDisplayRows().length?this.table.options.pagination?this._setDataActual(e,!0):this.reRenderInPosition((()=>{this._setDataActual(e)})):(this.table.options.autoColumns&&i&&this.table.initialized&&this.table.columnManager.generateColumnsFromRowData(e),this.resetScroll(),this._setDataActual(e)),s()}))}_setDataActual(e,t){this.dispatchExternal("dataProcessing",e),this._wipeElements(),Array.isArray(e)?(this.dispatch("data-processing",e),e.forEach(((e,t)=>{if(e&&"object"==typeof e){var i=new w(e,this);this.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)})),this.refreshActiveData(!1,!1,t),this.dispatch("data-processed",e),this.dispatchExternal("dataProcessed",e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",typeof e,"\nData: ",e)}_wipeElements(){this.dispatch("rows-wipe"),this.destroy(),this.adjustTableSize(),this.dispatch("rows-wiped")}destroy(){this.rows.forEach((e=>{e.wipe()})),this.rows=[],this.activeRows=[],this.activeRowsPipeline=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0}deleteRow(e,t){var i=this.rows.indexOf(e),s=this.activeRows.indexOf(e);s>-1&&this.activeRows.splice(s,1),i>-1&&this.rows.splice(i,1),this.setActiveRows(this.activeRows),this.displayRowIterator((t=>{var i=t.indexOf(e);i>-1&&t.splice(i,1)})),t||this.reRenderInPosition(),this.regenerateRowPositions(),this.dispatchExternal("rowDeleted",e.getComponent()),this.displayRowsCount||this.tableEmpty(),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.getData())}addRow(e,t,i,s){return this.addRowActual(e,t,i,s)}addRows(e,t,i,s){var o=[];return new Promise(((n,r)=>{t=this.findAddRowPos(t),Array.isArray(e)||(e=[e]),(void 0===i&&t||void 0!==i&&!t)&&e.reverse(),e.forEach(((e,s)=>{var n=this.addRow(e,t,i,!0);o.push(n),this.dispatch("row-added",n,e,t,i)})),this.refreshActiveData(!!s&&"displayPipeline",!1,!0),this.regenerateRowPositions(),this.displayRowsCount&&this._clearPlaceholder(),n(o)}))}findAddRowPos(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e}addRowActual(e,t,i,s){var o,n,r=e instanceof w?e:new w(e||{},this),a=this.findAddRowPos(t),l=-1;return i||(n=this.chain("row-adding-position",[r,a],null,{index:i,top:a}),i=n.index,a=n.top),void 0!==i&&(i=this.findRow(i)),(i=this.chain("row-adding-index",[r,i,a],null,i))&&(l=this.rows.indexOf(i)),i&&l>-1?(o=this.activeRows.indexOf(i),this.displayRowIterator((function(e){var t=e.indexOf(i);t>-1&&e.splice(a?t:t+1,0,r)})),o>-1&&this.activeRows.splice(a?o:o+1,0,r),this.rows.splice(a?l:l+1,0,r)):a?(this.displayRowIterator((function(e){e.unshift(r)})),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator((function(e){e.push(r)})),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.dispatchExternal("rowAdded",r.getComponent()),this.subscribedExternal("dataChanged")&&this.dispatchExternal("dataChanged",this.table.rowManager.getData()),s||this.reRenderInPosition(),r}moveRow(e,t,i){this.dispatch("row-move",e,t,i),this.moveRowActual(e,t,i),this.regenerateRowPositions(),this.dispatch("row-moved",e,t,i),this.dispatchExternal("rowMoved",e.getComponent())}moveRowActual(e,t,i){this.moveRowInArray(this.rows,e,t,i),this.moveRowInArray(this.activeRows,e,t,i),this.displayRowIterator((s=>{this.moveRowInArray(s,e,t,i)})),this.dispatch("row-moving",e,t,i)}moveRowInArray(e,t,i,s){var o,n,r;if(t!==i&&((o=e.indexOf(t))>-1&&(e.splice(o,1),(n=e.indexOf(i))>-1?s?e.splice(n+1,0,t):e.splice(n,0,t):e.splice(o,0,t)),e===this.getDisplayRows())){r=n>o?n:o+1;for(let t=o-1&&t}nextDisplayRow(e,t){var i=this.getDisplayRowIndex(e),s=!1;return!1!==i&&i-1)&&i}getData(e,t){var i=[];return this.getRows(e).forEach((function(e){"row"==e.type&&i.push(e.getData(t||"data"))})),i}getComponents(e){var t=[];return this.getRows(e).forEach((function(e){t.push(e.getComponent())})),t}getDataCount(e){return this.getRows(e).length}scrollHorizontal(e){this.scrollLeft=e,this.element.scrollLeft=e,this.dispatch("scroll-horizontal",e)}registerDataPipelineHandler(e,t){void 0!==t?(this.dataPipeline.push({handler:e,priority:t}),this.dataPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Data pipeline handlers must have a priority in order to be registered")}registerDisplayPipelineHandler(e,t){void 0!==t?(this.displayPipeline.push({handler:e,priority:t}),this.displayPipeline.sort(((e,t)=>e.priority-t.priority))):console.error("Display pipeline handlers must have a priority in order to be registered")}refreshActiveData(e,i,s){var o=this.table,n="",r=0,a=["all","dataPipeline","display","displayPipeline","end"];if(!this.table.destroyed){if("function"==typeof e)if((r=this.dataPipeline.findIndex((t=>t.handler===e)))>-1)n="dataPipeline",i&&(r==this.dataPipeline.length-1?n="display":r++);else{if(!((r=this.displayPipeline.findIndex((t=>t.handler===e)))>-1))return void console.error("Unable to refresh data, invalid handler provided",e);n="displayPipeline",i&&(r==this.displayPipeline.length-1?n="end":r++)}else n=e||"all",r=0;if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||this.redrawBlockRestoreConfig&&(this.redrawBlockRestoreConfig.stage===n&&r{"row"===e.type&&(e.setPosition(t),t++)}))}setActiveRows(e){this.activeRows=this.activeRows=Object.assign([],e),this.activeRowsCount=this.activeRows.length}resetDisplayRows(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length}setDisplayRows(e,t){this.displayRows[t]=e,t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length)}getDisplayRows(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]}getVisibleRows(e,t){var i=Object.assign([],this.renderer.visibleRows(!t));return e&&(i=this.chain("rows-visible",[t],i,i)),i}displayRowIterator(e){this.activeRowsPipeline.forEach(e),this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length}getRows(e){var t=[];switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!1,!0);break;default:t=this.chain("rows-retrieve",e,null,this.rows)||this.rows}return t}reRenderInPosition(e){this.redrawBlock?e?e():this.redrawBlockRenderInPosition=!0:(this.dispatchExternal("renderStarted"),this.renderer.rerenderRows(e),this.fixedHeight||this.adjustTableSize(),this.scrollBarCheck(),this.dispatchExternal("renderComplete"))}scrollBarCheck(){var e=0;this.element.scrollHeight>this.element.clientHeight&&(e=this.element.offsetWidth-this.element.clientWidth),e!==this.scrollbarWidth&&(this.scrollbarWidth=e,this.dispatch("scrollbar-vertical",e))}initializeRenderer(){var e,t={virtual:Me,basic:Te};(e="string"==typeof this.table.options.renderVertical?t[this.table.options.renderVertical]:this.table.options.renderVertical)?(this.renderMode=this.table.options.renderVertical,this.renderer=new e(this.table,this.element,this.tableElement),this.renderer.initialize(),!this.table.element.clientHeight&&!this.table.options.height||this.table.options.minHeight&&this.table.options.maxHeight?this.fixedHeight=!1:this.fixedHeight=!0):console.error("Unable to find matching renderer:",this.table.options.renderVertical)}getRenderMode(){return this.renderMode}renderTable(){this.dispatchExternal("renderStarted"),this.element.scrollTop=0,this._clearTable(),this.displayRowsCount?(this.renderer.renderRows(),this.firstRender&&(this.firstRender=!1,this.fixedHeight||this.adjustTableSize(),this.layoutRefresh(!0))):this.renderEmptyScroll(),this.fixedHeight||this.adjustTableSize(),this.dispatch("table-layout"),this.displayRowsCount||this._showPlaceholder(),this.scrollBarCheck(),this.dispatchExternal("renderComplete")}renderEmptyScroll(){this.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"}_clearTable(){this._clearPlaceholder(),this.scrollTop=0,this.scrollLeft=0,this.renderer.clearRows()}tableEmpty(){this.renderEmptyScroll(),this._showPlaceholder()}checkPlaceholder(){this.displayRowsCount?this._clearPlaceholder():this.tableEmpty()}_showPlaceholder(){this.placeholder&&(this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder),this.initializePlaceholder(),this.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.placeholder),this._positionPlaceholder(),this.adjustTableSize())}_clearPlaceholder(){this.placeholder&&this.placeholder.parentNode&&this.placeholder.parentNode.removeChild(this.placeholder),this.tableElement.style.minWidth="",this.tableElement.style.display=""}_positionPlaceholder(){this.placeholder&&this.placeholder.parentNode&&(this.placeholder.style.width=this.table.columnManager.getWidth()+"px",this.placeholderContents.style.width=this.table.rowManager.element.clientWidth+"px",this.placeholderContents.style.marginLeft=this.scrollLeft+"px")}styleRow(e,t){var i=e.getElement();t%2?(i.classList.add("tabulator-row-even"),i.classList.remove("tabulator-row-odd")):(i.classList.add("tabulator-row-odd"),i.classList.remove("tabulator-row-even"))}normalizeHeight(){this.activeRows.forEach((function(e){e.normalizeHeight()}))}adjustTableSize(){let e,t=this.element.clientHeight,i=!1;if("fill"===this.renderer.verticalFillMode){let s=Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height+(this.table.footerManager&&this.table.footerManager.active&&!this.table.footerManager.external?this.table.footerManager.getElement().getBoundingClientRect().height:0));if(this.fixedHeight){e=isNaN(this.table.options.minHeight)?this.table.options.minHeight:this.table.options.minHeight+"px";const t="calc(100% - "+s+"px)";this.element.style.minHeight=e||"calc(100% - "+s+"px)",this.element.style.height=t,this.element.style.maxHeight=t}else this.element.style.height="",this.element.style.height=this.table.element.clientHeight-s+"px",this.element.scrollTop=this.scrollTop;this.renderer.resize(),this.fixedHeight||t==this.element.clientHeight||(i=!0,this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw()),this.scrollBarCheck()}return this._positionPlaceholder(),i}reinitialize(){this.rows.forEach((function(e){e.reinitialize(!0)}))}blockRedraw(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1}restoreRedraw(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.handler,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRenderInPosition&&this.reRenderInPosition(),this.redrawBlockRenderInPosition=!1}redraw(e){this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():(this.reRenderInPosition(),this.scrollHorizontal(this.scrollLeft))}resetScroll(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))}}class Le extends e{constructor(e){super(e),this.active=!1,this.element=this.createElement(),this.containerElement=this.createContainerElement(),this.external=!1}initialize(){this.initializeElement()}createElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e}createContainerElement(){var e=document.createElement("div");return e.classList.add("tabulator-footer-contents"),this.element.appendChild(e),e}initializeElement(){if(this.table.options.footerElement)if("string"==typeof this.table.options.footerElement)"<"===this.table.options.footerElement[0]?this.containerElement.innerHTML=this.table.options.footerElement:(this.external=!0,this.containerElement=document.querySelector(this.table.options.footerElement));else this.element=this.table.options.footerElement}getElement(){return this.element}append(e){this.activate(),this.containerElement.appendChild(e),this.table.rowManager.adjustTableSize()}prepend(e){this.activate(),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()}remove(e){e.parentNode.removeChild(e),this.deactivate()}deactivate(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)}activate(){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display=""))}redraw(){this.dispatch("footer-redraw")}}class Se extends e{constructor(e){super(e),this.el=null,this.abortClasses=["tabulator-headers","tabulator-table"],this.previousTargets={},this.listeners=["click","dblclick","contextmenu","mouseenter","mouseleave","mouseover","mouseout","mousemove","mouseup","mousedown","touchstart","touchend"],this.componentMap={"tabulator-cell":"cell","tabulator-row":"row","tabulator-group":"group","tabulator-col":"column"},this.pseudoTrackers={row:{subscriber:null,target:null},cell:{subscriber:null,target:null},group:{subscriber:null,target:null},column:{subscriber:null,target:null}},this.pseudoTracking=!1}initialize(){this.el=this.table.element,this.buildListenerMap(),this.bindSubscriptionWatchers()}buildListenerMap(){var e={};this.listeners.forEach((t=>{e[t]={handler:null,components:[]}})),this.listeners=e}bindPseudoEvents(){Object.keys(this.pseudoTrackers).forEach((e=>{this.pseudoTrackers[e].subscriber=this.pseudoMouseEnter.bind(this,e),this.subscribe(e+"-mouseover",this.pseudoTrackers[e].subscriber)})),this.pseudoTracking=!0}pseudoMouseEnter(e,t,i){this.pseudoTrackers[e].target!==i&&(this.pseudoTrackers[e].target&&this.dispatch(e+"-mouseleave",t,this.pseudoTrackers[e].target),this.pseudoMouseLeave(e,t),this.pseudoTrackers[e].target=i,this.dispatch(e+"-mouseenter",t,i))}pseudoMouseLeave(e,t){var i=Object.keys(this.pseudoTrackers),s={row:["cell"],cell:["row"]};(i=i.filter((t=>{var i=s[e];return t!==e&&(!i||i&&!i.includes(t))}))).forEach((e=>{var i=this.pseudoTrackers[e].target;this.pseudoTrackers[e].target&&(this.dispatch(e+"-mouseleave",t,i),this.pseudoTrackers[e].target=null)}))}bindSubscriptionWatchers(){var e=Object.keys(this.listeners),t=Object.values(this.componentMap);for(let i of t)for(let t of e){let e=i+"-"+t;this.subscriptionChange(e,this.subscriptionChanged.bind(this,i,t))}this.subscribe("table-destroy",this.clearWatchers.bind(this))}subscriptionChanged(e,t,i){var s=this.listeners[t].components,o=s.indexOf(e),n=!1;i?-1===o&&(s.push(e),n=!0):this.subscribed(e+"-"+t)||o>-1&&(s.splice(o,1),n=!0),"mouseenter"!==t&&"mouseleave"!==t||this.pseudoTracking||this.bindPseudoEvents(),n&&this.updateEventListeners()}updateEventListeners(){for(let e in this.listeners){let t=this.listeners[e];t.components.length?t.handler||(t.handler=this.track.bind(this,e),this.el.addEventListener(e,t.handler)):t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}track(e,t){var i=t.composedPath&&t.composedPath()||t.path,s=this.findTargets(i);s=this.bindComponents(e,s),this.triggerEvents(e,t,s),!this.pseudoTracking||"mouseover"!=e&&"mouseleave"!=e||Object.keys(s).length||this.pseudoMouseLeave("none",t)}findTargets(e){var t={};let i=Object.keys(this.componentMap);for(let s of e){let e=s.classList?[...s.classList]:[];if(e.filter((e=>this.abortClasses.includes(e))).length)break;let o=e.filter((e=>i.includes(e)));for(let e of o)t[this.componentMap[e]]||(t[this.componentMap[e]]=s)}return t.group&&t.group===t.row&&delete t.row,t}bindComponents(e,t){var i=Object.keys(t).reverse(),s=this.listeners[e],o={},n={};for(let e of i){let i,r=t[e],a=this.previousTargets[e];if(a&&a.target===r)i=a.component;else switch(e){case"row":case"group":if(s.components.includes("row")||s.components.includes("cell")||s.components.includes("group")){i=this.table.rowManager.getVisibleRows(!0).find((e=>e.getElement()===r)),t.row&&t.row.parentNode&&t.row.parentNode.closest(".tabulator-row")&&(t[e]=!1)}break;case"column":s.components.includes("column")&&(i=this.table.columnManager.findColumn(r));break;case"cell":s.components.includes("cell")&&(o.row instanceof w?i=o.row.findCell(r):t.row&&console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"))}i&&(o[e]=i,n[e]={target:r,component:i})}return this.previousTargets=n,o}triggerEvents(e,t,i){var s=this.listeners[e];for(let o in i)i[o]&&s.components.includes(o)&&this.dispatch(o+"-"+e,t,i[o])}clearWatchers(){for(let e in this.listeners){let t=this.listeners[e];t.handler&&(this.el.removeEventListener(e,t.handler),t.handler=null)}}}class De{constructor(e){this.table=e,this.bindings={}}bind(e,t,i){this.bindings[e]||(this.bindings[e]={}),this.bindings[e][t]?console.warn("Unable to bind component handler, a matching function name is already bound",e,t,i):this.bindings[e][t]=i}handle(e,t,i){if(this.bindings[e]&&this.bindings[e][i]&&"function"==typeof this.bindings[e][i].bind)return this.bindings[e][i].bind(null,t);"then"===i||"string"!=typeof i||i.startsWith("_")||this.table.options.debugInvalidComponentFuncs&&console.error("The "+e+" component does not have a "+i+" function, have you checked that you have the correct Tabulator module installed?")}}class Pe extends e{constructor(e){super(e),this.requestOrder=0,this.loading=!1}initialize(){}load(e,t,i,s,o,n){var r=++this.requestOrder;return this.table.destroyed?Promise.resolve():(this.dispatchExternal("dataLoading",e),!e||0!=e.indexOf("{")&&0!=e.indexOf("[")||(e=JSON.parse(e)),this.confirm("data-loading",[e,t,i,o])?(this.loading=!0,o||this.alertLoader(),t=this.chain("data-params",[e,i,o],t||{},t||{}),t=this.mapParams(t,this.table.options.dataSendParams),this.chain("data-load",[e,t,i,o],!1,Promise.resolve([])).then((e=>{if(this.table.destroyed)console.warn("Data Load Response Blocked - Table has been destroyed");else{Array.isArray(e)||"object"!=typeof e||(e=this.mapParams(e,this.objectInvert(this.table.options.dataReceiveParams)));var t=this.chain("data-loaded",e,null,e);r==this.requestOrder?(this.clearAlert(),!1!==t&&(this.dispatchExternal("dataLoaded",t),this.table.rowManager.setData(t,s,void 0===n?!s:n))):console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made")}})).catch((e=>{console.error("Data Load Error: ",e),this.dispatchExternal("dataLoadError",e),o||this.alertError(),setTimeout((()=>{this.clearAlert()}),this.table.options.dataLoaderErrorTimeout)})).finally((()=>{this.loading=!1}))):(this.dispatchExternal("dataLoaded",e),e||(e=[]),this.table.rowManager.setData(e,s,void 0===n?!s:n),Promise.resolve()))}mapParams(e,t){var i={};for(let s in e)i[t.hasOwnProperty(s)?t[s]:s]=e[s];return i}objectInvert(e){var t={};for(let i in e)t[e[i]]=i;return t}blockActiveLoad(){this.requestOrder++}alertLoader(){("function"==typeof this.table.options.dataLoader?this.table.options.dataLoader():this.table.options.dataLoader)&&this.table.alertManager.alert(this.table.options.dataLoaderLoading||this.langText("data|loading"))}alertError(){this.table.alertManager.alert(this.table.options.dataLoaderError||this.langText("data|error"),"error")}clearAlert(){this.table.alertManager.clear()}}class ze{constructor(e,t,i){this.table=e,this.events={},this.optionsList=t||{},this.subscriptionNotifiers={},this.dispatch=i?this._debugDispatch.bind(this):this._dispatch.bind(this),this.debug=i}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifySubscriptionChange(e,!0)}subscribe(e,t){this.events[e]||(this.events[e]=[]),this.events[e].push(t),this._notifySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}else delete this.events[e];this._notifySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_notifySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e,t=Array.from(arguments),i=t.shift();return this.events[i]&&this.events[i].forEach(((i,s)=>{let o=i.apply(this.table,t);s||(e=o)})),e}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="ExternalEvent:"+e[0],(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}}class He{constructor(e){this.events={},this.subscriptionNotifiers={},this.dispatch=e?this._debugDispatch.bind(this):this._dispatch.bind(this),this.chain=e?this._debugChain.bind(this):this._chain.bind(this),this.confirm=e?this._debugConfirm.bind(this):this._confirm.bind(this),this.debug=e}subscriptionChange(e,t){this.subscriptionNotifiers[e]||(this.subscriptionNotifiers[e]=[]),this.subscriptionNotifiers[e].push(t),this.subscribed(e)&&this._notifySubscriptionChange(e,!0)}subscribe(e,t,i=1e4){this.events[e]||(this.events[e]=[]),this.events[e].push({callback:t,priority:i}),this.events[e].sort(((e,t)=>e.priority-t.priority)),this._notifySubscriptionChange(e,!0)}unsubscribe(e,t){var i;if(this.events[e]){if(t){if(!((i=this.events[e].findIndex((e=>e.callback===t)))>-1))return void console.warn("Cannot remove event, no matching event found:",e,t);this.events[e].splice(i,1)}this._notifySubscriptionChange(e,!1)}else console.warn("Cannot remove event, no events set on:",e)}subscribed(e){return this.events[e]&&this.events[e].length}_chain(e,t,i,s){var o=i;return Array.isArray(t)||(t=[t]),this.subscribed(e)?(this.events[e].forEach(((e,i)=>{o=e.callback.apply(this,t.concat([o]))})),o):"function"==typeof s?s():s}_confirm(e,t){var i=!1;return Array.isArray(t)||(t=[t]),this.subscribed(e)&&this.events[e].forEach(((e,s)=>{e.callback.apply(this,t)&&(i=!0)})),i}_notifySubscriptionChange(e,t){var i=this.subscriptionNotifiers[e];i&&i.forEach((e=>{e(t)}))}_dispatch(){var e=Array.from(arguments),t=e.shift();this.events[t]&&this.events[t].forEach((t=>{t.callback.apply(this,e)}))}_debugDispatch(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._dispatch(...arguments)}_debugChain(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._chain(...arguments)}_debugConfirm(){var e=Array.from(arguments),t=e[0];return e[0]="InternalEvent:"+t,(!0===this.debug||this.debug.includes(t))&&console.log(...e),this._confirm(...arguments)}}class Fe extends e{constructor(e){super(e)}_warnUser(){this.options("debugDeprecation")&&console.warn(...arguments)}check(e,t,i){var s="";return void 0===this.options(e)||(s="Deprecated Setup Option - Use of the %c"+e+"%c option is now deprecated",t?(s=s+", Please use the %c"+t+"%c option instead",this._warnUser(s,"font-weight: bold;","font-weight: normal;","font-weight: bold;","font-weight: normal;"),i&&(this.table.options[t]=this.table.options[e])):this._warnUser(s,"font-weight: bold;","font-weight: normal;"),!1)}checkMsg(e,t){return void 0===this.options(e)||(this._warnUser("%cDeprecated Setup Option - Use of the %c"+e+" %c option is now deprecated, "+t,"font-weight: normal;","font-weight: bold;","font-weight: normal;"),!1)}msg(e){this._warnUser(e)}}class _e{static register(e){_e.tables.push(e)}static deregister(e){var t=_e.tables.indexOf(e);t>-1&&_e.tables.splice(t,1)}static lookupTable(e,t){var i,s,o=[];if("string"==typeof e){if((i=document.querySelectorAll(e)).length)for(var n=0;n{e.widthFixed||e.reinitializeWidth(),(this.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(n=e),e.visible&&(i+=e.getWidth())})),n?(o=s-i+n.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(n.setWidth(0),this.table.modules.responsiveLayout.update()),o>0?n.setWidth(o):n.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e,t){var i,s,o=this.table.rowManager.element.getBoundingClientRect().width,n=0,r=0,a=0,l=[],h=[],d=0,c=0;function u(e){return"string"==typeof e?e.indexOf("%")>-1?o/100*parseInt(e):parseInt(e):e}function m(e,t,i,s){var o=[],n=0,r=0,l=0,h=a,d=0,c=0,p=[];function g(e){return i*(e.column.definition.widthGrow||1)}function b(e){return u(e.width)-i*(e.column.definition.widthShrink||0)}return e.forEach((function(e,n){var r=s?b(e):g(e);e.column.minWidth>=r?o.push(e):e.column.maxWidth&&e.column.maxWidththis.table.rowManager.element.clientHeight&&(o-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach((function(e){var t,i,s;e.visible&&(t=e.definition.width,i=parseInt(e.minWidth),t?(s=u(t),n+=s>i?s:i,e.definition.widthShrink&&(h.push({column:e,width:s>i?s:i}),d+=e.definition.widthShrink)):(l.push({column:e,width:0}),a+=e.definition.widthGrow||1))})),r=o-n,i=Math.floor(r/a),c=m(l,r,i,!1),l.length&&c>0&&(l[l.length-1].width+=c),l.forEach((function(e){r-=e.width})),(s=Math.abs(c)+r)>0&&d&&(c=m(h,s,Math.floor(s/d),!0)),c&&h.length&&(h[h.length-1].width-=c),l.forEach((function(e){e.column.setWidth(e.width)})),h.forEach((function(e){e.column.setWidth(e.width)}))}};class Be extends s{constructor(e){super(e,"layout"),this.mode=null,this.registerTableOption("layout","fitData"),this.registerTableOption("layoutColumnsOnNewData",!1),this.registerColumnOption("widthGrow"),this.registerColumnOption("widthShrink")}initialize(){var e=this.table.options.layout;Be.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode),this.subscribe("column-init",this.initializeColumn.bind(this))}initializeColumn(e){e.definition.widthGrow&&(e.definition.widthGrow=Number(e.definition.widthGrow)),e.definition.widthShrink&&(e.definition.widthShrink=Number(e.definition.widthShrink))}getMode(){return this.mode}layout(e){this.dispatch("layout-refreshing"),Be.modes[this.mode].call(this,this.table.columnManager.columnsByIndex,e),this.dispatch("layout-refreshed")}}Be.moduleName="layout",Be.modes=Ae;class Ve extends s{constructor(e){super(e),this.locale="default",this.lang=!1,this.bindings={},this.langList={},this.registerTableOption("locale",!1),this.registerTableOption("langs",{})}initialize(){this.langList=t.deepClone(Ve.langs),!1!==this.table.options.columnDefaults.headerFilterPlaceholder&&this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);for(let e in this.table.options.langs)this.installLang(e,this.table.options.langs[e]);this.setLocale(this.table.options.locale),this.registerTableFunction("setLocale",this.setLocale.bind(this)),this.registerTableFunction("getLocale",this.getLocale.bind(this)),this.registerTableFunction("getLang",this.getLang.bind(this))}setHeaderFilterPlaceholder(e){this.langList.default.headerFilters.default=e}installLang(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t}_setLangProp(e,t){for(let i in t)e[i]&&"object"==typeof e[i]?this._setLangProp(e[i],t[i]):e[i]=t[i]}setLocale(e){if(!0===(e=e||"default")&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!this.langList[e]){let t=e.split("-")[0];this.langList[t]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,t),e=t):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}this.locale=e,this.lang=t.deepClone(this.langList.default||{}),"default"!=e&&function e(t,i){for(var s in t)"object"==typeof t[s]?(i[s]||(i[s]={}),e(t[s],i[s])):i[s]=t[s]}(this.langList[e],this.lang),this.dispatchExternal("localized",this.locale,this.lang),this._executeBindings()}getLocale(e){return this.locale}getLang(e){return e?this.langList[e]:this.lang}getText(e,t){var i=(t?e+"|"+t:e).split("|");return this._getLangElement(i,this.locale)||""}_getLangElement(e,t){var i=this.lang;return e.forEach((function(e){var t;i&&(t=i[e],i=void 0!==t&&t)})),i}bind(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)}_executeBindings(){for(let e in this.bindings)this.bindings[e].forEach((t=>{t(this.getText(e),this.lang)}))}}Ve.moduleName="localize",Ve.langs={default:{groups:{item:"item",items:"items"},columns:{},data:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All",counter:{showing:"Showing",of:"of",rows:"rows",pages:"pages"}},headerFilters:{default:"filter column...",columns:{}}}};class Ie extends s{constructor(e){super(e)}initialize(){this.registerTableFunction("tableComms",this.receive.bind(this))}getConnections(e){var t=[];return _e.lookupTable(e).forEach((e=>{this.table!==e&&t.push(e)})),t}send(e,t,i,s){var o=this.getConnections(e);o.forEach((e=>{e.tableComms(this.table.element,t,i,s)})),!o.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)}receive(e,t,i,s){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,i,s);console.warn("Inter-table Comms Error - no such module:",t)}}Ie.moduleName="comms";var Ne=Object.freeze({__proto__:null,LayoutModule:Be,LocalizeModule:Ve,CommsModule:Ie});class We{constructor(e,t){this.bindStaticFunctionality(e),this.bindModules(e,Ne,!0),t&&this.bindModules(e,t)}bindStaticFunctionality(e){e.moduleBindings={},e.extendModule=function(t,i,s){if(e.moduleBindings[t]){var o=e.moduleBindings[t][i];if(o)if("object"==typeof s)for(let e in s)o[e]=s[e];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",i)}else console.warn("Module Error - module does not exist:",t)},e.registerModule=function(t){Array.isArray(t)||(t=[t]),t.forEach((t=>{e.registerModuleBinding(t)}))},e.registerModuleBinding=function(t){e.moduleBindings[t.moduleName]=t},e.findTable=function(e){var t=_e.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t},e.prototype.bindModules=function(){var t=[],i=[],s=[];for(var o in this.modules={},e.moduleBindings){let n=e.moduleBindings[o],r=new n(this);this.modules[o]=r,n.prototype.moduleCore?this.modulesCore.push(r):n.moduleInitOrder?n.moduleInitOrder<0?t.push(r):i.push(r):s.push(r)}t.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),i.sort(((e,t)=>e.moduleInitOrder>t.moduleInitOrder?1:-1)),this.modulesRegular=t.concat(s.concat(i))}}bindModules(e,t,i){var s=Object.values(t);i&&s.forEach((e=>{e.prototype.moduleCore=!0})),e.registerModule(s)}}class je extends e{constructor(e){super(e),this.element=this._createAlertElement(),this.msgElement=this._createMsgElement(),this.type=null,this.element.appendChild(this.msgElement)}_createAlertElement(){var e=document.createElement("div");return e.classList.add("tabulator-alert"),e}_createMsgElement(){var e=document.createElement("div");return e.classList.add("tabulator-alert-msg"),e.setAttribute("role","alert"),e}_typeClass(){return"tabulator-alert-state-"+this.type}alert(e,t="msg"){if(e){for(this.clear(),this.dispatch("alert-show",t),this.type=t;this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.add(this._typeClass()),"function"==typeof e&&(e=e()),e instanceof HTMLElement?this.msgElement.appendChild(e):this.msgElement.innerHTML=e,this.table.element.appendChild(this.element)}}clear(){this.dispatch("alert-hide",this.type),this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.msgElement.classList.remove(this._typeClass())}}class Ge{constructor(e,t){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.alertManager=null,this.vdomHoz=null,this.externalEvents=null,this.eventBus=null,this.interactionMonitor=!1,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.originalElement=null,this.componentFunctionBinder=new De(this),this.dataLoader=!1,this.modules={},this.modulesCore=[],this.modulesRegular=[],this.deprecationAdvisor=new Fe(this),this.optionsList=new Ce(this,"table constructor"),this.initialized=!1,this.destroyed=!1,this.initializeElement(e)&&(this.initializeCoreSystems(t),setTimeout((()=>{this._create()}))),_e.register(this)}initializeElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)}initializeCoreSystems(e){this.columnManager=new xe(this),this.rowManager=new ke(this),this.footerManager=new Le(this),this.dataLoader=new Pe(this),this.alertManager=new je(this),this.bindModules(),this.options=this.optionsList.generate(Ge.defaultOptions,e),this._clearObjectPointers(),this._mapDeprecatedFunctionality(),this.externalEvents=new ze(this,this.options,this.options.debugEventsExternal),this.eventBus=new He(this.options.debugEventsInternal),this.interactionMonitor=new Se(this),this.dataLoader.initialize(),this.footerManager.initialize()}_mapDeprecatedFunctionality(){}_clearSelection(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")}_create(){this.externalEvents.dispatch("tableBuilding"),this.eventBus.dispatch("table-building"),this._rtlCheck(),this._buildElement(),this._initializeTable(),this._loadInitialData(),this.initialized=!0,this.externalEvents.dispatch("tableBuilt")}_rtlCheck(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}}_clearObjectPointers(){this.options.columns=this.options.columns.slice(0),Array.isArray(this.options.data)&&!this.options.reactiveData&&(this.options.data=this.options.data.slice(0))}_buildElement(){var e,t=this.element,i=this.options;if("TABLE"===t.tagName){this.originalElement=this.element,e=document.createElement("div");var s=t.attributes;for(var o in s)"object"==typeof s[o]&&e.setAttribute(s[o].name,s[o].value);t.parentNode.replaceChild(e,t),this.element=t=e}for(t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight)}_initializeTable(){var e=this.element,t=this.options;this.interactionMonitor.initialize(),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modulesCore.forEach((e=>{e.initialize()})),e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),t.footerElement&&this.footerManager.activate(),t.autoColumns&&t.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modulesRegular.forEach((e=>{e.initialize()})),this.columnManager.setColumns(t.columns),this.eventBus.dispatch("table-built")}_loadInitialData(){this.dataLoader.load(this.options.data),this.columnManager.verticalAlignHeaders()}destroy(){var e=this.element;for(this.destroyed=!0,_e.deregister(this),this.eventBus.dispatch("table-destroy"),this.rowManager.destroy();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator"),this.externalEvents.dispatch("tableDestroyed")}_detectBrowser(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):e.indexOf("Mac OS")>-1?(this.browser="safari",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.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(e)||/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(e.slice(0,4))}initGuard(e,t){var i,s;return this.options.debugInitialization&&!this.initialized&&(e||(e=" "==(s="Error"==(i=(new Error).stack.split("\n"))[0]?i[2]:i[1])[0]?s.trim().split(" ")[1].split(".")[1]:s.trim().split("@")[0]),console.warn("Table Not Initialized - Calling the "+e+" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function."+(t?" "+t:""))),this.initialized}blockRedraw(){this.initGuard(),this.eventBus.dispatch("redraw-blocking"),this.rowManager.blockRedraw(),this.columnManager.blockRedraw(),this.eventBus.dispatch("redraw-blocked")}restoreRedraw(){this.initGuard(),this.eventBus.dispatch("redraw-restoring"),this.rowManager.restoreRedraw(),this.columnManager.restoreRedraw(),this.eventBus.dispatch("redraw-restored")}setData(e,t,i){return this.initGuard(!1,"To set initial data please use the 'data' property in the table constructor."),this.dataLoader.load(e,t,i,!1)}clearData(){this.initGuard(),this.dataLoader.blockActiveLoad(),this.rowManager.clearData()}getData(e){return this.rowManager.getData(e)}getDataCount(e){return this.rowManager.getDataCount(e)}replaceData(e,t,i){return this.initGuard(),this.dataLoader.load(e,t,i,!0,!0)}updateData(e){var t=0;return this.initGuard(),new Promise(((i,s)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e&&e.length>0?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);o?(t++,o.updateData(e).then((()=>{--t||i()})).catch((t=>{s("Update Error - Unable to update row",e,t)}))):s("Update Error - Unable to find row",e)})):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))}))}addData(e,t,i){return this.initGuard(),new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e?this.rowManager.addRows(e,t,i).then((e=>{var t=[];e.forEach((function(e){t.push(e.getComponent())})),s(t)})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}updateOrAddData(e){var t=[],i=0;return this.initGuard(),new Promise(((s,o)=>{this.dataLoader.blockActiveLoad(),"string"==typeof e&&(e=JSON.parse(e)),e&&e.length>0?e.forEach((e=>{var o=this.rowManager.findRow(e[this.options.index]);i++,o?o.updateData(e).then((()=>{i--,t.push(o.getComponent()),i||s(t)})):this.rowManager.addRows(e).then((e=>{i--,t.push(e[0].getComponent()),i||s(t)}))})):(console.warn("Update Error - No data provided"),o("Update Error - No data provided"))}))}getRow(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}getRowFromPosition(e){var t=this.rowManager.getRowFromPosition(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)}deleteRow(e){var t=[];this.initGuard(),Array.isArray(e)||(e=[e]);for(let i of e){let e=this.rowManager.findRow(i,!0);if(!e)return console.error("Delete Error - No matching row found:",i),Promise.reject("Delete Error - No matching row found");t.push(e)}return t.sort(((e,t)=>this.rowManager.rows.indexOf(e)>this.rowManager.rows.indexOf(t)?1:-1)),t.forEach((e=>{e.delete()})),this.rowManager.reRenderInPosition(),Promise.resolve()}addRow(e,t,i){return this.initGuard(),"string"==typeof e&&(e=JSON.parse(e)),this.rowManager.addRows(e,t,i,!0).then((e=>e[0].getComponent()))}updateOrAddRow(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>i.getComponent())):this.rowManager.addRows(t).then((e=>e[0].getComponent()))}updateRow(e,t){var i=this.rowManager.findRow(e);return this.initGuard(),"string"==typeof t&&(t=JSON.parse(t)),i?i.updateData(t).then((()=>Promise.resolve(i.getComponent()))):(console.warn("Update Error - No matching row found:",e),Promise.reject("Update Error - No matching row found"))}scrollToRow(e,t,i){var s=this.rowManager.findRow(e);return s?this.rowManager.scrollToRow(s,t,i):(console.warn("Scroll Error - No matching row found:",e),Promise.reject("Scroll Error - No matching row found"))}moveRow(e,t,i){var s=this.rowManager.findRow(e);this.initGuard(),s?s.moveToRow(t,i):console.warn("Move Error - No matching row found:",e)}getRows(e){return this.rowManager.getComponents(e)}getRowPosition(e){var t=this.rowManager.findRow(e);return t?t.getPosition():(console.warn("Position Error - No matching row found:",e),!1)}setColumns(e){this.initGuard(!1,"To set initial columns please use the 'columns' property in the table constructor"),this.columnManager.setColumns(e)}getColumns(e){return this.columnManager.getComponents(e)}getColumn(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)}getColumnDefinitions(){return this.columnManager.getDefinitionTree()}showColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show()}hideColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide()}toggleColumn(e){var t=this.columnManager.findColumn(e);if(this.initGuard(),!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()}addColumn(e,t,i){var s=this.columnManager.findColumn(i);return this.initGuard(),this.columnManager.addColumn(e,t,s).then((e=>e.getComponent()))}deleteColumn(e){var t=this.columnManager.findColumn(e);return this.initGuard(),t?t.delete():(console.warn("Column Delete Error - No matching column found:",e),Promise.reject())}updateColumnDefinition(e,t){var i=this.columnManager.findColumn(e);return this.initGuard(),i?i.updateDefinition(t):(console.warn("Column Update Error - No matching column found:",e),Promise.reject())}moveColumn(e,t,i){var s=this.columnManager.findColumn(e),o=this.columnManager.findColumn(t);this.initGuard(),s?o?this.columnManager.moveColumn(s,o,i):console.warn("Move Error - No matching column found:",o):console.warn("Move Error - No matching column found:",e)}scrollToColumn(e,t,i){return new Promise(((s,o)=>{var n=this.columnManager.findColumn(e);return n?this.columnManager.scrollToColumn(n,t,i):(console.warn("Scroll Error - No matching column found:",e),Promise.reject("Scroll Error - No matching column found"))}))}redraw(e){this.initGuard(),this.columnManager.redraw(e),this.rowManager.redraw(e)}setHeight(e){this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.initializeRenderer(),this.rowManager.redraw(!0)}on(e,t){this.externalEvents.subscribe(e,t)}off(e,t){this.externalEvents.unsubscribe(e,t)}dispatchEvent(){Array.from(arguments).shift(),this.externalEvents.dispatch(...arguments)}alert(e,t){this.initGuard(),this.alertManager.alert(e,t)}clearAlert(){this.initGuard(),this.alertManager.clear()}modExists(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)}module(e){var t=this.modules[e];return t||console.error("Tabulator module not installed: "+e),t}}Ge.defaultOptions={debugEventsExternal:!1,debugEventsInternal:!1,debugInvalidOptions:!0,debugInvalidComponentFuncs:!0,debugInitialization:!0,debugDeprecation:!0,height:!1,minHeight:!1,maxHeight:!1,columnHeaderVertAlign:"top",popupContainer:!1,columns:[],columnDefaults:{},data:!1,autoColumns:!1,autoColumnsDefinitions:!1,nestedFieldSeparator:".",footerElement:!1,index:"id",textDirection:"auto",addRowPos:"bottom",headerVisible:!0,renderVertical:"virtual",renderHorizontal:"basic",renderVerticalBuffer:0,scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,rowHeight:null,placeholder:!1,dataLoader:!0,dataLoaderLoading:!1,dataLoaderError:!1,dataLoaderErrorTimeout:3e3,dataSendParams:{},dataReceiveParams:{}},new We(Ge);class Ue extends Ge{}new We(Ue,we);class Je{constructor(e){this.type=e,this.element=this._createElement()}_createElement(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e}getElement(){return this.element}getComponent(){return!1}getData(){return{}}getHeight(){return this.element.outerHeight}initialize(){}reinitialize(){}normalizeHeight(){}generateCells(){}reinitializeHeight(){}calcHeight(){}setCellHeight(){}clearCellHeight(){}rendered(){}}export{o as AccessorModule,d as AjaxModule,u as CalcComponent,m as CellComponent,c as ClipboardModule,E as ColumnCalcsModule,g as ColumnComponent,y as DataTreeModule,x as DownloadModule,L as EditModule,P as ExportModule,H as FilterModule,_ as FormatModule,O as FrozenColumnsModule,A as FrozenRowsModule,B as GroupComponent,I as GroupRowsModule,N as HistoryModule,W as HtmlTableImportModule,G as ImportModule,U as InteractionModule,J as KeybindingsModule,X as MenuModule,s as Module,q as MoveColumnsModule,K as MoveRowsModule,Y as MutatorModule,Z as PageModule,te as PersistenceModule,ie as PopupModule,se as PrintModule,Je as PseudoRow,oe as ReactiveDataModule,Ee as Renderer,ne as ResizeColumnsModule,re as ResizeRowsModule,ae as ResizeTableModule,le as ResponsiveLayoutModule,v as RowComponent,ge as SelectRangeModule,he as SelectRowModule,ue as SortModule,Ge as Tabulator,Ue as TabulatorFull,be as TooltipModule,ve as ValidateModule}; -//# sourceMappingURL=tabulator_esm.min.js.map diff --git a/tmp/tabulator-5.6.1/dist/js/tabulator_esm.min.js.map b/tmp/tabulator-5.6.1/dist/js/tabulator_esm.min.js.map deleted file mode 100644 index b4bd0f8..0000000 --- a/tmp/tabulator-5.6.1/dist/js/tabulator_esm.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tabulator_esm.min.js","sources":["../../src/js/core/CoreFeature.js","../../src/js/core/tools/Helpers.js","../../src/js/core/tools/Popup.js","../../src/js/core/Module.js","../../src/js/modules/Accessor/Accessor.js","../../src/js/modules/Accessor/defaults/accessors.js","../../src/js/modules/Ajax/defaults/urlGenerator.js","../../src/js/modules/Ajax/defaults/contentTypeFormatters.js","../../src/js/modules/Ajax/Ajax.js","../../src/js/modules/Ajax/defaults/config.js","../../src/js/modules/Ajax/defaults/loaderPromise.js","../../src/js/modules/Clipboard/Clipboard.js","../../src/js/modules/Clipboard/defaults/pasteActions.js","../../src/js/modules/Clipboard/defaults/pasteParsers.js","../../src/js/modules/ColumnCalcs/CalcComponent.js","../../src/js/core/cell/CellComponent.js","../../src/js/core/cell/Cell.js","../../src/js/core/column/ColumnComponent.js","../../src/js/core/column/defaults/options.js","../../src/js/core/column/Column.js","../../src/js/core/row/RowComponent.js","../../src/js/core/row/Row.js","../../src/js/modules/ColumnCalcs/defaults/calculations.js","../../src/js/modules/ColumnCalcs/ColumnCalcs.js","../../src/js/modules/DataTree/DataTree.js","../../src/js/modules/Download/defaults/downloaders.js","../../src/js/modules/Download/defaults/downloaders/csv.js","../../src/js/modules/Download/defaults/downloaders/json.js","../../src/js/modules/Download/defaults/downloaders/jsonLines.js","../../src/js/modules/Download/defaults/downloaders/pdf.js","../../src/js/modules/Download/defaults/downloaders/xlsx.js","../../src/js/modules/Download/defaults/downloaders/html.js","../../src/js/modules/Download/Download.js","../../src/js/modules/Edit/inputMask.js","../../src/js/modules/Edit/List.js","../../src/js/modules/Edit/defaults/editors.js","../../src/js/modules/Edit/defaults/editors/input.js","../../src/js/modules/Edit/defaults/editors/textarea.js","../../src/js/modules/Edit/defaults/editors/number.js","../../src/js/modules/Edit/defaults/editors/range.js","../../src/js/modules/Edit/defaults/editors/date.js","../../src/js/modules/Edit/defaults/editors/time.js","../../src/js/modules/Edit/defaults/editors/datetime.js","../../src/js/modules/Edit/defaults/editors/select.js","../../src/js/modules/Edit/defaults/editors/list.js","../../src/js/modules/Edit/defaults/editors/autocomplete.js","../../src/js/modules/Edit/defaults/editors/star.js","../../src/js/modules/Edit/defaults/editors/progress.js","../../src/js/modules/Edit/defaults/editors/tickCross.js","../../src/js/modules/Edit/Edit.js","../../src/js/modules/Export/ExportRow.js","../../src/js/modules/Export/ExportColumn.js","../../src/js/modules/Export/Export.js","../../src/js/modules/Filter/defaults/filters.js","../../src/js/modules/Filter/Filter.js","../../src/js/modules/Format/defaults/formatters.js","../../src/js/modules/Format/defaults/formatters/plaintext.js","../../src/js/modules/Format/defaults/formatters/html.js","../../src/js/modules/Format/defaults/formatters/textarea.js","../../src/js/modules/Format/defaults/formatters/money.js","../../src/js/modules/Format/defaults/formatters/link.js","../../src/js/modules/Format/defaults/formatters/image.js","../../src/js/modules/Format/defaults/formatters/tickCross.js","../../src/js/modules/Format/defaults/formatters/datetime.js","../../src/js/modules/Format/defaults/formatters/datetimediff.js","../../src/js/modules/Format/defaults/formatters/lookup.js","../../src/js/modules/Format/defaults/formatters/star.js","../../src/js/modules/Format/defaults/formatters/traffic.js","../../src/js/modules/Format/defaults/formatters/progress.js","../../src/js/modules/Format/defaults/formatters/color.js","../../src/js/modules/Format/defaults/formatters/buttonTick.js","../../src/js/modules/Format/defaults/formatters/buttonCross.js","../../src/js/modules/Format/defaults/formatters/rownum.js","../../src/js/modules/Format/defaults/formatters/handle.js","../../src/js/modules/Format/defaults/formatters/responsiveCollapse.js","../../src/js/modules/Format/defaults/formatters/rowSelection.js","../../src/js/modules/Format/Format.js","../../src/js/modules/FrozenColumns/FrozenColumns.js","../../src/js/modules/FrozenRows/FrozenRows.js","../../src/js/modules/GroupRows/GroupComponent.js","../../src/js/modules/GroupRows/Group.js","../../src/js/modules/GroupRows/GroupRows.js","../../src/js/modules/History/History.js","../../src/js/modules/History/defaults/undoers.js","../../src/js/modules/History/defaults/redoers.js","../../src/js/modules/HtmlTableImport/HtmlTableImport.js","../../src/js/modules/Import/defaults/importers.js","../../src/js/modules/Import/defaults/importers/csv.js","../../src/js/modules/Import/defaults/importers/json.js","../../src/js/modules/Import/defaults/importers/array.js","../../src/js/modules/Import/Import.js","../../src/js/modules/Interaction/Interaction.js","../../src/js/modules/Keybindings/Keybindings.js","../../src/js/modules/Keybindings/defaults/bindings.js","../../src/js/modules/Keybindings/defaults/actions.js","../../src/js/modules/Menu/Menu.js","../../src/js/modules/MoveColumns/MoveColumns.js","../../src/js/modules/MoveRows/MoveRows.js","../../src/js/modules/Mutator/Mutator.js","../../src/js/modules/Mutator/defaults/mutators.js","../../src/js/modules/Page/defaults/pageCounters.js","../../src/js/modules/Page/defaults/pageCounters/rows.js","../../src/js/modules/Page/defaults/pageCounters/pages.js","../../src/js/modules/Page/Page.js","../../src/js/modules/Persistence/defaults/readers.js","../../src/js/modules/Persistence/defaults/writers.js","../../src/js/modules/Persistence/Persistence.js","../../src/js/modules/Popup/Popup.js","../../src/js/modules/Print/Print.js","../../src/js/modules/ReactiveData/ReactiveData.js","../../src/js/modules/ResizeColumns/ResizeColumns.js","../../src/js/modules/ResizeRows/ResizeRows.js","../../src/js/modules/ResizeTable/ResizeTable.js","../../src/js/modules/ResponsiveLayout/ResponsiveLayout.js","../../src/js/modules/SelectRow/SelectRow.js","../../src/js/modules/Sort/defaults/sorters/datetime.js","../../src/js/modules/Sort/defaults/sorters.js","../../src/js/modules/Sort/defaults/sorters/number.js","../../src/js/modules/Sort/defaults/sorters/string.js","../../src/js/modules/Sort/defaults/sorters/date.js","../../src/js/modules/Sort/defaults/sorters/time.js","../../src/js/modules/Sort/defaults/sorters/boolean.js","../../src/js/modules/Sort/defaults/sorters/array.js","../../src/js/modules/Sort/defaults/sorters/exists.js","../../src/js/modules/Sort/defaults/sorters/alphanum.js","../../src/js/modules/Sort/Sort.js","../../src/js/modules/SelectRange/RangeComponent.js","../../src/js/modules/SelectRange/Range.js","../../src/js/modules/SelectRange/SelectRange.js","../../src/js/modules/Tooltip/Tooltip.js","../../src/js/modules/Validate/defaults/validators.js","../../src/js/modules/Validate/Validate.js","../../src/js/core/tools/OptionsList.js","../../src/js/core/rendering/Renderer.js","../../src/js/core/rendering/renderers/BasicHorizontal.js","../../src/js/core/rendering/renderers/VirtualDomHorizontal.js","../../src/js/core/ColumnManager.js","../../src/js/core/rendering/renderers/BasicVertical.js","../../src/js/core/rendering/renderers/VirtualDomVertical.js","../../src/js/core/RowManager.js","../../src/js/core/FooterManager.js","../../src/js/core/tools/InteractionMonitor.js","../../src/js/core/tools/ComponentFunctionBinder.js","../../src/js/core/tools/DataLoader.js","../../src/js/core/tools/ExternalEventBus.js","../../src/js/core/tools/InternalEventBus.js","../../src/js/core/tools/DeprecationAdvisor.js","../../src/js/core/tools/TableRegistry.js","../../src/js/modules/Layout/defaults/modes/fitDataGeneral.js","../../src/js/modules/Layout/defaults/modes.js","../../src/js/modules/Layout/defaults/modes/fitData.js","../../src/js/modules/Layout/defaults/modes/fitDataStretch.js","../../src/js/modules/Layout/defaults/modes/fitColumns.js","../../src/js/modules/Layout/Layout.js","../../src/js/modules/Localize/Localize.js","../../src/js/modules/Localize/defaults/langs.js","../../src/js/modules/Comms/Comms.js","../../src/js/core/tools/ModuleBinder.js","../../src/js/core/tools/Alert.js","../../src/js/core/Tabulator.js","../../src/js/core/defaults/options.js","../../src/js/core/TabulatorFull.js","../../src/js/core/row/PseudoRow.js"],"sourcesContent":["export default class CoreFeature{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\t}\n\n\t//////////////////////////////////////////\n\t/////////////// DataLoad /////////////////\n\t//////////////////////////////////////////\n\n\treloadData(data, silent, columnsChanged){\n\t\treturn this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);\n\t}\n\n\t//////////////////////////////////////////\n\t///////////// Localization ///////////////\n\t//////////////////////////////////////////\n\n\tlangText(){\n\t\treturn this.table.modules.localize.getText(...arguments);\n\t}\n\n\tlangBind(){\n\t\treturn this.table.modules.localize.bind(...arguments);\n\t}\n\n\tlangLocale(){\n\t\treturn this.table.modules.localize.getLocale(...arguments);\n\t}\n\n\n\t//////////////////////////////////////////\n\t////////// Inter Table Comms /////////////\n\t//////////////////////////////////////////\n\n\tcommsConnections(){\n\t\treturn this.table.modules.comms.getConnections(...arguments);\n\t}\n\n\tcommsSend(){\n\t\treturn this.table.modules.comms.send(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Layout /////////////////\n\t//////////////////////////////////////////\n\n\tlayoutMode(){\n\t\treturn this.table.modules.layout.getMode();\n\t}\n\n\tlayoutRefresh(force){\n\t\treturn this.table.modules.layout.layout(force);\n\t}\n\n\n\t//////////////////////////////////////////\n\t/////////////// Event Bus ////////////////\n\t//////////////////////////////////////////\n\n\tsubscribe(){\n\t\treturn this.table.eventBus.subscribe(...arguments);\n\t}\n\n\tunsubscribe(){\n\t\treturn this.table.eventBus.unsubscribe(...arguments);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.table.eventBus.subscribed(key);\n\t}\n\n\tsubscriptionChange(){\n\t\treturn this.table.eventBus.subscriptionChange(...arguments);\n\t}\n\n\tdispatch(){\n\t\treturn this.table.eventBus.dispatch(...arguments);\n\t}\n\n\tchain(){\n\t\treturn this.table.eventBus.chain(...arguments);\n\t}\n\n\tconfirm(){\n\t\treturn this.table.eventBus.confirm(...arguments);\n\t}\n\n\tdispatchExternal(){\n\t\treturn this.table.externalEvents.dispatch(...arguments);\n\t}\n\n\tsubscribedExternal(key){\n\t\treturn this.table.externalEvents.subscribed(key);\n\t}\n\n\tsubscriptionChangeExternal(){\n\t\treturn this.table.externalEvents.subscriptionChange(...arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t//////////////// Options /////////////////\n\t//////////////////////////////////////////\n\n\toptions(key){\n\t\treturn this.table.options[key];\n\t}\n\n\tsetOption(key, value){\n\t\tif(typeof value !== \"undefined\"){\n\t\t\tthis.table.options[key] = value;\n\t\t}\n\n\t\treturn this.table.options[key];\n\t}\n\n\t//////////////////////////////////////////\n\t/////////// Deprecation Checks ///////////\n\t//////////////////////////////////////////\n\n\tdeprecationCheck(oldOption, newOption, convert){\n\t\treturn this.table.deprecationAdvisor.check(oldOption, newOption, convert);\n\t}\n\n\tdeprecationCheckMsg(oldOption, msg){\n\t\treturn this.table.deprecationAdvisor.checkMsg(oldOption, msg);\n\t}\n\n\tdeprecationMsg(msg){\n\t\treturn this.table.deprecationAdvisor.msg(msg);\n\t}\n\t//////////////////////////////////////////\n\t//////////////// Modules /////////////////\n\t//////////////////////////////////////////\n\n\tmodule(key){\n\t\treturn this.table.module(key);\n\t}\n}","export default class Helpers{\n\n\tstatic elVisible(el){\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t}\n\n\tstatic 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\tstatic retrieveNestedData(separator, field, data){\n\t\tvar structure = separator ? field.split(separator) : [field],\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdata = data[structure[i]];\n\n\t\t\toutput = data;\n\n\t\t\tif(!data){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tstatic deepClone(obj, clone, list = []){\n\t\tvar objectProto = {}.__proto__,\n\t\tarrayProto = [].__proto__;\n\n\t\tif (!clone){\n\t\t\tclone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\t\t}\n\n\t\tfor(var i in obj) {\n\t\t\tlet subject = obj[i],\n\t\t\tmatch, copy;\n\n\t\t\tif(subject != null && typeof subject === \"object\" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){\n\t\t\t\tmatch = list.findIndex((item) => {\n\t\t\t\t\treturn item.subject === subject;\n\t\t\t\t});\n\n\t\t\t\tif(match > -1){\n\t\t\t\t\tclone[i] = list[match].copy;\n\t\t\t\t}else{\n\t\t\t\t\tcopy = Object.assign(Array.isArray(subject) ? [] : {}, subject);\n\n\t\t\t\t\tlist.unshift({subject, copy});\n\n\t\t\t\t\tclone[i] = this.deepClone(subject, copy, list);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn clone;\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\nimport Helpers from './Helpers.js';\n\nexport default class Popup extends CoreFeature{\n\tconstructor(table, element, parent){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = element;\n\t\tthis.container = this._lookupContainer();\n\t\t\n\t\tthis.parent = parent;\n\t\t\n\t\tthis.reversedX = false;\n\t\tthis.childPopup = null;\n\t\tthis.blurable = false;\n\t\tthis.blurCallback = null;\n\t\tthis.blurEventsBound = false;\n\t\tthis.renderedCallback = null;\n\t\t\n\t\tthis.visible = false;\n\t\tthis.hideable = true;\n\t\t\n\t\tthis.element.classList.add(\"tabulator-popup-container\");\n\t\t\n\t\tthis.blurEvent = this.hide.bind(this, false);\n\t\tthis.escEvent = this._escapeCheck.bind(this);\n\t\t\n\t\tthis.destroyBinding = this.tableDestroyed.bind(this);\n\t\tthis.destroyed = false;\n\t}\n\t\n\ttableDestroyed(){\n\t\tthis.destroyed = true;\n\t\tthis.hide(true);\n\t}\n\t\n\t_lookupContainer(){\n\t\tvar container = this.table.options.popupContainer;\n\t\t\n\t\tif(typeof container === \"string\"){\n\t\t\tcontainer = document.querySelector(container);\n\t\t\t\n\t\t\tif(!container){\n\t\t\t\tconsole.warn(\"Menu Error - no container element found matching selector:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t\t}\n\t\t}else if (container === true){\n\t\t\tcontainer = this.table.element;\n\t\t}\n\t\t\n\t\tif(container && !this._checkContainerIsParent(container)){\n\t\t\tcontainer = false;\n\t\t\tconsole.warn(\"Menu Error - container element does not contain this table:\", this.table.options.popupContainer , \"(defaulting to document body)\");\n\t\t}\n\t\t\n\t\tif(!container){\n\t\t\tcontainer = document.body;\n\t\t}\n\t\t\n\t\treturn container;\n\t}\n\t\n\t_checkContainerIsParent(container, element = this.table.element){\n\t\tif(container === element){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false;\n\t\t}\n\t}\n\t\n\trenderCallback(callback){\n\t\tthis.renderedCallback = callback;\n\t}\n\t\n\tcontainerEventCoords(e){\n\t\tvar touch = !(e instanceof MouseEvent);\n\t\t\n\t\tvar x = touch ? e.touches[0].pageX : e.pageX;\n\t\tvar y = touch ? e.touches[0].pageY : e.pageY;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tlet parentOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\tx -= parentOffset.left;\n\t\t\ty -= parentOffset.top;\n\t\t}\n\t\t\n\t\treturn {x, y};\n\t}\n\t\n\telementPositionCoords(element, position = \"right\"){\n\t\tvar offset = Helpers.elOffset(element),\n\t\tcontainerOffset, x, y;\n\t\t\n\t\tif(this.container !== document.body){\n\t\t\tcontainerOffset = Helpers.elOffset(this.container);\n\t\t\t\n\t\t\toffset.left -= containerOffset.left;\n\t\t\toffset.top -= containerOffset.top;\n\t\t}\n\t\t\n\t\tswitch(position){\n\t\t\tcase \"right\":\n\t\t\t\tx = offset.left + element.offsetWidth;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"bottom\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top + element.offsetHeight;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"left\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top - 1;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"top\":\n\t\t\t\tx = offset.left;\n\t\t\t\ty = offset.top;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"center\":\n\t\t\t\tx = offset.left + (element.offsetWidth / 2);\n\t\t\t\ty = offset.top + (element.offsetHeight / 2);\n\t\t\t\tbreak;\n\t\t\t\n\t\t}\n\t\t\n\t\treturn {x, y, offset};\n\t}\n\t\n\tshow(origin, position){\n\t\tvar x, y, parentEl, parentOffset, coords;\n\t\t\n\t\tif(this.destroyed || this.table.destroyed){\n\t\t\treturn this;\n\t\t}\n\t\t\n\t\tif(origin instanceof HTMLElement){\n\t\t\tparentEl = origin;\n\t\t\tcoords = this.elementPositionCoords(origin, position);\n\t\t\t\n\t\t\tparentOffset = coords.offset;\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t}else if(typeof origin === \"number\"){\n\t\t\tparentOffset = {top:0, left:0};\n\t\t\tx = origin;\n\t\t\ty = position;\n\t\t}else{\n\t\t\tcoords = this.containerEventCoords(origin);\n\t\t\t\n\t\t\tx = coords.x;\n\t\t\ty = coords.y;\n\t\t\t\n\t\t\tthis.reversedX = false;\n\t\t}\n\t\t\n\t\tthis.element.style.top = y + \"px\";\n\t\tthis.element.style.left = x + \"px\";\n\t\t\n\t\tthis.container.appendChild(this.element);\n\t\t\n\t\tif(typeof this.renderedCallback === \"function\"){\n\t\t\tthis.renderedCallback();\n\t\t}\n\t\t\n\t\tthis._fitToScreen(x, y, parentEl, parentOffset, position);\n\t\t\n\t\tthis.visible = true;\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.destroyBinding);\n\t\t\n\t\tthis.element.addEventListener(\"mousedown\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_fitToScreen(x, y, parentEl, parentOffset, position){\n\t\tvar scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;\n\t\t\n\t\t//move menu to start on right edge if it is too close to the edge of the screen\n\t\tif((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){\n\t\t\tthis.element.style.left = \"\";\n\t\t\t\n\t\t\tif(parentEl){\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - parentOffset.left) + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.element.style.right = (this.container.offsetWidth - x) + \"px\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.reversedX = true;\n\t\t}\n\t\t\n\t\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\t\tif((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) {\n\t\t\tif(parentEl){\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"bottom\":\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + \"px\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + \"px\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisVisible(){\n\t\treturn this.visible;\n\t}\n\t\n\thideOnBlur(callback){\n\t\tthis.blurable = true;\n\t\t\n\t\tif(this.visible){\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.table.rowManager.element.addEventListener(\"scroll\", this.blurEvent);\n\t\t\t\t\tthis.subscribe(\"cell-editing\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"click\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\t\twindow.addEventListener(\"resize\", this.blurEvent);\n\t\t\t\t\tdocument.body.addEventListener(\"keydown\", this.escEvent);\n\n\t\t\t\t\tthis.blurEventsBound = true;\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\t\n\t\t\tthis.blurCallback = callback;\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\t_escapeCheck(e){\n\t\tif(e.keyCode == 27){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\t\n\tblockHide(){\n\t\tthis.hideable = false;\n\t}\n\t\n\trestoreHide(){\n\t\tthis.hideable = true;\n\t}\n\t\n\thide(silent = false){\n\t\tif(this.visible && this.hideable){\n\t\t\tif(this.blurable && this.blurEventsBound){\n\t\t\t\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\t\t\t\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\t\t\t\tdocument.body.removeEventListener(\"mousedown\", this.blurEvent);\n\t\t\t\twindow.removeEventListener(\"resize\", this.blurEvent);\n\t\t\t\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n\t\t\t\tthis.unsubscribe(\"cell-editing\", this.blurEvent);\n\n\t\t\t\tthis.blurEventsBound = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.childPopup){\n\t\t\t\tthis.childPopup.hide();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.parent){\n\t\t\t\tthis.parent.childPopup = null;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.visible = false;\n\t\t\t\n\t\t\tif(this.blurCallback && !silent){\n\t\t\t\tthis.blurCallback();\n\t\t\t}\n\t\t\t\n\t\t\tthis.unsubscribe(\"table-destroy\", this.destroyBinding);\n\t\t}\n\t\t\n\t\treturn this;\n\t}\n\t\n\tchild(element){\n\t\tif(this.childPopup){\n\t\t\tthis.childPopup.hide();\n\t\t}\n\t\t\n\t\tthis.childPopup = new Popup(this.table, element, this);\n\t\t\n\t\treturn this.childPopup;\n\t}\n}","import CoreFeature from './CoreFeature.js';\nimport Popup from './tools/Popup.js';\n\nclass Module extends CoreFeature{\n\t\n\tconstructor(table, name){\n\t\tsuper(table);\n\t\t\n\t\tthis._handler = null;\n\t}\n\t\n\tinitialize(){\n\t\t// setup module when table is initialized, to be overridden in module\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Options Registration ///////\n\t///////////////////////////////////\n\t\n\tregisterTableOption(key, value){\n\t\tthis.table.optionsList.register(key, value);\n\t}\n\t\n\tregisterColumnOption(key, value){\n\t\tthis.table.columnManager.optionsList.register(key, value);\n\t}\n\t\n\t///////////////////////////////////\n\t/// Public Function Registration ///\n\t///////////////////////////////////\n\t\n\tregisterTableFunction(name, func){\n\t\tif(typeof this.table[name] === \"undefined\"){\n\t\t\tthis.table[name] = (...args) => {\n\t\t\t\tthis.table.initGuard(name);\n\t\t\t\t\n\t\t\t\treturn func(...args);\n\t\t\t};\n\t\t}else{\n\t\t\tconsole.warn(\"Unable to bind table function, name already in use\", name);\n\t\t}\n\t}\n\t\n\tregisterComponentFunction(component, func, handler){\n\t\treturn this.table.componentFunctionBinder.bind(component, func, handler);\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Data Pipeline //////////\n\t///////////////////////////////////\n\t\n\tregisterDataHandler(handler, priority){\n\t\tthis.table.rowManager.registerDataPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tregisterDisplayHandler(handler, priority){\n\t\tthis.table.rowManager.registerDisplayPipelineHandler(handler, priority);\n\t\tthis._handler = handler;\n\t}\n\t\n\tdisplayRows(adjust){\n\t\tvar index = this.table.rowManager.displayRows.length - 1, \n\t\tlookupIndex;\n\t\t\n\t\tif(this._handler){\n\t\t\tlookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => {\n\t\t\t\treturn item.handler === this._handler;\n\t\t\t});\n\n\t\t\tif(lookupIndex > -1){\n\t\t\t\tindex = lookupIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(adjust){\n\t\t\tindex = index + adjust;\n\t\t}\n\n\t\tif(this._handler){\n\t\t\tif(index > -1){\n\t\t\t\treturn this.table.rowManager.getDisplayRows(index);\n\t\t\t}else{\n\t\t\t\treturn this.activeRows();\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\tactiveRows(){\n\t\treturn this.table.rowManager.activeRows;\n\t}\n\t\n\trefreshData(renderInPosition, handler){\n\t\tif(!handler){\n\t\t\thandler = this._handler;\n\t\t}\n\t\t\n\t\tif(handler){\n\t\t\tthis.table.rowManager.refreshActiveData(handler, false, renderInPosition);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Footer Management ////////\n\t///////////////////////////////////\n\t\n\tfooterAppend(element){\n\t\treturn this.table.footerManager.append(element);\n\t}\n\t\n\tfooterPrepend(element){\n\t\treturn this.table.footerManager.prepend(element);\n\t}\n\t\n\tfooterRemove(element){\n\t\treturn this.table.footerManager.remove(element);\n\t} \n\t\n\t///////////////////////////////////\n\t//////// Popups Management ////////\n\t///////////////////////////////////\n\t\n\tpopup(menuEl, menuContainer){\n\t\treturn new Popup(this.table, menuEl, menuContainer);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Alert Management ////////\n\t///////////////////////////////////\n\t\n\talert(content, type){\n\t\treturn this.table.alertManager.alert(content, type);\n\t}\n\t\n\tclearAlert(){\n\t\treturn this.table.alertManager.clear();\n\t}\n\t\n}\n\nexport default Module;","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultAccessors from './defaults/accessors.js';\n\nclass Accessor extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n\n\t\tthis.registerColumnOption(\"accessor\");\n\t\tthis.registerColumnOption(\"accessorParams\");\n\t\tthis.registerColumnOption(\"accessorData\");\n\t\tthis.registerColumnOption(\"accessorDataParams\");\n\t\tthis.registerColumnOption(\"accessorDownload\");\n\t\tthis.registerColumnOption(\"accessorDownloadParams\");\n\t\tthis.registerColumnOption(\"accessorClipboard\");\n\t\tthis.registerColumnOption(\"accessorClipboardParams\");\n\t\tthis.registerColumnOption(\"accessorPrint\");\n\t\tthis.registerColumnOption(\"accessorPrintParams\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutput\");\n\t\tthis.registerColumnOption(\"accessorHtmlOutputParams\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-retrieve\", this.transformRow.bind(this));\n\t}\n\n\t//initialize column accessor\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\taccessor;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\taccessor = this.lookupAccessor(column.definition[key]);\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\taccessor:accessor,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.accessor = config;\n\t\t}\n\t}\n\n\tlookupAccessor(value){\n\t\tvar accessor = false;\n\n\t\t//set column accessor\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Accessor.accessors[value]){\n\t\t\t\t\taccessor = Accessor.accessors[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\taccessor = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn accessor;\n\t}\n\n\t//apply accessor to row\n\ttransformRow(row, type){\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\trowComponent = row.getComponent();\n\n\t\t//clone data object with deep copy to isolate internal data from returned result\n\t\tvar data = Helpers.deepClone(row.data || {});\n\n\t\tthis.table.columnManager.traverse(function(column){\n\t\t\tvar value, accessor, params, colComponent;\n\n\t\t\tif(column.modules.accessor){\n\n\t\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\t\tif(accessor){\n\t\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\t\tif(value != \"undefined\"){\n\t\t\t\t\t\tcolComponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n//load defaults\nAccessor.moduleName = \"accessor\";\nAccessor.accessors = defaultAccessors;\n\nexport default Accessor;","export default {};","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(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\nfunction serializeParams(params){\n\tvar output = generateParamsList(params),\n\tencoded = [];\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\nexport default function(url, config, params){\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(\"?\") ? \"&\" : \"?\") + serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n}","function generateParamsList(data, prefix){\n\tvar output = [];\n\n\tprefix = prefix || \"\";\n\n\tif(Array.isArray(data)){\n\t\tdata.forEach((item, i) => {\n\t\t\toutput = output.concat(generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t}else if (typeof data === \"object\"){\n\t\tfor (var key in data){\n\t\t\toutput = output.concat(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\nexport default {\n\t\"json\":{\n\t\theaders:{\n\t\t\t'Content-Type': 'application/json',\n\t\t},\n\t\tbody:function(url, config, params){\n\t\t\treturn JSON.stringify(params);\n\t\t},\n\t},\n\t\"form\":{\n\t\theaders:{\n\t\t},\n\t\tbody:function(url, config, params){\n\n\t\t\tvar output = generateParamsList(params),\n\t\t\tform = 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};","import Module from '../../core/Module.js';\n\nimport defaultConfig from './defaults/config.js';\nimport defaultURLGenerator from './defaults/urlGenerator.js';\nimport defaultLoaderPromise from './defaults/loaderPromise.js';\nimport defaultContentTypeFormatters from './defaults/contentTypeFormatters.js';\n\nclass Ajax extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {}; //hold config object for ajax request\n\t\tthis.url = \"\"; //request URL\n\t\tthis.urlGenerator = false;\n\t\tthis.params = false; //request parameters\n\t\t\n\t\tthis.loaderPromise = false;\n\t\t\n\t\tthis.registerTableOption(\"ajaxURL\", false); //url for ajax loading\n\t\tthis.registerTableOption(\"ajaxURLGenerator\", false);\n\t\tthis.registerTableOption(\"ajaxParams\", {}); //params for ajax loading\n\t\tthis.registerTableOption(\"ajaxConfig\", \"get\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxContentType\", \"form\"); //ajax request type\n\t\tthis.registerTableOption(\"ajaxRequestFunc\", false); //promise function\n\t\t\n\t\tthis.registerTableOption(\"ajaxRequesting\", function(){});\n\t\tthis.registerTableOption(\"ajaxResponse\", false);\n\t\t\n\t\tthis.contentTypeFormatters = Ajax.contentTypeFormatters;\n\t}\n\t\n\t//initialize setup options\n\tinitialize(){\n\t\tthis.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise;\n\t\tthis.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator;\n\t\t\n\t\tif(this.table.options.ajaxURL){\n\t\t\tthis.setUrl(this.table.options.ajaxURL);\n\t\t}\n\n\n\t\tthis.setDefaultConfig(this.table.options.ajaxConfig);\n\t\t\n\t\tthis.registerTableFunction(\"getAjaxUrl\", this.getUrl.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-loading\", this.requestDataCheck.bind(this));\n\t\tthis.subscribe(\"data-params\", this.requestParams.bind(this));\n\t\tthis.subscribe(\"data-load\", this.requestData.bind(this));\n\t}\n\t\n\trequestParams(data, config, silent, params){\n\t\tvar ajaxParams = this.table.options.ajaxParams;\n\t\t\n\t\tif(ajaxParams){\n\t\t\tif(typeof ajaxParams === \"function\"){\n\t\t\t\tajaxParams = ajaxParams.call(this.table);\n\t\t\t}\n\t\t\t\n\t\t\tparams = Object.assign(Object.assign({}, ajaxParams), params);\n\t\t}\t\t\n\t\t\n\t\treturn params;\n\t}\n\t\n\trequestDataCheck(data, params, config, silent){\n\t\treturn !!((!data && this.url) || typeof data === \"string\");\n\t}\n\t\n\trequestData(url, params, config, silent, previousData){\n\t\tvar ajaxConfig;\n\t\t\n\t\tif(!previousData && this.requestDataCheck(url)){\n\t\t\tif(url){\n\t\t\t\tthis.setUrl(url);\n\t\t\t}\n\t\t\t\n\t\t\tajaxConfig = this.generateConfig(config);\n\t\t\t\n\t\t\treturn this.sendRequest(this.url, params, ajaxConfig);\n\t\t}else{\n\t\t\treturn previousData;\n\t\t}\n\t}\n\t\n\tsetDefaultConfig(config = {}){\n\t\tthis.config = Object.assign({}, Ajax.defaultConfig);\n\n\t\tif(typeof config == \"string\"){\n\t\t\tthis.config.method = config;\n\t\t}else{\n\t\t\tObject.assign(this.config, config);\n\t\t}\n\t}\n\t\n\t//load config object\n\tgenerateConfig(config = {}){\n\t\tvar ajaxConfig = Object.assign({}, this.config);\n\t\t\n\t\tif(typeof config == \"string\"){\n\t\t\tajaxConfig.method = config;\n\t\t}else{\n\t\t\tObject.assign(ajaxConfig, config);\n\t\t}\n\t\t\n\t\treturn ajaxConfig;\n\t}\n\t\n\t//set request url\n\tsetUrl(url){\n\t\tthis.url = url;\n\t}\n\t\n\t//get request url\n\tgetUrl(){\n\t\treturn this.url;\n\t}\n\t\n\t//send ajax request\n\tsendRequest(url, params, config){\n\t\tif(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){\n\t\t\treturn this.loaderPromise(url, config, params)\n\t\t\t\t.then((data)=>{\n\t\t\t\t\tif(this.table.options.ajaxResponse){\n\t\t\t\t\t\tdata = this.table.options.ajaxResponse.call(this.table, url, params, data);\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n}\n\nAjax.moduleName = \"ajax\";\n\n//load defaults\nAjax.defaultConfig = defaultConfig;\nAjax.defaultURLGenerator = defaultURLGenerator;\nAjax.defaultLoaderPromise = defaultLoaderPromise;\nAjax.contentTypeFormatters = defaultContentTypeFormatters;\n\nexport default Ajax;","export default {\n\tmethod: \"GET\",\n};","export default function(url, config, params){\n\tvar contentType;\n\n\treturn new Promise((resolve, reject) => {\n\t\t//set url\n\t\turl = this.urlGenerator.call(this.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 this.table.options.ajaxContentType === \"object\" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.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(this, url, config, params);\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", this.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif(url){\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\t\t\t\tif(typeof config.headers[\"Origin\"] === \"undefined\"){\n\t\t\t\t\tconfig.headers[\"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)\n\t\t\t\t.then((response)=>{\n\t\t\t\t\tif(response.ok) {\n\t\t\t\t\t\tresponse.json()\n\t\t\t\t\t\t\t.then((data)=>{\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t}).catch((error)=>{\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\t\treject(response);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error)=>{\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\t\treject(error);\n\t\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}","import Module from '../../core/Module.js';\n\nimport defaultPasteActions from './defaults/pasteActions.js';\nimport defaultPasteParsers from './defaults/pasteParsers.js';\n\nclass Clipboard extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = true;\n\t\tthis.pasteParser = function(){};\n\t\tthis.pasteAction = function(){};\n\t\tthis.customSelection = false;\n\t\tthis.rowRange = false;\n\t\tthis.blocked = true; //block copy actions not originating from this command\n\n\t\tthis.registerTableOption(\"clipboard\", false); //enable clipboard\n\t\tthis.registerTableOption(\"clipboardCopyStyled\", true); //formatted table data\n\t\tthis.registerTableOption(\"clipboardCopyConfig\", false); //clipboard config\n\t\tthis.registerTableOption(\"clipboardCopyFormatter\", false); //DEPRECATED - REMOVE in 5.0\n\t\tthis.registerTableOption(\"clipboardCopyRowRange\", \"active\"); //restrict clipboard to visible rows only\n\t\tthis.registerTableOption(\"clipboardPasteParser\", \"table\"); //convert pasted clipboard data to rows\n\t\tthis.registerTableOption(\"clipboardPasteAction\", \"insert\"); //how to insert pasted data into the table\n\n\t\tthis.registerColumnOption(\"clipboard\");\n\t\tthis.registerColumnOption(\"titleClipboard\");\n\t}\n\n\tinitialize(){\n\t\tthis.mode = this.table.options.clipboard;\n\n\t\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\t\tif(this.mode === true || this.mode === \"copy\"){\n\t\t\tthis.table.element.addEventListener(\"copy\", (e) => {\n\t\t\t\tvar plain, html, list;\n\n\t\t\t\tif(!this.blocked){\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif(this.customSelection){\n\t\t\t\t\t\tplain = this.customSelection;\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\n\t\t\t\t\t\tlist = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, \"clipboard\");\n\n\t\t\t\t\t\thtml = this.table.modules.export.generateHTMLTable(list);\n\t\t\t\t\t\tplain = html ? this.generatePlainContent(list) : \"\";\n\n\t\t\t\t\t\tif(this.table.options.clipboardCopyFormatter){\n\t\t\t\t\t\t\tplain = this.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\t\thtml = this.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\t\tif(html){\n\t\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchExternal(\"clipboardCopied\", plain, html);\n\n\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif(this.mode === true || this.mode === \"paste\"){\n\t\t\tthis.table.element.addEventListener(\"paste\", (e) => {\n\t\t\t\tthis.paste(e);\n\t\t\t});\n\t\t}\n\n\t\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\t\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n\n\t\tthis.registerTableFunction(\"copyToClipboard\", this.copy.bind(this));\n\t}\n\n\treset(){\n\t\tthis.blocked = true;\n\t\tthis.customSelection = false;\n\t}\n\n\tgeneratePlainContent (list) {\n\t\tvar output = [];\n\n\t\tlist.forEach((row) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach((col) => {\n\t\t\t\tvar value = \"\";\n\n\t\t\t\tif(col){\n\n\t\t\t\t\tif(row.type === \"group\"){\n\t\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t\t}\n\n\t\t\t\t\tif(col.value === null){\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\trowData.push(value);\n\t\t\t});\n\n\t\t\toutput.push(rowData.join(\"\\t\"));\n\t\t});\n\n\t\treturn output.join(\"\\n\");\n\t}\n\n\tcopy (range, internal) {\n\t\tvar sel, textRange;\n\t\tthis.blocked = false;\n\t\tthis.customSelection = false;\n\t\n\n\t\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNodeContents(this.table.element);\n\t\t\t\tsel = window.getSelection();\n\n\t\t\t\tif (sel.toString() && internal) {\n\t\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t\t}\n\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tsel.addRange(range);\n\t\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\t\ttextRange = document.body.createTextRange();\n\t\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\t\ttextRange.select();\n\t\t\t}\n\n\t\t\tdocument.execCommand('copy');\n\n\t\t\tif (sel) {\n\t\t\t\tsel.removeAllRanges();\n\t\t\t}\n\t\t}\n\t}\n\n\t//PASTE EVENT HANDLING\n\tsetPasteAction(action){\n\n\t\tswitch(typeof action){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteAction = Clipboard.pasteActions[action];\n\n\t\t\t\tif(!this.pasteAction){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteAction = action;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetPasteParser(parser){\n\t\tswitch(typeof parser){\n\t\t\tcase \"string\":\n\t\t\t\tthis.pasteParser = Clipboard.pasteParsers[parser];\n\n\t\t\t\tif(!this.pasteParser){\n\t\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tthis.pasteParser = parser;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpaste(e){\n\t\tvar data, rowData, rows;\n\n\t\tif(this.checkPasteOrigin(e)){\n\n\t\t\tdata = this.getPasteData(e);\n\n\t\t\trowData = this.pasteParser.call(this, data);\n\n\t\t\tif(rowData){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif(this.table.modExists(\"mutator\")){\n\t\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t\t}\n\n\t\t\t\trows = this.pasteAction.call(this, rowData);\n\n\t\t\t\tthis.dispatchExternal(\"clipboardPasted\", data, rowData, rows);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"clipboardPasteError\", data);\n\t\t\t}\n\t\t}\n\t}\n\n\tmutateData(data){\n\t\tvar output = [];\n\n\t\tif(Array.isArray(data)){\n\t\t\tdata.forEach((row) => {\n\t\t\t\toutput.push(this.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t\t});\n\t\t}else{\n\t\t\toutput = data;\n\t\t}\n\n\t\treturn output;\n\t}\n\n\n\tcheckPasteOrigin(e){\n\t\tvar valid = true;\n\t\tvar blocked = this.confirm(\"clipboard-paste\", [e]);\n\n\t\tif(blocked || ![\"DIV\", \"SPAN\"].includes(e.target.tagName)){\n\t\t\tvalid = false;\n\t\t}\n\n\t\treturn valid;\n\t}\n\n\tgetPasteData(e){\n\t\tvar data;\n\n\t\tif (window.clipboardData && window.clipboardData.getData) {\n\t\t\tdata = window.clipboardData.getData('Text');\n\t\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\t\tdata = e.clipboardData.getData('text/plain');\n\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t\t}\n\n\t\treturn data;\n\t}\n}\n\nClipboard.moduleName = \"clipboard\";\n\n//load defaults\nClipboard.pasteActions = defaultPasteActions;\nClipboard.pasteParsers = defaultPasteParsers;\n\nexport default Clipboard;","export default {\n\treplace:function(data){\n\t\treturn this.table.setData(data);\n\t},\n\tupdate:function(data){\n\t\treturn this.table.updateOrAddData(data);\n\t},\n\tinsert:function(data){\n\t\treturn this.table.addData(data);\n\t},\n\trange:function(data){\n\t\tvar rows = [],\n\t\trange = this.table.modules.selectRange.activeRange,\n\t\tsingleCell = false,\n\t\tbounds, startCell, startRow, rowWidth, dataLength;\n\n\t\tdataLength = data.length;\n\t\t\n\t\tif(range){\n\t\t\tbounds = range.getBounds();\n\t\t\tstartCell = bounds.start;\n\t\t\t\n\t\t\tif(bounds.start === bounds.end){\n\t\t\t\tsingleCell = true;\n\t\t\t}\n\t\t\t\n\t\t\tif(startCell){\n\t\t\t\trows = this.table.rowManager.activeRows.slice();\n\t\t\t\tstartRow = rows.indexOf(startCell.row);\n\n\t\t\t\tif(singleCell){\n\t\t\t\t\trowWidth = data.length;\n\t\t\t\t}else{\n\t\t\t\t\trowWidth = (rows.indexOf(bounds.end.row) - startRow) + 1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tif(startRow >-1){\n\t\t\t\t\tthis.table.blockRedraw();\n\t\t\t\t\t\n\t\t\t\t\trows = rows.slice(startRow, startRow + rowWidth);\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row, i) => {\n\t\t\t\t\t\trow.updateData(data[i % dataLength]);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.table.restoreRedraw();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n};","export default {\n\ttable:function(clipboard){\n\t\tvar data = [],\n\t\theaderFindSuccess = true,\n\t\tcolumns = this.table.columnManager.columns,\n\t\tcolumnMap = [],\n\t\trows = [];\n\t\t\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\t\t\n\t\tclipboard.forEach(function(row){\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\t\t\n\t\tif(data.length && !(data.length === 1 && data[0].length < 2)){\n\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\t\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\t\t\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\n\t\t\tdata.forEach(function(item){\n\t\t\t\tvar row = {};\n\t\t\t\t\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\t\t\t\t\n\t\t\t\trows.push(row);\n\t\t\t});\n\t\t\t\n\t\t\treturn rows;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t},\n\trange:function(clipboard){\n\t\tvar data = [],\n\t\trows = [],\n\t\trange = this.table.modules.selectRange.activeRange,\n\t\tsingleCell = false,\n\t\tbounds, startCell, colWidth, columnMap, startCol;\n\t\t\n\t\tif(range){\n\t\t\tbounds = range.getBounds();\n\t\t\tstartCell = bounds.start;\n\n\t\t\tif(bounds.start === bounds.end){\n\t\t\t\tsingleCell = true;\n\t\t\t}\n\t\t\t\n\t\t\tif(startCell){\n\t\t\t\t//get data from clipboard into array of columns and rows.\n\t\t\t\tclipboard = clipboard.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tclipboard.forEach(function(row){\n\t\t\t\t\tdata.push(row.split(\"\\t\"));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(data.length){\n\t\t\t\t\tcolumnMap = this.table.columnManager.getVisibleColumnsByIndex();\n\t\t\t\t\tstartCol = columnMap.indexOf(startCell.column);\n\n\t\t\t\t\tif(startCol > -1){\n\t\t\t\t\t\tif(singleCell){\n\t\t\t\t\t\t\tcolWidth = data[0].length;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcolWidth = (columnMap.indexOf(bounds.end.column) - startCol) + 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcolumnMap = columnMap.slice(startCol, startCol + colWidth);\n\n\t\t\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\t\t\tvar row = {};\n\t\t\t\t\t\t\tvar itemLength = item.length;\n\n\t\t\t\t\t\t\tcolumnMap.forEach(function(col, i){\n\t\t\t\t\t\t\t\trow[col.field] = item[i % itemLength];\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\trows.push(row);\t\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn rows;\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n};","class CalcComponent{\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n}\n\nexport default CalcComponent;","//public cell object\nexport default class CellComponent {\n\n\tconstructor (cell){\n\t\tthis._cell = cell;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._cell.table.componentFunctionBinder.handle(\"cell\", target._cell, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue(){\n\t\treturn this._cell.getValue();\n\t}\n\n\tgetOldValue(){\n\t\treturn this._cell.getOldValue();\n\t}\n\n\tgetInitialValue(){\n\t\treturn this._cell.initialValue;\n\t}\n\n\tgetElement(){\n\t\treturn this._cell.getElement();\n\t}\n\n\tgetRow(){\n\t\treturn this._cell.row.getComponent();\n\t}\n\n\tgetData(transform){\n\t\treturn this._cell.row.getData(transform);\n\t}\n\tgetType(){\n\t\treturn \"cell\";\n\t}\n\tgetField(){\n\t\treturn this._cell.column.getField();\n\t}\n\n\tgetColumn(){\n\t\treturn this._cell.column.getComponent();\n\t}\n\n\tsetValue(value, mutate){\n\t\tif(typeof mutate == \"undefined\"){\n\t\t\tmutate = true;\n\t\t}\n\n\t\tthis._cell.setValue(value, mutate);\n\t}\n\n\trestoreOldValue(){\n\t\tthis._cell.setValueActual(this._cell.getOldValue());\n\t}\n\n\trestoreInitialValue(){\n\t\tthis._cell.setValueActual(this._cell.initialValue);\n\t}\n\n\tcheckHeight(){\n\t\tthis._cell.checkHeight();\n\t}\n\n\tgetTable(){\n\t\treturn this._cell.table;\n\t}\n\n\t_getSelf(){\n\t\treturn this._cell;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport CellComponent from './CellComponent.js';\n\nexport default class Cell extends CoreFeature{\n\tconstructor(column, row){\n\t\tsuper(column.table);\n\n\t\tthis.table = column.table;\n\t\tthis.column = column;\n\t\tthis.row = row;\n\t\tthis.element = null;\n\t\tthis.value = null;\n\t\tthis.initialValue;\n\t\tthis.oldValue = null;\n\t\tthis.modules = {};\n\n\t\tthis.height = null;\n\t\tthis.width = null;\n\t\tthis.minWidth = null;\n\n\t\tthis.component = null;\n\n\t\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\t\tthis.build();\n\t}\n\n\t//////////////// Setup Functions /////////////////\n\t//generate element\n\tbuild(){\n\t\tthis.generateElement();\n\n\t\tthis.setWidth();\n\n\t\tthis._configureCell();\n\n\t\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\t\tthis.initialValue = this.value;\n\t}\n\n\tgenerateElement(){\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = \"tabulator-cell\";\n\t\tthis.element.setAttribute(\"role\", \"gridcell\");\n\t}\n\n\t_configureCell(){\n\t\tvar element = this.element,\n\t\tfield = this.column.getField(),\n\t\tvertAligns = {\n\t\t\ttop:\"flex-start\",\n\t\t\tbottom:\"flex-end\",\n\t\t\tmiddle:\"center\",\n\t\t},\n\t\thozAligns = {\n\t\t\tleft:\"flex-start\",\n\t\t\tright:\"flex-end\",\n\t\t\tcenter:\"center\",\n\t\t};\n\n\t\t//set text alignment\n\t\telement.style.textAlign = this.column.hozAlign;\n\n\t\tif(this.column.vertAlign){\n\t\t\telement.style.display = \"inline-flex\";\n\n\t\t\telement.style.alignItems = vertAligns[this.column.vertAlign] || \"\";\n\n\t\t\tif(this.column.hozAlign){\n\t\t\t\telement.style.justifyContent = hozAligns[this.column.hozAlign] || \"\";\n\t\t\t}\n\t\t}\n\n\t\tif(field){\n\t\t\telement.setAttribute(\"tabulator-field\", field);\n\t\t}\n\n\t\t//add class to cell if needed\n\t\tif(this.column.definition.cssClass){\n\t\t\tvar classNames = this.column.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\telement.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.dispatch(\"cell-init\", this);\n\n\t\t//hide cell if not visible\n\t\tif(!this.column.visible){\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//generate cell contents\n\t_generateContents(){\n\t\tvar val;\n\n\t\tval = this.chain(\"cell-format\", this, null, () => {\n\t\t\treturn this.element.innerHTML = this.value;\n\t\t});\n\n\t\tswitch(typeof val){\n\t\t\tcase \"object\":\n\t\t\t\tif(val instanceof Node){\n\n\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\t\t\t\tthis.element.appendChild(val);\n\t\t\t\t}else{\n\t\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\t\tif(val != null){\n\t\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\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\t\tthis.element.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element.innerHTML = val;\n\t\t}\n\t}\n\n\tcellRendered(){\n\t\tthis.dispatch(\"cell-rendered\", this);\n\t}\n\n\t//////////////////// Getters ////////////////////\n\tgetElement(containerOnly){\n\t\tif(!this.loaded){\n\t\t\tthis.loaded = true;\n\t\t\tif(!containerOnly){\n\t\t\t\tthis.layoutElement();\n\t\t\t}\n\t\t}\n\n\t\treturn this.element;\n\t}\n\n\tgetValue(){\n\t\treturn this.value;\n\t}\n\n\tgetOldValue(){\n\t\treturn this.oldValue;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tsetValue(value, mutate, force){\n\t\tvar changed = this.setValueProcessData(value, mutate, force);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-updated\", this);\n\n\t\t\tthis.cellRendered();\n\n\t\t\tif(this.column.definition.cellEdited){\n\t\t\t\tthis.column.definition.cellEdited.call(this.table, this.getComponent());\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"cellEdited\", this.getComponent());\n\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t}\n\t}\n\n\tsetValueProcessData(value, mutate, force){\n\t\tvar changed = false;\n\n\t\tif(this.value !== value || force){\n\n\t\t\tchanged = true;\n\n\t\t\tif(mutate){\n\t\t\t\tvalue = this.chain(\"cell-value-changing\", [this, value], null, value);\n\t\t\t}\n\t\t}\n\n\t\tthis.setValueActual(value);\n\n\t\tif(changed){\n\t\t\tthis.dispatch(\"cell-value-changed\", this);\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\tsetValueActual(value){\n\t\tthis.oldValue = this.value;\n\n\t\tthis.value = value;\n\n\t\tthis.dispatch(\"cell-value-save-before\", this);\n\n\t\tthis.column.setFieldValue(this.row.data, value);\n\n\t\tthis.dispatch(\"cell-value-save-after\", this);\n\n\t\tif(this.loaded){\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\tlayoutElement(){\n\t\tthis._generateContents();\n\n\t\tthis.dispatch(\"cell-layout\", this);\n\t}\n\n\tsetWidth(){\n\t\tthis.width = this.column.width;\n\t\tthis.element.style.width = this.column.widthStyled;\n\t}\n\n\tclearWidth(){\n\t\tthis.width = \"\";\n\t\tthis.element.style.width = \"\";\n\t}\n\n\tgetWidth(){\n\t\treturn this.width || this.element.offsetWidth;\n\t}\n\n\tsetMinWidth(){\n\t\tthis.minWidth = this.column.minWidth;\n\t\tthis.element.style.minWidth = this.column.minWidthStyled;\n\t}\n\n\tsetMaxWidth(){\n\t\tthis.maxWidth = this.column.maxWidth;\n\t\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n\t}\n\n\tcheckHeight(){\n\t\t// var height = this.element.css(\"height\");\n\t\tthis.row.reinitializeHeight();\n\t}\n\n\tclearHeight(){\n\t\tthis.element.style.height = \"\";\n\t\tthis.height = null;\n\n\t\tthis.dispatch(\"cell-height\", this, \"\");\n\t}\n\n\tsetHeight(){\n\t\tthis.height = this.row.height;\n\t\tthis.element.style.height = this.row.heightStyled;\n\n\t\tthis.dispatch(\"cell-height\", this, this.row.heightStyled);\n\t}\n\n\tgetHeight(){\n\t\treturn this.height || this.element.offsetHeight;\n\t}\n\n\tshow(){\n\t\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n\t}\n\n\thide(){\n\t\tthis.element.style.display = \"none\";\n\t}\n\n\tdelete(){\n\t\tthis.dispatch(\"cell-delete\", this);\n\n\t\tif(!this.table.rowManager.redrawBlock && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.element = false;\n\t\tthis.column.deleteCell(this);\n\t\tthis.row.deleteCell(this);\n\t\tthis.calcs = {};\n\t}\n\n\tgetIndex(){\n\t\treturn this.row.getCellIndex(this);\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new CellComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n}\n","import Column from './Column.js';\n\n//public column object\nexport default class ColumnComponent {\n\tconstructor (column){\n\t\tthis._column = column;\n\t\tthis.type = \"ColumnComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._column.table.componentFunctionBinder.handle(\"column\", target._column, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetElement(){\n\t\treturn this._column.getElement();\n\t}\n\n\tgetDefinition(){\n\t\treturn this._column.getDefinition();\n\t}\n\n\tgetField(){\n\t\treturn this._column.getField();\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this._column.getTitleDownload();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._column.cells.forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tisVisible(){\n\t\treturn this._column.visible;\n\t}\n\n\tshow(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.show();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.show();\n\t\t}\n\t}\n\n\thide(){\n\t\tif(this._column.isGroup){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\tcolumn.hide();\n\t\t\t});\n\t\t}else{\n\t\t\tthis._column.hide();\n\t\t}\n\t}\n\n\ttoggle(){\n\t\tif(this._column.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tdelete(){\n\t\treturn this._column.delete();\n\t}\n\n\tgetSubColumns(){\n\t\tvar output = [];\n\n\t\tif(this._column.columns.length){\n\t\t\tthis._column.columns.forEach(function(column){\n\t\t\t\toutput.push(column.getComponent());\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetParentColumn(){\n\t\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n\t}\n\n\t_getSelf(){\n\t\treturn this._column;\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);\n\t}\n\n\tgetTable(){\n\t\treturn this._column.table;\n\t}\n\n\tmove(to, after){\n\t\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\t\tif(toColumn){\n\t\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t}\n\n\tgetNextColumn(){\n\t\tvar nextCol = this._column.nextColumn();\n\n\t\treturn nextCol ? nextCol.getComponent() : false;\n\t}\n\n\tgetPrevColumn(){\n\t\tvar prevCol = this._column.prevColumn();\n\n\t\treturn prevCol ? prevCol.getComponent() : false;\n\t}\n\n\tupdateDefinition(updates){\n\t\treturn this._column.updateDefinition(updates);\n\t}\n\n\tgetWidth(){\n\t\treturn this._column.getWidth();\n\t}\n\n\tsetWidth(width){\n\t\tvar result;\n\n\t\tif(width === true){\n\t\t\tresult = this._column.reinitializeWidth(true);\n\t\t}else{\n\t\t\tresult = this._column.setWidth(width);\n\t\t}\n\n\t\tthis._column.table.columnManager.rerenderColumns(true);\n\n\t\treturn result;\n\t}\n}","export default {\n\t\"title\": undefined,\n\t\"field\": undefined,\n\t\"columns\": undefined,\n\t\"visible\": undefined,\n\t\"hozAlign\": undefined,\n\t\"vertAlign\": undefined,\n\t\"width\": undefined,\n\t\"minWidth\": 40,\n\t\"maxWidth\": undefined,\n\t\"maxInitialWidth\": undefined,\n\t\"cssClass\": undefined,\n\t\"variableHeight\": undefined,\n\t\"headerVertical\": undefined,\n\t\"headerHozAlign\": undefined,\n\t\"headerWordWrap\": false,\n\t\"editableTitle\": undefined,\n};","import CoreFeature from '../CoreFeature.js';\nimport ColumnComponent from './ColumnComponent.js';\nimport defaultOptions from './defaults/options.js';\n\nimport Cell from '../cell/Cell.js';\n\nclass Column extends CoreFeature{\n\n\tconstructor(def, parent){\n\t\tsuper(parent.table);\n\n\t\tthis.definition = def; //column definition\n\t\tthis.parent = parent; //hold parent object\n\t\tthis.type = \"column\"; //type of element\n\t\tthis.columns = []; //child columns\n\t\tthis.cells = []; //cells bound to this column\n\t\tthis.element = this.createElement(); //column header element\n\t\tthis.contentElement = false;\n\t\tthis.titleHolderElement = false;\n\t\tthis.titleElement = false;\n\t\tthis.groupElement = this.createGroupElement(); //column group holder element\n\t\tthis.isGroup = false;\n\t\tthis.hozAlign = \"\"; //horizontal text alignment\n\t\tthis.vertAlign = \"\"; //vert text alignment\n\n\t\t//multi dimensional filed handling\n\t\tthis.field =\"\";\n\t\tthis.fieldStructure = \"\";\n\t\tthis.getFieldValue = \"\";\n\t\tthis.setFieldValue = \"\";\n\n\t\tthis.titleDownload = null;\n\t\tthis.titleFormatterRendered = false;\n\n\t\tthis.mapDefinitions();\n\n\t\tthis.setField(this.definition.field);\n\n\t\tthis.modules = {}; //hold module variables;\n\n\t\tthis.width = null; //column width\n\t\tthis.widthStyled = \"\"; //column width pre-styled to improve render efficiency\n\t\tthis.maxWidth = null; //column maximum width\n\t\tthis.maxWidthStyled = \"\"; //column maximum pre-styled to improve render efficiency\n\t\tthis.maxInitialWidth = null;\n\t\tthis.minWidth = null; //column minimum width\n\t\tthis.minWidthStyled = \"\"; //column minimum pre-styled to improve render efficiency\n\t\tthis.widthFixed = false; //user has specified a width for this column\n\n\t\tthis.visible = true; //default visible state\n\n\t\tthis.component = null;\n\n\t\t//initialize column\n\t\tif(this.definition.columns){\n\n\t\t\tthis.isGroup = true;\n\n\t\t\tthis.definition.columns.forEach((def, i) => {\n\t\t\t\tvar newCol = new Column(def, this);\n\t\t\t\tthis.attachColumn(newCol);\n\t\t\t});\n\n\t\t\tthis.checkColumnVisibility();\n\t\t}else{\n\t\t\tparent.registerColumnField(this);\n\t\t}\n\n\t\tthis._initialize();\n\t}\n\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.setAttribute(\"role\", \"columnheader\");\n\t\tel.setAttribute(\"aria-sort\", \"none\");\n\n\t\tswitch(this.table.options.columnHeaderVertAlign){\n\t\t\tcase \"middle\":\n\t\t\t\tel.style.justifyContent = \"center\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tel.style.justifyContent = \"flex-end\";\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn el;\n\t}\n\n\tcreateGroupElement (){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-col-group-cols\");\n\n\t\treturn el;\n\t}\n\n\tmapDefinitions(){\n\t\tvar defaults = this.table.options.columnDefaults;\n\n\t\t//map columnDefaults onto column definitions\n\t\tif(defaults){\n\t\t\tfor(let key in defaults){\n\t\t\t\tif(typeof this.definition[key] === \"undefined\"){\n\t\t\t\t\tthis.definition[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition);\n\t}\n\n\tcheckDefinition(){\n\t\tObject.keys(this.definition).forEach((key) => {\n\t\t\tif(Column.defaultOptionList.indexOf(key) === -1){\n\t\t\t\tconsole.warn(\"Invalid column definition option in '\" + (this.field || this.definition.title) + \"' column:\", key);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetField(field){\n\t\tthis.field = field;\n\t\tthis.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : [];\n\t\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\t\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n\t}\n\n\t//register column position with column manager\n\tregisterColumnPosition(column){\n\t\tthis.parent.registerColumnPosition(column);\n\t}\n\n\t//register column position with column manager\n\tregisterColumnField(column){\n\t\tthis.parent.registerColumnField(column);\n\t}\n\n\t//trigger position registration\n\treRegisterPosition(){\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolumn.reRegisterPosition();\n\t\t\t});\n\t\t}else{\n\t\t\tthis.registerColumnPosition(this);\n\t\t}\n\t}\n\n\t//build header element\n\t_initialize(){\n\t\tvar def = this.definition;\n\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\n\t\tif(def.headerVertical){\n\t\t\tthis.element.classList.add(\"tabulator-col-vertical\");\n\n\t\t\tif(def.headerVertical === \"flip\"){\n\t\t\t\tthis.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t\t}\n\t\t}\n\n\t\tthis.contentElement = this._buildColumnHeaderContent();\n\n\t\tthis.element.appendChild(this.contentElement);\n\n\t\tif(this.isGroup){\n\t\t\tthis._buildGroupHeader();\n\t\t}else{\n\t\t\tthis._buildColumnHeader();\n\t\t}\n\n\t\tthis.dispatch(\"column-init\", this);\n\t}\n\n\t//build header element for header\n\t_buildColumnHeader(){\n\t\tvar def = this.definition;\n\n\t\tthis.dispatch(\"column-layout\", this);\n\n\t\t//set column visibility\n\t\tif(typeof def.visible != \"undefined\"){\n\t\t\tif(def.visible){\n\t\t\t\tthis.show(true);\n\t\t\t}else{\n\t\t\t\tthis.hide(true);\n\t\t\t}\n\t\t}\n\n\t\t//assign additional css classes to column header\n\t\tif(def.cssClass){\n\t\t\tvar classNames = def.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tif(def.field){\n\t\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t\t}\n\n\t\t//set min width if present\n\t\tthis.setMinWidth(parseInt(def.minWidth));\n\n\t\tif (def.maxInitialWidth) {\n\t\t\tthis.maxInitialWidth = parseInt(def.maxInitialWidth);\n\t\t}\n\t\t\n\t\tif(def.maxWidth){\n\t\t\tthis.setMaxWidth(parseInt(def.maxWidth));\n\t\t}\n\n\t\tthis.reinitializeWidth();\n\n\t\t//set horizontal text alignment\n\t\tthis.hozAlign = this.definition.hozAlign;\n\t\tthis.vertAlign = this.definition.vertAlign;\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\t}\n\n\t_buildColumnHeaderContent(){\n\t\tvar contentElement = document.createElement(\"div\");\n\t\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\t\tthis.titleHolderElement = document.createElement(\"div\");\n\t\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\t\tcontentElement.appendChild(this.titleHolderElement);\n\n\t\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\t\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\t\treturn contentElement;\n\t}\n\n\t//build title element of column\n\t_buildColumnHeaderTitle(){\n\t\tvar def = this.definition;\n\n\t\tvar titleHolderElement = document.createElement(\"div\");\n\t\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\t\t\n\t\tif(def.headerWordWrap){\n\t\t\ttitleHolderElement.classList.add(\"tabulator-col-title-wrap\");\n\t\t}\n\n\t\tif(def.editableTitle){\n\t\t\tvar titleElement = document.createElement(\"input\");\n\t\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\t\ttitleElement.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttitleElement.focus();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\ttitleElement.addEventListener(\"change\", () => {\n\t\t\t\tdef.title = titleElement.value;\n\t\t\t\tthis.dispatchExternal(\"columnTitleChanged\", this.getComponent());\n\t\t\t});\n\n\t\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\ttitleElement.value = text || (def.title || \" \");\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\ttitleElement.value = def.title || \" \";\n\t\t\t}\n\n\t\t}else{\n\t\t\tif(def.field){\n\t\t\t\tthis.langBind(\"columns|\" + def.field, (text) => {\n\t\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, text || (def.title || \" \"));\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t\t}\n\t\t}\n\n\t\treturn titleHolderElement;\n\t}\n\n\t_formatColumnHeaderTitle(el, title){\n\t\tvar contents = this.chain(\"column-format\", [this, title, el], null, () => {\n\t\t\treturn title;\n\t\t});\n\n\t\tswitch(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\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t}\n\n\t//build header element for column group\n\t_buildGroupHeader(){\n\t\tthis.element.classList.add(\"tabulator-col-group\");\n\t\tthis.element.setAttribute(\"role\", \"columngroup\");\n\t\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t\t//asign additional css classes to column header\n\t\tif(this.definition.cssClass){\n\t\t\tvar classNames = this.definition.cssClass.split(\" \");\n\t\t\tclassNames.forEach((className) => {\n\t\t\t\tthis.element.classList.add(className);\n\t\t\t});\n\t\t}\n\n\t\tthis.titleElement.style.textAlign = this.definition.headerHozAlign;\n\n\t\tthis.element.appendChild(this.groupElement);\n\t}\n\n\t//flat field lookup\n\t_getFlatData(data){\n\t\treturn data[this.field];\n\t}\n\n\t//nested field lookup\n\t_getNestedData(data){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length,\n\t\toutput;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tdataObj = dataObj[structure[i]];\n\n\t\t\toutput = dataObj;\n\n\t\t\tif(!dataObj){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//flat field set\n\t_setFlatData(data, value){\n\t\tif(this.field){\n\t\t\tdata[this.field] = value;\n\t\t}\n\t}\n\n\t//nested field set\n\t_setNestedData(data, value){\n\t\tvar dataObj = data,\n\t\tstructure = this.fieldStructure,\n\t\tlength = structure.length;\n\n\t\tfor(let i = 0; i < length; i++){\n\n\t\t\tif(i == length -1){\n\t\t\t\tdataObj[structure[i]] = value;\n\t\t\t}else{\n\t\t\t\tif(!dataObj[structure[i]]){\n\t\t\t\t\tif(typeof value !== \"undefined\"){\n\t\t\t\t\t\tdataObj[structure[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\n\t\t\t\tdataObj = dataObj[structure[i]];\n\t\t\t}\n\t\t}\n\t}\n\n\t//attach column to this group\n\tattachColumn(column){\n\t\tif(this.groupElement){\n\t\t\tthis.columns.push(column);\n\t\t\tthis.groupElement.appendChild(column.getElement());\n\n\t\t\tcolumn.columnRendered();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t\t}\n\t}\n\n\t//vertically align header in column\n\tverticalAlign(alignment, height){\n\n\t\t//calculate height of column header and group holder element\n\t\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight);\n\t\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\t\tthis.element.style.height = parentHeight + \"px\";\n\n\t\tthis.dispatch(\"column-height\", this, this.element.style.height);\n\n\t\tif(this.isGroup){\n\t\t\tthis.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t}\n\n\t\t//vertically align cell contents\n\t\t// if(!this.isGroup && alignment !== \"top\"){\n\t\t// \tif(alignment === \"bottom\"){\n\t\t// \t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + \"px\";\n\t\t// \t}else{\n\t\t// \t\tthis.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + \"px\";\n\t\t// \t}\n\t\t// }\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.verticalAlign(alignment);\n\t\t});\n\t}\n\n\t//clear vertical alignment\n\tclearVerticalAlign(){\n\t\tthis.element.style.paddingTop = \"\";\n\t\tthis.element.style.height = \"\";\n\t\tthis.element.style.minHeight = \"\";\n\t\tthis.groupElement.style.minHeight = \"\";\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.clearVerticalAlign();\n\t\t});\n\n\t\tthis.dispatch(\"column-height\", this, \"\");\n\t}\n\n\t//// Retrieve Column Information ////\n\t//return column header element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return column group element\n\tgetGroupElement(){\n\t\treturn this.groupElement;\n\t}\n\n\t//return field name\n\tgetField(){\n\t\treturn this.field;\n\t}\n\n\tgetTitleDownload() {\n\t\treturn this.titleDownload;\n\t}\n\n\t//return the first column in a group\n\tgetFirstColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[0].getFirstColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return the last column in a group\n\tgetLastColumn(){\n\t\tif(!this.isGroup){\n\t\t\treturn this;\n\t\t}else{\n\t\t\tif(this.columns.length){\n\t\t\t\treturn this.columns[this.columns.length -1].getLastColumn();\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t//return all columns in a group\n\tgetColumns(traverse){\n\t\tvar columns = [];\n\n\t\tif(traverse){\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumns.push(column);\n\t\t\t\t\t\n\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t});\n\t\t}else{\n\t\t\tcolumns = this.columns;\n\t\t}\n\t\t\n\t\treturn columns;\n\t}\n\n\t//return all columns in a group\n\tgetCells(){\n\t\treturn this.cells;\n\t}\n\n\t//retrieve the top column in a group of columns\n\tgetTopColumn(){\n\t\tif(this.parent.isGroup){\n\t\t\treturn this.parent.getTopColumn();\n\t\t}else{\n\t\t\treturn this;\n\t\t}\n\t}\n\n\t//return column definition object\n\tgetDefinition(updateBranches){\n\t\tvar colDefs = [];\n\n\t\tif(this.isGroup && updateBranches){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t\t});\n\n\t\t\tthis.definition.columns = colDefs;\n\t\t}\n\n\t\treturn this.definition;\n\t}\n\n\t//////////////////// Actions ////////////////////\n\tcheckColumnVisibility(){\n\t\tvar visible = false;\n\n\t\tthis.columns.forEach(function(column){\n\t\t\tif(column.visible){\n\t\t\t\tvisible = true;\n\t\t\t}\n\t\t});\n\n\t\tif(visible){\n\t\t\tthis.show();\n\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t}else{\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t//show column\n\tshow(silent, responsiveToggle){\n\t\tif(!this.visible){\n\t\t\tthis.visible = true;\n\n\t\t\tthis.element.style.display = \"\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.show();\n\t\t\t});\n\n\t\t\tif(!this.isGroup && this.width === null){\n\t\t\t\tthis.reinitializeWidth();\n\t\t\t}\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tthis.dispatch(\"column-show\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), true);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\t//hide column\n\thide(silent, responsiveToggle){\n\t\tif(this.visible){\n\t\t\tthis.visible = false;\n\n\t\t\tthis.element.style.display = \"none\";\n\n\t\t\tthis.table.columnManager.verticalAlignHeaders();\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.checkColumnVisibility();\n\t\t\t}\n\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.hide();\n\t\t\t});\n\n\t\t\tthis.dispatch(\"column-hide\", this, responsiveToggle);\n\n\t\t\tif(!silent){\n\t\t\t\tthis.dispatchExternal(\"columnVisibilityChanged\", this.getComponent(), false);\n\t\t\t}\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\n\t\t\tif(!this.silent){\n\t\t\t\tthis.table.columnManager.rerenderColumns();\n\t\t\t}\n\t\t}\n\t}\n\n\tmatchChildWidths(){\n\t\tvar childWidth = 0;\n\n\t\tif(this.contentElement && this.columns.length){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\tchildWidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.contentElement.style.maxWidth = (childWidth - 1) + \"px\";\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.matchChildWidths();\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveChild(child){\n\t\tvar index = this.columns.indexOf(child);\n\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\n\t\tif(!this.columns.length){\n\t\t\tthis.delete();\n\t\t}\n\t}\n\n\tsetWidth(width){\n\t\tthis.widthFixed = true;\n\t\tthis.setWidthActual(width);\n\t}\n\n\tsetWidthActual(width){\n\t\tif(isNaN(width)){\n\t\t\twidth = Math.floor((this.table.element.clientWidth/100) * parseInt(width));\n\t\t}\n\n\t\twidth = Math.max(this.minWidth, width);\n\n\t\tif(this.maxWidth){\n\t\t\twidth = Math.min(this.maxWidth, width);\n\t\t}\n\n\t\tthis.width = width;\n\t\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\t\tthis.element.style.width = this.widthStyled;\n\n\t\tif(!this.isGroup){\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\n\t\tif(this.parent.isGroup){\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tthis.dispatch(\"column-width\", this);\n\t}\n\n\tcheckCellHeights(){\n\t\tvar rows = [];\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tif(cell.row.heightInitialized){\n\t\t\t\tif(cell.row.getElement().offsetParent !== null){\n\t\t\t\t\trows.push(cell.row);\n\t\t\t\t\tcell.row.clearCellHeight();\n\t\t\t\t}else{\n\t\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.calcHeight();\n\t\t});\n\n\t\trows.forEach(function(row){\n\t\t\trow.setCellHeight();\n\t\t});\n\t}\n\n\tgetWidth(){\n\t\tvar width = 0;\n\n\t\tif(this.isGroup){\n\t\t\tthis.columns.forEach(function(column){\n\t\t\t\tif(column.visible){\n\t\t\t\t\twidth += column.getWidth();\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\twidth = this.width;\n\t\t}\n\n\t\treturn width;\n\t}\n\n\tgetLeftOffset(){\n\t\tvar offset = this.element.offsetLeft;\n\n\t\tif(this.parent.isGroup){\n\t\t\toffset += this.parent.getLeftOffset();\n\t\t}\n\n\t\treturn offset;\n\t}\n\n\tgetHeight(){\n\t\treturn Math.ceil(this.element.getBoundingClientRect().height);\n\t}\n\n\tsetMinWidth(minWidth){\n\t\tif(this.maxWidth && minWidth > this.maxWidth){\n\t\t\tminWidth = this.maxWidth;\n\n\t\t\tconsole.warn(\"the minWidth (\"+ minWidth + \"px) for column '\" + this.field + \"' cannot be bigger that its maxWidth (\"+ this.maxWidthStyled + \")\");\n\t\t}\n\n\t\tthis.minWidth = minWidth;\n\t\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\t\tthis.element.style.minWidth = this.minWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMinWidth();\n\t\t});\n\t}\n\n\tsetMaxWidth(maxWidth){\n\t\tif(this.minWidth && maxWidth < this.minWidth){\n\t\t\tmaxWidth = this.minWidth;\n\n\t\t\tconsole.warn(\"the maxWidth (\"+ maxWidth + \"px) for column '\" + this.field + \"' cannot be smaller that its minWidth (\"+ this.minWidthStyled + \")\");\n\t\t}\n\n\t\tthis.maxWidth = maxWidth;\n\t\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\t\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setMaxWidth();\n\t\t});\n\t}\n\n\tdelete(){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(this.isGroup){\n\t\t\t\tthis.columns.forEach(function(column){\n\t\t\t\t\tcolumn.delete();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.dispatch(\"column-delete\", this);\n\n\t\t\tvar cellCount = this.cells.length;\n\n\t\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\t\tthis.cells[0].delete();\n\t\t\t}\n\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\n\t\t\tthis.element = false;\n\t\t\tthis.contentElement = false;\n\t\t\tthis.titleElement = false;\n\t\t\tthis.groupElement = false;\n\n\t\t\tif(this.parent.isGroup){\n\t\t\t\tthis.parent.removeChild(this);\n\t\t\t}\n\n\t\t\tthis.table.columnManager.deregisterColumn(this);\n\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\n\t\t\tthis.dispatch(\"column-deleted\", this);\n\n\t\t\tresolve();\n\t\t});\n\t}\n\n\tcolumnRendered(){\n\t\tif(this.titleFormatterRendered){\n\t\t\tthis.titleFormatterRendered();\n\t\t}\n\n\t\tthis.dispatch(\"column-rendered\", this);\n\t}\n\n\t//////////////// Cell Management /////////////////\n\t//generate cell for this column\n\tgenerateCell(row){\n\t\tvar cell = new Cell(this, row);\n\n\t\tthis.cells.push(cell);\n\n\t\treturn cell;\n\t}\n\n\tnextColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n\t}\n\n\t_nextVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n\t}\n\n\tprevColumn(){\n\t\tvar index = this.table.columnManager.findColumnIndex(this);\n\t\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n\t}\n\n\t_prevVisibleColumn(index){\n\t\tvar column = this.table.columnManager.getColumnByIndex(index);\n\t\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n\t}\n\n\treinitializeWidth(force){\n\t\tthis.widthFixed = false;\n\n\t\t//set width if present\n\t\tif(typeof this.definition.width !== \"undefined\" && !force){\n\t\t\t// maxInitialWidth ignored here as width specified\n\t\t\tthis.setWidth(this.definition.width);\n\t\t}\n\n\t\tthis.dispatch(\"column-width-fit-before\", this);\n\n\t\tthis.fitToData(force);\n\n\t\tthis.dispatch(\"column-width-fit-after\", this);\n\t}\n\n\t//set column width to maximum cell width for non group columns\n\tfitToData(force){\n\t\tif(this.isGroup){\n\t\t\treturn;\n\t\t}\n\n\t\tif(!this.widthFixed){\n\t\t\tthis.element.style.width = \"\";\n\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tcell.clearWidth();\n\t\t\t});\n\t\t}\n\n\t\tvar maxWidth = this.element.offsetWidth;\n\n\t\tif(!this.width || !this.widthFixed){\n\t\t\tthis.cells.forEach((cell) => {\n\t\t\t\tvar width = cell.getWidth();\n\n\t\t\t\tif(width > maxWidth){\n\t\t\t\t\tmaxWidth = width;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(maxWidth){\n\t\t\t\tvar setTo = maxWidth + 1;\n\t\t\t\tif (this.maxInitialWidth && !force) {\n\t\t\t\t\tsetTo = Math.min(setTo, this.maxInitialWidth);\n\t\t\t\t}\n\t\t\t\tthis.setWidthActual(setTo);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateDefinition(updates){\n\t\tvar definition;\n\n\t\tif(!this.isGroup){\n\t\t\tif(!this.parent.isGroup){\n\t\t\t\tdefinition = Object.assign({}, this.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\treturn this.table.columnManager.addColumn(definition, false, this)\n\t\t\t\t\t.then((column) => {\n\n\t\t\t\t\t\tif(definition.field == this.field){\n\t\t\t\t\t\t\tthis.field = false; //clear field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.delete()\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treturn Promise.reject(\"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.error(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treturn Promise.reject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t}\n\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new ColumnComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t}\n\n\tgetPosition(){\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex().indexOf(this) + 1;\n\t}\n}\n\nColumn.defaultOptionList = defaultOptions;\n\nexport default Column;\n","//public row object\nexport default class RowComponent {\n\n\tconstructor (row){\n\t\tthis._row = row;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._row.table.componentFunctionBinder.handle(\"row\", target._row, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetData(transform){\n\t\treturn this._row.getData(transform);\n\t}\n\n\tgetElement(){\n\t\treturn this._row.getElement();\n\t}\n\n\tgetCells(){\n\t\tvar cells = [];\n\n\t\tthis._row.getCells().forEach(function(cell){\n\t\t\tcells.push(cell.getComponent());\n\t\t});\n\n\t\treturn cells;\n\t}\n\n\tgetCell(column){\n\t\tvar cell = this._row.getCell(column);\n\t\treturn cell ? cell.getComponent() : false;\n\t}\n\n\tgetIndex(){\n\t\treturn this._row.getData(\"data\")[this._row.table.options.index];\n\t}\n\n\tgetPosition(){\n\t\treturn this._row.getPosition();\n\t}\n\n\twatchPosition(callback){\n\t\treturn this._row.watchPosition(callback);\n\t}\n\n\tdelete(){\n\t\treturn this._row.delete();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._row.table.rowManager.scrollToRow(this._row, position, ifVisible);\n\t}\n\n\tmove(to, after){\n\t\tthis._row.moveToRow(to, after);\n\t}\n\n\tupdate(data){\n\t\treturn this._row.updateData(data);\n\t}\n\n\tnormalizeHeight(){\n\t\tthis._row.normalizeHeight(true);\n\t}\n\n\t_getSelf(){\n\t\treturn this._row;\n\t}\n\n\treformat(){\n\t\treturn this._row.reinitialize();\n\t}\n\n\tgetTable(){\n\t\treturn this._row.table;\n\t}\n\n\tgetNextRow(){\n\t\tvar row = this._row.nextRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n\n\tgetPrevRow(){\n\t\tvar row = this._row.prevRow();\n\t\treturn row ? row.getComponent() : row;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport RowComponent from './RowComponent.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Row extends CoreFeature{\n\tconstructor (data, parent, type = \"row\"){\n\t\tsuper(parent.table);\n\t\t\n\t\tthis.parent = parent;\n\t\tthis.data = {};\n\t\tthis.type = type; //type of element\n\t\tthis.element = false;\n\t\tthis.modules = {}; //hold module variables;\n\t\tthis.cells = [];\n\t\tthis.height = 0; //hold element height\n\t\tthis.heightStyled = \"\"; //hold element height pre-styled to improve render efficiency\n\t\tthis.manualHeight = false; //user has manually set row height\n\t\tthis.outerHeight = 0; //hold elements outer height\n\t\tthis.initialized = false; //element has been rendered\n\t\tthis.heightInitialized = false; //element has resized cells to fit\n\t\tthis.position = 0; //store position of element in row list\n\t\tthis.positionWatchers = [];\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.created = false;\n\t\t\n\t\tthis.setData(data);\n\t}\n\t\n\tcreate(){\n\t\tif(!this.created){\n\t\t\tthis.created = true;\n\t\t\tthis.generateElement();\n\t\t}\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\tthis.element = el;\n\t}\n\t\n\tgetElement(){\n\t\tthis.create();\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.createElement();\n\t\tthis.dispatch(\"row-init\", this);\n\t}\n\t\n\tgenerateCells(){\n\t\tthis.cells = this.table.columnManager.generateCells(this);\n\t}\n\t\n\t//functions to setup on first render\n\tinitialize(force, inFragment){\n\t\tthis.create();\n\t\t\n\t\tif(!this.initialized || force){\n\t\t\t\n\t\t\tthis.deleteCells();\n\t\t\t\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-before\", this);\n\t\t\t\n\t\t\tthis.generateCells();\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t\t\n\t\t\tthis.table.columnManager.renderer.renderRowCells(this, inFragment);\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.normalizeHeight();\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout\", this);\n\t\t\t\n\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-layout-after\", this);\n\t\t}else{\n\t\t\tthis.table.columnManager.renderer.rerenderRowCells(this, inFragment);\n\t\t}\n\t}\n\n\trendered(){\n\t\tthis.cells.forEach((cell) => {\n\t\t\tcell.cellRendered();\n\t\t});\n\t}\n\t\n\treinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.normalizeHeight(true);\n\t\t}\n\t}\n\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tdeinitializeHeight(){\n\t\tthis.heightInitialized = false;\n\t}\n\t\n\treinitialize(children){\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\t\n\t\tif(!this.manualHeight){\n\t\t\tthis.height = 0;\n\t\t\tthis.heightStyled = \"\";\n\t\t}\n\t\t\n\t\tif(this.element && this.element.offsetParent !== null){\n\t\t\tthis.initialize(true);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"row-relayout\", this);\n\t}\n\t\n\t//get heights when doing bulk row style calcs in virtual DOM\n\tcalcHeight(force){\n\t\tvar maxHeight = 0,\n\t\tminHeight;\n\t\t\n\t\tif(this.table.options.rowHeight){\n\t\t\tthis.height = this.table.options.rowHeight;\n\t\t}else{\n\t\t\tminHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\t\t\t\n\t\t\tthis.cells.forEach(function(cell){\n\t\t\t\tvar height = cell.getHeight();\n\t\t\t\tif(height > maxHeight){\n\t\t\t\t\tmaxHeight = height;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.height = Math.max(maxHeight, minHeight);\n\t\t\t}else{\n\t\t\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n\t\n\t//set of cells\n\tsetCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.setHeight();\n\t\t});\n\t\t\n\t\tthis.heightInitialized = true;\n\t}\n\t\n\tclearCellHeight(){\n\t\tthis.cells.forEach(function(cell){\n\t\t\tcell.clearHeight();\n\t\t});\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(force){\n\t\tif(force && !this.table.options.rowHeight){\n\t\t\tthis.clearCellHeight();\n\t\t}\n\t\t\n\t\tthis.calcHeight(force);\n\t\t\n\t\tthis.setCellHeight();\n\t}\n\t\n\t//set height of rows\n\tsetHeight(height, force){\n\t\tif(this.height != height || force){\n\t\t\t\n\t\t\tthis.manualHeight = true;\n\t\t\t\n\t\t\tthis.height = height;\n\t\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\t\t\t\n\t\t\tthis.setCellHeight();\n\t\t\t\n\t\t\t// this.outerHeight = this.element.outerHeight();\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\t//return rows outer Width\n\tgetWidth(){\n\t\treturn this.element.offsetWidth;\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tdeleteCell(cell){\n\t\tvar index = this.cells.indexOf(cell);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.cells.splice(index, 1);\n\t\t}\n\t}\n\t\n\t//////////////// Data Management /////////////////\n\tsetData(data){\n\t\tthis.data = this.chain(\"row-data-init-before\", [this, data], undefined, data);\n\t\t\n\t\tthis.dispatch(\"row-data-init-after\", this);\n\t}\n\t\n\t//update the rows data\n\tupdateData(updatedData){\n\t\tvar visible = this.element && Helpers.elVisible(this.element),\n\t\ttempData = {},\n\t\tnewRowData;\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof updatedData === \"string\"){\n\t\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-before\", this);\n\t\t\t\n\t\t\tif(this.subscribed(\"row-data-changing\")){\n\t\t\t\ttempData = Object.assign(tempData, this.data);\n\t\t\t\ttempData = Object.assign(tempData, updatedData);\n\t\t\t}\n\t\t\t\n\t\t\tnewRowData = this.chain(\"row-data-changing\", [this, tempData, updatedData], null, updatedData);\n\t\t\t\n\t\t\t//set data\n\t\t\tfor (let attrname in newRowData) {\n\t\t\t\tthis.data[attrname] = newRowData[attrname];\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-save-after\", this);\n\t\t\t\n\t\t\t//update affected cells only\n\t\t\tfor (let attrname in updatedData) {\n\t\t\t\t\n\t\t\t\tlet columns = this.table.columnManager.getColumnsByFieldRoot(attrname);\n\t\t\t\t\n\t\t\t\tcolumns.forEach((column) => {\n\t\t\t\t\tlet cell = this.getCell(column.getField());\n\t\t\t\t\t\n\t\t\t\t\tif(cell){\n\t\t\t\t\t\tlet value = column.getFieldValue(newRowData);\n\t\t\t\t\t\tif(cell.getValue() !== value){\n\t\t\t\t\t\t\tcell.setValueProcessData(value);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(visible){\n\t\t\t\t\t\t\t\tcell.cellRendered();\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\t\n\t\t\t//Partial reinitialization if visible\n\t\t\tif(visible){\n\t\t\t\tthis.normalizeHeight(true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.rowFormatter){\n\t\t\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.heightStyled = \"\";\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"row-data-changed\", this, visible, updatedData);\n\t\t\t\n\t\t\t//this.reinitialize();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"rowUpdated\", this.getComponent());\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\tgetData(transform){\n\t\tif(transform){\n\t\t\treturn this.chain(\"row-data-retrieve\", [this, transform], null, this.data);\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\tgetCell(column){\n\t\tvar match = false;\n\t\t\n\t\tcolumn = this.table.columnManager.findColumn(column);\n\t\t\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\tmatch = this.cells.find(function(cell){\n\t\t\treturn cell.column === column;\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetCellIndex(findCell){\n\t\treturn this.cells.findIndex(function(cell){\n\t\t\treturn cell === findCell;\n\t\t});\n\t}\n\t\n\tfindCell(subject){\n\t\treturn this.cells.find((cell) => {\n\t\t\treturn cell.element === subject;\n\t\t});\n\t}\n\t\n\tgetCells(){\n\t\tif(!this.initialized && this.cells.length === 0){\n\t\t\tthis.generateCells();\n\t\t}\n\t\t\n\t\treturn this.cells;\n\t}\n\t\n\tnextRow(){\n\t\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tprevRow(){\n\t\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\t\treturn row || false;\n\t}\n\t\n\tmoveToRow(to, before){\n\t\tvar toRow = this.table.rowManager.findRow(to);\n\t\t\n\t\tif(toRow){\n\t\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t\t}\n\t}\n\t\n\t///////////////////// Actions /////////////////////\n\tdelete(){\n\t\tthis.dispatch(\"row-delete\", this);\n\t\t\n\t\tthis.deleteActual();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\tdeleteActual(blockRedraw){\n\t\tthis.detachModules();\n\t\t\n\t\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\t\t\n\t\tthis.deleteCells();\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.heightInitialized = false;\n\t\tthis.element = false;\n\t\t\n\t\tthis.dispatch(\"row-deleted\", this);\n\t}\n\t\n\tdetachModules(){\n\t\tthis.dispatch(\"row-deleting\", this);\n\t}\n\t\n\tdeleteCells(){\n\t\tvar cellCount = this.cells.length;\n\t\t\n\t\tfor(let i = 0; i < cellCount; i++){\n\t\t\tthis.cells[0].delete();\n\t\t}\n\t}\n\t\n\twipe(){\n\t\tthis.detachModules();\n\t\tthis.deleteCells();\n\t\t\n\t\tif(this.element){\n\t\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\t\n\t\t\tif(this.element.parentNode){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.modules = {};\n\t}\n\n\tisDisplayed(){\n\t\treturn this.table.rowManager.getDisplayRows().includes(this);\n\t}\n\n\tgetPosition(){\n\t\treturn this.isDisplayed() ? this.position : false;\n\t}\n\n\tsetPosition(position){\n\t\tif(position != this.position){\n\t\t\tthis.position = position;\n\n\t\t\tthis.positionWatchers.forEach((callback) => {\n\t\t\t\tcallback(this.position);\n\t\t\t});\n\t\t}\n\t}\n\n\twatchPosition(callback){\n\t\tthis.positionWatchers.push(callback);\n\n\t\tcallback(this.position);\n\t}\n\t\n\tgetGroup(){\n\t\treturn this.modules.group || false;\n\t}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new RowComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n","export default {\n\t\"avg\":function(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = null,\n\t\tprecision = 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(values, data, calcParams){\n\t\tvar output = 0,\n\t\tprecision = 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(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(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\t\"unique\":function(values, data, calcParams){\n\t\tvar unique = values.filter((value, index) => {\n\t\t\treturn (values || value === 0) && values.indexOf(value) === index;\n\t\t});\n\n\t\treturn unique.length;\n\t},\n};","import Module from '../../core/Module.js';\n\nimport CalcComponent from './CalcComponent.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\nimport Row from '../../core/row/Row.js';\n\nimport defaultCalculations from './defaults/calculations.js';\n\nclass ColumnCalcs extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.topCalcs = [];\n\t\tthis.botCalcs = [];\n\t\tthis.genColumn = false;\n\t\tthis.topElement = this.createElement();\n\t\tthis.botElement = this.createElement();\n\t\tthis.topRow = false;\n\t\tthis.botRow = false;\n\t\tthis.topInitialized = false;\n\t\tthis.botInitialized = false;\n\t\t\n\t\tthis.blocked = false;\n\t\tthis.recalcAfterBlock = false;\n\t\t\n\t\tthis.registerTableOption(\"columnCalcs\", true);\n\t\t\n\t\tthis.registerColumnOption(\"topCalc\");\n\t\tthis.registerColumnOption(\"topCalcParams\");\n\t\tthis.registerColumnOption(\"topCalcFormatter\");\n\t\tthis.registerColumnOption(\"topCalcFormatterParams\");\n\t\tthis.registerColumnOption(\"bottomCalc\");\n\t\tthis.registerColumnOption(\"bottomCalcParams\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatter\");\n\t\tthis.registerColumnOption(\"bottomCalcFormatterParams\");\n\t}\n\t\n\tcreateElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-calcs-holder\");\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tthis.genColumn = new Column({field:\"value\"}, this);\n\t\t\n\t\tthis.subscribe(\"cell-value-changed\", this.cellValueChanged.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\tthis.subscribe(\"column-moved\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"column-add\", this.recalcActiveRows.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.recalcActiveRowsRefresh.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t\t\n\t\tthis.subscribe(\"redraw-blocked\", this.blockRedraw.bind(this));\n\t\tthis.subscribe(\"redraw-restored\", this.restoreRedraw.bind(this));\n\n\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t\n\t\tthis.registerTableFunction(\"getCalcResults\", this.getResults.bind(this));\n\t\tthis.registerTableFunction(\"recalc\", this.userRecalc.bind(this));\n\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\t\n\ttableRedraw(force){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t\n\t\tif(force){\n\t\t\tthis.redraw();\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.blocked = true;\n\t\tthis.recalcAfterBlock = false;\n\t}\n\t\n\t\n\trestoreRedraw(){\n\t\tthis.blocked = false;\n\t\t\n\t\tif(this.recalcAfterBlock){\n\t\t\tthis.recalcAfterBlock = false;\n\t\t\tthis.recalcActiveRowsRefresh();\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tuserRecalc(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tblockCheck(){\n\t\tif(this.blocked){\n\t\t\tthis.recalcAfterBlock = true;\n\t\t}\n\t\t\n\t\treturn this.blocked;\n\t}\n\t\n\tvisibleRows(viewable, rows){\n\t\tif(this.topRow){\n\t\t\trows.unshift(this.topRow);\n\t\t}\n\t\t\n\t\tif(this.botRow){\n\t\t\trows.push(this.botRow);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.recalcRowGroup(row);\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRowsRefresh(){\n\t\tif(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){\n\t\t\tthis.recalcAll();\n\t\t}else{\n\t\t\tthis.recalcActiveRows();\n\t\t}\n\t}\n\t\n\trecalcActiveRows(){\n\t\tthis.recalc(this.table.rowManager.activeRows);\n\t}\n\t\n\tcellValueChanged(cell){\n\t\tif(cell.column.definition.topCalc || cell.column.definition.bottomCalc){\n\t\t\tif(this.table.options.groupBy){\n\t\t\t\tif(this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\"){\n\t\t\t\t\tthis.recalcActiveRows();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.recalcRowGroup(cell.row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeColumnCheck(column){\n\t\tif(column.definition.topCalc || column.definition.bottomCalc){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//initialize column calcs\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\tvar config = {\n\t\t\ttopCalcParams:def.topCalcParams || {},\n\t\t\tbotCalcParams:def.bottomCalcParams || {},\n\t\t};\n\t\t\n\t\tif(def.topCalc){\n\t\t\t\n\t\t\tswitch(typeof def.topCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.topCalc]){\n\t\t\t\t\t\tconfig.topCalc = ColumnCalcs.calculations[def.topCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.topCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.topCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeTopRow();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif(def.bottomCalc){\n\t\t\tswitch(typeof def.bottomCalc){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(ColumnCalcs.calculations[def.bottomCalc]){\n\t\t\t\t\t\tconfig.botCalc = ColumnCalcs.calculations[def.bottomCalc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"function\":\n\t\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif(config.botCalc){\n\t\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\t\tthis.botCalcs.push(column);\n\t\t\t\t\n\t\t\t\tif(this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\tthis.initializeBottomRow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t//dummy functions to handle being mock column manager\n\tregisterColumnField(){}\n\t\n\tremoveCalcs(){\n\t\tvar changed = false;\n\t\t\n\t\tif(this.topInitialized){\n\t\t\tthis.topInitialized = false;\n\t\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(this.botInitialized){\n\t\t\tthis.botInitialized = false;\n\t\t\tthis.footerRemove(this.botElement);\n\t\t\tchanged = true;\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\treinitializeCalcs(){\n\t\tif(this.topCalcs.length){\n\t\t\tthis.initializeTopRow();\n\t\t}\n\n\t\tif(this.botCalcs.length){\n\t\t\tthis.initializeBottomRow();\n\t\t}\n\t}\n\t\n\tinitializeTopRow(){\n\t\tvar\tfragment = document.createDocumentFragment();\n\t\t\n\t\tif(!this.topInitialized){\n\n\t\t\tfragment.appendChild(document.createElement(\"br\"));\n\t\t\tfragment.appendChild(this.topElement);\n\n\t\t\tthis.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);\n\t\t\tthis.topInitialized = true;\n\t\t}\n\t}\n\t\n\tinitializeBottomRow(){\n\t\tif(!this.botInitialized){\n\t\t\tthis.footerPrepend(this.botElement);\n\t\t\tthis.botInitialized = true;\n\t\t}\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tif(this.botInitialized && this.botRow){\n\t\t\tthis.botElement.scrollLeft = left;\n\t\t}\n\t}\n\t\n\trecalc(rows){\n\t\tvar data, row;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(this.topInitialized || this.botInitialized){\n\t\t\t\tdata = this.rowsToData(rows);\n\t\t\t\t\n\t\t\t\tif(this.topInitialized){\n\t\t\t\t\tif(this.topRow){\n\t\t\t\t\t\tthis.topRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"top\", data);\n\t\t\t\t\tthis.topRow = row;\n\t\t\t\t\twhile(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild);\n\t\t\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.botInitialized){\n\t\t\t\t\tif(this.botRow){\n\t\t\t\t\t\tthis.botRow.deleteCells();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trow = this.generateRow(\"bottom\", data);\n\t\t\t\t\tthis.botRow = row;\n\t\t\t\t\twhile(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild);\n\t\t\t\t\tthis.botElement.appendChild(row.getElement());\n\t\t\t\t\trow.initialize(true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t\t\t\n\t\t\t\t//set resizable handles\n\t\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcRowGroup(row){\n\t\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n\t}\n\t\n\trecalcAll(){\n\t\tif(this.topCalcs.length || this.botCalcs.length){\n\t\t\tif(this.table.options.columnCalcs !== \"group\"){\n\t\t\t\tthis.recalcActiveRows();\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.groupBy && this.table.options.columnCalcs !== \"table\"){\n\t\t\t\t\n\t\t\t\tvar groups = this.table.modules.groupRows.getChildGroups();\n\t\t\t\t\n\t\t\t\tgroups.forEach((group) => {\n\t\t\t\t\tthis.recalcGroup(group);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\trecalcGroup(group){\n\t\tvar data, rowData;\n\t\t\n\t\tif(!this.blockCheck()){\n\t\t\tif(group){\n\t\t\t\tif(group.calcs){\n\t\t\t\t\tif(group.calcs.bottom){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(group.calcs.top){\n\t\t\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\t\t\trowData = this.generateRowData(\"top\", data);\n\t\t\t\t\t\t\n\t\t\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//generate top stats row\n\tgenerateTopRow(rows){\n\t\treturn this.generateRow(\"top\", this.rowsToData(rows));\n\t}\n\t//generate bottom stats row\n\tgenerateBottomRow(rows){\n\t\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n\t}\n\t\n\trowsToData(rows){\n\t\tvar data = [];\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tdata.push(row.getData());\n\t\t\t\n\t\t\tif(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){\n\t\t\t\tif(row.modules.dataTree && row.modules.dataTree.open){\n\t\t\t\t\tvar children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\t\tdata = data.concat(children);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//generate stats row\n\tgenerateRow(pos, data){\n\t\tvar rowData = this.generateRowData(pos, data),\n\t\trow;\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.disable();\n\t\t}\n\t\t\n\t\trow = new Row(rowData, this, \"calc\");\n\t\t\n\t\tif(this.table.modExists(\"mutator\")){\n\t\t\tthis.table.modules.mutator.enable();\n\t\t}\n\t\t\n\t\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\t\t\n\t\trow.component = false;\n\t\t\n\t\trow.getComponent = () => {\n\t\t\tif(!row.component){\n\t\t\t\trow.component = new CalcComponent(row);\n\t\t\t}\n\t\t\t\n\t\t\treturn row.component;\n\t\t};\n\t\t\n\t\trow.generateCells = () => {\n\t\t\t\n\t\t\tvar cells = [];\n\t\t\t\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\t\n\t\t\t\t//set field name of mock column\n\t\t\t\tthis.genColumn.setField(column.getField());\n\t\t\t\tthis.genColumn.hozAlign = column.hozAlign;\n\t\t\t\t\n\t\t\t\tif(column.definition[pos + \"CalcFormatter\"] && this.table.modExists(\"format\")){\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tthis.genColumn.modules.format = {\n\t\t\t\t\t\tformatter: this.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\t\tparams:{}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//ensure css class definition is replicated to calculation cell\n\t\t\t\tthis.genColumn.definition.cssClass = column.definition.cssClass;\n\t\t\t\t\n\t\t\t\t//generate cell and assign to correct column\n\t\t\t\tvar cell = new Cell(this.genColumn, row);\n\t\t\t\tcell.getElement();\n\t\t\t\tcell.column = column;\n\t\t\t\tcell.setWidth();\n\t\t\t\t\n\t\t\t\tcolumn.cells.push(cell);\n\t\t\t\tcells.push(cell);\n\t\t\t\t\n\t\t\t\tif(!column.visible){\n\t\t\t\t\tcell.hide();\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\trow.cells = cells;\n\t\t};\n\t\t\n\t\treturn row;\n\t}\n\t\n\t//generate stats row\n\tgenerateRowData(pos, data){\n\t\tvar rowData = {},\n\t\tcalcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t\ttype = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t\tparams, paramKey;\n\t\t\n\t\tcalcs.forEach(function(column){\n\t\t\tvar values = [];\n\t\t\t\n\t\t\tif(column.modules.columnCalcs && column.modules.columnCalcs[type]){\n\t\t\t\tdata.forEach(function(item){\n\t\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tparamKey = type + \"Params\";\n\t\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\t\t\t\t\n\t\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowData;\n\t}\n\t\n\thasTopCalcs(){\n\t\treturn\t!!(this.topCalcs.length);\n\t}\n\t\n\thasBottomCalcs(){\n\t\treturn\t!!(this.botCalcs.length);\n\t}\n\t\n\t//handle table redraw\n\tredraw(){\n\t\tif(this.topRow){\n\t\t\tthis.topRow.normalizeHeight(true);\n\t\t}\n\t\tif(this.botRow){\n\t\t\tthis.botRow.normalizeHeight(true);\n\t\t}\n\t}\n\t\n\t//return the calculated\n\tgetResults(){\n\t\tvar results = {},\n\t\tgroups;\n\t\t\n\t\tif(this.table.options.groupBy && this.table.modExists(\"groupRows\")){\n\t\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\t\t\t\n\t\t\tgroups.forEach((group) => {\n\t\t\t\tresults[group.getKey()] = this.getGroupResults(group);\n\t\t\t});\n\t\t}else{\n\t\t\tresults = {\n\t\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\t\tbottom: this.botRow ? this.botRow.getData() : {},\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn results;\n\t}\n\t\n\t//get results from a group\n\tgetGroupResults(group){\n\t\tvar groupObj = group._getSelf(),\n\t\tsubGroups = group.getSubGroups(),\n\t\tsubGroupResults = {},\n\t\tresults = {};\n\t\t\n\t\tsubGroups.forEach((subgroup) => {\n\t\t\tsubGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup);\n\t\t});\n\t\t\n\t\tresults = {\n\t\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\t\tgroups: subGroupResults,\n\t\t};\n\t\t\n\t\treturn results;\n\t}\n\t\n\tadjustForScrollbar(width){\n\t\tif(this.botRow){\n\t\t\tif(this.table.rtl){\n\t\t\t\tthis.botElement.style.paddingLeft = width + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.botElement.style.paddingRight = width + \"px\";\n\t\t\t}\n\t\t}\n\t}\n}\n\nColumnCalcs.moduleName = \"columnCalcs\";\n\n//load defaults\nColumnCalcs.calculations = defaultCalculations;\n\nexport default ColumnCalcs;","import Module from '../../core/Module.js';\n\nimport Row from '../../core/row/Row.js';\n\nimport RowComponent from '../../core/row/RowComponent.js';\n\nclass DataTree extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.indent = 10;\n\t\tthis.field = \"\";\n\t\tthis.collapseEl = null;\n\t\tthis.expandEl = null;\n\t\tthis.branchEl = null;\n\t\tthis.elementField = false;\n\n\t\tthis.startOpen = function(){};\n\n\t\tthis.registerTableOption(\"dataTree\", false); //enable data tree\n\t\tthis.registerTableOption(\"dataTreeFilter\", true); //filter child rows\n\t\tthis.registerTableOption(\"dataTreeSort\", true); //sort child rows\n\t\tthis.registerTableOption(\"dataTreeElementColumn\", false);\n\t\tthis.registerTableOption(\"dataTreeBranchElement\", true);//show data tree branch element\n\t\tthis.registerTableOption(\"dataTreeChildIndent\", 9); //data tree child indent in px\n\t\tthis.registerTableOption(\"dataTreeChildField\", \"_children\");//data tre column field to look for child rows\n\t\tthis.registerTableOption(\"dataTreeCollapseElement\", false);//data tree row collapse element\n\t\tthis.registerTableOption(\"dataTreeExpandElement\", false);//data tree row expand element\n\t\tthis.registerTableOption(\"dataTreeStartExpanded\", false);\n\t\tthis.registerTableOption(\"dataTreeChildColumnCalcs\", false);//include visible data tree rows in column calculations\n\t\tthis.registerTableOption(\"dataTreeSelectPropagate\", false);//selecting a parent row selects its children\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"treeCollapse\", this.collapseRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeExpand\", this.expandRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"treeToggle\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeParent\", this.getTreeParent.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getTreeChildren\", this.getRowChildren.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"addTreeChild\", this.addTreeChildRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isTreeExpanded\", this.isRowExpanded.bind(this));\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.dataTree){\n\t\t\tvar dummyEl = null,\n\t\t\toptions = this.table.options;\n\n\t\t\tthis.field = options.dataTreeChildField;\n\t\t\tthis.indent = options.dataTreeChildIndent;\n\n\t\t\tif(this.options(\"movableRows\")){\n\t\t\t\tconsole.warn(\"The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeBranchElement){\n\n\t\t\t\tif(options.dataTreeBranchElement === true){\n\t\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t\t\t}else{\n\t\t\t\t\tif(typeof options.dataTreeBranchElement === \"string\"){\n\t\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch-empty\");\n\t\t\t}\n\n\t\t\tif(options.dataTreeCollapseElement){\n\t\t\t\tif(typeof options.dataTreeCollapseElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.collapseEl = document.createElement(\"div\");\n\t\t\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.collapseEl.tabIndex = 0;\n\t\t\t\tthis.collapseEl.innerHTML = \"
        \";\n\t\t\t}\n\n\t\t\tif(options.dataTreeExpandElement){\n\t\t\t\tif(typeof options.dataTreeExpandElement === \"string\"){\n\t\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t\t\t}else{\n\t\t\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.expandEl = document.createElement(\"div\");\n\t\t\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\t\t\tthis.expandEl.tabIndex = 0;\n\t\t\t\tthis.expandEl.innerHTML = \"
        \";\n\t\t\t}\n\n\n\t\t\tswitch(typeof options.dataTreeStartExpanded){\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.startOpen = function(row, index){\n\t\t\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowDelete.bind(this),0);\n\t\t\tthis.subscribe(\"row-data-changed\", this.rowDataChanged.bind(this), 10);\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"edit-cancelled\", this.cellValueChanged.bind(this));\n\t\t\tthis.subscribe(\"column-moving-rows\", this.columnMoving.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.initializeElementField.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedrawing.bind(this));\n\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 30);\n\t\t}\n\t}\n\n\ttableRedrawing(force){\n\t\tvar rows;\n\n\t\tif(force){\n\t\t\trows = this.table.rowManager.getRows();\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.reinitializeRowChildren(row);\n\t\t\t});\n\t\t}\n\t}\n\n\tinitializeElementField(){\n\t\tvar firstCol = this.table.columnManager.getFirstVisibleColumn();\n\n\t\tthis.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\t}\n\t\n\tgetRowChildren(row){\n\t\treturn this.getTreeChildren(row, true);\n\t}\n\n\tcolumnMoving(){\n\t\tvar rows = [];\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trows = rows.concat(this.getTreeChildren(row, false, true));\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\trowDataChanged(row, visible, updatedData){\n\t\tif(this.redrawNeeded(updatedData)){\n\t\t\tthis.initializeRow(row);\n\n\t\t\tif(visible){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\n\tcellValueChanged(cell){\n\t\tvar field = cell.column.getField();\n\n\t\tif(field === this.elementField){\n\t\t\tthis.layoutRow(cell.row);\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar childArray = row.getData()[this.field];\n\t\tvar isArray = Array.isArray(childArray);\n\n\t\tvar children = isArray || (!isArray && typeof childArray === \"object\" && childArray !== null);\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.branchEl){\n\t\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t\t}\n\n\t\tif(!children && row.modules.dataTree && row.modules.dataTree.controlEl){\n\t\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t\t}\n\n\t\trow.modules.dataTree = {\n\t\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\t\topen: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false,\n\t\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\t\tchildren:children,\n\t\t};\n\t}\n\n\treinitializeRowChildren(row){\n\t\tvar children = this.getTreeChildren(row, false, true);\n\n\t\tchildren.forEach(function(child){\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n\n\tlayoutRow(row){\n\t\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t\tel = cell.getElement(),\n\t\tconfig = row.modules.dataTree;\n\n\t\tif(config.branchEl){\n\t\t\tif(config.branchEl.parentNode){\n\t\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t\t}\n\t\t\tconfig.branchEl = false;\n\t\t}\n\n\t\tif(config.controlEl){\n\t\t\tif(config.controlEl.parentNode){\n\t\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t\t}\n\t\t\tconfig.controlEl = false;\n\t\t}\n\n\t\tthis.generateControlElement(row, el);\n\n\t\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\t\tif(config.index){\n\t\t\tif(this.branchEl){\n\t\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\t\tif(this.table.rtl){\n\t\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\t}else{\n\t\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\t}\n\t\t\t}else{\n\n\t\t\t\tif(this.table.rtl){\n\t\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}else{\n\t\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateControlElement(row, el){\n\t\tvar config = row.modules.dataTree,\n\t\toldControl = config.controlEl;\n\n\t\tel = el || row.getCells()[0].getElement();\n\n\t\tif(config.children !== false){\n\n\t\t\tif(config.open){\n\t\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.collapseRow(row);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\t\tconfig.controlEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tthis.expandRow(row);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconfig.controlEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif(oldControl && oldControl.parentNode === el){\n\t\t\t\toldControl.parentNode.replaceChild(config.controlEl,oldControl);\n\t\t\t}else{\n\t\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetRows(rows){\n\t\tvar output = [];\n\n\t\trows.forEach((row, i) => {\n\t\t\tvar config, children;\n\n\t\t\toutput.push(row);\n\n\t\t\tif(row instanceof Row){\n\n\t\t\t\trow.create();\n\n\t\t\t\tconfig = row.modules.dataTree;\n\n\t\t\t\tif(!config.index && config.children !== false){\n\t\t\t\t\tchildren = this.getChildren(row);\n\n\t\t\t\t\tchildren.forEach((child) => {\n\t\t\t\t\t\tchild.create();\n\t\t\t\t\t\toutput.push(child);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tgetChildren(row, allChildren){\n\t\tvar config = row.modules.dataTree,\n\t\tchildren = [],\n\t\toutput = [];\n\n\t\tif(config.children !== false && (config.open || allChildren)){\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"sort\") && this.table.options.dataTreeSort){\n\t\t\t\tthis.table.modules.sort.sort(children);\n\t\t\t}\n\n\t\t\tchildren.forEach((child) => {\n\t\t\t\toutput.push(child);\n\n\t\t\t\tvar subChildren = this.getChildren(child);\n\n\t\t\t\tsubChildren.forEach((sub) => {\n\t\t\t\t\toutput.push(sub);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgenerateChildren(row){\n\t\tvar children = [];\n\n\t\tvar childArray = row.getData()[this.field];\n\n\t\tif(!Array.isArray(childArray)){\n\t\t\tchildArray = [childArray];\n\t\t}\n\n\t\tchildArray.forEach((childData) => {\n\t\t\tvar childRow = new Row(childData || {}, this.table.rowManager);\n\n\t\t\tchildRow.create();\n\n\t\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\t\tchildRow.modules.dataTree.parent = row;\n\n\t\t\tif(childRow.modules.dataTree.children){\n\t\t\t\tchildRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t\t}\n\t\t\tchildren.push(childRow);\n\t\t});\n\n\t\treturn children;\n\t}\n\n\texpandRow(row, silent){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = true;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowExpanded\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\tcollapseRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tconfig.open = false;\n\n\t\t\trow.reinitialize();\n\n\t\t\tthis.refreshData(true);\n\n\t\t\tthis.dispatchExternal(\"dataTreeRowCollapsed\", row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\t}\n\n\ttoggleRow(row){\n\t\tvar config = row.modules.dataTree;\n\n\t\tif(config.children !== false){\n\t\t\tif(config.open){\n\t\t\t\tthis.collapseRow(row);\n\t\t\t}else{\n\t\t\t\tthis.expandRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowExpanded(row){\n\t\treturn row.modules.dataTree.open;\n\t}\n\n\tgetTreeParent(row){\n\t\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n\t}\n\n\tgetTreeParentRoot(row){\n\t\treturn row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;\n\t}\n\n\tgetFilteredTreeChildren(row){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [], children;\n\n\t\tif(config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tif(this.table.modExists(\"filter\") && this.table.options.dataTreeFilter){\n\t\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t\t}else{\n\t\t\t\tchildren = config.children;\n\t\t\t}\n\n\t\t\tchildren.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(childRow);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\trowDelete(row){\n\t\tvar parent = row.modules.dataTree.parent,\n\t\tchildIndex;\n\n\t\tif(parent){\n\t\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t\t}\n\n\t\t\tif(!parent.data[this.field].length){\n\t\t\t\tdelete parent.data[this.field];\n\t\t\t}\n\n\t\t\tthis.initializeRow(parent);\n\t\t\tthis.layoutRow(parent);\n\t\t}\n\n\t\tthis.refreshData(true);\n\t}\n\n\taddTreeChildRow(row, data, top, index){\n\t\tvar childIndex = false;\n\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif(!Array.isArray(row.data[this.field])){\n\t\t\trow.data[this.field] = [];\n\n\t\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t\t}\n\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\t\tif(childIndex !== false){\n\t\t\t\trow.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data);\n\t\t\t}\n\t\t}\n\n\t\tif(childIndex === false){\n\t\t\tif(top){\n\t\t\t\trow.data[this.field].unshift(data);\n\t\t\t}else{\n\t\t\t\trow.data[this.field].push(data);\n\t\t\t}\n\t\t}\n\n\t\tthis.initializeRow(row);\n\t\tthis.layoutRow(row);\n\n\t\tthis.refreshData(true);\n\t}\n\n\tfindChildIndex(subject, parent){\n\t\tvar match = false;\n\n\t\tif(typeof subject == \"object\"){\n\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\tmatch = subject.data;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\tmatch = subject._getSelf().data;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\tif(parent.modules.dataTree){\n\t\t\t\t\tmatch = parent.modules.dataTree.children.find((childRow) => {\n\t\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(match){\n\t\t\t\t\t\tmatch = match.data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else if(subject === null){\n\t\t\t\tmatch = false;\n\t\t\t}\n\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\tmatch = false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tmatch = parent.data[this.field].find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t}\n\n\t\tif(match){\n\n\t\t\tif(Array.isArray(parent.data[this.field])){\n\t\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t\t}\n\n\t\t\tif(match == -1){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\t//catch all for any other type of input\n\n\t\treturn match;\n\t}\n\n\tgetTreeChildren(row, component, recurse){\n\t\tvar config = row.modules.dataTree,\n\t\toutput = [];\n\n\t\tif(config && config.children){\n\n\t\t\tif(!Array.isArray(config.children)){\n\t\t\t\tconfig.children = this.generateChildren(row);\n\t\t\t}\n\n\t\t\tconfig.children.forEach((childRow) => {\n\t\t\t\tif(childRow instanceof Row){\n\t\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\t\tif(recurse){\n\t\t\t\t\t\toutput = output.concat(this.getTreeChildren(childRow, component, recurse));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tgetChildField(){\n\t\treturn this.field;\n\t}\n\n\tredrawNeeded(data){\n\t\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n\t}\n}\n\nDataTree.moduleName = \"dataTree\";\n\nexport default DataTree;","import csv from './downloaders/csv.js';\nimport json from './downloaders/json.js';\nimport pdf from './downloaders/pdf.js';\nimport xlsx from './downloaders/xlsx.js';\nimport html from './downloaders/html.js';\nimport jsonLines from './downloaders/jsonLines.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tjsonLines:jsonLines,\n\tpdf:pdf,\n\txlsx:xlsx,\n\thtml:html,\n};","export default function(list, options = {}, setFileContents){\n\tvar delimiter = options.delimiter ? options.delimiter : \",\",\n\tfileContents = [],\n\theaders = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = [];\n\n\t\tswitch(row.type){\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"header\":\n\t\t\t\trow.columns.forEach((col, i) => {\n\t\t\t\t\tif(col && col.depth === 1){\n\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}\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\n\t\t\t\t\tif(col){\n\n\t\t\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(headers.length){\n\t\tfileContents.unshift(headers.join(delimiter));\n\t}\n\n\tfileContents = fileContents.join(\"\\n\");\n\n\tif(options.bom){\n\t\tfileContents = \"\\ufeff\" + fileContents;\n\t}\n\n\tsetFileContents(fileContents, \"text/csv\");\n}\n","export default function(list, options, setFileContents){\n\tvar fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tvar item = {};\n\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif(col){\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(item);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\tsetFileContents(fileContents, \"application/json\");\n}","export default function (list, options, setFileContents) {\n\tconst fileContents = [];\n\n\tlist.forEach((row) => {\n\t\tconst item = {};\n\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\trow.columns.forEach((col) => {\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\titem[col.component.getTitleDownload() || col.component.getField()] = col.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tfileContents.push(JSON.stringify(item));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tsetFileContents(fileContents.join(\"\\n\"), \"application/x-ndjson\");\n}","export default function(list, options = {}, setFileContents){\n\tvar header = [],\n\tbody = [],\n\tautoTableParams = {},\n\trowGroupStyles = options.rowGroupStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 12,\n\t\tcellPadding: 6,\n\t\tfillColor: 220,\n\t},\n\trowCalcStyles = options.rowCalcStyles || {\n\t\tfontStyle: \"bold\",\n\t\tfontSize: 10,\n\t\tcellPadding: 4,\n\t\tfillColor: 232,\n\t},\n\tjsPDFParams = options.jsPDF || {},\n\ttitle = options.title ? options.title : \"\";\n\n\tif(!jsPDFParams.orientation){\n\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t}\n\n\tif(!jsPDFParams.unit){\n\t\tjsPDFParams.unit = \"pt\";\n\t}\n\n\t//parse row list\n\tlist.forEach((row) => {\n\t\tswitch(row.type){\n\t\t\tcase \"header\":\n\t\t\t\theader.push(parseRow(row));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tbody.push(parseRow(row));\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tfunction parseRow(row, styles){\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach((col) =>{\n\t\t\tvar cell;\n\n\t\t\tif(col){\n\t\t\t\tswitch(typeof col.value){\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tcol.value = col.value !== null ? JSON.stringify(col.value) : \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcell = {\n\t\t\t\t\tcontent:col.value,\n\t\t\t\t\tcolSpan:col.width,\n\t\t\t\t\trowSpan:col.height,\n\t\t\t\t};\n\n\t\t\t\tif(styles){\n\t\t\t\t\tcell.styles = styles;\n\t\t\t\t}\n\n\t\t\t\trowData.push(cell);\n\t\t\t}\n\t\t});\n\n\t\treturn rowData;\n\t}\n\n\n\t//configure PDF\n\tvar doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\tif(options.autoTable){\n\t\tif(typeof options.autoTable === \"function\"){\n\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t}else{\n\t\t\tautoTableParams = options.autoTable;\n\t\t}\n\t}\n\n\tif(title){\n\t\tautoTableParams.didDrawPage = function(data) {\n\t\t\tdoc.text(title, 40, 30);\n\t\t};\n\t}\n\n\tautoTableParams.head = header;\n\tautoTableParams.body = body;\n\n\tdoc.autoTable(autoTableParams);\n\n\tif(options.documentProcessing){\n\t\toptions.documentProcessing(doc);\n\t}\n\n\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n}\n","import CoreFeature from '../../../../core/CoreFeature.js';\n\nexport default function(list, options, setFileContents){\n\tvar self = this,\n\tsheetName = options.sheetName || \"Sheet1\",\n\tworkbook = XLSX.utils.book_new(),\n\ttableFeatures = new CoreFeature(this),\n\tcompression = 'compress' in options ? options.compress : true,\n\twriteOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression},\n\toutput;\n\n\twriteOptions.type = 'binary';\n\n\tworkbook.SheetNames = [];\n\tworkbook.Sheets = {};\n\n\tfunction generateSheet(){\n\t\tvar rows = [],\n\t\tmerges = [],\n\t\tworksheet = {},\n\t\trange = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }};\n\n\t\t//parse row list\n\t\tlist.forEach((row, i) => {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function(col, j){\n\n\t\t\t\tif(col){\n\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\tif(col.width > 1 || col.height > -1){\n\t\t\t\t\t\tif(col.height > 1 || col.width > 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}\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\trows.push(rowData);\n\t\t});\n\n\t\t//convert rows to worksheet\n\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\tif(merges.length){\n\t\t\tworksheet[\"!merges\"] = merges;\n\t\t}\n\n\t\treturn worksheet;\n\t}\n\n\tif(options.sheetOnly){\n\t\tsetFileContents(generateSheet());\n\t\treturn;\n\t}\n\n\tif(options.sheets){\n\t\tfor(var sheet in options.sheets){\n\n\t\t\tif(options.sheets[sheet] === true){\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t}else{\n\n\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\ttableFeatures.commsSend(options.sheets[sheet], \"download\", \"intercept\",{\n\t\t\t\t\ttype:\"xlsx\",\n\t\t\t\t\toptions:{sheetOnly:true},\n\t\t\t\t\tactive:self.active,\n\t\t\t\t\tintercept:function(data){\n\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}else{\n\t\tworkbook.SheetNames.push(sheetName);\n\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t}\n\n\tif(options.documentProcessing){\n\t\tworkbook = options.documentProcessing(workbook);\n\t}\n\n\t//convert workbook to binary array\n\tfunction s2ab(s) {\n\t\tvar buf = new ArrayBuffer(s.length);\n\t\tvar view = new Uint8Array(buf);\n\t\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\t\treturn buf;\n\t}\n\n\toutput = XLSX.write(workbook, writeOptions);\n\n\tsetFileContents(s2ab(output), \"application/octet-stream\");\n}\n","export default function(list, options, setFileContents){\n\tif(this.modExists(\"export\", true)){\n\t\tsetFileContents(this.modules.export.generateHTMLTable(list), \"text/html\");\n\t}\n}","import Module from '../../core/Module.js';\n\nimport defaultDownloaders from './defaults/downloaders.js';\n\nclass Download extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.registerTableOption(\"downloadEncoder\", function(data, mimeType){\n\t\t\treturn new Blob([data],{type:mimeType});\n\t\t}); //function to manipulate download data\n\t\tthis.registerTableOption(\"downloadReady\", undefined); //warn of function deprecation\n\t\tthis.registerTableOption(\"downloadConfig\", {}); //download config\n\t\tthis.registerTableOption(\"downloadRowRange\", \"active\"); //restrict download to active rows only\n\n\t\tthis.registerColumnOption(\"download\");\n\t\tthis.registerColumnOption(\"titleDownload\");\n\t}\n\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tthis.registerTableFunction(\"download\", this.download.bind(this));\n\t\tthis.registerTableFunction(\"downloadToTab\", this.downloadToTab.bind(this));\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"downloadReady\", \"downloadEncoder\");\n\t}\t\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tdownloadToTab(type, filename, options, active){\n\t\tthis.download(type, filename, options, active, true);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\t//trigger file download\n\tdownload(type, filename, options, range, interceptCallback){\n\t\tvar downloadFunc = false;\n\n\t\tfunction buildLink(data, mime){\n\t\t\tif(interceptCallback){\n\t\t\t\tif(interceptCallback === true){\n\t\t\t\t\tthis.triggerDownload(data, mime, type, filename, true);\n\t\t\t\t}else{\n\t\t\t\t\tinterceptCallback(data);\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tthis.triggerDownload(data, mime, type, filename);\n\t\t\t}\n\t\t}\n\n\t\tif(typeof type == \"function\"){\n\t\t\tdownloadFunc = type;\n\t\t}else{\n\t\t\tif(Download.downloaders[type]){\n\t\t\t\tdownloadFunc = Download.downloaders[type];\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t\t}\n\t\t}\n\n\t\tif(downloadFunc){\n\t\t\tvar list = this.generateExportList(range);\n\n\t\t\tdownloadFunc.call(this.table, list , options || {}, buildLink.bind(this));\n\t\t}\n\t}\n\n\tgenerateExportList(range){\n\t\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t\t//assign group header formatter\n\t\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\t\tif(groupHeader && !Array.isArray(groupHeader)){\n\t\t\tgroupHeader = [groupHeader];\n\t\t}\n\n\t\tlist.forEach((row) => {\n\t\t\tvar group;\n\n\t\t\tif(row.type === \"group\"){\n\t\t\t\tgroup = row.columns[0];\n\n\t\t\t\tif(groupHeader && groupHeader[row.indent]){\n\t\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn list;\n\t}\n\n\ttriggerDownload(data, mime, type, filename, newTab){\n\t\tvar element = document.createElement('a'),\n\t\tblob = this.table.options.downloadEncoder(data, mime);\n\n\t\tif(blob){\n\t\t\tif(newTab){\n\t\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t\t}else{\n\t\t\t\tfilename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\t\t\t\t\n\t\t\t\tif(navigator.msSaveOrOpenBlob){\n\t\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t\t}else{\n\t\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t\t//set file title\n\t\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t\t//trigger download\n\t\t\t\t\telement.style.display = 'none';\n\t\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\t\telement.click();\n\n\t\t\t\t\t//remove temporary link element\n\t\t\t\t\tdocument.body.removeChild(element);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"downloadComplete\");\n\t\t}\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"intercept\":\n\t\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nDownload.moduleName = \"download\";\n\n//load defaults\nDownload.downloaders = defaultDownloaders;\n\nexport default Download;","export default function maskInput(el, options){\n\tvar mask = options.mask,\n\tmaskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\tmaskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\tmaskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\";\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\", (e) => {\n\t\tvar index = el.value.length,\n\t\tchar = e.key;\n\n\t\tif(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){\n\t\t\tif(index >= mask.length){\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\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\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\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\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", (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\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}","import maskInput from './inputMask.js';\nimport urlBuilder from '../Ajax/defaults/urlGenerator.js';\n\nexport default class Edit{\n\tconstructor(editor, cell, onRendered, success, cancel, editorParams){\n\t\tthis.edit = editor;\n\t\tthis.table = editor.table;\n\t\tthis.cell = cell;\n\t\tthis.params = this._initializeParams(editorParams);\n\t\t\n\t\tthis.data = [];\n\t\tthis.displayItems = [];\n\t\tthis.currentItems = [];\n\t\tthis.focusedItem = null;\n\t\t\n\t\tthis.input = this._createInputElement();\n\t\tthis.listEl = this._createListElement();\n\t\t\n\t\tthis.initialValues = null; \n\t\t\n\t\tthis.isFilter = cell.getType() === \"header\";\n\t\t\n\t\tthis.filterTimeout = null;\n\t\tthis.filtered = false;\n\t\tthis.typing = false;\n\t\t\n\t\tthis.values = []; \n\t\tthis.popup = null; \n\t\t\n\t\tthis.listIteration = 0;\n\t\t\n\t\tthis.lastAction=\"\";\n\t\tthis.filterTerm=\"\";\n\t\t\n\t\tthis.blurable = true;\n\t\t\n\t\tthis.actions = {\n\t\t\tsuccess:success,\n\t\t\tcancel:cancel\n\t\t};\n\t\t\n\t\tthis._deprecatedOptionsCheck();\n\t\tthis._initializeValue();\n\t\t\n\t\tonRendered(this._onRendered.bind(this));\n\t}\n\t\n\t_deprecatedOptionsCheck(){\n\t\tif(this.params.listItemFormatter){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.sortValuesList){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchFunc){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t\t\n\t\tif(this.params.searchingPlaceholder){\n\t\t\tthis.cell.getTable().deprecationAdvisor.msg(\"The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options\");\n\t\t}\n\t}\n\t\n\t_initializeValue(){\n\t\tvar initialValue = this.cell.getValue();\n\t\t\n\t\tif(typeof initialValue === \"undefined\" && typeof this.params.defaultValue !== \"undefined\"){\n\t\t\tinitialValue = this.params.defaultValue;\n\t\t}\n\t\t\n\t\tthis.initialValues = this.params.multiselect ? initialValue : [initialValue];\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.input.value = this.initialValues ? this.initialValues.join(\",\") : \"\";\n\t\t\tthis.headerFilterInitialListGen(); \n\t\t}\n\t}\n\t\n\t_onRendered(){\n\t\tvar cellEl = this.cell.getElement();\n\t\t\n\t\tfunction clickStop(e){\n\t\t\te.stopPropagation();\n\t\t}\t\n\t\t\n\t\tif(!this.isFilter){\n\t\t\tthis.input.style.height = \"100%\";\n\t\t\tthis.input.focus({preventScroll: true});\n\t\t}\n\t\t\n\t\t\n\t\tcellEl.addEventListener(\"click\", clickStop);\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tcellEl.removeEventListener(\"click\", clickStop);\n\t\t}, 1000);\n\t\t\n\t\tthis.input.addEventListener(\"mousedown\", this._preventPopupBlur.bind(this));\n\t}\n\t\n\t_createListElement(){\n\t\tvar listEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-list\");\n\t\t\n\t\tlistEl.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\tlistEl.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\t\n\t\treturn listEl;\n\t}\n\t\n\t_setListWidth(){\n\t\tvar element = this.isFilter ? this.input : this.cell.getElement();\n\t\t\n\t\tthis.listEl.style.minWidth = element.offsetWidth + \"px\";\n\t\t\n\t\tif(this.params.maxWidth){\n\t\t\tif(this.params.maxWidth === true){\n\t\t\t\tthis.listEl.style.maxWidth = element.offsetWidth + \"px\";\n\t\t\t}else if(typeof this.params.maxWidth === \"number\"){\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth + \"px\";\n\t\t\t}else{\n\t\t\t\tthis.listEl.style.maxWidth = this.params.maxWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\t\n\t_createInputElement(){\n\t\tvar attribs = this.params.elementAttributes;\n\t\tvar input = document.createElement(\"input\");\n\t\t\n\t\tinput.setAttribute(\"type\", this.params.clearable ? \"search\" : \"text\");\n\t\t\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\t\n\t\tif(!this.params.autocomplete){\n\t\t\tinput.style.cursor = \"default\";\n\t\t\tinput.style.caretColor = \"transparent\";\n\t\t\t// input.readOnly = (this.edit.currentCell != false);\n\t\t}\n\t\t\n\t\tif(attribs && typeof attribs == \"object\"){\n\t\t\tfor (let key in attribs){\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) + attribs[\"+\" + key]);\n\t\t\t\t}else{\n\t\t\t\t\tinput.setAttribute(key, attribs[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(this.params.mask){\n\t\t\tmaskInput(input, this.params);\n\t\t}\n\t\t\n\t\tthis._bindInputEvents(input);\n\t\t\n\t\treturn input;\n\t}\n\t\n\t_initializeParams(params){\n\t\tvar valueKeys = [\"values\", \"valuesURL\", \"valuesLookup\"],\n\t\tvalueCheck;\n\t\t\n\t\tparams = Object.assign({}, params);\n\t\t\n\t\tparams.verticalNavigation = params.verticalNavigation || \"editor\";\n\t\tparams.placeholderLoading = typeof params.placeholderLoading === \"undefined\" ? \"Searching ...\" : params.placeholderLoading;\n\t\tparams.placeholderEmpty = typeof params.placeholderEmpty === \"undefined\" ? \"No Results Found\" : params.placeholderEmpty;\n\t\tparams.filterDelay = typeof params.filterDelay === \"undefined\" ? 300 : params.filterDelay;\n\t\t\n\t\tparams.emptyValue = Object.keys(params).includes(\"emptyValue\") ? params.emptyValue : \"\";\n\t\t\n\t\tvalueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length;\n\t\t\n\t\tif(!valueCheck){\n\t\t\tconsole.warn(\"list editor config error - either the values, valuesURL, or valuesLookup option must be set\");\n\t\t}else if(valueCheck > 1){\n\t\t\tconsole.warn(\"list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor\");\n\t\t}\n\t\t\n\t\tif(params.autocomplete){\n\t\t\tif(params.multiselect){\n\t\t\t\tparams.multiselect = false;\n\t\t\t\tconsole.warn(\"list editor config error - multiselect option is not available when autocomplete is enabled\");\n\t\t\t}\n\t\t}else{\n\t\t\tif(params.freetext){\n\t\t\t\tparams.freetext = false;\n\t\t\t\tconsole.warn(\"list editor config error - freetext option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterFunc){\n\t\t\t\tparams.filterFunc = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterFunc option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.filterRemote){\n\t\t\t\tparams.filterRemote = false;\n\t\t\t\tconsole.warn(\"list editor config error - filterRemote option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.mask){\n\t\t\t\tparams.mask = false;\n\t\t\t\tconsole.warn(\"list editor config error - mask option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.allowEmpty){\n\t\t\t\tparams.allowEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - allowEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t\t\n\t\t\tif(params.listOnEmpty){\n\t\t\t\tparams.listOnEmpty = false;\n\t\t\t\tconsole.warn(\"list editor config error - listOnEmpty option is only available when autocomplete is enabled\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(params.filterRemote && !(typeof params.valuesLookup === \"function\" || params.valuesURL)){\n\t\t\tparams.filterRemote = false;\n\t\t\tconsole.warn(\"list editor config error - filterRemote option should only be used when values list is populated from a remote source\");\n\t\t}\n\t\treturn params;\n\t}\n\t//////////////////////////////////////\n\t////////// Event Handling ////////////\n\t//////////////////////////////////////\n\t\n\t_bindInputEvents(input){\n\t\tinput.addEventListener(\"focus\", this._inputFocus.bind(this));\n\t\tinput.addEventListener(\"click\", this._inputClick.bind(this));\n\t\tinput.addEventListener(\"blur\", this._inputBlur.bind(this));\n\t\tinput.addEventListener(\"keydown\", this._inputKeyDown.bind(this));\n\t\tinput.addEventListener(\"search\", this._inputSearch.bind(this));\n\t\t\n\t\tif(this.params.autocomplete){\n\t\t\tinput.addEventListener(\"keyup\", this._inputKeyUp.bind(this));\n\t\t}\n\t}\n\t\n\t\n\t_inputFocus(e){\n\t\tthis.rebuildOptionsList();\n\t}\n\t\n\t_filter(){\n\t\tif(this.params.filterRemote){\n\t\t\tclearTimeout(this.filterTimeout);\n\t\t\t\n\t\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\t\tthis.rebuildOptionsList();\n\t\t\t}, this.params.filterDelay);\n\t\t}else{\n\t\t\tthis._filterList();\n\t\t}\n\t}\n\t\n\t_inputClick(e){\n\t\te.stopPropagation();\n\t}\n\t\n\t_inputBlur(e){\n\t\tif(this.blurable){\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.hide();\n\t\t\t}else{\n\t\t\t\tthis._resolveValue(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_inputSearch(){\n\t\tthis._clearChoices();\n\t}\n\t\n\t_inputKeyDown(e){\n\t\tswitch(e.keyCode){\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\t\tthis._keyUp(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 40: //down arrow\n\t\t\t\tthis._keyDown(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //right arrow\n\t\t\t\tthis._keySide(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 13: //enter\n\t\t\t\tthis._keyEnter();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27: //escape\n\t\t\t\tthis._keyEsc();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 36: //home\n\t\t\tcase 35: //end\n\t\t\t\tthis._keyHomeEnd(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 9: //tab\n\t\t\t\tthis._keyTab(e);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keySelectLetter(e);\n\t\t}\n\t}\n\t\n\t_inputKeyUp(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 38: //up arrow\n\t\t\tcase 37: //left arrow\n\t\t\tcase 39: //up arrow\n\t\t\tcase 40: //right arrow\n\t\t\tcase 13: //enter\n\t\t\tcase 27: //escape\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis._keyAutoCompLetter(e);\n\t\t}\n\t}\n\t\n\t_preventPopupBlur(){\n\t\tif(this.popup){\n\t\t\tthis.popup.blockHide();\n\t\t}\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tif(this.popup){\n\t\t\t\tthis.popup.restoreHide();\n\t\t\t}\n\t\t}, 10);\n\t}\n\t\n\t_preventBlur(){\n\t\tthis.blurable = false;\n\t\t\n\t\tsetTimeout(() =>{\n\t\t\tthis.blurable = true;\n\t\t}, 10);\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Keyboard Navigation /////////\n\t//////////////////////////////////////\n\t\n\t_keyTab(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyUp(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index > 0){\n\t\t\t\tthis._focusItem(this.displayItems[index - 1]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyDown(e){\n\t\tvar index = this.displayItems.indexOf(this.focusedItem);\n\t\t\n\t\tif(this.params.verticalNavigation == \"editor\" || (this.params.verticalNavigation == \"hybrid\" && index < this.displayItems.length - 1)){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tif(index < this.displayItems.length - 1){\n\t\t\t\tif(index == -1){\n\t\t\t\t\tthis._focusItem(this.displayItems[0]);\n\t\t\t\t}else{\n\t\t\t\t\tthis._focusItem(this.displayItems[index + 1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keySide(e){\n\t\tif(!this.params.autocomplete){\n\t\t\te.stopImmediatePropagation();\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\t_keyEnter(e){\n\t\tif(this.params.autocomplete && this.lastAction === \"typing\"){\n\t\t\tthis._resolveValue(true);\n\t\t}else{\n\t\t\tif(this.focusedItem){\n\t\t\t\tthis._chooseItem(this.focusedItem);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyEsc(e){\n\t\tthis._cancel();\n\t}\n\t\n\t_keyHomeEnd(e){\n\t\tif(this.params.autocomplete){\n\t\t\t//prevent table navigation while using input element\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\t}\n\t\n\t_keySelectLetter(e){\n\t\tif(!this.params.autocomplete){\n\t\t\t// if(this.edit.currentCell === false){\n\t\t\te.preventDefault();\n\t\t\t// }\n\t\t\t\n\t\t\tif(e.keyCode >= 38 && e.keyCode <= 90){\n\t\t\t\tthis._scrollToValue(e.keyCode);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_keyAutoCompLetter(e){\n\t\tthis._filter();\n\t\tthis.lastAction = \"typing\";\n\t\tthis.typing = true;\n\t}\n\t\n\t\n\t_scrollToValue(char){\n\t\tclearTimeout(this.filterTimeout);\n\t\t\n\t\tvar character = String.fromCharCode(char).toLowerCase();\n\t\tthis.filterTerm += character.toLowerCase();\n\t\t\n\t\tvar match = this.displayItems.find((item) => {\n\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(this.filterTerm);\n\t\t});\n\t\t\n\t\tif(match){\n\t\t\tthis._focusItem(match);\n\t\t}\n\t\t\n\t\tthis.filterTimeout = setTimeout(() => {\n\t\t\tthis.filterTerm = \"\";\n\t\t}, 800);\n\t}\n\t\n\t_focusItem(item){\n\t\tthis.lastAction = \"focus\";\n\t\t\n\t\tif(this.focusedItem && this.focusedItem.element){\n\t\t\tthis.focusedItem.element.classList.remove(\"focused\");\n\t\t}\n\t\t\n\t\tthis.focusedItem = item;\n\t\t\n\t\tif(item && item.element){\n\t\t\titem.element.classList.add(\"focused\");\n\t\t\titem.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});\n\t\t}\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t/////// Data List Generation /////////\n\t//////////////////////////////////////\n\theaderFilterInitialListGen(){\n\t\tthis._generateOptions(true);\n\t}\n\t\n\trebuildOptionsList(){\n\t\tthis._generateOptions()\n\t\t\t.then(this._sortOptions.bind(this))\n\t\t\t.then(this._buildList.bind(this))\n\t\t\t.then(this._showList.bind(this))\n\t\t\t.catch((e) => {\n\t\t\t\tif(!Number.isInteger(e)){\n\t\t\t\t\tconsole.error(\"List generation error\", e);\n\t\t\t\t}\n\t\t\t});\n\t}\n\t\n\t_filterList(){\n\t\tthis._buildList(this._filterOptions());\n\t\tthis._showList();\n\t}\n\t\n\t_generateOptions(silent){\n\t\tvar values = [];\n\t\tvar iteration = ++ this.listIteration;\n\t\t\n\t\tthis.filtered = false;\n\t\t\n\t\tif(this.params.values){\n\t\t\tvalues = this.params.values;\n\t\t}else if (this.params.valuesURL){\n\t\t\tvalues = this._ajaxRequest(this.params.valuesURL, this.input.value);\n\t\t}else{\n\t\t\tif(typeof this.params.valuesLookup === \"function\"){\n\t\t\t\tvalues = this.params.valuesLookup(this.cell, this.input.value);\n\t\t\t}else if(this.params.valuesLookup){\n\t\t\t\tvalues = this._uniqueColumnValues(this.params.valuesLookupField);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(values instanceof Promise){\n\t\t\tif(!silent){\n\t\t\t\tthis._addPlaceholder(this.params.placeholderLoading);\n\t\t\t}\n\t\t\t\n\t\t\treturn values.then()\n\t\t\t\t.then((responseValues) => {\n\t\t\t\t\tif(this.listIteration === iteration){\n\t\t\t\t\t\treturn this._parseList(responseValues);\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn Promise.reject(iteration);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn Promise.resolve(this._parseList(values));\n\t\t}\n\t}\n\t\n\t_addPlaceholder(contents){\n\t\tvar placeholder = document.createElement(\"div\");\n\t\t\n\t\tif(typeof contents === \"function\"){\n\t\t\tcontents = contents(this.cell.getComponent(), this.listEl);\n\t\t}\n\t\t\n\t\tif(contents){\n\t\t\tthis._clearList();\n\t\t\t\n\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\tplaceholder = contents;\n\t\t\t}else{\n\t\t\t\tplaceholder.classList.add(\"tabulator-edit-list-placeholder\");\n\t\t\t\tplaceholder.innerHTML = contents;\n\t\t\t}\n\t\t\t\n\t\t\tthis.listEl.appendChild(placeholder);\n\t\t\t\n\t\t\tthis._showList();\n\t\t}\n\t}\n\t\n\t_ajaxRequest(url, term){\n\t\tvar params = this.params.filterRemote ? {term:term} : {};\n\t\turl = urlBuilder(url, {}, params);\n\t\t\n\t\treturn fetch(url)\n\t\t\t.then((response)=>{\n\t\t\t\tif(response.ok) {\n\t\t\t\t\treturn response.json()\n\t\t\t\t\t\t.catch((error)=>{\n\t\t\t\t\t\t\tconsole.warn(\"List Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treturn Promise.reject(response);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error)=>{\n\t\t\t\tconsole.error(\"List Ajax Load Error - Connection Error: \", error);\n\t\t\t\treturn Promise.reject(error);\n\t\t\t});\n\t}\n\t\n\t_uniqueColumnValues(field){\n\t\tvar output = {},\n\t\tdata = this.table.getData(this.params.valuesLookup),\n\t\tcolumn;\n\t\t\n\t\tif(field){\n\t\t\tcolumn = this.table.columnManager.getColumnByField(field);\n\t\t}else{\n\t\t\tcolumn = this.cell.getColumn()._getSelf();\n\t\t}\n\t\t\n\t\tif(column){\n\t\t\tdata.forEach((row) => {\n\t\t\t\tvar val = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tif(val !== null && typeof val !== \"undefined\" && val !== \"\"){\n\t\t\t\t\toutput[val] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\toutput = [];\n\t\t}\n\t\t\n\t\treturn Object.keys(output);\n\t}\n\t\n\t\n\t_parseList(inputValues){\n\t\tvar data = [];\n\t\t\n\t\tif(!Array.isArray(inputValues)){\n\t\t\tinputValues = Object.entries(inputValues).map(([key, value]) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:key,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t\n\t\tinputValues.forEach((value) => {\n\t\t\tif(typeof value !== \"object\"){\n\t\t\t\tvalue = {\n\t\t\t\t\tlabel:value,\n\t\t\t\t\tvalue:value,\n\t\t\t\t};\n\t\t\t}\n\t\t\t\n\t\t\tthis._parseListItem(value, data, 0);\n\t\t});\n\t\t\n\t\tif(!this.currentItems.length && this.params.freetext){\n\t\t\tthis.input.value = this.initialValues;\n\t\t\tthis.typing = true;\n\t\t\tthis.lastAction = \"typing\";\n\t\t}\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\treturn data; \n\t}\n\t\n\t_parseListItem(option, data, level){\n\t\tvar item = {};\n\t\t\n\t\tif(option.options){\n\t\t\titem = this._parseListGroup(option, level + 1);\n\t\t}else{\n\t\t\titem = {\n\t\t\t\tlabel:option.label,\n\t\t\t\tvalue:option.value,\n\t\t\t\titemParams:option.itemParams,\n\t\t\t\telementAttributes: option.elementAttributes,\n\t\t\t\telement:false,\n\t\t\t\tselected:false,\n\t\t\t\tvisible:true,\n\t\t\t\tlevel:level,\n\t\t\t\toriginal:option,\n\t\t\t};\n\t\t\t\n\t\t\tif(this.initialValues && this.initialValues.indexOf(option.value) > -1){\n\t\t\t\tthis._chooseItem(item, true);\n\t\t\t}\n\t\t}\n\t\t\n\t\tdata.push(item);\n\t}\n\t\n\t_parseListGroup(option, level){\n\t\tvar item = {\n\t\t\tlabel:option.label,\n\t\t\tgroup:true,\n\t\t\titemParams:option.itemParams,\n\t\t\telementAttributes:option.elementAttributes,\n\t\t\telement:false,\n\t\t\tvisible:true,\n\t\t\tlevel:level,\n\t\t\toptions:[],\n\t\t\toriginal:option,\n\t\t};\n\t\t\n\t\toption.options.forEach((child) => {\n\t\t\tthis._parseListItem(child, item.options, level);\n\t\t});\n\t\t\n\t\treturn item;\n\t}\n\t\n\t_sortOptions(options){\n\t\tvar sorter;\n\t\t\n\t\tif(this.params.sort){\n\t\t\tsorter = typeof this.params.sort === \"function\" ? this.params.sort : this._defaultSortFunction.bind(this);\n\t\t\t\n\t\t\tthis._sortGroup(sorter, options);\n\t\t}\n\t\t\n\t\treturn options;\n\t}\n\t\n\t_sortGroup(sorter, options){\n\t\toptions.sort((a,b) => {\n\t\t\treturn sorter(a.label, b.label, a.value, b.value, a.original, b.original);\n\t\t});\n\t\t\n\t\toptions.forEach((option) => {\n\t\t\tif(option.group){\n\t\t\t\tthis._sortGroup(sorter, option.options);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_defaultSortFunction(as, bs){\n\t\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\t\tvar emptyAlign = 0;\n\t\t\n\t\tif(this.params.sort === \"desc\"){\n\t\t\t[as, bs] = [bs, as];\n\t\t}\n\t\t\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\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}\n\t\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn a.length > b.length;\n\t\t}\n\t\t\n\t\treturn emptyAlign;\n\t}\n\t\n\t_filterOptions(){\n\t\tvar filterFunc = this.params.filterFunc || this._defaultFilterFunc,\n\t\tterm = this.input.value;\n\t\t\n\t\tif(term){\n\t\t\tthis.filtered = true;\n\t\t\t\n\t\t\tthis.data.forEach((item) => {\n\t\t\t\tthis._filterItem(filterFunc, term, item);\n\t\t\t});\n\t\t}else{\n\t\t\tthis.filtered = false;\n\t\t}\n\t\t\n\t\treturn this.data;\n\t}\n\t\n\t_filterItem(func, term, item){\n\t\tvar matches = false;\n\t\t\n\t\tif(!item.group){\n\t\t\titem.visible = func(term, item.label, item.value, item.original);\n\t\t}else{\n\t\t\titem.options.forEach((option) => {\n\t\t\t\tif(this._filterItem(func, term, option)){\n\t\t\t\t\tmatches = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\titem.visible = matches;\n\t\t}\n\t\t\n\t\treturn item.visible;\n\t}\n\t\n\t_defaultFilterFunc(term, label, value, item){\n\t\tterm = String(term).toLowerCase();\n\t\t\n\t\tif(label !== null && typeof label !== \"undefined\"){\n\t\t\tif(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\t//////////////////////////////////////\n\t/////////// Display List /////////////\n\t//////////////////////////////////////\n\t\n\t_clearList(){\n\t\twhile(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild);\n\t\t\n\t\tthis.displayItems = [];\n\t}\n\t\n\t_buildList(data){\n\t\tthis._clearList();\n\t\t\n\t\tdata.forEach((option) => {\n\t\t\tthis._buildItem(option);\n\t\t});\n\t\t\n\t\tif(!this.displayItems.length){\n\t\t\tthis._addPlaceholder(this.params.placeholderEmpty);\n\t\t} \n\t}\n\t\n\t_buildItem(item){\n\t\tvar el = item.element,\n\t\tcontents;\n\t\t\n\t\tif(!this.filtered || item.visible){\n\t\t\t\n\t\t\tif(!el){\n\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\n\t\t\t\tcontents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label;\n\t\t\t\t\n\t\t\t\tif(contents instanceof HTMLElement){\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t}else{\n\t\t\t\t\tel.innerHTML = contents;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-group\");\n\t\t\t\t}else{\n\t\t\t\t\tel.classList.add(\"tabulator-edit-list-item\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.classList.add(\"tabulator-edit-list-group-level-\" + item.level);\n\t\t\t\t\n\t\t\t\tif(item.elementAttributes && typeof item.elementAttributes == \"object\"){\n\t\t\t\t\tfor (let key in item.elementAttributes){\n\t\t\t\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\tel.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(item.group){\n\t\t\t\t\tel.addEventListener(\"click\", this._groupClick.bind(this, item));\n\t\t\t\t}else{\n\t\t\t\t\tel.addEventListener(\"click\", this._itemClick.bind(this, item));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tel.addEventListener(\"mousedown\", this._preventBlur.bind(this));\n\t\t\t\t\n\t\t\t\titem.element = el;\n\t\t\t}\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tthis.listEl.appendChild(el);\n\t\t\t\n\t\t\tif(item.group){\n\t\t\t\titem.options.forEach((option) => {\n\t\t\t\t\tthis._buildItem(option);\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.displayItems.push(item);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_showList(){\n\t\tvar startVis = this.popup && this.popup.isVisible();\n\t\t\n\t\tif(this.input.parentNode){\n\t\t\tif(this.params.autocomplete && this.input.value === \"\" && !this.params.listOnEmpty){\n\t\t\t\tif(this.popup){\n\t\t\t\t\tthis.popup.hide(true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis._setListWidth();\n\t\t\t\n\t\t\tif(!this.popup){\n\t\t\t\tthis.popup = this.edit.popup(this.listEl);\n\t\t\t}\n\t\t\t\n\t\t\tthis.popup.show(this.cell.getElement(), \"bottom\");\n\t\t\t\n\t\t\tif(!startVis){\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.popup.hideOnBlur(this._resolveValue.bind(this, true));\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_styleItem(item){\n\t\tif(item && item.element){\n\t\t\tif(item.selected){\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}else{\n\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// User Interaction ///////////\n\t//////////////////////////////////////\n\t\n\t_itemClick(item, e){\n\t\te.stopPropagation();\n\t\t\n\t\tthis._chooseItem(item);\n\t}\n\t\n\t_groupClick(item, e){\n\t\te.stopPropagation();\n\t}\n\t\n\t\n\t//////////////////////////////////////\n\t////// Current Item Management ///////\n\t//////////////////////////////////////\n\t\n\t_cancel(){\n\t\tthis.popup.hide(true);\n\t\tthis.actions.cancel();\n\t}\n\t\n\t_clearChoices(){\n\t\tthis.typing = true;\n\t\t\n\t\tthis.currentItems.forEach((item) => {\n\t\t\titem.selected = false;\n\t\t\tthis._styleItem(item);\n\t\t});\n\t\t\n\t\tthis.currentItems = [];\n\t\t\n\t\tthis.focusedItem = null;\n\t}\n\t\n\t_chooseItem(item, silent){\n\t\tvar index;\n\t\t\n\t\tthis.typing = false;\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\tindex = this.currentItems.indexOf(item);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.currentItems.splice(index, 1);\n\t\t\t\titem.selected = false;\n\t\t\t}else{\n\t\t\t\tthis.currentItems.push(item);\n\t\t\t\titem.selected = true;\n\t\t\t}\n\t\t\t\n\t\t\tthis.input.value = this.currentItems.map(item => item.label).join(\",\");\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t}else{\n\t\t\tthis.currentItems = [item];\n\t\t\titem.selected = true;\n\t\t\t\n\t\t\tthis.input.value = item.label;\n\t\t\t\n\t\t\tthis._styleItem(item);\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis._resolveValue();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis._focusItem(item);\n\t}\n\t\n\t_resolveValue(blur){\n\t\tvar output, initialValue;\n\t\t\n\t\tif(this.popup){\n\t\t\tthis.popup.hide(true);\n\t\t}\n\t\t\n\t\tif(this.params.multiselect){\n\t\t\toutput = this.currentItems.map(item => item.value);\n\t\t}else{\n\t\t\tif(blur && this.params.autocomplete && this.typing){\n\t\t\t\tif(this.params.freetext || (this.params.allowEmpty && this.input.value === \"\")){\n\t\t\t\t\toutput = this.input.value;\n\t\t\t\t}else{\n\t\t\t\t\tthis.actions.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.currentItems[0]){\n\t\t\t\t\toutput = this.currentItems[0].value;\n\t\t\t\t}else{\n\t\t\t\t\tinitialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues;\n\t\t\t\t\t\n\t\t\t\t\tif(initialValue === null || typeof initialValue === \"undefined\" || initialValue === \"\"){\n\t\t\t\t\t\toutput = initialValue;\n\t\t\t\t\t}else{\n\t\t\t\t\t\toutput = this.params.emptyValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(output === \"\"){\n\t\t\toutput = this.params.emptyValue;\n\t\t}\n\t\t\n\t\tthis.actions.success(output);\n\t\t\n\t\tif(this.isFilter){\n\t\t\tthis.initialValues = output && !Array.isArray(output) ? [output] : output;\n\t\t\tthis.currentItems = [];\n\t\t}\n\t}\n\t\n}\n","import input from './editors/input.js';\nimport textarea from './editors/textarea.js';\nimport number from './editors/number.js';\nimport range from './editors/range.js';\nimport date from './editors/date.js';\nimport time from './editors/time.js';\nimport datetime from './editors/datetime.js';\nimport select from './editors/select.js';\nimport list from './editors/list.js';\nimport autocomplete from './editors/autocomplete.js';\nimport star from './editors/star.js';\nimport progress from './editors/progress.js';\nimport tickCross from './editors/tickCross.js';\n\nexport default {\n\tinput:input,\n\ttextarea:textarea,\n\tnumber:number,\n\trange:range,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tselect:select,\n\tlist:list,\n\tautocomplete:autocomplete,\n\tstar:star,\n\tprogress:progress,\n\ttickCross:tickCross,\n};","import maskInput from '../../inputMask.js';\n\n//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange(e);\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//resizable text area element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"hybrid\",\n\tvalue = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\tinput = document.createElement(\"textarea\"),\n\tscrollHeight = 0;\n\n\t//create and style input\n\tinput.style.display = \"block\";\n\tinput.style.padding = \"2px\";\n\tinput.style.height = \"100%\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\tinput.style.whiteSpace = \"pre-wrap\";\n\tinput.style.resize = \"none\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = value;\n\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\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\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(e){\n\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\") || input.value !== cellValue){\n\n\t\t\tif(success(input.value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\n\t\t\tsetTimeout(function(){\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t},300);\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on blur or change\n\tinput.addEventListener(\"change\", onChange);\n\tinput.addEventListener(\"blur\", onChange);\n\n\tinput.addEventListener(\"keyup\", function(){\n\n\t\tinput.style.height = \"\";\n\n\t\tvar heightNow = input.scrollHeight;\n\n\t\tinput.style.height = heightNow + \"px\";\n\n\t\tif(heightNow != scrollHeight){\n\t\t\tscrollHeight = heightNow;\n\t\t\tcell.getRow().normalizeHeight();\n\t\t}\n\t});\n\n\tinput.addEventListener(\"keydown\", function(e){\n\n\t\tswitch(e.keyCode){\n\n\t\t\tcase 13:\n\t\t\t\tif(e.shiftKey && editorParams.shiftEnterSubmit){\n\t\t\t\t\tonChange(e);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\" || (vertNav == \"hybrid\" && input.selectionStart !== input.value.length)){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","import maskInput from '../../inputMask.js';\n\n//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tinput = document.createElement(\"input\");\n\n\tinput.setAttribute(\"type\", \"number\");\n\n\tif(typeof editorParams.max != \"undefined\"){\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\n\tif(typeof editorParams.min != \"undefined\"){\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\n\tif(typeof editorParams.step != \"undefined\"){\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\tinput.value = cellValue;\n\n\tvar blurFunc = function(e){\n\t\tonChange();\n\t};\n\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\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\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction onChange(){\n\t\tvar value = input.value;\n\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\n\t\tif(value !== cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(editorParams.mask){\n\t\tmaskInput(input, editorParams);\n\t}\n\n\treturn input;\n}","//input element with type of number\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.setAttribute(\"type\", \"range\");\n\t\n\tif (typeof editorParams.max != \"undefined\") {\n\t\tinput.setAttribute(\"max\", editorParams.max);\n\t}\n\t\n\tif (typeof editorParams.min != \"undefined\") {\n\t\tinput.setAttribute(\"min\", editorParams.min);\n\t}\n\t\n\tif (typeof editorParams.step != \"undefined\") {\n\t\tinput.setAttribute(\"step\", editorParams.step);\n\t}\n\t\n\t//create and style input\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function () {\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value;\n\t\t\n\t\tif(!isNaN(value) && value !==\"\"){\n\t\t\tvalue = Number(value);\n\t\t}\n\t\t\n\t\tif(value != cellValue){\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e){\n\t\tonChange();\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 13:\n\t\t\t// case 9:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tfunction convertDate(value){\n\t\tvar newDatetime;\n\t\t\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\t\t\n\t\treturn newDatetime.toFormat(\"yyyy-MM-dd\");\n\t}\n\t\n\tinput.type = \"date\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\n\tif(editorParams.max){\n\t\tinput.setAttribute(\"max\", inputFormat ? convertDate(editorParams.max) : editorParams.max);\n\t}\n\n\tif(editorParams.min){\n\t\tinput.setAttribute(\"min\", inputFormat ? convertDate(editorParams.min) : editorParams.min);\n\t}\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\t\t\n\t\t\tcellValue = convertDate(cellValue);\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDate;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDate = DT.fromFormat(String(value), \"yyyy-MM-dd\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDate;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDate.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDate.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"time\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"HH:mm\");\n\t\t\t\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\n\tconsole.log(\"val\", cellValue);\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() == \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\t\t\t\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxTime = DT.fromFormat(String(value), \"hh:mm\");\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","//input element\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar inputFormat = editorParams.format,\n\tvertNav = editorParams.verticalNavigation || \"editor\",\n\tDT = inputFormat ? (window.DateTime || luxon.DateTime) : null, \n\tnewDatetime;\n\t\n\t//create and style input\n\tvar cellValue = cell.getValue(),\n\tinput = document.createElement(\"input\");\n\t\n\tinput.type = \"datetime-local\";\n\tinput.style.padding = \"4px\";\n\tinput.style.width = \"100%\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcellValue = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\t\n\tif(inputFormat){\n\t\tif(DT){\n\t\t\tif(DT.isDateTime(cellValue)){\n\t\t\t\tnewDatetime = cellValue;\n\t\t\t}else if(inputFormat === \"iso\"){\n\t\t\t\tnewDatetime = DT.fromISO(String(cellValue));\n\t\t\t}else{\n\t\t\t\tnewDatetime = DT.fromFormat(String(cellValue), inputFormat);\n\t\t\t}\n\t\t\t\n\t\t\tcellValue = newDatetime.toFormat(\"yyyy-MM-dd\") + \"T\" + newDatetime.toFormat(\"HH:mm\");\n\t\t}else{\n\t\t\tconsole.error(\"Editor Error - 'date' editor 'format' param is dependant on luxon.js\");\n\t\t}\n\t}\n\t\n\tinput.value = cellValue;\n\t\n\tonRendered(function(){\n\t\tif(cell.getType() === \"cell\"){\n\t\t\tinput.focus({preventScroll: true});\n\t\t\tinput.style.height = \"100%\";\n\t\t\t\n\t\t\tif(editorParams.selectContents){\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t});\n\t\n\tfunction onChange(){\n\t\tvar value = input.value,\n\t\tluxDateTime;\n\t\t\n\t\tif(((cellValue === null || typeof cellValue === \"undefined\") && value !== \"\") || value !== cellValue){\n\n\t\t\tif(value && inputFormat){\n\t\t\t\tluxDateTime = DT.fromISO(String(value));\n\n\t\t\t\tswitch(inputFormat){\n\t\t\t\t\tcase true:\n\t\t\t\t\t\tvalue = luxDateTime;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"iso\":\n\t\t\t\t\t\tvalue = luxDateTime.toISO();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = luxDateTime.toFormat(inputFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(success(value)){\n\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t}\n\t\t}else{\n\t\t\tcancel();\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"blur\", function(e) {\n\t\tif (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) {\n\t\t\tonChange(); // only on a \"true\" blur; not when focusing browser's date/time picker\n\t\t}\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\t// case 9:\n\t\t\tcase 13:\n\t\t\t\tonChange();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 27:\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase 35:\n\t\t\tcase 36:\n\t\t\t\te.stopPropagation();\n\t\t\t\tbreak;\n\n\t\t\tcase 38: //up arrow\n\t\t\tcase 40: //down arrow\n\t\t\t\tif(vertNav == \"editor\"){\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t\n\treturn input;\n}\n","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The select editor has been deprecated, please use the new list editor\");\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","import List from '../../List.js';\n\nexport default function(cell, onRendered, success, cancel, editorParams){\n\n\tthis.deprecationMsg(\"The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam\");\n\n\teditorParams.autocomplete = true;\n\n\tvar list = new List(this, cell, onRendered, success, cancel, editorParams);\n\n\treturn list.input;\n}","//star rating\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar self = this,\n\telement = cell.getElement(),\n\tvalue = cell.getValue(),\n\tmaxStars = element.getElementsByTagName(\"svg\").length || 5,\n\tsize = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\tstars = [],\n\tstarsHolder = document.createElement(\"div\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\n\t//change star type\n\tfunction starChange(val){\n\t\tstars.forEach(function(star, i){\n\t\t\tif(i < val){\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}else{\n\t\t\t\tif(self.table.browser == \"ie\"){\n\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t}else{\n\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t}\n\n\t\t\t\tstar.innerHTML = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//build stars\n\tfunction buildStar(i){\n\n\t\tvar starHolder = document.createElement(\"span\");\n\t\tvar nextStar = star.cloneNode(true);\n\n\t\tstars.push(nextStar);\n\n\t\tstarHolder.addEventListener(\"mouseenter\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tstarChange(i);\n\t\t});\n\n\t\tstarHolder.addEventListener(\"mousemove\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t});\n\n\t\tstarHolder.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tsuccess(i);\n\t\t\telement.blur();\n\t\t});\n\n\t\tstarHolder.appendChild(nextStar);\n\t\tstarsHolder.appendChild(starHolder);\n\n\t}\n\n\t//handle keyboard navigation value change\n\tfunction changeValue(val){\n\t\tvalue = val;\n\t\tstarChange(val);\n\t}\n\n\t//style cell\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\t//style holding element\n\tstarsHolder.style.verticalAlign = \"middle\";\n\tstarsHolder.style.display = \"inline-block\";\n\tstarsHolder.style.padding = \"4px\";\n\n\t//style star\n\tstar.setAttribute(\"width\", size);\n\tstar.setAttribute(\"height\", size);\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//create correct number of stars\n\tfor(var i=1;i<= maxStars;i++){\n\t\tbuildStar(i);\n\t}\n\n\t//ensure value does not exceed number of stars\n\tvalue = Math.min(parseInt(value), maxStars);\n\n\t// set initial styling of stars\n\tstarChange(value);\n\n\tstarsHolder.addEventListener(\"mousemove\", function(e){\n\t\tstarChange(0);\n\t});\n\n\tstarsHolder.addEventListener(\"click\", function(e){\n\t\tsuccess(0);\n\t});\n\n\telement.addEventListener(\"blur\", function(e){\n\t\tcancel();\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\tchangeValue(value + 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\tchangeValue(value - 1);\n\t\t\t\tbreak;\n\n\t\t\tcase 13: //enter\n\t\t\t\tsuccess(value);\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn starsHolder;\n}","//draggable progress bar\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar element = cell.getElement(),\n\tmax = typeof editorParams.max === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"max\")) || 100) : editorParams.max,\n\tmin = typeof editorParams.min === \"undefined\" ? ((element.getElementsByTagName(\"div\")[0] && element.getElementsByTagName(\"div\")[0].getAttribute(\"min\")) || 0) : editorParams.min,\n\tpercent = (max - min) / 100,\n\tvalue = cell.getValue() || 0,\n\thandle = document.createElement(\"div\"),\n\tbar = document.createElement(\"div\"),\n\tmouseDrag, mouseDragWidth;\n\n\t//set new value\n\tfunction updateValue(){\n\t\tvar style = window.getComputedStyle(element, null);\n\n\t\tvar calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\")))/100))) + min;\n\t\tsuccess(calcVal);\n\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\telement.setAttribute(\"aria-label\", value);\n\t}\n\n\t//style handle\n\thandle.style.position = \"absolute\";\n\thandle.style.right = \"0\";\n\thandle.style.top = \"0\";\n\thandle.style.bottom = \"0\";\n\thandle.style.width = \"5px\";\n\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t//style bar\n\tbar.style.display = \"inline-block\";\n\tbar.style.position = \"relative\";\n\t// bar.style.top = \"8px\";\n\t// bar.style.bottom = \"8px\";\n\t// bar.style.left = \"4px\";\n\t// bar.style.marginRight = \"4px\";\n\tbar.style.height = \"100%\";\n\tbar.style.backgroundColor = \"#488CE9\";\n\tbar.style.maxWidth = \"100%\";\n\tbar.style.minWidth = \"0%\";\n\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\n\t//style cell\n\telement.style.padding = \"4px 4px\";\n\n\t//make sure value is in range\n\tvalue = Math.min(parseFloat(value), max);\n\tvalue = Math.max(parseFloat(value), min);\n\n\t//workout percentage\n\tvalue = Math.round((value - min) / percent);\n\t// bar.style.right = value + \"%\";\n\tbar.style.width = value + \"%\";\n\n\telement.setAttribute(\"aria-valuemin\", min);\n\telement.setAttribute(\"aria-valuemax\", max);\n\n\tbar.appendChild(handle);\n\n\thandle.addEventListener(\"mousedown\", function(e){\n\t\tmouseDrag = e.screenX;\n\t\tmouseDragWidth = bar.offsetWidth;\n\t});\n\n\thandle.addEventListener(\"mouseover\", function(){\n\t\thandle.style.cursor = \"ew-resize\";\n\t});\n\n\telement.addEventListener(\"mousemove\", function(e){\n\t\tif(mouseDrag){\n\t\t\tbar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + \"px\";\n\t\t}\n\t});\n\n\telement.addEventListener(\"mouseup\", function(e){\n\t\tif(mouseDrag){\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\n\t\t\tmouseDrag = false;\n\t\t\tmouseDragWidth = false;\n\n\t\t\tupdateValue();\n\t\t}\n\t});\n\n\t//allow key based navigation\n\telement.addEventListener(\"keydown\", function(e){\n\t\tswitch(e.keyCode){\n\t\t\tcase 39: //right arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth + element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 37: //left arrow\n\t\t\t\te.preventDefault();\n\t\t\t\tbar.style.width = (bar.clientWidth - element.clientWidth/100) + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase 9: //tab\n\t\t\tcase 13: //enter\n\t\t\t\tupdateValue();\n\t\t\t\tbreak;\n\n\t\t\tcase 27: //escape\n\t\t\t\tcancel();\n\t\t\t\tbreak;\n\n\t\t}\n\t});\n\n\telement.addEventListener(\"blur\", function(){\n\t\tcancel();\n\t});\n\n\treturn bar;\n}","//checkbox\nexport default function(cell, onRendered, success, cancel, editorParams){\n\tvar value = cell.getValue(),\n\tinput = document.createElement(\"input\"),\n\ttristate = editorParams.tristate,\n\tindetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\tindetermState = false,\n\ttrueValueSet = Object.keys(editorParams).includes(\"trueValue\"),\n\tfalseValueSet = Object.keys(editorParams).includes(\"falseValue\");\n\t\n\tinput.setAttribute(\"type\", \"checkbox\");\n\tinput.style.marginTop = \"5px\";\n\tinput.style.boxSizing = \"border-box\";\n\t\n\tif(editorParams.elementAttributes && typeof editorParams.elementAttributes == \"object\"){\n\t\tfor (let key in editorParams.elementAttributes){\n\t\t\tif(key.charAt(0) == \"+\"){\n\t\t\t\tkey = key.slice(1);\n\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t}else{\n\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinput.value = value;\n\t\n\tif(tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")){\n\t\tindetermState = true;\n\t\tinput.indeterminate = true;\n\t}\n\t\n\tif(this.table.browser != \"firefox\" && this.table.browser != \"safari\"){ //prevent blur issue on mac firefox\n\t\tonRendered(function(){\n\t\t\tif(cell.getType() === \"cell\"){\n\t\t\t\tinput.focus({preventScroll: true});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tinput.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === \"true\" || value === \"True\" || value === 1);\n\t\n\tfunction setValue(blur){\n\t\tvar checkedValue = input.checked;\n\t\t\n\t\tif(trueValueSet && checkedValue){\n\t\t\tcheckedValue = editorParams.trueValue;\n\t\t}else if(falseValueSet && !checkedValue){\n\t\t\tcheckedValue = editorParams.falseValue;\n\t\t}\n\t\t\n\t\tif(tristate){\n\t\t\tif(!blur){\n\t\t\t\tif(input.checked && !indetermState){\n\t\t\t\t\tinput.checked = false;\n\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\tindetermState = true;\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\tindetermState = false;\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(indetermState){\n\t\t\t\t\treturn indetermValue;\n\t\t\t\t}else{\n\t\t\t\t\treturn checkedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\treturn checkedValue;\n\t\t}\n\t}\n\t\n\t//submit new value on blur\n\tinput.addEventListener(\"change\", function(e){\n\t\tsuccess(setValue());\n\t});\n\n\tinput.addEventListener(\"blur\", function(e){\n\t\tsuccess(setValue(true));\n\t});\n\t\n\t//submit new value on enter\n\tinput.addEventListener(\"keydown\", function(e){\n\t\tif(e.keyCode == 13){\n\t\t\tsuccess(setValue());\n\t\t}\n\t\tif(e.keyCode == 27){\n\t\t\tcancel();\n\t\t}\n\t});\n\t\n\treturn input;\n}","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultEditors from './defaults/editors.js';\n\nclass Edit extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.currentCell = false; //hold currently editing cell\n\t\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening\n\t\tthis.recursionBlock = false; //prevent focus recursion\n\t\tthis.invalidEdit = false;\n\t\tthis.editedCells = [];\n\t\t\n\t\tthis.editors = Edit.editors;\n\t\t\n\t\tthis.registerColumnOption(\"editable\");\n\t\tthis.registerColumnOption(\"editor\");\n\t\tthis.registerColumnOption(\"editorParams\");\n\t\t\n\t\tthis.registerColumnOption(\"cellEditing\");\n\t\tthis.registerColumnOption(\"cellEdited\");\n\t\tthis.registerColumnOption(\"cellEditCancelled\");\n\t\t\n\t\tthis.registerTableOption(\"editTriggerEvent\", \"focus\");\n\t\t\n\t\tthis.registerTableFunction(\"getEditedCells\", this.getEditedCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellEdited\", this.clearCellEdited.bind(this));\n\t\tthis.registerTableFunction(\"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerTableFunction(\"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerTableFunction(\"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerTableFunction(\"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerTableFunction(\"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerTableFunction(\"navigateDown\", this.navigateDown.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isEdited\", this.cellIsEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearEdited\", this.clearEdited.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"edit\", this.editCell.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"cancelEdit\", this.cellCancelEdit.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"navigatePrev\", this.navigatePrev.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateNext\", this.navigateNext.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateLeft\", this.navigateLeft.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateRight\", this.navigateRight.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateUp\", this.navigateUp.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"navigateDown\", this.navigateDown.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-init\", this.bindEditor.bind(this));\n\t\tthis.subscribe(\"cell-delete\", this.clearEdited.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.updateCellClass.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\tthis.subscribe(\"column-delete\", this.columnDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-deleting\", this.rowDeleteCheck.bind(this));\n\t\tthis.subscribe(\"row-layout\", this.rowEditableCheck.bind(this));\n\t\tthis.subscribe(\"data-refreshing\", this.cancelEdit.bind(this));\n\t\tthis.subscribe(\"clipboard-paste\", this.pasteBlocker.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.navigatePrev.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keybindingNavigateNext.bind(this));\n\t\t\n\t\t\n\t\t// this.subscribe(\"keybinding-nav-left\", this.navigateLeft.bind(this, undefined));\n\t\t// this.subscribe(\"keybinding-nav-right\", this.navigateRight.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.navigateUp.bind(this, undefined));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.navigateDown.bind(this, undefined));\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Paste Negation //////////\n\t///////////////////////////////////\n\t\n\tpasteBlocker(e){\n\t\tif(this.currentCell){\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t////// Keybinding Functions ///////\n\t///////////////////////////////////\n\t\n\tkeybindingNavigateNext(e){\n\t\tvar cell = this.currentCell,\n\t\tnewRow = this.options(\"tabEndNewRow\");\n\n\t\tif(cell){\n\t\t\tif(!this.navigateNext(cell, e)){\n\t\t\t\tif(newRow){\n\t\t\t\t\tcell.getElement().firstChild.blur();\n\t\t\t\t\t\n\t\t\t\t\tif(!this.invalidEdit){\n\t\t\t\t\t\t\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\t\t\t\t\t\t\n\t\t\t\t\t\tnewRow.then(() => {\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tcell.getComponent().navigateNext();\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\t\n\t///////////////////////////////////\n\t///////// Cell Functions //////////\n\t///////////////////////////////////\n\t\n\tcellIsEdited(cell){\n\t\treturn !! cell.modules.edit && cell.modules.edit.edited;\n\t}\n\t\n\tcellCancelEdit(cell){\n\t\tif(cell === this.currentCell){\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\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\tupdateCellClass(cell){\n\t\tif(this.allowEdit(cell)) {\n\t\t\tcell.getElement().classList.add(\"tabulator-editable\");\n\t\t}\n\t\telse {\n\t\t\tcell.getElement().classList.remove(\"tabulator-editable\");\n\t\t}\n\t}\n\t\n\tclearCellEdited(cells){\n\t\tif(!cells){\n\t\t\tcells = this.table.modules.edit.getEditedCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.table.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n\t\n\tnavigatePrev(cell = this.currentCell, e){\n\t\tvar nextCell, prevRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateLeft();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tprevRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(prevRow){\n\t\t\t\t\tnextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateNext(cell = this.currentCell, e){\n\t\tvar nextCell, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tnextCell = this.navigateRight();\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\t\n\t\t\t\tif(nextRow){\n\t\t\t\t\tnextCell = this.findNextEditableCell(nextRow, -1);\n\t\t\t\t\t\n\t\t\t\t\tif(nextCell){\n\t\t\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateLeft(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findPrevEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateRight(cell = this.currentCell, e){\n\t\tvar index, nextCell;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextCell = this.findNextEditableCell(cell.row, index);\n\t\t\t\n\t\t\tif(nextCell){\n\t\t\t\tnextCell.getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateUp(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.prevDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tnavigateDown(cell = this.currentCell, e){\n\t\tvar index, nextRow;\n\t\t\n\t\tif(cell){\n\t\t\t\n\t\t\tif(e){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\t\n\t\t\tindex = cell.getIndex();\n\t\t\tnextRow = this.table.rowManager.nextDisplayRow(cell.row, true);\n\t\t\t\n\t\t\tif(nextRow){\n\t\t\t\tnextRow.cells[index].getComponent().edit();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tfindNextEditableCell(row, index){\n\t\tvar nextCell = false;\n\t\t\n\t\tif(index < row.cells.length-1){\n\t\t\tfor(var i = index+1; i < row.cells.length; i++){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tnextCell = cell;\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\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindPrevEditableCell(row, index){\n\t\tvar prevCell = false;\n\t\t\n\t\tif(index > 0){\n\t\t\tfor(var i = index-1; i >= 0; i--){\n\t\t\t\tlet cell = row.cells[i];\n\t\t\t\t\n\t\t\t\tif(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){\n\t\t\t\t\tlet allowEdit = this.allowEdit(cell);\n\t\t\t\t\t\n\t\t\t\t\tif(allowEdit){\n\t\t\t\t\t\tprevCell = cell;\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\t\n\t\treturn prevCell;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.editor !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\tcolumnDeleteCheck(column){\n\t\tif(this.currentCell && this.currentCell.column === column){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowDeleteCheck(row){\n\t\tif(this.currentCell && this.currentCell.row === row){\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\t\n\trowEditableCheck(row){\n\t\trow.getCells().forEach((cell) => {\n\t\t\tif(cell.column.modules.edit && typeof cell.column.modules.edit.check === \"function\"){\n\t\t\t\tthis.updateCellClass(cell);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//initialize column editor\n\tinitializeColumn(column){\n\t\tvar config = {\n\t\t\teditor:false,\n\t\t\tblocked:false,\n\t\t\tcheck:column.definition.editable,\n\t\t\tparams:column.definition.editorParams || {}\n\t\t};\n\t\t\n\t\t//set column editor\n\t\tswitch(typeof column.definition.editor){\n\t\t\tcase \"string\":\n\t\t\t\tif(this.editors[column.definition.editor]){\n\t\t\t\t\tconfig.editor = this.editors[column.definition.editor];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.editor = column.definition.editor;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"boolean\":\n\t\t\t\tif(column.definition.editor === true){\n\t\t\t\t\tif(typeof column.definition.formatter !== \"function\"){\n\t\t\t\t\t\tif(this.editors[column.definition.formatter]){\n\t\t\t\t\t\t\tconfig.editor = this.editors[column.definition.formatter];\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tconfig.editor = this.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tif(config.editor){\n\t\t\tcolumn.modules.edit = config;\n\t\t}\n\t}\n\t\n\tgetCurrentCell(){\n\t\treturn this.currentCell ? this.currentCell.getComponent() : false;\n\t}\n\t\n\tclearEditor(cancel){\n\t\tvar cell = this.currentCell,\n\t\tcellEl;\n\t\t\n\t\tthis.invalidEdit = false;\n\t\t\n\t\tif(cell){\n\t\t\tthis.currentCell = false;\n\t\t\t\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tthis.dispatch(\"edit-editor-clear\", cell, cancel);\n\t\t\t\n\t\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\twhile(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);\n\t\t\t\n\t\t\tcell.row.getElement().classList.remove(\"tabulator-editing\");\n\t\t\t\n\t\t\tcell.table.element.classList.remove(\"tabulator-editing\");\n\t\t}\n\t}\n\t\n\tcancelEdit(){\n\t\tif(this.currentCell){\n\t\t\tvar cell = this.currentCell;\n\t\t\tvar component = this.currentCell.getComponent();\n\t\t\t\n\t\t\tthis.clearEditor(true);\n\t\t\tcell.setValueActual(cell.getValue());\n\t\t\tcell.cellRendered();\n\t\t\t\n\t\t\tif(cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight){\n\t\t\t\tcell.row.normalizeHeight(true);\n\t\t\t}\n\t\t\t\n\t\t\tif(cell.column.definition.cellEditCancelled){\n\t\t\t\tcell.column.definition.cellEditCancelled.call(this.table, component);\n\t\t\t}\n\t\t\t\n\t\t\tthis.dispatch(\"edit-cancelled\", cell);\n\t\t\tthis.dispatchExternal(\"cellEditCancelled\", component);\n\t\t}\n\t}\n\t\n\t//return a formatted value for a cell\n\tbindEditor(cell){\n\t\tif(cell.column.modules.edit){\n\t\t\tvar self = this,\n\t\t\telement = cell.getElement(true);\n\t\t\t\n\t\t\tthis.updateCellClass(cell);\n\t\t\telement.setAttribute(\"tabindex\", 0);\n\t\t\t\n\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif (e.button === 2) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}else{\n\t\t\t\t\tself.mouseClick = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(this.options(\"editTriggerEvent\") === \"dblclick\"){\n\t\t\t\telement.addEventListener(\"dblclick\", function(e){\n\t\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\tif(this.options(\"editTriggerEvent\") === \"focus\" || this.options(\"editTriggerEvent\") === \"click\"){\n\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\tif(!element.classList.contains(\"tabulator-editing\")){\n\t\t\t\t\t\telement.focus({preventScroll: true});\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif(this.options(\"editTriggerEvent\") === \"focus\"){\n\t\t\t\telement.addEventListener(\"focus\", function(e){\n\t\t\t\t\tif(!self.recursionBlock){\n\t\t\t\t\t\tself.edit(cell, e, false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfocusCellNoEvent(cell, block){\n\t\tthis.recursionBlock = true;\n\t\t\n\t\tif(!(block && this.table.browser === \"ie\")){\n\t\t\tcell.getElement().focus({preventScroll: true});\n\t\t}\n\t\t\n\t\tthis.recursionBlock = false;\n\t}\n\t\n\teditCell(cell, forceEdit){\n\t\tthis.focusCellNoEvent(cell);\n\t\tthis.edit(cell, false, forceEdit);\n\t}\n\t\n\tfocusScrollAdjust(cell){\n\t\tif(this.table.rowManager.getRenderMode() == \"virtual\"){\n\t\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t\tbottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t\trowEl = cell.row.getElement();\n\t\t\t\n\t\t\tif(rowEl.offsetTop < topEdge){\n\t\t\t\tthis.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop);\n\t\t\t}else{\n\t\t\t\tif(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t\trightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t\tcellEl = cell.getElement();\n\t\t\t\n\t\t\tif(this.table.modExists(\"frozenColumns\")){\n\t\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0);\n\t\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t\trightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft);\n\t\t\t}\n\t\t\t\n\t\t\tif(cellEl.offsetLeft < leftEdge){\n\t\t\t\tthis.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft);\n\t\t\t}else{\n\t\t\t\tif(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){\n\t\t\t\t\tthis.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tallowEdit(cell) {\n\t\tvar check = cell.column.modules.edit ? true : false;\n\t\t\n\t\tif(cell.column.modules.edit){\n\t\t\tswitch(typeof cell.column.modules.edit.check){\n\t\t\t\tcase \"function\":\n\t\t\t\t\tif(cell.row.initialized){\n\t\t\t\t\t\tcheck = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"string\":\n\t\t\t\t\tcheck = !!cell.row.data[cell.column.modules.edit.check];\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tcheck = cell.column.modules.edit.check;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn check;\n\t}\n\t\n\tedit(cell, e, forceEdit){\n\t\tvar self = this,\n\t\tallowEdit = true,\n\t\trendered = function(){},\n\t\telement = cell.getElement(),\n\t\teditFinished = false,\n\t\tcellEditor, component, params;\n\n\t\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\t\t\n\t\tif(this.currentCell){\n\t\t\tif(!this.invalidEdit && this.currentCell !== cell){\n\t\t\t\tthis.cancelEdit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t//handle successful value change\n\t\tfunction success(value){\n\t\t\tif(self.currentCell === cell && !editFinished){\n\t\t\t\tvar valid = self.chain(\"edit-success\", [cell, value], true, true);\n\n\t\t\t\tif(valid === true || self.table.options.validationMode === \"highlight\"){\n\n\t\t\t\t\teditFinished = true;\n\n\t\t\t\t\tself.clearEditor();\n\t\t\t\t\t\n\t\t\t\t\tif(!cell.modules.edit){\n\t\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.modules.edit.edited = true;\n\t\t\t\t\t\n\t\t\t\t\tif(self.editedCells.indexOf(cell) == -1){\n\t\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcell.setValue(value, true);\n\n\t\t\t\t\treturn valid === true;\n\t\t\t\t}else{\n\t\t\t\t\teditFinished = true;\n\t\t\t\t\tself.invalidEdit = true;\n\t\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\t\trendered();\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\teditFinished = false;\n\t\t\t\t\t}, 10);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//handle aborted edit\n\t\tfunction cancel(){\n\t\t\t// editFinished = true;\n\n\t\t\tif(self.currentCell === cell && !editFinished){\n\t\t\t\tself.cancelEdit();\n\t\t\t}else{\n\t\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\trendered = callback;\n\t\t}\n\t\t\n\t\tif(!cell.column.modules.edit.blocked){\n\t\t\tif(e){\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\t\n\t\t\tallowEdit = this.allowEdit(cell);\n\t\t\t\n\t\t\tif(allowEdit || forceEdit){\n\t\t\t\tself.cancelEdit();\n\t\t\t\t\n\t\t\t\tself.currentCell = cell;\n\t\t\t\t\n\t\t\t\tthis.focusScrollAdjust(cell);\n\t\t\t\t\n\t\t\t\tcomponent = cell.getComponent();\n\t\t\t\t\n\t\t\t\tif(this.mouseClick){\n\t\t\t\t\tthis.mouseClick = false;\n\t\t\t\t\t\n\t\t\t\t\tif(cell.column.definition.cellClick){\n\t\t\t\t\t\tcell.column.definition.cellClick.call(this.table, e, component);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(cell.column.definition.cellEditing){\n\t\t\t\t\tcell.column.definition.cellEditing.call(this.table, component);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"cell-editing\", cell);\n\t\t\t\tthis.dispatchExternal(\"cellEditing\", component);\n\t\t\t\t\n\t\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\t\t\t\t\n\t\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\t\t\t\t\n\t\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\t\tif(this.currentCell && cellEditor !== false){\n\t\t\t\t\tif(cellEditor instanceof Node){\n\t\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-editing\");\n\t\t\t\t\t\tcell.table.element.classList.add(\"tabulator-editing\");\n\t\t\t\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\t\t\t\telement.appendChild(cellEditor);\n\t\t\t\t\t\t\n\t\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\t\trendered();\n\t\t\t\t\t\t\n\t\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\t\tvar children = element.children;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function(e){\n\t\t\t\t\t\t\t\te.stopPropagation();\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\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\t\tthis.blur(element);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.blur(element);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tthis.mouseClick = false;\n\t\t\t\tthis.blur(element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.mouseClick = false;\n\t\t\tthis.blur(element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tblur(element){\n\t\tif(!this.confirm(\"edit-blur\", [element]) ){\n\t\t\telement.blur();\n\t\t}\n\t}\n\t\n\tgetEditedCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.editedCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearEdited(cell){\n\t\tvar editIndex;\n\t\t\n\t\tif(cell.modules.edit && cell.modules.edit.edited){\n\t\t\tcell.modules.edit.edited = false;\n\t\t\t\n\t\t\tthis.dispatch(\"edit-edited-clear\", cell);\n\t\t}\n\t\t\n\t\teditIndex = this.editedCells.indexOf(cell);\n\t\t\n\t\tif(editIndex > -1){\n\t\t\tthis.editedCells.splice(editIndex, 1);\n\t\t}\n\t}\n}\n\nEdit.moduleName = \"edit\";\n\n//load defaults\nEdit.editors = defaultEditors;\n\n\nexport default Edit;\n","class ExportRow{\n\tconstructor(type, columns, component, indent){\n\t\tthis.type = type;\n\t\tthis.columns = columns;\n\t\tthis.component = component || false;\n\t\tthis.indent = indent || 0;\n\t}\n}\n\nexport default ExportRow;","class ExportColumn{\n\tconstructor(value, component, width, height, depth){\n\t\tthis.value = value;\n\t\tthis.component = component || false;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = depth;\n\t}\n}\n\nexport default ExportColumn;","import Module from '../../core/Module.js';\n\nimport ExportRow from './ExportRow.js';\nimport ExportColumn from './ExportColumn.js';\n\nclass Export extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.config = {};\n\t\tthis.cloneTableStyle = true;\n\t\tthis.colVisProp = \"\";\n\t\t\n\t\tthis.registerTableOption(\"htmlOutputConfig\", false); //html output config\n\t\t\n\t\tthis.registerColumnOption(\"htmlOutput\");\n\t\tthis.registerColumnOption(\"titleHtmlOutput\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.registerTableFunction(\"getHtml\", this.getHtml.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tgenerateExportList(config, style, range, colVisProp){\n\t\tthis.cloneTableStyle = style;\n\t\tthis.config = config || {};\n\t\tthis.colVisProp = colVisProp;\n\n\t\tvar headers, body;\n\t\t\n\t\tif (range === 'range') {\n\t\t\tvar columns = this.table.modules.selectRange.selectedColumns();\n\t\t\theaders = this.config.columnHeaders !== false\n\t\t\t\t? this.headersToExportRows(this.generateColumnGroupHeaders(columns))\n\t\t\t\t: [];\n\t\t\tbody = this.bodyToExportRows(this.rowLookup(range), this.table.modules.selectRange.selectedColumns(true));\n\t\t} else {\n\t\t\theaders = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\t\t\tbody = this.bodyToExportRows(this.rowLookup(range));\n\t\t}\n\n\t\treturn headers.concat(body);\n\t}\n\t\n\tgenerateTable(config, style, range, colVisProp){\n\t\tvar list = this.generateExportList(config, style, range, colVisProp);\n\t\t\n\t\treturn this.generateTableElement(list);\n\t}\n\t\n\trowLookup(range){\n\t\tvar rows = [];\n\t\t\n\t\tif(typeof range == \"function\"){\n\t\t\trange.call(this.table).forEach((row) =>{\n\t\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trows.push(row);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tswitch(range){\n\t\t\t\tcase true:\n\t\t\t\tcase \"visible\":\n\t\t\t\t\trows = this.table.rowManager.getVisibleRows(false, true);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"all\":\n\t\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"selected\":\n\t\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"range\":\n\t\t\t\t\trows = this.table.modules.selectRange.selectedRows();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"active\":\n\t\t\t\tdefault:\n\t\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Object.assign([], rows);\n\t}\n\t\n\tgenerateColumnGroupHeaders(columns){\n\t\tvar output = [];\n\t\t\n\t\tif (!columns) {\n\t\t\tcolumns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\t\t}\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\tvar colData = this.processColumnGroup(column);\n\t\t\t\n\t\t\tif(colData){\n\t\t\t\toutput.push(colData);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\t\n\tprocessColumnGroup(column){\n\t\tvar subGroups = column.columns,\n\t\tmaxDepth = 0,\n\t\ttitle = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\t\t\n\t\tvar groupData = {\n\t\t\ttitle:title,\n\t\t\tcolumn:column,\n\t\t\tdepth:1,\n\t\t};\n\t\t\n\t\tif(subGroups.length){\n\t\t\tgroupData.subGroups = [];\n\t\t\tgroupData.width = 0;\n\t\t\t\n\t\t\tsubGroups.forEach((subGroup) => {\n\t\t\t\tvar subGroupData = this.processColumnGroup(subGroup);\n\t\t\t\t\n\t\t\t\tif(subGroupData){\n\t\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\t\tgroupData.subGroups.push(subGroupData);\n\t\t\t\t\t\n\t\t\t\t\tif(subGroupData.depth > maxDepth){\n\t\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tgroupData.depth += maxDepth;\n\t\t\t\n\t\t\tif(!groupData.width){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.columnVisCheck(column)){\n\t\t\t\tgroupData.width = 1;\n\t\t\t}else{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn groupData;\n\t}\n\t\n\tcolumnVisCheck(column){\n\t\tvar visProp = column.definition[this.colVisProp];\n\t\t\n\t\tif(typeof visProp === \"function\"){\n\t\t\tvisProp = visProp.call(this.table, column.getComponent());\n\t\t}\n\t\t\n\t\treturn visProp !== false && (column.visible || (!column.visible && visProp));\n\t}\n\t\n\theadersToExportRows(columns){\n\t\tvar headers = [],\n\t\theaderDepth = 0,\n\t\texportRows = [];\n\t\t\n\t\tfunction parseColumnGroup(column, level){\n\t\t\t\n\t\t\tvar depth = headerDepth - level;\n\t\t\t\n\t\t\tif(typeof headers[level] === \"undefined\"){\n\t\t\t\theaders[level] = [];\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.height = column.subGroups ? 1 : (depth - column.depth) + 1;\n\t\t\t\n\t\t\theaders[level].push(column);\n\t\t\t\n\t\t\tif(column.height > 1){\n\t\t\t\tfor(let i = 1; i < column.height; i ++){\n\t\t\t\t\t\n\t\t\t\t\tif(typeof headers[level + i] === \"undefined\"){\n\t\t\t\t\t\theaders[level + i] = [];\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\theaders[level + i].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.width > 1){\n\t\t\t\tfor(let i = 1; i < column.width; i ++){\n\t\t\t\t\theaders[level].push(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(column.subGroups){\n\t\t\t\tcolumn.subGroups.forEach(function(subGroup){\n\t\t\t\t\tparseColumnGroup(subGroup, level+1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\t//calculate maximum header depth\n\t\tcolumns.forEach(function(column){\n\t\t\tif(column.depth > headerDepth){\n\t\t\t\theaderDepth = column.depth;\n\t\t\t}\n\t\t});\n\t\t\n\t\tcolumns.forEach(function(column){\n\t\t\tparseColumnGroup(column,0);\n\t\t});\n\t\t\n\t\theaders.forEach((header) => {\n\t\t\tvar columns = [];\n\t\t\t\n\t\t\theader.forEach((col) => {\n\t\t\t\tif(col){\n\t\t\t\t\tlet title = typeof col.title === \"undefined\" ? \"\" : col.title;\n\t\t\t\t\tcolumns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t\t}else{\n\t\t\t\t\tcolumns.push(null);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\texportRows.push(new ExportRow(\"header\", columns));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tbodyToExportRows(rows, columns = []){\n\t\tvar exportRows = [];\n\t\t\n\t\tif (columns.length === 0) {\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif (this.columnVisCheck(column)) {\n\t\t\t\t\tcolumns.push(column.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized){\n\t\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized){\n\t\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t}\n\n\t\trows = rows.filter((row) => {\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn this.config.rowGroups !== false;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\treturn this.config.columnCalcs !== false;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\treturn !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t}\n\t\t\t\n\t\t\treturn true;\n\t\t});\n\t\t\n\t\trows.forEach((row, i) => {\n\t\t\tvar rowData = row.getData(this.colVisProp);\n\t\t\tvar exportCols = [];\n\t\t\tvar indent = 0;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\tindent = row.level;\n\t\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\" :\n\t\t\t\tcase \"row\" :\n\t\t\t\t\tcolumns.forEach((col) => {\n\t\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t\t});\n\t\t\n\t\treturn exportRows;\n\t}\n\t\n\tgenerateTableElement(list){\n\t\tvar table = document.createElement(\"table\"),\n\t\theaderEl = document.createElement(\"thead\"),\n\t\tbodyEl = document.createElement(\"tbody\"),\n\t\tstyles = this.lookupTableStyles(),\n\t\trowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t\tsetup = {};\n\t\t\n\t\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\t\t\n\t\tif(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")){\n\t\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t\t}\n\t\t\n\t\t//assign group header formatter\n\t\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\t\t\n\t\tif(setup.groupHeader && !Array.isArray(setup.groupHeader)){\n\t\t\tsetup.groupHeader = [setup.groupHeader];\n\t\t}\n\t\t\n\t\ttable.classList.add(\"tabulator-print-table\");\n\t\t\n\t\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\t\t\n\t\t\n\t\tif(list.length > 1000){\n\t\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t\t}\n\t\t\n\t\tlist.forEach((row, i) => {\n\t\t\tlet rowEl;\n\t\t\t\n\t\t\tswitch(row.type){\n\t\t\t\tcase \"header\":\n\t\t\t\t\theaderEl.appendChild(this.generateHeaderElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbodyEl.appendChild(this.generateGroupElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbodyEl.appendChild(this.generateCalcElement(row, setup, styles));\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"row\":\n\t\t\t\t\trowEl = this.generateRowElement(row, setup, styles);\n\t\t\t\t\n\t\t\t\t\tthis.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\t\tbodyEl.appendChild(rowEl);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(headerEl.innerHTML){\n\t\t\ttable.appendChild(headerEl);\n\t\t}\n\t\t\n\t\ttable.appendChild(bodyEl);\n\t\t\n\t\t\n\t\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\t\treturn table;\n\t}\n\t\n\tlookupTableStyles(){\n\t\tvar styles = {};\n\t\t\n\t\t//lookup row styles\n\t\tif(this.cloneTableStyle && window.getComputedStyle){\n\t\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\t\t\t\n\t\t\tif(styles.firstRow){\n\t\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn styles;\n\t}\n\t\n\tgenerateHeaderElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trow.columns.forEach((column) => {\n\t\t\tif(column){\n\t\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tcellEl.colSpan = column.width;\n\t\t\t\tcellEl.rowSpan = column.height;\n\t\t\t\t\n\t\t\t\tcellEl.innerHTML = column.value;\n\t\t\t\t\n\t\t\t\tif(this.cloneTableStyle){\n\t\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.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\tthis.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\t\t\n\t\t\t\tif(column.component._column.visible){\n\t\t\t\t\tthis.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t\t}else{\n\t\t\t\t\tif(column.component._column.definition.width){\n\t\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(column.component._column.parent){\n\t\t\t\t\tthis.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateGroupElement(row, setup, styles){\n\t\t\n\t\tvar rowEl = document.createElement(\"tr\"),\n\t\tcellEl = document.createElement(\"td\"),\n\t\tgroup = row.columns[0];\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\tif(setup.groupHeader && setup.groupHeader[row.indent]){\n\t\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}else{\n\t\t\tif(setup.groupHeader !== false){\n\t\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t\t\n\t\tcellEl.colSpan = group.width;\n\t\tcellEl.innerHTML = group.value;\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-group\");\n\t\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\t\t\n\t\tif(group.component.isVisible()){\n\t\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\t\t\n\t\trowEl.appendChild(cellEl);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateCalcElement(row, setup, styles){\n\t\tvar rowEl = this.generateRowElement(row, setup, styles);\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\t\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateRowElement(row, setup, styles){\n\t\tvar rowEl = document.createElement(\"tr\");\n\t\t\n\t\trowEl.classList.add(\"tabulator-print-table-row\");\n\t\t\n\t\trow.columns.forEach((col, i) => {\n\t\t\tif(col){\n\t\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t\tcolumn = col.component._column,\n\t\t\t\ttable = this.table,\n\t\t\t\tindex = table.columnManager.findColumnIndex(column),\n\t\t\t\tvalue = col.value,\n\t\t\t\tcellStyle;\n\t\t\t\t\n\t\t\t\tvar cellWrapper = {\n\t\t\t\t\tmodules:{},\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn cellEl;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\treturn row.component.getData();\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn row.component;\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:function(){\n\t\t\t\t\t\treturn table;\n\t\t\t\t\t},\n\t\t\t\t\tgetComponent:function(){\n\t\t\t\t\t\treturn cellWrapper;\n\t\t\t\t\t},\n\t\t\t\t\tcolumn:column,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\t\t\t\t\n\t\t\t\tclassNames.forEach(function(className) {\n\t\t\t\t\tcellEl.classList.add(className);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(this.table.modExists(\"format\") && this.config.formatCells !== false){\n\t\t\t\t\tvalue = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp);\n\t\t\t\t}else{\n\t\t\t\t\tswitch(typeof value){\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = value !== null ? JSON.stringify(value) : \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\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\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(value instanceof Node){\n\t\t\t\t\tcellEl.appendChild(value);\n\t\t\t\t}else{\n\t\t\t\t\tcellEl.innerHTML = value;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell;\n\t\t\t\t\n\t\t\t\tif(cellStyle){\n\t\t\t\t\tthis.mapElementStyles(cellStyle, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"text-align\"]);\n\t\t\t\t\t\n\t\t\t\t\tif(column.definition.align){\n\t\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTree && this.config.dataTree !== false){\n\t\t\t\t\tif((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.controlEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(row.component._row.modules.dataTree.branchEl){\n\t\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trowEl.appendChild(cellEl);\n\t\t\t\t\n\t\t\t\tif(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){\n\t\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(setup.rowFormatter && row.type === \"row\" && this.config.formatCells !== false){\n\t\t\tlet formatComponent = Object.assign(row.component);\n\n\t\t\tformatComponent.getElement = function(){return rowEl;};\n\n\t\t\tsetup.rowFormatter(row.component);\n\t\t}\n\t\t\n\t\treturn rowEl;\n\t}\n\t\n\tgenerateHTMLTable(list){\n\t\tvar holder = document.createElement(\"div\");\n\t\t\n\t\tholder.appendChild(this.generateTableElement(list));\n\t\t\n\t\treturn holder.innerHTML;\n\t}\n\t\n\tgetHtml(visible, style, config, colVisProp){\n\t\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\t\t\n\t\treturn this.generateHTMLTable(list);\n\t}\n\t\n\tmapElementStyles(from, to, props){\n\t\tif(this.cloneTableStyle && from && to){\n\t\t\t\n\t\t\tvar lookup = {\n\t\t\t\t\"background-color\" : \"backgroundColor\",\n\t\t\t\t\"color\" : \"fontColor\",\n\t\t\t\t\"width\" : \"width\",\n\t\t\t\t\"font-weight\" : \"fontWeight\",\n\t\t\t\t\"font-family\" : \"fontFamily\",\n\t\t\t\t\"font-size\" : \"fontSize\",\n\t\t\t\t\"text-align\" : \"textAlign\",\n\t\t\t\t\"border-top\" : \"borderTop\",\n\t\t\t\t\"border-left\" : \"borderLeft\",\n\t\t\t\t\"border-right\" : \"borderRight\",\n\t\t\t\t\"border-bottom\" : \"borderBottom\",\n\t\t\t\t\"padding-top\" : \"paddingTop\",\n\t\t\t\t\"padding-left\" : \"paddingLeft\",\n\t\t\t\t\"padding-right\" : \"paddingRight\",\n\t\t\t\t\"padding-bottom\" : \"paddingBottom\",\n\t\t\t};\n\t\t\t\n\t\t\tif(window.getComputedStyle){\n\t\t\t\tvar fromStyle = window.getComputedStyle(from);\n\t\t\t\t\n\t\t\t\tprops.forEach(function(prop){\n\t\t\t\t\tif(!to.style[lookup[prop]]){\n\t\t\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nExport.moduleName = \"export\";\n\nexport default Export;\n","export default {\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(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(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}\n\t\t\telse{\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(filterVal, rowVal, rowData, filterParams){\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\tvalue = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\tmatches = [];\n\n\t\tkeywords.forEach((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(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}\n\t\t\telse{\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(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}\n\t\t\telse{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\":function(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};","import Module from '../../core/Module.js';\n\nimport defaultFilters from './defaults/filters.js';\n\nclass Filter extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.filterList = []; //hold filter list\n\t\tthis.headerFilters = {}; //hold column filters\n\t\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\t\tthis.prevHeaderFilterChangeCheck = \"\";\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.changed = false; //has filtering changed since last render\n\t\tthis.tableInitialized = false;\n\n\t\tthis.registerTableOption(\"filterMode\", \"local\"); //local or remote filtering\n\n\t\tthis.registerTableOption(\"initialFilter\", false); //initial filtering criteria\n\t\tthis.registerTableOption(\"initialHeaderFilter\", false); //initial header filtering criteria\n\t\tthis.registerTableOption(\"headerFilterLiveFilterDelay\", 300); //delay before updating column after user types in header filter\n\t\tthis.registerTableOption(\"placeholderHeaderFilter\", false); //placeholder when header filter is empty\n\n\t\tthis.registerColumnOption(\"headerFilter\");\n\t\tthis.registerColumnOption(\"headerFilterPlaceholder\");\n\t\tthis.registerColumnOption(\"headerFilterParams\");\n\t\tthis.registerColumnOption(\"headerFilterEmptyCheck\");\n\t\tthis.registerColumnOption(\"headerFilterFunc\");\n\t\tthis.registerColumnOption(\"headerFilterFuncParams\");\n\t\tthis.registerColumnOption(\"headerFilterLiveFilter\");\n\n\t\tthis.registerTableFunction(\"searchRows\", this.searchRows.bind(this));\n\t\tthis.registerTableFunction(\"searchData\", this.searchData.bind(this));\n\n\t\tthis.registerTableFunction(\"setFilter\", this.userSetFilter.bind(this));\n\t\tthis.registerTableFunction(\"refreshFilter\", this.userRefreshFilter.bind(this));\n\t\tthis.registerTableFunction(\"addFilter\", this.userAddFilter.bind(this));\n\t\tthis.registerTableFunction(\"getFilters\", this.getFilters.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterFocus\", this.userSetHeaderFilterFocus.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilterValue\", this.userGetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"setHeaderFilterValue\", this.userSetHeaderFilterValue.bind(this));\n\t\tthis.registerTableFunction(\"getHeaderFilters\", this.getHeaderFilters.bind(this));\n\t\tthis.registerTableFunction(\"removeFilter\", this.userRemoveFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearFilter\", this.userClearFilter.bind(this));\n\t\tthis.registerTableFunction(\"clearHeaderFilter\", this.userClearHeaderFilter.bind(this));\n\n\t\tthis.registerComponentFunction(\"column\", \"headerFilterFocus\", this.setHeaderFilterFocus.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"reloadHeaderFilter\", this.reloadHeaderFilter.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getHeaderFilterValue\", this.getHeaderFilterValue.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"setHeaderFilterValue\", this.setHeaderFilterValue.bind(this));\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"column-init\", this.initializeColumnHeaderFilter.bind(this));\n\t\tthis.subscribe(\"column-width-fit-before\", this.hideHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"column-width-fit-after\", this.showHeaderFilterElements.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.subscribe(\"placeholder\", this.generatePlaceholder.bind(this));\n\n\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteFilterParams.bind(this));\n\t\t}\n\n\t\tthis.registerDataHandler(this.filter.bind(this), 10);\n\t}\n\n\ttableBuilt(){\n\t\tif(this.table.options.initialFilter){\n\t\t\tthis.setFilter(this.table.options.initialFilter);\n\t\t}\n\n\t\tif(this.table.options.initialHeaderFilter){\n\t\t\tthis.table.options.initialHeaderFilter.forEach((item) => {\n\n\t\t\t\tvar column = this.table.columnManager.findColumn(item.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.setHeaderFilterValue(column, item.value);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.tableInitialized = true;\n\t}\n\n\tremoteFilterParams(data, config, silent, params){\n\t\tparams.filter = this.getFilters(true, true);\n\t\treturn params;\n\t}\n\n\tgeneratePlaceholder(text){\n\t\tif(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){\n\t\t\treturn this.table.options.placeholderHeaderFilter;\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t//set standard filters\n\tuserSetFilter(field, type, value, params){\n\t\tthis.setFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\t//set standard filters\n\tuserRefreshFilter(){\n\t\tthis.refreshFilter();\n\t}\n\n\t//add filter to array\n\tuserAddFilter(field, type, value, params){\n\t\tthis.addFilter(field, type, value, params);\n\t\tthis.refreshFilter();\n\t}\n\n\tuserSetHeaderFilterFocus(field){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.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\tuserGetHeaderFilterValue(field) {\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\treturn this.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\tuserSetHeaderFilterValue(field, value){\n\t\tvar column = this.table.columnManager.findColumn(field);\n\n\t\tif(column){\n\t\t\tthis.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\t//remove filter from array\n\tuserRemoveFilter(field, type, value){\n\t\tthis.removeFilter(field, type, value);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear filters\n\tuserClearFilter(all){\n\t\tthis.clearFilter(all);\n\t\tthis.refreshFilter();\n\t}\n\n\t//clear header filters\n\tuserClearHeaderFilter(){\n\t\tthis.clearHeaderFilter();\n\t\tthis.refreshFilter();\n\t}\n\n\n\t//search for specific row components\n\tsearchRows(field, type, value){\n\t\treturn this.search(\"rows\", field, type, value);\n\t}\n\n\t//search for specific data\n\tsearchData(field, type, value){\n\t\treturn this.search(\"data\", field, type, value);\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumnHeaderFilter(column){\n\t\tvar def = column.definition;\n\n\t\tif(def.headerFilter){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\n\t//initialize column header filter\n\tinitializeColumn(column, value){\n\t\tvar self = this,\n\t\tfield = column.getField();\n\n\t\t//handle successfully value change\n\t\tfunction success(value){\n\t\t\tvar filterType = (column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\") || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t\ttype = \"\",\n\t\t\tfilterChangeCheck = \"\",\n\t\t\tfilterFunc;\n\n\t\t\tif(typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value){\n\n\t\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\t\tif(!column.modules.filter.emptyFunc(value)){\n\t\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\t\tswitch(typeof column.definition.headerFilterFunc){\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tif(Filter.filters[column.definition.headerFilterFunc]){\n\t\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\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\t\treturn Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}else{\n\t\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\t}\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\t\tfilterFunc = function(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 column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!filterFunc){\n\t\t\t\t\t\tswitch(filterType){\n\t\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\t\tif(typeof colVal !== 'undefined' && colVal !== null){\n\t\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\t}else{\n\t\t\t\t\t\t\t\t\t\treturn false;\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\ttype = \"like\";\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tself.headerFilters[field] = {value:value, func:filterFunc, type:type};\n\t\t\t\t}else{\n\t\t\t\t\tdelete self.headerFilters[field];\n\t\t\t\t}\n\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\t\tif(self.prevHeaderFilterChangeCheck !== filterChangeCheck){\n\t\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\t\tself.trackChanges();\n\t\t\t\t\tself.refreshFilter();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tcolumn.modules.filter = {\n\t\t\tsuccess:success,\n\t\t\tattrType:false,\n\t\t\ttagType:false,\n\t\t\temptyFunc:false,\n\t\t};\n\n\t\tthis.generateHeaderFilterElement(column);\n\t}\n\n\tgenerateHeaderFilterElement(column, initialValue, reinitialize){\n\t\tvar self = this,\n\t\tsuccess = column.modules.filter.success,\n\t\tfield = column.getField(),\n\t\tfilterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;\n\n\t\tcolumn.modules.filter.value = initialValue;\n\n\t\t//handle aborted edit\n\t\tfunction cancel(){}\n\n\t\tfunction onRendered(callback){\n\t\t\tonRenderedCallback = callback;\n\t\t}\n\n\t\tif(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){\n\t\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t\t}\n\n\t\tif(field){\n\n\t\t\t//set empty value function\n\t\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){\n\t\t\t\treturn !value && value !== 0;\n\t\t\t};\n\n\t\t\tfilterElement = document.createElement(\"div\");\n\t\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t\t//set column editor\n\t\t\tswitch(typeof column.definition.headerFilter){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(self.table.modules.edit.editors[column.definition.headerFilter]){\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\t\tif((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"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\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif(column.modules.edit && column.modules.edit.editor){\n\t\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\t\tif((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck){\n\t\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function(value){\n\t\t\t\t\t\t\t\t\treturn value !== true && value !== 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}else{\n\t\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(editor){\n\n\t\t\t\tcellWrapper = {\n\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t\t},\n\t\t\t\t\tgetField:function(){\n\t\t\t\t\t\treturn column.definition.field;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\treturn filterElement;\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t},\n\t\t\t\t\tgetType:() => {\n\t\t\t\t\t\treturn \"header\";\n\t\t\t\t\t},\n\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tnormalizeHeight:function(){\n\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\tparams = column.definition.headerFilterParams || {};\n\n\t\t\t\tparams = typeof params === \"function\" ? params.call(self.table, cellWrapper) : params;\n\n\t\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);\n\n\t\t\t\tif(!editorElement){\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif(!(editorElement instanceof Node)){\n\t\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\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//set Placeholder Text\n\t\t\t\tself.langBind(\"headerFilters|columns|\" + column.definition.field, function(value){\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : (column.definition.headerFilterPlaceholder || self.langText(\"headerFilters|default\")));\n\t\t\t\t});\n\n\t\t\t\t//focus on element on click\n\t\t\t\teditorElement.addEventListener(\"click\", function(e){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\teditorElement.focus();\n\t\t\t\t});\n\n\t\t\t\teditorElement.addEventListener(\"focus\", (e) => {\n\t\t\t\t\tvar left = this.table.columnManager.contentsElement.scrollLeft;\n\n\t\t\t\t\tvar headerPos = this.table.rowManager.element.scrollLeft;\n\n\t\t\t\t\tif(left !== headerPos){\n\t\t\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//live update filters as user types\n\t\t\t\ttypingTimer = false;\n\n\t\t\t\tsearchTrigger = function(e){\n\t\t\t\t\tif(typingTimer){\n\t\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t\t}\n\n\t\t\t\t\ttypingTimer = setTimeout(function(){\n\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t},self.table.options.headerFilterLiveFilterDelay);\n\t\t\t\t};\n\n\t\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\" ;\n\t\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\t\tif(column.definition.headerFilterLiveFilter !== false){\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'autocomplete' ||\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === 'tickCross' ||\n\t\t\t\t\t\t\t((column.definition.editor === 'autocomplete' ||\n\t\t\t\t\t\t\t\tcolumn.definition.editor === 'tickCross') &&\n\t\t\t\t\t\t\tcolumn.definition.headerFilter === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\n\t\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"number\"){\n\t\t\t\t\t\t\teditorElement.addEventListener(\"change\", function(e){\n\t\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\t\tif(column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\"){\n\t\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\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//prevent input and select elements from propagating click to column sorters etc\n\t\t\t\t\tif(column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\"){\n\t\t\t\t\t\teditorElement.addEventListener(\"mousedown\",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}\n\n\t\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\t\tif(!reinitialize){\n\t\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t\t}\n\n\t\t\t\tif(onRenderedCallback){\n\t\t\t\t\tonRenderedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t\t}\n\t}\n\n\t//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\thideHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t\t}\n\t\t});\n\t}\n\n\t//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\n\tshowHeaderFilterElements(){\n\t\tthis.headerFilterColumns.forEach(function(column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t\t}\n\t\t});\n\t}\n\n\t//programmatically set focus of header filter\n\tsetHeaderFilterFocus(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\tcolumn.modules.filter.headerElement.focus();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n\n\t//programmatically get value of header filter\n\tgetHeaderFilterValue(column){\n\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\treturn column.modules.filter.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\t//programmatically set value of header filter\n\tsetHeaderFilterValue(column, value){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\t\tcolumn.modules.filter.success(value);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\treloadHeaderFilter(column){\n\t\tif (column){\n\t\t\tif(column.modules.filter && column.modules.filter.headerElement){\n\t\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t\t}\n\t\t}\n\t}\n\n\trefreshFilter(){\n\t\tif(this.tableInitialized){\n\t\t\tif(this.table.options.filterMode === \"remote\"){\n\t\t\t\tthis.reloadData(null, false, false);\n\t\t\t}else{\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\n\t//check if the filters has changed since last use\n\ttrackChanges(){\n\t\tthis.changed = true;\n\t\tthis.dispatch(\"filter-changed\");\n\t}\n\n\t//check if the filters has changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\n\t//set standard filters\n\tsetFilter(field, type, value, params){\n\t\tthis.filterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tthis.addFilter(field);\n\t}\n\n\t//add filter to array\n\taddFilter(field, type, value, params){\n\t\tvar changed = false;\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value, params:params}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tthis.filterList.push(filter);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\n\t\tif(changed){\n\t\t\tthis.trackChanges();\n\t\t}\n\t}\n\n\tfindFilter(filter){\n\t\tvar column;\n\n\t\tif(Array.isArray(filter)){\n\t\t\treturn this.findSubFilters(filter);\n\t\t}\n\n\t\tvar filterFunc = false;\n\n\t\tif(typeof filter.field == \"function\"){\n\t\t\tfilterFunc = function(data){\n\t\t\t\treturn filter.field(data, filter.type || {});// pass params to custom filter function\n\t\t\t};\n\t\t}else{\n\n\t\t\tif(Filter.filters[filter.type]){\n\n\t\t\t\tcolumn = this.table.columnManager.getColumnByField(filter.field);\n\n\t\t\t\tif(column){\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}else{\n\t\t\t\t\tfilterFunc = function(data){\n\t\t\t\t\t\treturn Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t\t};\n\t\t\t\t}\n\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t}\n\n\t\tfilter.func = filterFunc;\n\n\t\treturn filter.func ? filter : false;\n\t}\n\n\tfindSubFilters(filters){\n\t\tvar output = [];\n\n\t\tfilters.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\toutput.push(filter);\n\t\t\t}\n\t\t});\n\n\t\treturn output.length ? output : false;\n\t}\n\n\t//get all filters\n\tgetFilters(all, ajax){\n\t\tvar output = [];\n\n\t\tif(all){\n\t\t\toutput = this.getHeaderFilters();\n\t\t}\n\n\t\tif(ajax){\n\t\t\toutput.forEach(function(item){\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\t\t}\n\n\t\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\t\treturn output;\n\t}\n\n\t//filter to Object\n\tfiltersToArray(filterList, ajax){\n\t\tvar output = [];\n\n\t\tfilterList.forEach((filter) => {\n\t\t\tvar item;\n\n\t\t\tif(Array.isArray(filter)){\n\t\t\t\toutput.push(this.filtersToArray(filter, ajax));\n\t\t\t}else{\n\t\t\t\titem = {field:filter.field, type:filter.type, value:filter.value};\n\n\t\t\t\tif(ajax){\n\t\t\t\t\tif(typeof item.type == \"function\"){\n\t\t\t\t\t\titem.type = \"function\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toutput.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//get all filters\n\tgetHeaderFilters(){\n\t\tvar output = [];\n\n\t\tfor(var key in this.headerFilters){\n\t\t\toutput.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value});\n\t\t}\n\n\t\treturn output;\n\t}\n\n\t//remove filter from array\n\tremoveFilter(field, type, value){\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tvar index = -1;\n\n\t\t\tif(typeof filter.field == \"object\"){\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter === element;\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tindex = this.filterList.findIndex((element) => {\n\t\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.filterList.splice(index, 1);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t\t}\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear filters\n\tclearFilter(all){\n\t\tthis.filterList = [];\n\n\t\tif(all){\n\t\t\tthis.clearHeaderFilter();\n\t\t}\n\n\t\tthis.trackChanges();\n\t}\n\n\t//clear header filters\n\tclearHeaderFilter(){\n\t\tthis.headerFilters = {};\n\t\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\t\tthis.headerFilterColumns.forEach((column) => {\n\t\t\tif(typeof column.modules.filter.value !== \"undefined\"){\n\t\t\t\tdelete column.modules.filter.value;\n\t\t\t}\n\t\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\t\tthis.reloadHeaderFilter(column);\n\t\t});\n\n\t\tthis.trackChanges();\n\t}\n\n\t//search data and return matching rows\n\tsearch (searchType, field, type, value){\n\t\tvar activeRows = [],\n\t\tfilterList = [];\n\n\t\tif(!Array.isArray(field)){\n\t\t\tfield = [{field:field, type:type, value:value}];\n\t\t}\n\n\t\tfield.forEach((filter) => {\n\t\t\tfilter = this.findFilter(filter);\n\n\t\t\tif(filter){\n\t\t\t\tfilterList.push(filter);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\tvar match = true;\n\n\t\t\tfilterList.forEach((filter) => {\n\t\t\t\tif(!this.filterRecurse(filter, row.getData())){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t\t}\n\n\t\t});\n\n\t\treturn activeRows;\n\t}\n\n\t//filter row array\n\tfilter(rowList, filters){\n\t\tvar activeRows = [],\n\t\tactiveRowComponents = [];\n\n\t\tif(this.subscribedExternal(\"dataFiltering\")){\n\t\t\tthis.dispatchExternal(\"dataFiltering\", this.getFilters(true));\n\t\t}\n\n\t\tif(this.table.options.filterMode !== \"remote\" && (this.filterList.length || Object.keys(this.headerFilters).length)){\n\n\t\t\trowList.forEach((row) => {\n\t\t\t\tif(this.filterRow(row)){\n\t\t\t\t\tactiveRows.push(row);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}else{\n\t\t\tactiveRows = rowList.slice(0);\n\t\t}\n\n\t\tif(this.subscribedExternal(\"dataFiltered\")){\n\n\t\t\tactiveRows.forEach((row) => {\n\t\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t\t});\n\n\t\t\tthis.dispatchExternal(\"dataFiltered\", this.getFilters(true), activeRowComponents);\n\t\t}\n\n\t\treturn activeRows;\n\t}\n\n\t//filter individual row\n\tfilterRow(row, filters){\n\t\tvar match = true,\n\t\tdata = row.getData();\n\n\t\tthis.filterList.forEach((filter) => {\n\t\t\tif(!this.filterRecurse(filter, data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\n\t\tfor(var field in this.headerFilters){\n\t\t\tif(!this.headerFilters[field].func(data)){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t}\n\n\t\treturn match;\n\t}\n\n\tfilterRecurse(filter, data){\n\t\tvar match = false;\n\n\t\tif(Array.isArray(filter)){\n\t\t\tfilter.forEach((subFilter) => {\n\t\t\t\tif(this.filterRecurse(subFilter, data)){\n\t\t\t\t\tmatch = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tmatch = filter.func(data);\n\t\t}\n\n\t\treturn match;\n\t}\n}\n\nFilter.moduleName = \"filter\";\n\n//load defaults\nFilter.filters = defaultFilters;\n\nexport default Filter;","import plaintext from './formatters/plaintext.js';\nimport html from './formatters/html.js';\nimport textarea from './formatters/textarea.js';\nimport money from './formatters/money.js';\nimport link from './formatters/link.js';\nimport image from './formatters/image.js';\nimport tickCross from './formatters/tickCross.js';\nimport datetime from './formatters/datetime.js';\nimport datetimediff from './formatters/datetimediff.js';\nimport lookup from './formatters/lookup.js';\nimport star from './formatters/star.js';\nimport traffic from './formatters/traffic.js';\nimport progress from './formatters/progress.js';\nimport color from './formatters/color.js';\nimport buttonTick from './formatters/buttonTick.js';\nimport buttonCross from './formatters/buttonCross.js';\nimport rownum from './formatters/rownum.js';\nimport handle from './formatters/handle.js';\nimport responsiveCollapse from './formatters/responsiveCollapse.js';\nimport rowSelection from './formatters/rowSelection.js';\n\nexport default {\n\tplaintext:plaintext,\n\thtml:html,\n\ttextarea:textarea,\n\tmoney:money,\n\tlink:link,\n\timage:image,\n\ttickCross:tickCross,\n\tdatetime:datetime,\n\tdatetimediff:datetimediff,\n\tlookup:lookup,\n\tstar:star,\n\ttraffic:traffic,\n\tprogress:progress,\n\tcolor:color,\n\tbuttonTick:buttonTick,\n\tbuttonCross:buttonCross,\n\trownum:rownum,\n\thandle:handle,\n\tresponsiveCollapse:responsiveCollapse,\n\trowSelection:rowSelection,\n};","export default function(cell, formatterParams, onRendered){\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\treturn cell.getValue();\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n}","export default function(cell, formatterParams, onRendered){\n\tvar floatVal = parseFloat(cell.getValue()),\n\tsign = \"\",\n\tnumber, integer, decimal, rgx, value;\n\n\tvar decimalSym = formatterParams.decimal || \".\";\n\tvar thousandSym = formatterParams.thousand || \",\";\n\tvar negativeSign = formatterParams.negativeSign || \"-\";\n\tvar symbol = formatterParams.symbol || \"\";\n\tvar after = !!formatterParams.symbolAfter;\n\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\tif(isNaN(floatVal)){\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t}\n\n\tif(floatVal < 0){\n\t\tfloatVal = Math.abs(floatVal);\n\t\tsign = negativeSign;\n\t}\n\n\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\tnumber = String(number).split(\".\");\n\n\tinteger = number[0];\n\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\tif (formatterParams.thousand !== false) {\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\t}\n\n\tvalue = integer + decimal;\n\t\n\tif(sign === true){\n\t\tvalue = \"(\" + value + \")\";\n\t\treturn after ? value + symbol : symbol + value;\n\t}else{\n\t\treturn after ? sign + value + symbol : sign + symbol + value;\n\t}\n}","import Helpers from '../../../../core/tools/Helpers.js';\n\n\nexport default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\turlPrefix = formatterParams.urlPrefix || \"\",\n\tdownload = formatterParams.download,\n\tlabel = value,\n\tel = document.createElement(\"a\"),\n\tdata;\n\n\tfunction labelTraverse(path, data){\n\t\tvar item = path.shift(),\n\t\tvalue = data[item];\n\t\t\n\t\tif(path.length && typeof value === \"object\"){\n\t\t\treturn labelTraverse(path, value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tif(formatterParams.labelField){\n\t\tdata = cell.getData();\n\t\tlabel = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data);\n\t}\n\n\tif(formatterParams.label){\n\t\tswitch(typeof formatterParams.label){\n\t\t\tcase \"string\":\n\t\t\t\tlabel = formatterParams.label;\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif(label){\n\t\tif(formatterParams.urlField){\n\t\t\tdata = cell.getData();\n\n\t\t\tvalue = Helpers.retrieveNestedData(this.table.options.nestedFieldSeparator, formatterParams.urlField, data);\n\t\t}\n\n\t\tif(formatterParams.url){\n\t\t\tswitch(typeof formatterParams.url){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\tif(formatterParams.target){\n\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t}\n\n\t\tif(formatterParams.download){\n\n\t\t\tif(typeof download == \"function\"){\n\t\t\t\tdownload = download(cell);\n\t\t\t}else{\n\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t}\n\n\t\t\tel.setAttribute(\"download\", download);\n\t\t}\n\n\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\treturn el;\n\t}else{\n\t\treturn \" \";\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"img\"),\n\tsrc = cell.getValue();\n\n\tif(formatterParams.urlPrefix){\n\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t}\n\n\tif(formatterParams.urlSuffix){\n\t\tsrc = src + formatterParams.urlSuffix;\n\t}\n\n\tel.setAttribute(\"src\", src);\n\n\tswitch(typeof formatterParams.height){\n\t\tcase \"number\":\n\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.height = formatterParams.height;\n\t\t\tbreak;\n\t}\n\n\tswitch(typeof formatterParams.width){\n\t\tcase \"number\":\n\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\t\t\tel.style.width = formatterParams.width;\n\t\t\tbreak;\n\t}\n\n\tel.addEventListener(\"load\", function(){\n\t\tcell.getRow().normalizeHeight();\n\t});\n\n\treturn el;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tempty = formatterParams.allowEmpty,\n\ttruthy = formatterParams.allowTruthy,\n\ttrueValueSet = Object.keys(formatterParams).includes(\"trueValue\"),\n\ttick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '',\n\tcross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '';\n\n\tif((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\")))){\n\t\telement.setAttribute(\"aria-checked\", true);\n\t\treturn tick || \"\";\n\t}else{\n\t\tif(empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")){\n\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\treturn \"\";\n\t\t}else{\n\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\treturn cross || \"\";\n\t\t}\n\t}\n}","export default function(cell, formatterParams, onRendered){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar\toutputFormat = formatterParams.outputFormat || \"dd/MM/yyyy HH:mm:ss\";\n\tvar\tinvalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif(newDatetime.isValid){\n\t\t\tif(formatterParams.timezone){\n\t\t\t\tnewDatetime = newDatetime.setZone(formatterParams.timezone);\n\t\t\t}\n\n\t\t\treturn newDatetime.toFormat(outputFormat);\n\t\t}else{\n\t\t\tif(invalid === true || !value){\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}else{\n\t\tconsole.error(\"Format Error - 'datetime' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar inputFormat = formatterParams.inputFormat || \"yyyy-MM-dd HH:mm:ss\";\n\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : \"days\";\n\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : DT.now();\n\tvar value = cell.getValue();\n\n\tif(typeof DT != \"undefined\"){\n\t\tvar newDatetime;\n\n\t\tif(DT.isDateTime(value)){\n\t\t\tnewDatetime = value;\n\t\t}else if(inputFormat === \"iso\"){\n\t\t\tnewDatetime = DT.fromISO(String(value));\n\t\t}else{\n\t\t\tnewDatetime = DT.fromFormat(String(value), inputFormat);\n\t\t}\n\n\t\tif (newDatetime.isValid){\n\t\t\tif(humanize){\n\t\t\t\treturn newDatetime.diff(date, unit).toHuman() + (suffix ? \" \" + suffix : \"\");\n\t\t\t}else{\n\t\t\t\treturn parseInt(newDatetime.diff(date, unit)[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}else{\n\t\tconsole.error(\"Format Error - 'datetimediff' formatter is dependant on luxon.js\");\n\t}\n}","export default function (cell, formatterParams, onRendered) {\n\tvar value = cell.getValue();\n\n\tif (typeof formatterParams[value] === \"undefined\") {\n\t\tconsole.warn('Missing display value for ' + value);\n\t\treturn value;\n\t}\n\n\treturn formatterParams[value];\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = cell.getValue(),\n\telement = cell.getElement(),\n\tmaxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\tstars = document.createElement(\"span\"),\n\tstar = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\tstarActive = '',\n\tstarInactive = '';\n\n\t//style stars holder\n\tstars.style.verticalAlign = \"middle\";\n\n\t//style star\n\tstar.setAttribute(\"width\", \"14\");\n\tstar.setAttribute(\"height\", \"14\");\n\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\tstar.setAttribute(\"xml:space\", \"preserve\");\n\tstar.style.padding = \"0 1px\";\n\n\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\tfor(var i=1;i<= maxStars;i++){\n\t\tvar nextStar = star.cloneNode(true);\n\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\tstars.appendChild(nextStar);\n\t}\n\n\telement.style.whiteSpace = \"nowrap\";\n\telement.style.overflow = \"hidden\";\n\telement.style.textOverflow = \"ellipsis\";\n\n\telement.setAttribute(\"aria-label\", value);\n\n\treturn stars;\n}","export default function(cell, formatterParams, onRendered){\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\tel = document.createElement(\"span\"),\n\tmax = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\tcolors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\tcolor = \"#666666\",\n\tpercent, percentValue;\n\n\tif(isNaN(value) || typeof cell.getValue() === \"undefined\"){\n\t\treturn;\n\t}\n\n\tel.classList.add(\"tabulator-traffic-light\");\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set color\n\tswitch(typeof colors){\n\t\tcase \"string\":\n\t\t\tcolor = colors;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = colors(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(colors)){\n\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = colors[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t}\n\n\tel.style.backgroundColor = color;\n\n\treturn el;\n}","import CellComponent from '../../../../core/cell/CellComponent.js';\n\nexport default function(cell, formatterParams = {}, onRendered){ //progress bar\n\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\telement = cell.getElement(),\n\tmax = formatterParams.max ? formatterParams.max : 100,\n\tmin = formatterParams.min ? formatterParams.min : 0,\n\tlegendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\tpercent, percentValue, color, legend, legendColor;\n\n\t//make sure value is in range\n\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t//workout percentage\n\tpercent = (max - min) / 100;\n\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t//set bar color\n\tswitch(typeof formatterParams.color){\n\t\tcase \"string\":\n\t\t\tcolor = formatterParams.color;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tcolor = formatterParams.color(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.color)){\n\t\t\t\tlet unit = 100 / formatterParams.color.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\tcolor = \"#2DC214\";\n\t}\n\n\t//generate legend\n\tswitch(typeof formatterParams.legend){\n\t\tcase \"string\":\n\t\t\tlegend = formatterParams.legend;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegend = formatterParams.legend(value);\n\t\t\tbreak;\n\t\tcase \"boolean\":\n\t\t\tlegend = value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegend = false;\n\t}\n\n\t//set legend color\n\tswitch(typeof formatterParams.legendColor){\n\t\tcase \"string\":\n\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\tbreak;\n\t\tcase \"function\":\n\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif(Array.isArray(formatterParams.legendColor)){\n\t\t\t\tlet unit = 100 / formatterParams.legendColor.length;\n\t\t\t\tlet index = Math.floor(percentValue / unit);\n\n\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tlegendColor = \"#000\";\n\t}\n\n\telement.style.minWidth = \"30px\";\n\telement.style.position = \"relative\";\n\n\telement.setAttribute(\"aria-label\", percentValue);\n\n\tvar barEl = document.createElement(\"div\");\n\tbarEl.style.display = \"inline-block\";\n\tbarEl.style.width = percentValue + \"%\";\n\tbarEl.style.backgroundColor = color;\n\tbarEl.style.height = \"100%\";\n\n\tbarEl.setAttribute('data-max', max);\n\tbarEl.setAttribute('data-min', min);\n\n\tvar barContainer = document.createElement(\"div\");\n\tbarContainer.style.position = \"relative\";\n\tbarContainer.style.width = \"100%\";\n\tbarContainer.style.height = \"100%\";\n\n\tif(legend){\n\t\tvar legendEl = document.createElement(\"div\");\n\t\tlegendEl.style.position = \"absolute\";\n\t\tlegendEl.style.top = 0;\n\t\tlegendEl.style.left = 0;\n\t\tlegendEl.style.textAlign = legendAlign;\n\t\tlegendEl.style.width = \"100%\";\n\t\tlegendEl.style.color = legendColor;\n\t\tlegendEl.innerHTML = legend;\n\t}\n\n\tonRendered(function(){\n\n\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\tif(!(cell instanceof CellComponent)){\n\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\tholderEl.style.position = \"absolute\";\n\t\t\tholderEl.style.top = \"4px\";\n\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\tholderEl.style.left = \"4px\";\n\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\telement.appendChild(holderEl);\n\n\t\t\telement = holderEl;\n\t\t}\n\n\t\telement.appendChild(barContainer);\n\t\tbarContainer.appendChild(barEl);\n\n\t\tif(legend){\n\t\t\tbarContainer.appendChild(legendEl);\n\t\t}\n\t});\n\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\treturn \"\";\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\treturn '';\n}","export default function(cell, formatterParams, onRendered){\n\tvar content = document.createElement(\"span\");\n\tvar row = cell.getRow();\n\tvar table = cell.getTable();\n\n\trow.watchPosition((position) => {\n\t\tif (formatterParams.relativeToPage) {\n\t\t\tposition += table.modules.page.getPageSize() * (table.modules.page.getPage() - 1);\n\t\t}\n\t\tcontent.innerText = position;\n\t});\n\t\n\treturn content;\n}\n","export default function(cell, formatterParams, onRendered){\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\treturn \"
        \";\n}","export default function(cell, formatterParams, onRendered){\n\tvar el = document.createElement(\"div\"),\n\tconfig = cell.getRow()._row.modules.responsiveLayout;\n\n\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\n\tel.innerHTML = `\n \n \n\n\n\n \n`;\n\n\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\tfunction toggleList(isOpen){\n\t\tvar collapseEl = config.element;\n\n\t\tconfig.open = isOpen;\n\n\t\tif(collapseEl){\n\n\t\t\tif(config.open){\n\t\t\t\tel.classList.add(\"open\");\n\t\t\t\tcollapseEl.style.display = '';\n\t\t\t}else{\n\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tel.addEventListener(\"click\", function(e){\n\t\te.stopImmediatePropagation();\n\t\ttoggleList(!config.open);\n\t\tcell.getTable().rowManager.adjustTableSize();\n\t});\n\n\ttoggleList(config.open);\n\n\treturn el;\n}","import RowComponent from '../../../../core/row/RowComponent.js';\n\nexport default function(cell, formatterParams, onRendered){\n\tvar checkbox = document.createElement(\"input\");\n\tvar blocked = false;\n\n\tcheckbox.type = 'checkbox';\n\n\tcheckbox.setAttribute(\"aria-label\", \"Select Row\");\n\t\n\tif(this.table.modExists(\"selectRow\", true)){\n\n\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(typeof cell.getRow == 'function'){\n\t\t\tvar row = cell.getRow();\n\n\t\t\tif(row instanceof RowComponent){\n\n\t\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\t\tif(this.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\t\tif(!blocked){\n\t\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\tcheckbox.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t\tthis.table.modules.selectRow.handleComplexRowClick(row._row, e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t}else{\n\t\t\t\tcheckbox = \"\";\n\t\t\t}\n\t\t}else {\n\t\t\tcheckbox.addEventListener(\"change\", (e) => {\n\t\t\t\tif(this.table.modules.selectRow.selectedRows.length){\n\t\t\t\t\tthis.table.deselectRow();\n\t\t\t\t}else {\n\t\t\t\t\tthis.table.selectRow(formatterParams.rowRange);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t}\n\t}\n\n\treturn checkbox;\n}","import Module from '../../core/Module.js';\n\nimport defaultFormatters from './defaults/formatters.js';\n\nclass Format extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.registerColumnOption(\"formatter\");\n\t\tthis.registerColumnOption(\"formatterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"formatterPrint\");\n\t\tthis.registerColumnOption(\"formatterPrintParams\");\n\t\tthis.registerColumnOption(\"formatterClipboard\");\n\t\tthis.registerColumnOption(\"formatterClipboardParams\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutput\");\n\t\tthis.registerColumnOption(\"formatterHtmlOutputParams\");\n\t\tthis.registerColumnOption(\"titleFormatter\");\n\t\tthis.registerColumnOption(\"titleFormatterParams\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-format\", this.formatValue.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.cellRendered.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-format\", this.formatHeader.bind(this));\n\t}\n\t\n\t//initialize column formatter\n\tinitializeColumn(column){\n\t\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\t\t\n\t\tif(typeof column.definition.formatterPrint !== \"undefined\"){\n\t\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterClipboard !== \"undefined\"){\n\t\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t\t}\n\t\t\n\t\tif(typeof column.definition.formatterHtmlOutput !== \"undefined\"){\n\t\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t\t}\n\t}\n\t\n\tlookupFormatter(column, type){\n\t\tvar config = {params:column.definition[\"formatter\" + type + \"Params\"] || {}},\n\t\tformatter = column.definition[\"formatter\" + type];\n\t\t\n\t\t//set column formatter\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tconfig.formatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tconfig.formatter = formatter;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconfig.formatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn config;\n\t}\n\t\n\tcellRendered(cell){\n\t\tif(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){\n\t\t\tcell.modules.format.renderedCallback();\n\t\t\tcell.modules.format.rendered = true;\n\t\t}\n\t}\n\t\n\t//return a formatted value for a column header\n\tformatHeader(column, title, el){\n\t\tvar formatter, params, onRendered, mockCell;\n\t\t\n\t\tif(column.definition.titleFormatter){\n\t\t\tformatter = this.getFormatter(column.definition.titleFormatter);\n\t\t\t\n\t\t\tonRendered = (callback) => {\n\t\t\t\tcolumn.titleFormatterRendered = callback;\n\t\t\t};\n\t\t\t\n\t\t\tmockCell = {\n\t\t\t\tgetValue:function(){\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tgetElement:function(){\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tgetType:function(){\n\t\t\t\t\treturn \"header\";\n\t\t\t\t},\n\t\t\t\tgetColumn:function(){\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetTable:() => {\n\t\t\t\t\treturn this.table;\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\tparams = column.definition.titleFormatterParams || {};\n\t\t\t\n\t\t\tparams = typeof params === \"function\" ? params() : params;\n\t\t\t\n\t\t\treturn formatter.call(this, mockCell, params, onRendered);\n\t\t}else{\n\t\t\treturn title;\n\t\t}\n\t}\n\t\n\t\n\t//return a formatted value for a cell\n\tformatValue(cell){\n\t\tvar component = cell.getComponent(),\n\t\tparams = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\t\t\n\t\tfunction onRendered(callback){\n\t\t\tif(!cell.modules.format){\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\t\t\t\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t}\n\t\t\n\t\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n\t}\n\t\n\tformatExportValue(cell, type){\n\t\tvar formatter = cell.column.modules.format[type],\n\t\tparams;\n\t\t\n\t\tif(formatter){\n\t\t\tparams = typeof formatter.params === \"function\" ? formatter.params(cell.getComponent()) : formatter.params;\n\t\t\t\n\t\t\tfunction onRendered(callback){\n\t\t\t\tif(!cell.modules.format){\n\t\t\t\t\tcell.modules.format = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\t\tcell.modules.format.rendered = false;\n\t\t\t}\n\t\t\t\n\t\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t\t\t\n\t\t}else{\n\t\t\treturn this.formatValue(cell);\n\t\t}\n\t}\n\t\n\tsanitizeHTML(value){\n\t\tif(value){\n\t\t\tvar entityMap = {\n\t\t\t\t'&': '&',\n\t\t\t\t'<': '<',\n\t\t\t\t'>': '>',\n\t\t\t\t'\"': '"',\n\t\t\t\t\"'\": ''',\n\t\t\t\t'/': '/',\n\t\t\t\t'`': '`',\n\t\t\t\t'=': '='\n\t\t\t};\n\t\t\t\n\t\t\treturn String(value).replace(/[&<>\"'`=/]/g, function (s) {\n\t\t\t\treturn entityMap[s];\n\t\t\t});\n\t\t}else{\n\t\t\treturn value;\n\t\t}\n\t}\n\t\n\temptyToSpace(value){\n\t\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n\t}\n\t\n\t//get formatter for cell\n\tgetFormatter(formatter){\n\t\tswitch(typeof formatter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Format.formatters[formatter]){\n\t\t\t\t\tformatter = Format.formatters[formatter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t//Custom formatter Function, do nothing\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tformatter = Format.formatters.plaintext;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\treturn formatter;\n\t}\n}\n\nFormat.moduleName = \"format\";\n\n//load defaults\nFormat.formatters = defaultFormatters;\n\nexport default Format;","import Module from '../../core/Module.js';\n\nclass FrozenColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.initializationMode = \"left\";\n\t\tthis.active = false;\n\t\tthis.blocked = true;\n\t\t\n\t\tthis.registerColumnOption(\"frozen\");\n\t}\n\t\n\t//reset initial state\n\treset(){\n\t\tthis.initializationMode = \"left\";\n\t\tthis.leftColumns = [];\n\t\tthis.rightColumns = [];\n\t\tthis.active = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-layout\", this.layoutCell.bind(this));\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layout.bind(this));\n\t\tthis.subscribe(\"row-layout-after\", this.layoutRow.bind(this));\n\t\tthis.subscribe(\"table-layout\", this.layout.bind(this));\n\t\tthis.subscribe(\"columns-loading\", this.reset.bind(this));\n\t\t\n\t\tthis.subscribe(\"column-add\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-deleted\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-hide\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"column-show\", this.reinitializeColumns.bind(this));\n\t\tthis.subscribe(\"columns-loaded\", this.reinitializeColumns.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-redraw\", this.layout.bind(this));\n\t\tthis.subscribe(\"layout-refreshing\", this.blockLayout.bind(this));\n\t\tthis.subscribe(\"layout-refreshed\", this.unblockLayout.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.adjustForScrollbar.bind(this));\n\t}\n\t\n\tblockLayout(){\n\t\tthis.blocked = true;\n\t}\n\t\n\tunblockLayout(){\n\t\tthis.blocked = false;\n\t}\n\t\n\tlayoutCell(cell){\n\t\tthis.layoutElement(cell.element, cell.column);\n\t}\n\t\n\treinitializeColumns(){\n\t\tthis.reset();\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tthis.initializeColumn(column);\n\t\t});\n\n\t\tthis.layout();\n\t}\n\t\n\t//initialize specific column\n\tinitializeColumn(column){\n\t\tvar config = {margin:0, edge:false};\n\t\t\n\t\tif(!column.isGroup){\t\t\t\n\t\t\tif(this.frozenCheck(column)){\n\t\t\t\tconfig.position = this.initializationMode;\n\t\t\t\t\n\t\t\t\tif(this.initializationMode == \"left\"){\n\t\t\t\t\tthis.leftColumns.push(column);\n\t\t\t\t}else{\n\t\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.active = true;\n\t\t\t\t\n\t\t\t\tcolumn.modules.frozen = config;\n\t\t\t}else{\n\t\t\t\tthis.initializationMode = \"right\";\n\t\t\t}\n\t\t}\n\t}\n\t\n\tfrozenCheck(column){\n\t\tif(column.parent.isGroup && column.definition.frozen){\n\t\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t\t}\n\t\t\n\t\tif(column.parent.isGroup){\n\t\t\treturn this.frozenCheck(column.parent);\n\t\t}else{\n\t\t\treturn column.definition.frozen;\n\t\t}\n\t}\n\t\n\t//layout calculation rows\n\tlayoutCalcRows(){\n\t\tif(this.table.modExists(\"columnCalcs\")){\n\t\t\tif(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){\n\t\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.modExists(\"groupRows\")){\n\t\t\t\tthis.layoutGroupCalcs(this.table.modules.groupRows.getGroups());\n\t\t\t}\n\t\t}\n\t}\n\t\n\tlayoutGroupCalcs(groups){\n\t\tgroups.forEach((group) => {\n\t\t\tif(group.calcs.top){\n\t\t\t\tthis.layoutRow(group.calcs.top);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.calcs.bottom){\n\t\t\t\tthis.layoutRow(group.calcs.bottom);\n\t\t\t}\n\t\t\t\n\t\t\tif(group.groupList && group.groupList.length){\n\t\t\t\tthis.layoutGroupCalcs(group.groupList);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//calculate column positions and layout headers\n\tlayoutColumnPosition(allCells){\n\t\tvar leftParents = [];\n\t\t\n\t\tvar leftMargin = 0;\n\t\tvar rightMargin = 0;\n\t\t\n\t\tthis.leftColumns.forEach((column, i) => {\t\n\t\t\tcolumn.modules.frozen.marginValue = leftMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tleftMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.leftColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tvar parentEl = this.getColGroupParentElement(column);\n\t\t\t\tif(!leftParents.includes(parentEl)){\n\t\t\t\t\tthis.layoutElement(parentEl, column);\n\t\t\t\t\tleftParents.push(parentEl);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tparentEl.classList.toggle(\"tabulator-frozen-left\", column.modules.frozen.edge && column.modules.frozen.position === \"left\");\n\t\t\t\tparentEl.classList.toggle(\"tabulator-frozen-right\", column.modules.frozen.edge && column.modules.frozen.position === \"right\");\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column, i) => {\n\t\t\t\n\t\t\tcolumn.modules.frozen.marginValue = rightMargin;\n\t\t\tcolumn.modules.frozen.margin = column.modules.frozen.marginValue + \"px\";\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\trightMargin += column.getWidth();\n\t\t\t}\n\t\t\t\n\t\t\tif(i == this.rightColumns.length - 1){\n\t\t\t\tcolumn.modules.frozen.edge = true;\n\t\t\t}else{\n\t\t\t\tcolumn.modules.frozen.edge = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.parent.isGroup){\n\t\t\t\tthis.layoutElement(this.getColGroupParentElement(column), column);\n\t\t\t}else{\n\t\t\t\tthis.layoutElement(column.getElement(), column);\n\t\t\t}\n\t\t\t\n\t\t\tif(allCells){\n\t\t\t\tcolumn.cells.forEach((cell) => {\n\t\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t\n\tgetColGroupParentElement(column){\n\t\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n\t}\n\t\n\t//layout columns appropriately\n\tlayout(){\t\n\t\tif(this.active && !this.blocked){\n\t\t\t//calculate left columns\n\t\t\tthis.layoutColumnPosition();\n\t\t\t\n\t\t\tthis.reinitializeRows();\n\t\t\t\n\t\t\tthis.layoutCalcRows();\n\t\t}\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.table.rowManager.getVisibleRows(true);\n\t\tvar otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\t\t\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t\t\n\t\tvisibleRows.forEach((row) =>{\n\t\t\tif(row.type === \"row\"){\n\t\t\t\tthis.layoutRow(row);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutRow(row){\n\t\tif(this.table.options.layout === \"fitDataFill\" && this.rightColumns.length){\n\t\t\tthis.table.rowManager.getTableElement().style.minWidth = \"calc(100% - \" + this.rightMargin + \")\";\n\t\t}\n\t\t\n\t\tthis.leftColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.rightColumns.forEach((column) => {\n\t\t\tvar cell = row.getCell(column);\n\t\t\t\n\t\t\tif(cell){\n\t\t\t\tthis.layoutElement(cell.getElement(true), column);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tlayoutElement(element, column){\n\t\tvar position;\n\t\t\n\t\tif(column.modules.frozen && element){\n\t\t\telement.style.position = \"sticky\";\n\n\t\t\tif(this.table.rtl){\n\t\t\t\tposition = column.modules.frozen.position === \"left\" ? \"right\" : \"left\";\n\t\t\t}else{\n\t\t\t\tposition = column.modules.frozen.position;\n\t\t\t}\n\t\t\n\t\t\telement.style[position] = column.modules.frozen.margin;\n\n\t\t\telement.classList.add(\"tabulator-frozen\");\n\t\t\t\n\t\t\telement.classList.toggle(\"tabulator-frozen-left\", column.modules.frozen.edge && column.modules.frozen.position === \"left\");\n\t\t\telement.classList.toggle(\"tabulator-frozen-right\", column.modules.frozen.edge && column.modules.frozen.position === \"right\");\n\t\t}\n\t}\n\n\tadjustForScrollbar(width){\n\t\tif(this.rightColumns.length){\n\t\t\tthis.table.columnManager.getContentsElement().style.width = \"calc(100% - \" + width + \"px)\";\n\t\t}\n\t}\n\t\n\t_calcSpace(columns, index){\n\t\tvar width = 0;\n\t\t\n\t\tfor (let i = 0; i < index; i++){\n\t\t\tif(columns[i].visible){\n\t\t\t\twidth += columns[i].getWidth();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn width;\n\t}\n}\n\nFrozenColumns.moduleName = \"frozenColumns\";\n\nexport default FrozenColumns;","import Module from '../../core/Module.js';\n\nclass FrozenRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.topElement = document.createElement(\"div\");\n\t\tthis.rows = [];\n\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"freeze\", this.freezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"unfreeze\", this.unfreezeRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isFrozen\", this.isRowFrozen.bind(this));\n\n\t\t//register table options\n\t\tthis.registerTableOption(\"frozenRowsField\", \"id\"); //field to choose frozen rows by\n\t\tthis.registerTableOption(\"frozenRows\", false); //holder for frozen row identifiers\n\t}\n\n\tinitialize(){\n\t\tvar\tfragment = document.createDocumentFragment();\n\t\t\n\t\tthis.rows = [];\n\n\t\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\t\t\n\t\tfragment.appendChild(document.createElement(\"br\"));\n\t\tfragment.appendChild(this.topElement);\n\n\t\t// this.table.columnManager.element.append(this.topElement);\n\t\tthis.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);\n\n\t\tthis.subscribe(\"row-deleting\", this.detachRow.bind(this));\n\t\tthis.subscribe(\"rows-visible\", this.visibleRows.bind(this));\n\n\t\tthis.registerDisplayHandler(this.getRows.bind(this), 10);\n\n\t\tif(this.table.options.frozenRows){\n\t\t\tthis.subscribe(\"data-processed\", this.initializeRows.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"table-redrawing\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-resized\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.resizeHolderWidth.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.resizeHolderWidth.bind(this));\n\t\t}\n\n\t\tthis.resizeHolderWidth();\n\t}\n\n\tresizeHolderWidth(){\n\t\tthis.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + \"px\";\n\t}\n\n\tinitializeRows(){\n\t\tthis.table.rowManager.getRows().forEach((row) => {\n\t\t\tthis.initializeRow(row);\n\t\t});\n\t}\n\n\tinitializeRow(row){\n\t\tvar frozenRows = this.table.options.frozenRows,\n\t\trowType = typeof frozenRows;\n\n\t\tif(rowType === \"number\"){\n\t\t\tif(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(rowType === \"function\"){\n\t\t\tif(frozenRows.call(this.table, row.getComponent())){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}else if(Array.isArray(frozenRows)){\n\t\t\tif(frozenRows.includes(row.data[this.options(\"frozenRowsField\")])){\n\t\t\t\tthis.freezeRow(row);\n\t\t\t}\n\t\t}\n\t}\n\n\tisRowFrozen(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\treturn index > -1;\n\t}\n\n\tisFrozen(){\n\t\treturn !!this.rows.length;\n\t}\n\n\tvisibleRows(viewable, rows){\n\t\tthis.rows.forEach((row) => {\n\t\t\trows.push(row);\n\t\t});\n\n\t\treturn rows;\n\t}\n\n\t//filter frozen rows out of display data\n\tgetRows(rows){\n\t\tvar output = rows.slice(0);\n\n\t\tthis.rows.forEach(function(row){\n\t\t\tvar index = output.indexOf(row);\n\n\t\t\tif(index > -1){\n\t\t\t\toutput.splice(index, 1);\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tfreezeRow(row){\n\t\tif(!row.modules.frozen){\n\t\t\trow.modules.frozen = true;\n\t\t\tthis.topElement.appendChild(row.getElement());\n\t\t\trow.initialize();\n\t\t\trow.normalizeHeight();\n\t\t\n\t\t\tthis.rows.push(row);\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.styleRows();\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t\t}\n\t}\n\n\tunfreezeRow(row){\n\t\tif(row.modules.frozen){\n\n\t\t\trow.modules.frozen = false;\n\n\t\t\tthis.detachRow(row);\n\n\t\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t\tthis.refreshData(false, \"display\");\n\n\t\t\tif(this.rows.length){\n\t\t\t\tthis.styleRows();\n\t\t\t}\n\n\t\t}else{\n\t\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t\t}\n\t}\n\n\tdetachRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t}\n\n\tstyleRows(row){\n\t\tthis.rows.forEach((row, i) => {\n\t\t\tthis.table.rowManager.styleRow(row, i);\n\t\t});\n\t}\n}\n\nFrozenRows.moduleName = \"frozenRows\";\n\nexport default FrozenRows;","//public group object\nclass GroupComponent {\n\tconstructor (group){\n\t\tthis._group = group;\n\t\tthis.type = \"GroupComponent\";\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function(target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t}else{\n\t\t\t\t\treturn target._group.groupManager.table.componentFunctionBinder.handle(\"group\", target._group, name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tgetKey(){\n\t\treturn this._group.key;\n\t}\n\n\tgetField(){\n\t\treturn this._group.field;\n\t}\n\n\tgetElement(){\n\t\treturn this._group.element;\n\t}\n\n\tgetRows(){\n\t\treturn this._group.getRows(true);\n\t}\n\n\tgetSubGroups(){\n\t\treturn this._group.getSubGroups(true);\n\t}\n\n\tgetParentGroup(){\n\t\treturn this._group.parent ? this._group.parent.getComponent() : false;\n\t}\n\n\tisVisible(){\n\t\treturn this._group.visible;\n\t}\n\n\tshow(){\n\t\tthis._group.show();\n\t}\n\n\thide(){\n\t\tthis._group.hide();\n\t}\n\n\ttoggle(){\n\t\tthis._group.toggleVisibility();\n\t}\n\n\tscrollTo(position, ifVisible){\n\t\treturn this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible);\n\t}\n\n\t_getSelf(){\n\t\treturn this._group;\n\t}\n\n\tgetTable(){\n\t\treturn this._group.groupManager.table;\n\t}\n}\n\nexport default GroupComponent;","import Helpers from '../../core/tools/Helpers.js';\nimport GroupComponent from './GroupComponent.js';\n\n//Group functions\nclass Group{\n\t\n\tconstructor(groupManager, parent, level, key, field, generator, oldGroup){\n\t\tthis.groupManager = groupManager;\n\t\tthis.parent = parent;\n\t\tthis.key = key;\n\t\tthis.level = level;\n\t\tthis.field = field;\n\t\tthis.hasSubGroups = level < (groupManager.groupIDLookups.length - 1);\n\t\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\t\tthis.type = \"group\"; //type of element\n\t\tthis.old = oldGroup;\n\t\tthis.rows = [];\n\t\tthis.groups = [];\n\t\tthis.groupList = [];\n\t\tthis.generator = generator;\n\t\tthis.element = false;\n\t\tthis.elementContents = false;\n\t\tthis.height = 0;\n\t\tthis.outerHeight = 0;\n\t\tthis.initialized = false;\n\t\tthis.calcs = {};\n\t\tthis.initialized = false;\n\t\tthis.modules = {};\n\t\tthis.arrowElement = false;\n\t\t\n\t\tthis.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0]);\n\t\t\n\t\tthis.component = null;\n\t\t\n\t\tthis.createElements();\n\t\tthis.addBindings();\n\t\t\n\t\tthis.createValueGroups();\n\t}\n\t\n\twipe(elementsOnly){\n\t\tif(!elementsOnly){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\tgroup.wipe();\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tif(row.modules){\n\t\t\t\t\t\tdelete row.modules.group;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n\t\n\tcreateElements(){\n\t\tvar arrow = document.createElement(\"div\");\n\t\tarrow.classList.add(\"tabulator-arrow\");\n\t\t\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-row\");\n\t\tthis.element.classList.add(\"tabulator-group\");\n\t\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\t\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tthis.arrowElement = document.createElement(\"div\");\n\t\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\t\tthis.arrowElement.appendChild(arrow);\n\t\t\n\t\t//setup movable rows\n\t\tif(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")){\n\t\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t\t}\n\t}\n\t\n\tcreateValueGroups(){\n\t\tvar level = this.level + 1;\n\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\tthis.groupManager.allowedValues[level].forEach((value) => {\n\t\t\t\tthis._createGroup(value, level);\n\t\t\t});\n\t\t}\n\t}\n\t\n\taddBindings(){\n\t\tvar toggleElement;\n\t\t\n\t\tif(this.groupManager.table.options.groupToggleElement){\n\t\t\ttoggleElement = this.groupManager.table.options.groupToggleElement == \"arrow\" ? this.arrowElement : this.element;\n\t\t\t\n\t\t\ttoggleElement.addEventListener(\"click\", (e) => {\n\t\t\t\tif(this.groupManager.table.options.groupToggleElement === \"arrow\"){\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\t//allow click event to propagate before toggling visibility\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.toggleVisibility();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\t\n\t_createGroup(groupID, level){\n\t\tvar groupKey = level + \"_\" + groupID;\n\t\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\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\t_addRowToGroup(row){\n\t\t\n\t\tvar level = this.level + 1;\n\t\t\n\t\tif(this.hasSubGroups){\n\t\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t\tgroupKey = level + \"_\" + groupID;\n\t\t\t\n\t\t\tif(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){\n\t\t\t\tif(this.groups[groupKey]){\n\t\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(!this.groups[groupKey]){\n\t\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_addRow(row){\n\t\tthis.rows.push(row);\n\t\trow.modules.group = this;\n\t}\n\t\n\tinsertRow(row, to, after){\n\t\tvar data = this.conformRowData({});\n\t\t\n\t\trow.updateData(data);\n\t\t\n\t\tvar toIndex = this.rows.indexOf(to);\n\t\t\n\t\tif(toIndex > -1){\n\t\t\tif(after){\n\t\t\t\tthis.rows.splice(toIndex+1, 0, row);\n\t\t\t}else{\n\t\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t\t}\n\t\t}else{\n\t\t\tif(after){\n\t\t\t\tthis.rows.push(row);\n\t\t\t}else{\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\trow.modules.group = this;\n\t\t\n\t\t// this.generateGroupHeaderContents();\n\t\t\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\t\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\t\n\tscrollHeader(left){\n\t\tif(this.arrowElement){\n\t\t\tthis.arrowElement.style.marginLeft = left;\n\t\t\t\n\t\t\tthis.groupList.forEach(function(child){\n\t\t\t\tchild.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tgetRowIndex(row){}\n\t\n\t//update row data to match grouping constraints\n\tconformRowData(data){\n\t\tif(this.field){\n\t\t\tdata[this.field] = this.key;\n\t\t}else{\n\t\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t\t}\n\t\t\n\t\tif(this.parent){\n\t\t\tdata = this.parent.conformRowData(data);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\tremoveRow(row){\n\t\tvar index = this.rows.indexOf(row);\n\t\tvar el = row.getElement();\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.rows.splice(index, 1);\n\t\t}\n\t\t\n\t\tif(!this.groupManager.table.options.groupValues && !this.rows.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}\t\t\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(el.parentNode){\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupManager.blockRedraw){\n\t\t\t\tthis.generateGroupHeaderContents();\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t\t\n\t\t\tif(!this.groupList.length){\n\t\t\t\tif(this.parent){\n\t\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t\t}else{\n\t\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetHeadersAndRows(){\n\t\tvar output = [];\n\t\t\n\t\toutput.push(this);\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\t\n\t\tif(this.calcs.top){\n\t\t\tthis.calcs.top.detachElement();\n\t\t\tthis.calcs.top.deleteCells();\n\t\t}\n\t\t\n\t\tif(this.calcs.bottom){\n\t\t\tthis.calcs.bottom.detachElement();\n\t\t\tthis.calcs.bottom.deleteCells();\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\tif(this.visible){\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\toutput = output.concat(this.rows);\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\n\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\"){\n\t\t\t\t\n\t\t\t\tif(this.groupManager.table.modExists(\"columnCalcs\")){\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.groupManager.table.options.groupClosedShowCalcs){\n\t\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\t\toutput.push(this.calcs.bottom);\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\t\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetData(visible, transform){\n\t\tvar output = [];\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(!visible || (visible && this.visible)){\n\t\t\tthis.rows.forEach((row) => {\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRowCount(){\n\t\tvar count = 0;\n\t\t\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tcount += group.getRowCount();\n\t\t\t});\n\t\t}else{\n\t\t\tcount = this.rows.length;\n\t\t}\n\t\treturn count;\n\t}\n\n\t\n\ttoggleVisibility(){\n\t\tif(this.visible){\n\t\t\tthis.hide();\n\t\t}else{\n\t\t\tthis.show();\n\t\t}\n\t}\n\t\n\thide(){\n\t\tthis.visible = false;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\t\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\trow.detachElement();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((row) => {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t\t\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), false);\n\t}\n\t\n\tshow(){\n\t\tthis.visible = true;\n\t\t\n\t\tif(this.groupManager.table.rowManager.getRenderMode() == \"basic\" && !this.groupManager.table.options.pagination){\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t\t\n\t\t\tvar prev = this.generateElement();\n\t\t\t\n\t\t\tif(this.groupList.length){\n\t\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\t\tvar rows = group.getHeadersAndRows();\n\t\t\t\t\t\n\t\t\t\t\trows.forEach((row) => {\n\t\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\t\trow.initialize();\n\t\t\t\t\t\tprev = rowEl;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.rows.forEach((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\t\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}else{\n\t\t\tthis.groupManager.updateGroupRows(true);\n\t\t}\n\t\t\n\t\tthis.groupManager.table.externalEvents.dispatch(\"groupVisibilityChanged\", this.getComponent(), true);\n\t}\n\t\n\t_visSet(){\n\t\tvar data = [];\n\t\t\n\t\tif(typeof this.visible == \"function\"){\n\t\t\t\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\tdata.push(row.getData());\n\t\t\t});\n\t\t\t\n\t\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t\t}\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\tif(this.groupList.length){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\t\n\t\t\t\tif(result){\n\t\t\t\t\tmatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tif(this.rows.find(function(item){\n\t\t\t\treturn item === row;\n\t\t\t})){\n\t\t\t\tmatch = this;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn match;\n\t}\n\t\n\tgetSubGroups(component){\n\t\tvar output = [];\n\t\t\n\t\tthis.groupList.forEach(function(child){\n\t\t\toutput.push(component ? child.getComponent() : child);\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetRows(component, includeChildren){\n\t\tvar output = [];\n\t\t\n\t\tif(includeChildren && this.groupList.length){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getRows(component, includeChildren));\n\t\t\t});\n\t\t}else{\n\t\t\tthis.rows.forEach(function(row){\n\t\t\t\toutput.push(component ? row.getComponent() : row);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgenerateGroupHeaderContents(){\n\t\tvar data = [];\n\t\t\n\t\tvar rows = this.getRows(false, true);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\t\t\n\t\twhile(this.element.firstChild) this.element.removeChild(this.element.firstChild);\n\t\t\n\t\tif(typeof this.elementContents === \"string\"){\n\t\t\tthis.element.innerHTML = this.elementContents;\n\t\t}else{\n\t\t\tthis.element.appendChild(this.elementContents);\n\t\t}\n\t\t\n\t\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n\t}\n\t\n\tgetPath(path = []) {\n\t\tpath.unshift(this.key);\n\t\tif(this.parent) {\n\t\t\tthis.parent.getPath(path);\n\t\t}\n\t\treturn path;\n\t}\n\t\n\t////////////// Standard Row Functions //////////////\n\t\n\tgetElement(){\n\t\treturn this.elementContents ? this.element : this.generateElement();\n\t}\n\t\n\tgenerateElement(){\n\t\tthis.addBindings = false;\n\t\t\n\t\tthis._visSet();\n\t\t\n\t\tif(this.visible){\n\t\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t\t}else{\n\t\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t\t}\n\t\t\n\t\tfor(var i = 0; i < this.element.childNodes.length; ++i){\n\t\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t\t}\n\t\t\n\t\tthis.generateGroupHeaderContents();\n\t\t\n\t\t// this.addBindings();\n\t\t\n\t\treturn this.element;\n\t}\n\t\n\tdetachElement(){\n\t\tif (this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\t\n\t//normalize the height of elements in the row\n\tnormalizeHeight(){\n\t\tthis.setHeight(this.element.clientHeight);\n\t}\n\t\n\tinitialize(force){\n\t\tif(!this.initialized || force){\n\t\t\tthis.normalizeHeight();\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\treinitialize(){\n\t\tthis.initialized = false;\n\t\tthis.height = 0;\n\t\t\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.initialize(true);\n\t\t}\n\t}\n\t\n\tsetHeight(height){\n\t\tif(this.height != height){\n\t\t\tthis.height = height;\n\t\t\tthis.outerHeight = this.element.offsetHeight;\n\t\t}\n\t}\n\t\n\t//return rows outer height\n\tgetHeight(){\n\t\treturn this.outerHeight;\n\t}\n\t\n\tgetGroup(){\n\t\treturn this;\n\t}\n\t\n\treinitializeHeight(){}\n\t\n\tcalcHeight(){}\n\t\n\tsetCellHeight(){}\n\t\n\tclearCellHeight(){}\n\t\n\tdeinitializeHeight(){}\n\n\trendered(){}\n\t\n\t//////////////// Object Generation /////////////////\n\tgetComponent(){\n\t\tif(!this.component){\n\t\t\tthis.component = new GroupComponent(this);\n\t\t}\n\t\t\n\t\treturn this.component;\n\t}\n}\n\nexport default Group;","import Module from '../../core/Module.js';\n\nimport Group from './Group.js';\n\nclass GroupRows extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\tthis.groupList = []; //ordered list of groups\n\t\tthis.allowedValues = false;\n\t\tthis.groups = {}; //hold row groups\n\t\t\n\t\tthis.displayHandler = this.getRows.bind(this);\n\n\t\tthis.blockRedraw = false;\n\t\t\n\t\t//register table options\n\t\tthis.registerTableOption(\"groupBy\", false); //enable table grouping and set field to group by\n\t\tthis.registerTableOption(\"groupStartOpen\", true); //starting state of group\n\t\tthis.registerTableOption(\"groupValues\", false);\n\t\tthis.registerTableOption(\"groupUpdateOnCellEdit\", false);\n\t\tthis.registerTableOption(\"groupHeader\", false); //header generation function\n\t\tthis.registerTableOption(\"groupHeaderPrint\", null);\n\t\tthis.registerTableOption(\"groupHeaderClipboard\", null);\n\t\tthis.registerTableOption(\"groupHeaderHtmlOutput\", null);\n\t\tthis.registerTableOption(\"groupHeaderDownload\", null);\n\t\tthis.registerTableOption(\"groupToggleElement\", \"arrow\");\n\t\tthis.registerTableOption(\"groupClosedShowCalcs\", false);\n\t\t\n\t\t//register table functions\n\t\tthis.registerTableFunction(\"setGroupBy\", this.setGroupBy.bind(this));\n\t\tthis.registerTableFunction(\"setGroupValues\", this.setGroupValues.bind(this));\n\t\tthis.registerTableFunction(\"setGroupStartOpen\", this.setGroupStartOpen.bind(this));\n\t\tthis.registerTableFunction(\"setGroupHeader\", this.setGroupHeader.bind(this));\n\t\tthis.registerTableFunction(\"getGroups\", this.userGetGroups.bind(this));\n\t\tthis.registerTableFunction(\"getGroupedData\", this.userGetGroupedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"getGroup\", this.rowGetGroup.bind(this));\n\t}\n\t\n\t//initialize group configuration\n\tinitialize(){\n\t\tthis.subscribe(\"table-destroy\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wipe\", this._blockRedrawing.bind(this));\n\t\tthis.subscribe(\"rows-wiped\", this._restore_redrawing.bind(this));\n\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.groupUpdateOnCellEdit){\n\t\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.reassignRowToGroup.bind(this), 0);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-built\", this.configureGroupSetup.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleting.bind(this));\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHeaders.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.wipe.bind(this));\n\t\t\tthis.subscribe(\"rows-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-moving\", this.rowMoving.bind(this));\n\t\t\tthis.subscribe(\"row-adding-index\", this.rowAddingIndex.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"rows-sample\", this.rowSample.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"render-virtual-fill\", this.virtualRenderFill.bind(this));\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.displayHandler, 20);\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t_blockRedrawing(){\n\t\tthis.blockRedraw = true;\n\t}\n\n\t_restore_redrawing(){\n\t\tthis.blockRedraw = false;\n\t}\n\n\tconfigureGroupSetup(){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar groupBy = this.table.options.groupBy,\n\t\t\tstartOpen = this.table.options.groupStartOpen,\n\t\t\tgroupHeader = this.table.options.groupHeader;\n\t\t\t\n\t\t\tthis.allowedValues = this.table.options.groupValues;\n\t\t\t\n\t\t\tif(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){\n\t\t\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.headerGenerator = [function(){return \"\";}];\n\t\t\tthis.startOpen = [function(){return false;}]; //starting state of group\n\t\t\t\n\t\t\tthis.langBind(\"groups|item\", (langValue, lang) => {\n\t\t\t\tthis.headerGenerator[0] = (value, count, data) => { //header layout function\n\t\t\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"(\" + count + \" \" + ((count === 1) ? langValue : lang.groups.items) + \")\";\n\t\t\t\t};\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupIDLookups = [];\n\t\t\t\n\t\t\tif(groupBy){\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\"){\n\t\t\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\"){\n\t\t\t\t\t\n\t\t\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\t\t\t\t\t\n\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\tif(col.definition.topCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(col.definition.bottomCalc){\n\t\t\t\t\t\t\tthis.table.modules.columnCalcs.initializeBottomRow();\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\t\n\t\t\tif(!Array.isArray(groupBy)){\n\t\t\t\tgroupBy = [groupBy];\n\t\t\t}\n\t\t\t\n\t\t\tgroupBy.forEach((group, i) => {\n\t\t\t\tvar lookupFunc, column;\n\t\t\t\t\n\t\t\t\tif(typeof group == \"function\"){\n\t\t\t\t\tlookupFunc = group;\n\t\t\t\t}else{\n\t\t\t\t\tcolumn = this.table.columnManager.getColumnByField(group);\n\t\t\t\t\t\n\t\t\t\t\tif(column){\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t\t\t};\n\t\t\t\t\t}else{\n\t\t\t\t\t\tlookupFunc = function(data){\n\t\t\t\t\t\t\treturn data[group];\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.groupIDLookups.push({\n\t\t\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\t\t\tfunc:lookupFunc,\n\t\t\t\t\tvalues:this.allowedValues ? this.allowedValues[i] : false,\n\t\t\t\t});\n\t\t\t});\n\t\t\t\n\t\t\tif(startOpen){\n\t\t\t\tif(!Array.isArray(startOpen)){\n\t\t\t\t\tstartOpen = [startOpen];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstartOpen.forEach((level) => {\n\t\t\t\t\tlevel = typeof level == \"function\" ? level : function(){return true;};\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.startOpen = startOpen;\n\t\t\t}\n\t\t\t\n\t\t\tif(groupHeader){\n\t\t\t\tthis.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t\t\t}\n\t\t}else{\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\trowSample(rows, prevValue){\n\t\tif(this.table.options.groupBy){\n\t\t\tvar group = this.getGroups(false)[0];\n\t\t\t\n\t\t\tprevValue.push(group.getRows(false)[0]);\n\t\t}\n\t\t\n\t\treturn prevValue;\n\t}\n\t\n\tvirtualRenderFill(){\n\t\tvar el = this.table.rowManager.tableElement;\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\trows = rows.filter((row) => {\n\t\t\t\treturn row.type !== \"group\";\n\t\t\t});\n\t\t\t\n\t\t\tel.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + \"px\" : \"\";\n\t\t}else{\n\t\t\treturn rows;\n\t\t}\n\t}\n\t\n\trowAddingIndex(row, index, top){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.assignRowToGroup(row);\n\t\t\t\n\t\t\tvar groupRows = row.modules.group.rows;\n\t\t\t\n\t\t\tif(groupRows.length > 1){\n\t\t\t\tif(!index || (index && groupRows.indexOf(index) == -1)){\n\t\t\t\t\tif(top){\n\t\t\t\t\t\tif(groupRows[0] !== row){\n\t\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(groupRows[groupRows.length -1] !== row){\n\t\t\t\t\t\t\tindex = groupRows[groupRows.length -1];\n\t\t\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn index;\n\t\t}\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"group-changed\");\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tsetGroupBy(groups){\n\t\tthis.table.options.groupBy = groups;\n\t\t\n\t\tif(!this.initialized){\n\t\t\tthis.initialize();\n\t\t}\n\t\t\n\t\tthis.configureGroupSetup();\n\n\t\tif(!groups && this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs === true){\n\t\t\tthis.table.modules.columnCalcs.reinitializeCalcs();\n\t\t}\n\t\t\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupValues(groupValues){\n\t\tthis.table.options.groupValues = groupValues;\n\t\tthis.configureGroupSetup();\n\t\tthis.refreshData();\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\tsetGroupStartOpen(values){\n\t\tthis.table.options.groupStartOpen = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tsetGroupHeader(values){\n\t\tthis.table.options.groupHeader = values;\n\t\tthis.configureGroupSetup();\n\t\t\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.refreshData();\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t}else{\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t}\n\t\n\tuserGetGroups(values){\n\t\treturn this.getGroups(true);\n\t}\n\t\n\t// get grouped table data in the same format as getData()\n\tuserGetGroupedData(){\n\t\treturn this.table.options.groupBy ? this.getGroupedData() : this.getData();\n\t}\n\t\n\t\n\t///////////////////////////////////////\n\t///////// Component Functions /////////\n\t///////////////////////////////////////\n\t\n\trowGetGroup(row){\n\t\treturn row.modules.group ? row.modules.group.getComponent() : false;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\trowMoving(from, to, after){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(!after && to instanceof Group){\n\t\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t\t}\n\t\t\t\n\t\t\tvar toGroup = to instanceof Group ? to : to.modules.group;\n\t\t\tvar fromGroup = from instanceof Group ? from : from.modules.group;\n\t\t\t\n\t\t\tif(toGroup === fromGroup){\n\t\t\t\tthis.table.rowManager.moveRowInArray(toGroup.rows, from, to, after);\n\t\t\t}else{\n\t\t\t\tif(fromGroup){\n\t\t\t\t\tfromGroup.removeRow(from);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\ttoGroup.insertRow(from, to, after);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\trowDeleting(row){\n\t\t//remove from group\n\t\tif(this.table.options.groupBy && row.modules.group){\n\t\t\trow.modules.group.removeRow(row);\n\t\t}\n\t}\n\t\n\trowsUpdated(row){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.updateGroupRows(true);\n\t\t}\t\n\t}\n\t\n\tcellUpdated(cell){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.reassignRowToGroup(cell.row);\n\t\t}\n\t}\n\t\n\t//return appropriate rows with group headers\n\tgetRows(rows){\n\t\tif(this.table.options.groupBy && this.groupIDLookups.length){\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataGrouping\");\n\t\t\t\n\t\t\tthis.generateGroups(rows);\n\t\t\t\n\t\t\tif(this.subscribedExternal(\"dataGrouped\")){\n\t\t\t\tthis.dispatchExternal(\"dataGrouped\", this.getGroups(true));\n\t\t\t}\n\t\t\t\n\t\t\treturn this.updateGroupRows();\n\t\t\t\n\t\t}else{\n\t\t\treturn rows.slice(0);\n\t\t}\n\t}\n\t\n\tgetGroups(component){\n\t\tvar groupComponents = [];\n\t\t\n\t\tthis.groupList.forEach(function(group){\n\t\t\tgroupComponents.push(component ? group.getComponent() : group);\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\tgetChildGroups(group){\n\t\tvar groupComponents = [];\n\t\t\n\t\tif(!group){\n\t\t\tgroup = this;\n\t\t}\n\t\t\n\t\tgroup.groupList.forEach((child) => {\n\t\t\tif(child.groupList.length){\n\t\t\t\tgroupComponents = groupComponents.concat(this.getChildGroups(child));\n\t\t\t}else{\n\t\t\t\tgroupComponents.push(child);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupComponents;\n\t}\n\t\n\twipe(){\n\t\tif(this.table.options.groupBy){\n\t\t\tthis.groupList.forEach(function(group){\n\t\t\t\tgroup.wipe();\n\t\t\t});\n\t\t\t\n\t\t\tthis.groupList = [];\n\t\t\tthis.groups = {};\n\t\t}\n\t}\n\t\n\tpullGroupListData(groupList) {\n\t\tvar groupListData = [];\n\t\t\n\t\tgroupList.forEach((group) => {\n\t\t\tvar groupHeader = {};\n\t\t\tgroupHeader.level = 0;\n\t\t\tgroupHeader.rowCount = 0;\n\t\t\tgroupHeader.headerContent = \"\";\n\t\t\tvar childData = [];\n\t\t\t\n\t\t\tif (group.hasSubGroups) {\n\t\t\t\tchildData = this.pullGroupListData(group.groupList);\n\t\t\t\t\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\tgroupListData = groupListData.concat(childData);\n\t\t\t}\n\t\t\t\n\t\t\telse {\n\t\t\t\tgroupHeader.level = group.level;\n\t\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\t\tgroupHeader.rowCount = group.getRows().length;\n\t\t\t\t\n\t\t\t\tgroupListData.push(groupHeader);\n\t\t\t\t\n\t\t\t\tgroup.getRows().forEach((row) => {\n\t\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn groupListData;\n\t}\n\t\n\tgetGroupedData(){\n\t\t\n\t\treturn this.pullGroupListData(this.groupList);\n\t}\n\t\n\tgetRowGroup(row){\n\t\tvar match = false;\n\t\t\n\t\tif(this.options(\"dataTree\")){\n\t\t\trow = this.table.modules.dataTree.getTreeParentRoot(row);\n\t\t}\n\t\t\n\t\tthis.groupList.forEach((group) => {\n\t\t\tvar result = group.getRowGroup(row);\n\t\t\t\n\t\t\tif(result){\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn match;\n\t}\n\t\n\tcountGroups(){\n\t\treturn this.groupList.length;\n\t}\n\t\n\tgenerateGroups(rows){\n\t\tvar oldGroups = this.groups;\n\t\t\n\t\tthis.groups = {};\n\t\tthis.groupList = [];\n\t\t\n\t\tif(this.allowedValues && this.allowedValues[0]){\n\t\t\tthis.allowedValues[0].forEach((value) => {\n\t\t\t\tthis.createGroup(value, 0, oldGroups);\n\t\t\t});\n\t\t\t\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToExistingGroup(row, oldGroups);\n\t\t\t});\n\t\t}else{\n\t\t\trows.forEach((row) => {\n\t\t\t\tthis.assignRowToGroup(row, oldGroups);\n\t\t\t});\n\t\t}\n\t\t\n\t\tObject.values(oldGroups).forEach((group) => {\n\t\t\tgroup.wipe(true);\n\t\t});\t\n\t}\n\t\n\t\n\tcreateGroup(groupID, level, oldGroups){\n\t\tvar groupKey = level + \"_\" + groupID,\n\t\tgroup;\n\t\t\n\t\toldGroups = oldGroups || [];\n\t\t\n\t\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\t\t\n\t\tthis.groups[groupKey] = group;\n\t\tthis.groupList.push(group);\n\t}\n\t\n\tassignRowToExistingGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tgroupKey = \"0_\" + groupID;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n\t\n\tassignRowToGroup(row, oldGroups){\n\t\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t\tnewGroupNeeded = !this.groups[\"0_\" + groupID];\n\t\t\n\t\tif(newGroupNeeded){\n\t\t\tthis.createGroup(groupID, 0, oldGroups);\n\t\t}\n\t\t\n\t\tthis.groups[\"0_\" + groupID].addRow(row);\n\t\t\n\t\treturn !newGroupNeeded;\n\t}\n\t\n\treassignRowToGroup(row){\n\t\tif(row.type === \"row\"){\n\t\t\tvar oldRowGroup = row.modules.group,\n\t\t\toldGroupPath = oldRowGroup.getPath(),\n\t\t\tnewGroupPath = this.getExpectedPath(row),\n\t\t\tsamePath;\n\t\t\t\n\t\t\t// figure out if new group path is the same as old group path\n\t\t\tsamePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => {\n\t\t\t\treturn element === newGroupPath[index];\n\t\t\t});\n\t\t\t\n\t\t\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\t\t\tif(!samePath) {\n\t\t\t\toldRowGroup.removeRow(row);\n\t\t\t\tthis.assignRowToGroup(row, this.groups);\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetExpectedPath(row) {\n\t\tvar groupPath = [], rowData = row.getData();\n\t\t\n\t\tthis.groupIDLookups.forEach((groupId) => {\n\t\t\tgroupPath.push(groupId.func(rowData));\n\t\t});\n\t\t\n\t\treturn groupPath;\n\t}\n\t\n\tupdateGroupRows(force){\n\t\tvar output = [];\n\n\t\tif(!this.blockRedraw){\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows());\n\t\t\t});\n\t\t\t\n\t\t\tif(force){\n\t\t\t\tthis.refreshData(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tscrollHeaders(left){\n\t\tif(this.table.options.groupBy){\n\t\t\tif(this.table.options.renderHorizontal === \"virtual\"){\n\t\t\t\tleft -= this.table.columnManager.renderer.vDomPadLeft;\n\t\t\t}\n\t\t\t\n\t\t\tleft = left + \"px\";\n\t\t\t\n\t\t\tthis.groupList.forEach((group) => {\n\t\t\t\tgroup.scrollHeader(left);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tremoveGroup(group){\n\t\tvar groupKey = group.level + \"_\" + group.key,\n\t\tindex;\n\t\t\n\t\tif(this.groups[groupKey]){\n\t\t\tdelete this.groups[groupKey];\n\t\t\t\n\t\t\tindex = this.groupList.indexOf(group);\n\t\t\t\n\t\t\tif(index > -1){\n\t\t\t\tthis.groupList.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcheckBasicModeGroupHeaderWidth(){\n\t\tvar element = this.table.rowManager.tableElement,\n\t\tonlyGroupHeaders = true;\n\t\t\n\t\tthis.table.rowManager.getDisplayRows().forEach((row, index) =>{\n\t\t\tthis.table.rowManager.styleRow(row, index);\n\t\t\telement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t\t\n\t\t\tif(row.type !== \"group\"){\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n}\n\nGroupRows.moduleName = \"groupRows\";\n\nexport default GroupRows;","import Module from '../../core/Module.js';\nimport Row from '../../core/row/Row.js';\nimport Cell from '../../core/cell/Cell.js';\n\nimport defaultUndoers from './defaults/undoers.js';\nimport defaultRedoers from './defaults/redoers.js';\n\nclass History extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\n\t\tthis.registerTableOption(\"history\", false); //enable edit history\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.history){\n\t\t\tthis.subscribe(\"cell-value-updated\", this.cellUpdated.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.clearComponentHistory.bind(this));\n\t\t\tthis.subscribe(\"row-delete\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clear.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowAdded.bind(this));\n\t\t\tthis.subscribe(\"row-move\", this.rowMoved.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"undo\", this.undo.bind(this));\n\t\tthis.registerTableFunction(\"redo\", this.redo.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryUndoSize\", this.getHistoryUndoSize.bind(this));\n\t\tthis.registerTableFunction(\"getHistoryRedoSize\", this.getHistoryRedoSize.bind(this));\n\t\tthis.registerTableFunction(\"clearHistory\", this.clear.bind(this));\n\t}\n\n\trowMoved(from, to, after){\n\t\tthis.action(\"rowMove\", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after});\n\t}\n\n\trowAdded(row, data, pos, index){\n\t\tthis.action(\"rowAdd\", row, {data:data, pos:pos, index:index});\n\t}\n\n\trowDeleted(row){\n\t\tvar index, rows;\n\n\t\tif(this.table.options.groupBy){\n\n\t\t\trows = row.getComponent().getGroup()._getSelf().rows;\n\t\t\tindex = rows.indexOf(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = rows[index-1];\n\t\t\t}\n\t\t}else{\n\t\t\tindex = row.table.rowManager.getRowIndex(row);\n\n\t\t\tif(index){\n\t\t\t\tindex = row.table.rowManager.rows[index-1];\n\t\t\t}\n\t\t}\n\n\t\tthis.action(\"rowDelete\", row, {data:row.getData(), pos:!index, index:index});\n\t}\n\n\tcellUpdated(cell){\n\t\tthis.action(\"cellEdit\", cell, {oldValue:cell.oldValue, newValue:cell.value});\n\t}\n\n\tclear(){\n\t\tthis.history = [];\n\t\tthis.index = -1;\n\t}\n\n\taction(type, component, data){\n\t\tthis.history = this.history.slice(0, this.index + 1);\n\n\t\tthis.history.push({\n\t\t\ttype:type,\n\t\t\tcomponent:component,\n\t\t\tdata:data,\n\t\t});\n\n\t\tthis.index ++;\n\t}\n\n\tgetHistoryUndoSize(){\n\t\treturn this.index + 1;\n\t}\n\n\tgetHistoryRedoSize(){\n\t\treturn this.history.length - (this.index + 1);\n\t}\n\n\tclearComponentHistory(component){\n\t\tvar index = this.history.findIndex(function(item){\n\t\t\treturn item.component === component;\n\t\t});\n\n\t\tif(index > -1){\n\t\t\tthis.history.splice(index, 1);\n\t\t\tif(index <= this.index){\n\t\t\t\tthis.index--;\n\t\t\t}\n\n\t\t\tthis.clearComponentHistory(component);\n\t\t}\n\t}\n\n\tundo(){\n\t\tif(this.index > -1){\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.undoers[action.type].call(this, action);\n\n\t\t\tthis.index--;\n\n\t\t\tthis.dispatchExternal(\"historyUndo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(this.options(\"history\") ? \"History Undo Error - No more history to undo\" : \"History module not enabled\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tredo(){\n\t\tif(this.history.length-1 > this.index){\n\n\t\t\tthis.index++;\n\n\t\t\tlet action = this.history[this.index];\n\n\t\t\tHistory.redoers[action.type].call(this, action);\n\n\t\t\tthis.dispatchExternal(\"historyRedo\", action.type, action.component.getComponent(), action.data);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(this.options(\"history\") ? \"History Redo Error - No more history to redo\" : \"History module not enabled\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//rebind rows to new element after deletion\n\t_rebindRow(oldRow, newRow){\n\t\tthis.history.forEach(function(action){\n\t\t\tif(action.component instanceof Row){\n\t\t\t\tif(action.component === oldRow){\n\t\t\t\t\taction.component = newRow;\n\t\t\t\t}\n\t\t\t}else if(action.component instanceof Cell){\n\t\t\t\tif(action.component.row === oldRow){\n\t\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\t\tif(field){\n\t\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nHistory.moduleName = \"history\";\n\n//load defaults\nHistory.undoers = defaultUndoers;\nHistory.redoers = defaultRedoers;\n\nexport default History;","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(action){\n\t\taction.component.deleteActual();\n\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowDelete: function(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\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowMove: function(action){\n\t\tvar after = (action.data.posFrom - action.data.posTo) > 0;\n\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);\n\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","export default {\n\tcellEdit: function(action){\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t\taction.component.cellRendered();\n\t},\n\n\trowAdd: function(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\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowDelete:function(action){\n\t\taction.component.deleteActual();\n\n\t\tthis.table.rowManager.checkPlaceholder();\n\t},\n\n\trowMove: function(action){\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);\n\t\t\n\t\tthis.table.rowManager.regenerateRowPositions();\n\t\tthis.table.rowManager.reRenderInPosition();\n\t},\n};","import Module from '../../core/Module.js';\n\nclass HtmlTableImport extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.fieldIndex = [];\n\t\tthis.hasIndex = false;\n\t}\n\n\tinitialize(){\n\t\tthis.tableElementCheck();\n\t}\n\n\ttableElementCheck(){\n\t\tif(this.table.originalElement && this.table.originalElement.tagName === \"TABLE\"){\n\t\t\tif(this.table.originalElement.childNodes.length){\n\t\t\t\tthis.parseTable();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element.\");\n\t\t\t}\n\t\t}\n\t}\n\n\tparseTable(){\n\t\tvar element = this.table.originalElement,\n\t\toptions = this.table.options,\n\t\theaders = element.getElementsByTagName(\"th\"),\n\t\trows = element.getElementsByTagName(\"tbody\")[0],\n\t\tdata = [];\n\n\t\tthis.hasIndex = false;\n\n\t\tthis.dispatchExternal(\"htmlImporting\");\n\n\t\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t\t//check for Tabulator inline options\n\t\tthis._extractOptions(element, options);\n\n\t\tif(headers.length){\n\t\t\tthis._extractHeaders(headers, rows);\n\t\t}else{\n\t\t\tthis._generateBlankHeaders(headers, rows);\n\t\t}\n\n\t\t//iterate through table rows and build data set\n\t\tfor(var index = 0; index < rows.length; index++){\n\t\t\tvar row = rows[index],\n\t\t\tcells = row.getElementsByTagName(\"td\"),\n\t\t\titem = {};\n\n\t\t\t//create index if the don't exist in table\n\t\t\tif(!this.hasIndex){\n\t\t\t\titem[options.index] = index;\n\t\t\t}\n\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\tvar cell = cells[i];\n\t\t\t\tif(typeof this.fieldIndex[i] !== \"undefined\"){\n\t\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//add row data to item\n\t\t\tdata.push(item);\n\t\t}\n\n\t\toptions.data = data;\n\n\t\tthis.dispatchExternal(\"htmlImported\");\n\t}\n\n\t//extract tabulator attribute options\n\t_extractOptions(element, options, defaultOptions){\n\t\tvar attributes = element.attributes;\n\t\tvar optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);\n\t\tvar optionsList = {};\n\n\t\toptionsArr.forEach((item) => {\n\t\t\toptionsList[item.toLowerCase()] = item;\n\t\t});\n\n\t\tfor(var index in attributes){\n\t\t\tvar attrib = attributes[index];\n\t\t\tvar name;\n\n\t\t\tif(attrib && typeof attrib == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0){\n\t\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\t\tif(typeof optionsList[name] !== \"undefined\"){\n\t\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//get value of attribute\n\t_attribValue(value){\n\t\tif(value === \"true\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(value === \"false\"){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t//find column if it has already been defined\n\t_findCol(title){\n\t\tvar match = this.table.options.columns.find((column) => {\n\t\t\treturn column.title === title;\n\t\t});\n\n\t\treturn match || false;\n\t}\n\n\t//extract column from headers\n\t_extractHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\texists = false,\n\t\t\tcol = this._findCol(header.textContent),\n\t\t\twidth;\n\n\t\t\tif(col){\n\t\t\t\texists = true;\n\t\t\t}else{\n\t\t\t\tcol = {title:header.textContent.trim()};\n\t\t\t}\n\n\t\t\tif(!col.field) {\n\t\t\t\tcol.field = header.textContent.trim().toLowerCase().replaceAll(\" \", \"_\");\n\t\t\t}\n\n\t\t\twidth = header.getAttribute(\"width\");\n\n\t\t\tif(width && !col.width)\t{\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\t//check for Tabulator inline options\n\t\t\tthis._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tif(col.field == this.table.options.index){\n\t\t\t\tthis.hasIndex = true;\n\t\t\t}\n\n\t\t\tif(!exists){\n\t\t\t\tthis.table.options.columns.push(col);\n\t\t\t}\n\n\t\t}\n\t}\n\n\t//generate blank headers\n\t_generateBlankHeaders(headers, rows){\n\t\tfor(var index = 0; index < headers.length; index++){\n\t\t\tvar header = headers[index],\n\t\t\tcol = {title:\"\", field:\"col\" + index};\n\n\t\t\tthis.fieldIndex[index] = col.field;\n\n\t\t\tvar width = header.getAttribute(\"width\");\n\n\t\t\tif(width){\n\t\t\t\tcol.width = width;\n\t\t\t}\n\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n}\n\nHtmlTableImport.moduleName = \"htmlTableImport\";\n\nexport default HtmlTableImport;\n","import csv from './importers/csv.js';\nimport json from './importers/json.js';\nimport array from './importers/array.js';\n\nexport default {\n\tcsv:csv,\n\tjson:json,\n\tarray:array,\n};","function csvImporter(input){\n\tvar data = [],\n\trow = 0, \n\tcol = 0,\n\tinQuote = false;\n \n\t//Iterate over each character\n\tfor (let index = 0; index < input.length; index++) {\n\t\tlet char = input[index], \n\t\tnextChar = input[index+1]; \n \n\t\t//Initialize empty row\n\t\tif(!data[row]){\n\t\t\tdata[row] = [];\n\t\t}\n\n\t\t//Initialize empty column\n\t\tif(!data[row][col]){\n\t\t\tdata[row][col] = \"\";\n\t\t}\n \n\t\t//Handle quotation mark inside string\n\t\tif (char == '\"' && inQuote && nextChar == '\"') { \n\t\t\tdata[row][col] += char; \n\t\t\tindex++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//Begin / End Quote\n\t\tif (char == '\"') { \n\t\t\tinQuote = !inQuote;\n\t\t\tcontinue;\n\t\t}\n \n\t\t//Next column (if not in quote)\n\t\tif (char == ',' && !inQuote) { \n\t\t\tcol++;\n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CRLF) \n\t\tif (char == '\\r' && nextChar == '\\n' && !inQuote) { \n\t\t\tcol = 0; \n\t\t\trow++; \n\t\t\tindex++; \n\t\t\tcontinue; \n\t\t}\n \n\t\t//New row if new line and not in quote (CR or LF) \n\t\tif ((char == '\\r' || char == '\\n') && !inQuote) { \n\t\t\tcol = 0;\n\t\t\trow++;\n\t\t\tcontinue; \n\t\t}\n\n\t\t//Normal Character, append to column\n\t\tdata[row][col] += char;\n\t}\n\n\treturn data;\n}\n\nexport default csvImporter;","export default function(input){\n\ttry {\n\t\treturn JSON.parse(input);\n\t} catch(e) {\n\t\tconsole.warn(\"JSON Import Error - File contents is invalid JSON\", e);\n\t\treturn Promise.reject();\n\t}\n}","function arrayImporter(input){\n\treturn input;\n}\n\nexport default arrayImporter;","import Module from '../../core/Module.js';\n\nimport defaultImporters from './defaults/importers.js';\n\nclass Import extends Module{\n \n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.registerTableOption(\"importFormat\");\n\t\tthis.registerTableOption(\"importReader\", \"text\");\n\t}\n \n\tinitialize(){\n\t\tthis.registerTableFunction(\"import\", this.importFromFile.bind(this));\n\n\t\tif(this.table.options.importFormat){\n\t\t\tthis.subscribe(\"data-loading\", this.loadDataCheck.bind(this), 10);\n\t\t\tthis.subscribe(\"data-load\", this.loadData.bind(this), 10);\n\t\t}\n\t}\n\n\tloadDataCheck(data){\n\t\treturn this.table.options.importFormat && (typeof data === \"string\" || (Array.isArray(data) && data.length && Array.isArray(data)));\n\t}\n\n\tloadData(data, params, config, silent, previousData){\n\t\treturn this.importData(this.lookupImporter(), data)\n\t\t\t.then(this.structureData.bind(this))\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import data\");\n\t\t\t\treturn Promise.reject(err);\n\t\t\t});\n\t}\n\n\tlookupImporter(importFormat){\n\t\tvar importer;\n \n\t\tif(!importFormat){\n\t\t\timportFormat = this.table.options.importFormat;\n\t\t}\n \n\t\tif(typeof importFormat === \"string\"){\n\t\t\timporter = Import.importers[importFormat];\n\t\t}else{\n\t\t\timporter = importFormat;\n\t\t}\n\n\t\tif(!importer){\n\t\t\tconsole.error(\"Import Error - Importer not found:\", importFormat);\n\t\t}\n \n\t\treturn importer;\n\t}\n \n\timportFromFile(importFormat, extension){\n\t\tvar importer = this.lookupImporter(importFormat);\n \n\t\tif(importer){\n\t\t\treturn this.pickFile(extension)\n\t\t\t\t.then(this.importData.bind(this, importer))\n\t\t\t\t.then(this.structureData.bind(this))\n\t\t\t\t.then(this.setData.bind(this))\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Import Error:\", err || \"Unable to import file\");\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t});\n\t\t}\n\t}\n \n\tpickFile(extensions){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.type = \"file\";\n\t\t\tinput.accept = extensions;\n \n\t\t\tinput.addEventListener(\"change\", (e) => {\n\t\t\t\tvar file = input.files[0],\n\t\t\t\treader = new FileReader();\n \n\t\t\t\tswitch(this.table.options.importReader){\n\t\t\t\t\tcase \"buffer\":\n\t\t\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"binary\":\n\t\t\t\t\t\treader.readAsBinaryString(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"url\":\n\t\t\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treader.readAsText(file);\n\t\t\t\t}\n \n\t\t\t\treader.onload = (e) => {\n\t\t\t\t\tresolve(reader.result);\n\t\t\t\t};\n \n\t\t\t\treader.onerror = (e) => {\n\t\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\t\treject();\n\t\t\t\t};\n\t\t\t});\n \n\t\t\tinput.click();\n\t\t});\n\t}\n \n\timportData(importer, fileContents){\n\t\tvar data = importer.call(this.table, fileContents);\n \n\t\tif(data instanceof Promise){\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn data ? Promise.resolve(data) : Promise.reject();\n\t\t}\n\t}\n\n\tstructureData(parsedData){\n\t\tvar data = [];\n \n\t\tif(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){\n\t\t\tif(this.table.options.autoColumns){\n\t\t\t\tdata = this.structureArrayToObject(parsedData);\n\t\t\t}else{\n\t\t\t\tdata = this.structureArrayToColumns(parsedData);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}else{\n\t\t\treturn parsedData;\n\t\t}\n\t}\n\n\tstructureArrayToObject(parsedData){\n\t\tvar columns = parsedData.shift();\n\n\t\tvar data = parsedData.map((values) => {\n\t\t\tvar row = {};\n\n\t\t\tcolumns.forEach((key, i) => {\n\t\t\t\trow[key] = values[i];\n\t\t\t});\n\n\t\t\treturn row;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tstructureArrayToColumns(parsedData){\n\t\tvar data = [],\n\t\tcolumns = this.table.getColumns();\n\n\t\t//remove first row if it is the column names\n\t\tif(columns[0] && parsedData[0][0]){\n\t\t\tif(columns[0].getDefinition().title === parsedData[0][0]){\n\t\t\t\tparsedData.shift();\n\t\t\t}\n\t\t}\n \n\t\t//convert row arrays to objects\n\t\tparsedData.forEach((rowData) => {\n\t\t\tvar row = {};\n\n\t\t\trowData.forEach((value, index) => {\n\t\t\t\tvar column = columns[index];\n\n\t\t\t\tif(column){\n\t\t\t\t\trow[column.getField()] = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdata.push(row);\n\t\t});\n\n\t\treturn data;\n\t}\n \n\tsetData(data){\n\t\treturn this.table.setData(data);\n\t}\n}\n\nImport.moduleName = \"import\";\n\n//load defaults\nImport.importers = defaultImporters;\n\nexport default Import;","import Module from '../../core/Module.js';\n\nimport Cell from '../../core/cell/Cell.js';\nimport Column from '../../core/column/Column.js';\n\nclass Interaction extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.eventMap = {\n\t\t\t//row events\n\t\t\trowClick:\"row-click\",\n\t\t\trowDblClick:\"row-dblclick\",\n\t\t\trowContext:\"row-contextmenu\",\n\t\t\trowMouseEnter:\"row-mouseenter\",\n\t\t\trowMouseLeave:\"row-mouseleave\",\n\t\t\trowMouseOver:\"row-mouseover\",\n\t\t\trowMouseOut:\"row-mouseout\",\n\t\t\trowMouseMove:\"row-mousemove\",\n\t\t\trowMouseDown:\"row-mousedown\",\n\t\t\trowMouseUp:\"row-mouseup\",\n\t\t\trowTap:\"row\",\n\t\t\trowDblTap:\"row\",\n\t\t\trowTapHold:\"row\",\n\n\t\t\t//cell events\n\t\t\tcellClick:\"cell-click\",\n\t\t\tcellDblClick:\"cell-dblclick\",\n\t\t\tcellContext:\"cell-contextmenu\",\n\t\t\tcellMouseEnter:\"cell-mouseenter\",\n\t\t\tcellMouseLeave:\"cell-mouseleave\",\n\t\t\tcellMouseOver:\"cell-mouseover\",\n\t\t\tcellMouseOut:\"cell-mouseout\",\n\t\t\tcellMouseMove:\"cell-mousemove\",\n\t\t\tcellMouseDown:\"cell-mousedown\",\n\t\t\tcellMouseUp:\"cell-mouseup\",\n\t\t\tcellTap:\"cell\",\n\t\t\tcellDblTap:\"cell\",\n\t\t\tcellTapHold:\"cell\",\n\n\t\t\t//column header events\n\t\t\theaderClick:\"column-click\",\n\t\t\theaderDblClick:\"column-dblclick\",\n\t\t\theaderContext:\"column-contextmenu\",\n\t\t\theaderMouseEnter:\"column-mouseenter\",\n\t\t\theaderMouseLeave:\"column-mouseleave\",\n\t\t\theaderMouseOver:\"column-mouseover\",\n\t\t\theaderMouseOut:\"column-mouseout\",\n\t\t\theaderMouseMove:\"column-mousemove\",\n\t\t\theaderMouseDown:\"column-mousedown\",\n\t\t\theaderMouseUp:\"column-mouseup\",\n\t\t\theaderTap:\"column\",\n\t\t\theaderDblTap:\"column\",\n\t\t\theaderTapHold:\"column\",\n\n\t\t\t//group header\n\t\t\tgroupClick:\"group-click\",\n\t\t\tgroupDblClick:\"group-dblclick\",\n\t\t\tgroupContext:\"group-contextmenu\",\n\t\t\tgroupMouseEnter:\"group-mouseenter\",\n\t\t\tgroupMouseLeave:\"group-mouseleave\",\n\t\t\tgroupMouseOver:\"group-mouseover\",\n\t\t\tgroupMouseOut:\"group-mouseout\",\n\t\t\tgroupMouseMove:\"group-mousemove\",\n\t\t\tgroupMouseDown:\"group-mousedown\",\n\t\t\tgroupMouseUp:\"group-mouseup\",\n\t\t\tgroupTap:\"group\",\n\t\t\tgroupDblTap:\"group\",\n\t\t\tgroupTapHold:\"group\",\n\t\t};\n\n\t\tthis.subscribers = {};\n\n\t\tthis.touchSubscribers = {};\n\n\t\tthis.columnSubscribers = {};\n\n\t\tthis.touchWatchers = {\n\t\t\trow:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcell:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tcolumn:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t},\n\t\t\tgroup:{\n\t\t\t\ttap:null,\n\t\t\t\ttapDbl:null,\n\t\t\t\ttapHold:null,\n\t\t\t}\n\t\t};\n\n\t\tthis.registerColumnOption(\"headerClick\");\n\t\tthis.registerColumnOption(\"headerDblClick\");\n\t\tthis.registerColumnOption(\"headerContext\");\n\t\tthis.registerColumnOption(\"headerMouseEnter\");\n\t\tthis.registerColumnOption(\"headerMouseLeave\");\n\t\tthis.registerColumnOption(\"headerMouseOver\");\n\t\tthis.registerColumnOption(\"headerMouseOut\");\n\t\tthis.registerColumnOption(\"headerMouseMove\");\n\t\tthis.registerColumnOption(\"headerMouseDown\");\n\t\tthis.registerColumnOption(\"headerMouseUp\");\n\t\tthis.registerColumnOption(\"headerTap\");\n\t\tthis.registerColumnOption(\"headerDblTap\");\n\t\tthis.registerColumnOption(\"headerTapHold\");\n\n\t\tthis.registerColumnOption(\"cellClick\");\n\t\tthis.registerColumnOption(\"cellDblClick\");\n\t\tthis.registerColumnOption(\"cellContext\");\n\t\tthis.registerColumnOption(\"cellMouseEnter\");\n\t\tthis.registerColumnOption(\"cellMouseLeave\");\n\t\tthis.registerColumnOption(\"cellMouseOver\");\n\t\tthis.registerColumnOption(\"cellMouseOut\");\n\t\tthis.registerColumnOption(\"cellMouseMove\");\n\t\tthis.registerColumnOption(\"cellMouseDown\");\n\t\tthis.registerColumnOption(\"cellMouseUp\");\n\t\tthis.registerColumnOption(\"cellTap\");\n\t\tthis.registerColumnOption(\"cellDblTap\");\n\t\tthis.registerColumnOption(\"cellTapHold\");\n\n\t}\n\n\tinitialize(){\n\t\tthis.initializeExternalEvents();\n\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"cell-dblclick\", this.cellContentsSelectionFixer.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.clearTouchWatchers.bind(this));\n\t\tthis.subscribe(\"scroll-vertical\", this.clearTouchWatchers.bind(this));\n\t}\n\n\tclearTouchWatchers(){\n\t\tvar types = Object.values(this.touchWatchers);\n\n\t\ttypes.forEach((type) => {\n\t\t\tfor(let key in type){\n\t\t\t\ttype[key] = null;\n\t\t\t}\n\t\t});\n\t}\n\t\t\n\tcellContentsSelectionFixer(e, cell){\n\t\tvar range;\n\n\t\tif(this.table.modExists(\"edit\")){\n\t\t\tif (this.table.modules.edit.currentCell === cell){\n\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t}\n\t\t}\n\n\t\te.preventDefault();\n\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\n\tinitializeExternalEvents(){\n\t\tfor(let key in this.eventMap){\n\t\t\tthis.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key));\n\t\t}\n\t}\n\n\tsubscriptionChanged(key, added){\n\t\tif(added){\n\t\t\tif(!this.subscribers[key]){\n\t\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\t\tthis.subscribers[key] = this.handle.bind(this, key);\n\t\t\t\t\tthis.subscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t}else{\n\t\t\t\t\tthis.subscribeTouchEvents(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.eventMap[key].includes(\"-\")){\n\t\t\t\tif(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){\n\t\t\t\t\tthis.unsubscribe(this.eventMap[key], this.subscribers[key]);\n\t\t\t\t\tdelete this.subscribers[key];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.unsubscribeTouchEvents(key);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tsubscribeTouchEvents(key){\n\t\tvar type = this.eventMap[key];\n\n\t\tif(!this.touchSubscribers[type + \"-touchstart\"]){\n\t\t\tthis.touchSubscribers[type + \"-touchstart\"] = this.handleTouch.bind(this, type, \"start\");\n\t\t\tthis.touchSubscribers[type + \"-touchend\"] = this.handleTouch.bind(this, type, \"end\");\n\n\t\t\tthis.subscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\tthis.subscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\t\t}\n\n\t\tthis.subscribers[key] = true;\n\t}\n\n\tunsubscribeTouchEvents(key){\n\t\tvar noTouch = true,\n\t\ttype = this.eventMap[key];\n\n\t\tif(this.subscribers[key] && !this.subscribedExternal(key)){\n\t\t\tdelete this.subscribers[key];\n\n\t\t\tfor(let i in this.eventMap){\n\t\t\t\tif(this.eventMap[i] === type){\n\t\t\t\t\tif(this.subscribers[i]){\n\t\t\t\t\t\tnoTouch = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(noTouch){\n\t\t\t\tthis.unsubscribe(type + \"-touchstart\", this.touchSubscribers[type + \"-touchstart\"]);\n\t\t\t\tthis.unsubscribe(type + \"-touchend\", this.touchSubscribers[type + \"-touchend\"]);\n\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchstart\"];\n\t\t\t\tdelete this.touchSubscribers[type + \"-touchend\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\n\t\tfor(let key in this.eventMap){\n\t\t\tif(def[key]){\n\t\t\t\tthis.subscriptionChanged(key, true);\n\n\t\t\t\tif(!this.columnSubscribers[key]){\n\t\t\t\t\tthis.columnSubscribers[key] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.columnSubscribers[key].push(column);\n\t\t\t}\n\t\t}\n\t}\n\n\thandle(action, e, component){\n\t\tthis.dispatchEvent(action, e, component);\n\t}\n\n\thandleTouch(type, action, e, component){\n\t\tvar watchers = this.touchWatchers[type];\n\n\t\tif(type === \"column\"){\n\t\t\ttype = \"header\";\n\t\t}\n\n\t\tswitch(action){\n\t\t\tcase \"start\":\n\t\t\t\twatchers.tap = true;\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\n\t\t\t\twatchers.tapHold = setTimeout(() => {\n\t\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\t\twatchers.tapHold = null;\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"TapHold\", e, component);\n\t\t\t\t}, 1000);\n\t\t\t\tbreak;\n\n\t\t\tcase \"end\":\n\t\t\t\tif(watchers.tap){\n\n\t\t\t\t\twatchers.tap = null;\n\t\t\t\t\tthis.dispatchEvent(type + \"Tap\", e, component);\n\t\t\t\t}\n\n\t\t\t\tif(watchers.tapDbl){\n\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\twatchers.tapDbl = null;\n\n\t\t\t\t\tthis.dispatchEvent(type + \"DblTap\", e, component);\n\t\t\t\t}else{\n\t\t\t\t\twatchers.tapDbl = setTimeout(() => {\n\t\t\t\t\t\tclearTimeout(watchers.tapDbl);\n\t\t\t\t\t\twatchers.tapDbl = null;\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(watchers.tapHold);\n\t\t\t\twatchers.tapHold = null;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdispatchEvent(action, e, component){\n\t\tvar componentObj = component.getComponent(),\n\t\tcallback;\n\n\t\tif(this.columnSubscribers[action]){\n\n\t\t\tif(component instanceof Cell){\n\t\t\t\tcallback = component.column.definition[action];\n\t\t\t}else if(component instanceof Column){\n\t\t\t\tcallback = component.definition[action];\n\t\t\t}\n\n\t\t\tif(callback){\n\t\t\t\tcallback(e, componentObj);\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchExternal(action, e, componentObj);\n\t}\n}\n\nInteraction.moduleName = \"interaction\";\n\nexport default Interaction;\n","import Module from '../../core/Module.js';\n\nimport defaultBindings from './defaults/bindings.js';\nimport defaultActions from './defaults/actions.js';\n\nclass Keybindings extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.watchKeys = null;\n\t\tthis.pressedKeys = null;\n\t\tthis.keyupBinding = false;\n\t\tthis.keydownBinding = false;\n\n\t\tthis.registerTableOption(\"keybindings\", {}); //array for keybindings\n\t\tthis.registerTableOption(\"tabEndNewRow\", false); //create new row when tab to end of table\n\t}\n\n\tinitialize(){\n\t\tvar bindings = this.table.options.keybindings,\n\t\tmergedBindings = {};\n\n\t\tthis.watchKeys = {};\n\t\tthis.pressedKeys = [];\n\n\t\tif(bindings !== false){\n\t\t\tObject.assign(mergedBindings, Keybindings.bindings);\n\t\t\tObject.assign(mergedBindings, bindings);\n\n\t\t\tthis.mapBindings(mergedBindings);\n\t\t\tthis.bindEvents();\n\t\t}\n\n\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t}\n\n\tmapBindings(bindings){\n\t\tfor(let key in bindings){\n\t\t\tif(Keybindings.actions[key]){\n\t\t\t\tif(bindings[key]){\n\t\t\t\t\tif(typeof bindings[key] !== \"object\"){\n\t\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t\t}\n\n\t\t\t\t\tbindings[key].forEach((binding) => {\n\t\t\t\t\t\tvar bindingList = Array.isArray(binding) ? binding : [binding];\n\t\t\t\t\t\t\n\t\t\t\t\t\tbindingList.forEach((item) => {\n\t\t\t\t\t\t\tthis.mapBinding(key, item);\n\t\t\t\t\t\t});\t\t\t\t\t\t\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\tmapBinding(action, symbolsList){\n\t\tvar binding = {\n\t\t\taction: Keybindings.actions[action],\n\t\t\tkeys: [],\n\t\t\tctrl: false,\n\t\t\tshift: false,\n\t\t\tmeta: false,\n\t\t};\n\n\t\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\t\tsymbols.forEach((symbol) => {\n\t\t\tswitch(symbol){\n\t\t\t\tcase \"ctrl\":\n\t\t\t\t\tbinding.ctrl = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"shift\":\n\t\t\t\t\tbinding.shift = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"meta\":\n\t\t\t\t\tbinding.meta = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tsymbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol);\n\t\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\t\tif(!this.watchKeys[symbol]){\n\t\t\t\t\t\tthis.watchKeys[symbol] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.watchKeys[symbol].push(binding);\n\t\t\t}\n\t\t});\n\t}\n\n\tbindEvents(){\n\t\tvar self = this;\n\n\t\tthis.keyupBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tself.pressedKeys.push(code);\n\n\t\t\t\tbindings.forEach(function(binding){\n\t\t\t\t\tself.checkBinding(e, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tthis.keydownBinding = function(e){\n\t\t\tvar code = e.keyCode;\n\t\t\tvar bindings = self.watchKeys[code];\n\n\t\t\tif(bindings){\n\n\t\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\t\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n\t}\n\n\tclearBindings(){\n\t\tif(this.keyupBinding){\n\t\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t\t}\n\n\t\tif(this.keydownBinding){\n\t\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t\t}\n\t}\n\n\tcheckBinding(e, binding){\n\t\tvar match = true;\n\n\t\tif(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){\n\t\t\tbinding.keys.forEach((key) => {\n\t\t\t\tvar index = this.pressedKeys.indexOf(key);\n\n\t\t\t\tif(index == -1){\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(match){\n\t\t\t\tbinding.action.call(this, e);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\nKeybindings.moduleName = \"keybindings\";\n\n//load defaults\nKeybindings.bindings = defaultBindings;\nKeybindings.actions = defaultActions;\n\nexport default Keybindings;","export default {\n\tnavPrev:\"shift + 9\",\n\tnavNext:9,\n\tnavUp:38,\n\tnavDown:40,\n\tnavLeft:37,\n\tnavRight:39,\n\tscrollPageUp:33,\n\tscrollPageDown:34,\n\tscrollToStart:36,\n\tscrollToEnd:35,\n\tundo:[\"ctrl + 90\", \"meta + 90\"],\n\tredo:[\"ctrl + 89\", \"meta + 89\"],\n\tcopyToClipboard:[\"ctrl + 67\", \"meta + 67\"],\n\n\trangeJumpUp:[\"ctrl + 38\", \"meta + 38\"],\n\trangeJumpDown:[\"ctrl + 40\", \"meta + 40\"],\n\trangeJumpLeft:[\"ctrl + 37\", \"meta + 37\"],\n\trangeJumpRight:[\"ctrl + 39\", \"meta + 39\"],\n\trangeExpandUp:\"shift + 38\",\n\trangeExpandDown:\"shift + 40\",\n\trangeExpandLeft:\"shift + 37\",\n\trangeExpandRight:\"shift + 39\",\n\trangeExpandJumpUp:[\"ctrl + shift + 38\", \"meta + shift + 38\"],\n\trangeExpandJumpDown:[\"ctrl + shift + 40\", \"meta + shift + 40\"],\n\trangeExpandJumpLeft:[\"ctrl + shift + 37\", \"meta + shift + 37\"],\n\trangeExpandJumpRight:[\"ctrl + shift + 39\", \"meta + shift + 39\"],\n};\n","export default {\n\tkeyBlock:function(e){\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp:function(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop - rowManager.element.clientHeight;\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(e){\n\t\tvar rowManager = this.table.rowManager,\n\t\tnewPos = rowManager.scrollTop + rowManager.element.clientHeight,\n\t\tscrollMax = 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\n\t},\n\tscrollToStart:function(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(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(e){\n\t\tthis.dispatch(\"keybinding-nav-prev\", e);\n\t},\n\n\tnavNext:function(e){\n\t\tthis.dispatch(\"keybinding-nav-next\", e);\n\t},\n\n\tnavLeft:function(e){\n\t\tthis.dispatch(\"keybinding-nav-left\", e);\n\t},\n\n\tnavRight:function(e){\n\t\tthis.dispatch(\"keybinding-nav-right\", e);\n\t},\n\n\tnavUp:function(e){\n\t\tthis.dispatch(\"keybinding-nav-up\", e);\n\t},\n\n\tnavDown:function(e){\n\t\tthis.dispatch(\"keybinding-nav-down\", e);\n\t},\n\n\trangeJumpLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", true, false);\n\t},\n\trangeJumpRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", true, false);\n\t},\n\trangeJumpUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", true, false);\n\t},\n\trangeJumpDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", true, false);\n\t},\n\trangeExpandLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", false, true);\n\t},\n\trangeExpandRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", false, true);\n\t},\n\trangeExpandUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", false, true);\n\t},\n\trangeExpandDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", false, true);\n\t},\n\trangeExpandJumpLeft: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"left\", true, true);\n\t},\n\trangeExpandJumpRight: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"right\", true, true);\n\t},\n\trangeExpandJumpUp: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"up\", true, true);\n\t},\n\trangeExpandJumpDown: function(e){\n\t\tthis.dispatch(\"keybinding-nav-range\", e, \"down\", true, true);\n\t},\n\n\tundo:function(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(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(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","import Module from '../../core/Module.js';\n\nclass Menu extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.menuContainer = null;\n\t\tthis.nestedMenuBlock = false;\n\t\t\n\t\tthis.currentComponent = null;\n\t\tthis.rootPopup = null;\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"menuContainer\", undefined); //deprecated\n\t\t\n\t\tthis.registerTableOption(\"rowContextMenu\", false);\n\t\tthis.registerTableOption(\"rowClickMenu\", false);\n\t\tthis.registerTableOption(\"rowDblClickMenu\", false);\n\t\tthis.registerTableOption(\"groupContextMenu\", false);\n\t\tthis.registerTableOption(\"groupClickMenu\", false);\n\t\tthis.registerTableOption(\"groupDblClickMenu\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextMenu\");\n\t\tthis.registerColumnOption(\"headerClickMenu\");\n\t\tthis.registerColumnOption(\"headerDblClickMenu\");\n\t\tthis.registerColumnOption(\"headerMenu\");\n\t\tthis.registerColumnOption(\"headerMenuIcon\");\n\t\tthis.registerColumnOption(\"contextMenu\");\n\t\tthis.registerColumnOption(\"clickMenu\");\n\t\tthis.registerColumnOption(\"dblClickMenu\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tif(!this.deprecationCheck(\"menuContainer\", \"popupContainer\")){\n\t\t\tthis.table.options.popupContainer = this.table.options.menuContainer;\n\t\t}\n\t}\t\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextMenu){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickMenu){\n\t\t\tthis.subscribe(\"row-click\", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowDblClickMenu){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextMenu){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickMenu){\n\t\t\tthis.subscribe(\"group-click\", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupDblClickMenu){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu));\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar\tdef = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){\n\t\t\tthis.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextMenu);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadMenuTableColumnEvent.bind(this, \"headerContextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){\n\t\t\tthis.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerClickMenu\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){\n\t\t\tthis.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, \"headerDblClickMenu\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickMenu);\n\t\t}\n\t\t\n\t\tif(def.headerMenu){\n\t\t\tthis.initializeColumnHeaderMenu(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextMenu && !this.columnSubscribers.contextMenu){\n\t\t\tthis.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, \"contextMenu\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextMenu);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadMenuTableCellEvent.bind(this, \"contextMenu\"));\n\t\t}\n\t\t\n\t\tif(def.clickMenu && !this.columnSubscribers.clickMenu){\n\t\t\tthis.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, \"clickMenu\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickMenu);\n\t\t}\n\t\t\n\t\tif(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){\n\t\t\tthis.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, \"dblClickMenu\");\n\t\t\tthis.subscribe(\"cell-dblclick\", this.columnSubscribers.dblClickMenu);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderMenu(column){\n\t\tvar icon = column.definition.headerMenuIcon,\n\t\theaderMenuEl;\n\t\t\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-popup-button\");\n\t\t\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\t\t\t\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderMenuEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderMenuEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderMenuEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderMenuEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadMenuEvent(column.definition.headerMenu, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadMenuTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadMenuEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadMenuTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadMenuEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadMenuEvent(menu, e, component){\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tmenu = typeof menu == \"function\" ? menu.call(this.table, e, component.getComponent()) : menu;\n\t\t\n\t\tthis.loadMenu(e, component, menu);\n\t}\n\t\n\tloadMenu(e, component, menu, parentEl, parentPopup){\n\t\tvar touch = !(e instanceof MouseEvent),\t\t\n\t\tmenuEl = document.createElement(\"div\"),\n\t\tpopup;\n\t\t\n\t\tmenuEl.classList.add(\"tabulator-menu\");\n\t\t\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\t//abort if no menu set\n\t\tif(!menu || !menu.length){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif(!parentEl){\n\t\t\tif(this.nestedMenuBlock){\n\t\t\t\t//abort if child menu already open\n\t\t\t\tif(this.rootPopup){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.nestedMenuBlock = setTimeout(() => {\n\t\t\t\t\tthis.nestedMenuBlock = false;\n\t\t\t\t}, 100);\n\t\t\t}\n\t\t\t\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\t\n\t\t\t}\n\t\t\t\n\t\t\tthis.rootPopup = popup = this.popup(menuEl);\n\t\t\t\n\t\t}else{\n\t\t\tpopup = parentPopup.child(menuEl);\n\t\t}\n\t\t\n\t\tmenu.forEach((item) => {\n\t\t\tvar itemEl = document.createElement(\"div\"),\n\t\t\tlabel = item.label,\n\t\t\tdisabled = item.disabled;\n\t\t\t\n\t\t\tif(item.separator){\n\t\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t\t}else{\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\t\t\t\t\n\t\t\t\tif(typeof label == \"function\"){\n\t\t\t\t\tlabel = label.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(label instanceof Node){\n\t\t\t\t\titemEl.appendChild(label);\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = label;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(typeof disabled == \"function\"){\n\t\t\t\t\tdisabled = disabled.call(this.table, component.getComponent());\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(disabled){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tthis.loadMenu(e, component, item.menu, itemEl, popup);\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(item.action){\n\t\t\t\t\t\t\titemEl.addEventListener(\"click\", (e) => {\n\t\t\t\t\t\t\t\titem.action(e, component.getComponent());\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\t\n\t\t\t\tif(item.menu && item.menu.length){\n\t\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tmenuEl.appendChild(itemEl);\n\t\t});\n\t\t\n\t\tmenuEl.addEventListener(\"click\", (e) => {\n\t\t\tif(this.rootPopup){\n\t\t\t\tthis.rootPopup.hide();\n\t\t\t}\n\t\t});\n\t\t\n\t\tpopup.show(parentEl || e);\n\t\t\n\t\tif(popup === this.rootPopup){\n\t\t\tthis.rootPopup.hideOnBlur(() => {\n\t\t\t\tthis.rootPopup = null;\n\t\t\t\t\n\t\t\t\tif(this.currentComponent){\n\t\t\t\t\tthis.dispatch(\"menu-closed\", menu, popup);\n\t\t\t\t\tthis.dispatchExternal(\"menuClosed\", this.currentComponent.getComponent());\n\t\t\t\t\tthis.currentComponent = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.currentComponent = component;\n\t\t\t\n\t\t\tthis.dispatch(\"menu-opened\", menu, popup);\n\t\t\tthis.dispatchExternal(\"menuOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nMenu.moduleName = \"menu\";\n\nexport default Menu;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating column header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving column\n\t\tthis.toCol = false; //destination column\n\t\tthis.toColAfter = false; //position of moving column relative to the destination column\n\t\tthis.startX = 0; //starting position within header element\n\t\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\t\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\t\tthis.autoScrollTimeout = false; //auto scroll timeout\n\t\tthis.touchMove = false;\n\t\t\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"movableColumns\", false); //enable movable columns\n\t}\n\t\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-col\");\n\t\tel.classList.add(\"tabulator-col-placeholder\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.movableColumns){\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"alert-show\", this.abortMove.bind(this));\n\t\t}\n\t}\n\n\tabortMove(){\n\t\tclearTimeout(this.checkTimeout);\n\t}\n\t\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\tcolEl;\n\t\t\n\t\tif(!column.modules.frozen && !column.isGroup){\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tconfig.mousemove = function(e){\n\t\t\t\tif(column.parent === self.moving.parent){\n\t\t\t\t\tif((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){\n\t\t\t\t\t\tif(self.toCol !== column || !self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(self.toCol !== column || self.toColAfter){\n\t\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(self);\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tself.touchMove = false;\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcolEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tself.bindTouchEvents(column);\n\t\t}\n\t\t\n\t\tcolumn.modules.moveColumn = config;\n\t}\n\t\n\tbindTouchEvents(column){\n\t\tvar colEl = column.getElement(),\n\t\tstartXMove = false, //shifting center position of the cell\n\t\tnextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast;\n\t\t\n\t\tcolEl.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextCol = column.nextColumn();\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth()/2 : 0;\n\t\t\t\tprevCol = column.prevColumn();\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth()/2 : 0;\n\t\t\t\tnextColWidthLast = 0;\n\t\t\t\tprevColWidthLast = 0;\n\t\t\t\tstartXMove = false;\n\t\t\t\t\n\t\t\t\tthis.startMove(e, column);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchmove\", (e) => {\n\t\t\tvar diff, moveToCol;\n\t\t\t\n\t\t\tif(this.moving){\n\t\t\t\tthis.moveHover(e);\n\t\t\t\t\n\t\t\t\tif(!startXMove){\n\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tdiff = e.touches[0].pageX - startXMove;\n\t\t\t\t\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextCol && diff - nextColWidthLast > nextColWidth){\n\t\t\t\t\t\tmoveToCol = nextCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, true);\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(prevCol && -diff - prevColWidthLast > prevColWidth){\n\t\t\t\t\t\tmoveToCol = prevCol;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(moveToCol !== column){\n\t\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\t\tthis.moveColumn(moveToCol, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(moveToCol){\n\t\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {passive: true});\n\t\t\n\t\tcolEl.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tstartMove(e, column){\n\t\tvar element = column.getElement(),\n\t\theaderElement = this.table.columnManager.getContentsElement(),\n\t\theadersElement = this.table.columnManager.getHeadersElement();\n\t\t\n\t\tthis.moving = column;\n\t\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;\n\t\t\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\t\t\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t\t\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\t\t\n\t\theaderElement.appendChild(this.hoverElement);\n\t\t\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + \"px\";\n\t\t\n\t\tif(!this.touchMove){\n\t\t\tthis._bindMouseMove();\n\t\t\t\n\t\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t\t\n\t\tthis.moveHover(e);\n\t}\n\t\n\t_bindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t_unbindMouseMove(){\n\t\tthis.table.columnManager.columnsByIndex.forEach(function(column){\n\t\t\tif(column.modules.moveColumn.mousemove){\n\t\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\t\n\tmoveColumn(column, after){\n\t\tvar movingCells = this.moving.getCells();\n\t\t\n\t\tthis.toCol = column;\n\t\tthis.toColAfter = after;\n\t\t\n\t\tif(after){\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tcolumn.getCells().forEach(function(cell, i){\n\t\t\t\tvar cellEl = cell.getElement(true);\n\t\t\t\t\n\t\t\t\tif(cellEl.parentNode && movingCells[i]){\n\t\t\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\tendMove(e){\n\t\tif(e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\t\t\t\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\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\t\t\t\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(this.toCol){\n\t\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t\t}\n\t\t\t\n\t\t\tthis.moving = false;\n\t\t\tthis.toCol = false;\n\t\t\tthis.toColAfter = false;\n\t\t\t\n\t\t\tif(!this.touchMove){\n\t\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tmoveHover(e){\n\t\tvar columnHolder = this.table.columnManager.getContentsElement(),\n\t\tscrollLeft = columnHolder.scrollLeft,\n\t\txPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft,\n\t\tscrollPos;\n\t\t\n\t\tthis.hoverElement.style.left = (xPos - this.startX) + \"px\";\n\t\t\n\t\tif(xPos - scrollLeft < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.max(0,scrollLeft-5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){\n\t\t\tif(!this.autoScrollTimeout){\n\t\t\t\tthis.autoScrollTimeout = setTimeout(() => {\n\t\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5);\n\t\t\t\t\tthis.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\t\tthis.autoScrollTimeout = false;\n\t\t\t\t}, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nMoveColumns.moduleName = \"moveColumn\";\n\nexport default MoveColumns;\n","import Module from '../../core/Module.js';\nimport Helpers from '../../core/tools/Helpers.js';\n\nclass MoveRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.placeholderElement = this.createPlaceholderElement();\n\t\tthis.hoverElement = false; //floating row header element\n\t\tthis.checkTimeout = false; //click check timeout holder\n\t\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\t\tthis.moving = false; //currently moving row\n\t\tthis.toRow = false; //destination row\n\t\tthis.toRowAfter = false; //position of moving row relative to the destination row\n\t\tthis.hasHandle = false; //row has handle instead of fully movable row\n\t\tthis.startY = 0; //starting Y position within header element\n\t\tthis.startX = 0; //starting X position within header element\n\n\t\tthis.moveHover = this.moveHover.bind(this);\n\t\tthis.endMove = this.endMove.bind(this);\n\t\tthis.tableRowDropEvent = false;\n\n\t\tthis.touchMove = false;\n\n\t\tthis.connection = false;\n\t\tthis.connectionSelectorsTables = false;\n\t\tthis.connectionSelectorsElements = false;\n\t\tthis.connectionElements = [];\n\t\tthis.connections = [];\n\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.registerTableOption(\"movableRows\", false); //enable movable rows\n\t\tthis.registerTableOption(\"movableRowsConnectedTables\", false); //tables for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsConnectedElements\", false); //other elements for movable rows to be connected to\n\t\tthis.registerTableOption(\"movableRowsSender\", false);\n\t\tthis.registerTableOption(\"movableRowsReceiver\", \"insert\");\n\n\t\tthis.registerColumnOption(\"rowHandle\");\n\t}\n\n\tcreatePlaceholderElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-row\");\n\t\tel.classList.add(\"tabulator-row-placeholder\");\n\n\t\treturn el;\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.movableRows){\n\t\t\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\t\t\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\t\t\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n\n\t\t\tthis.subscribe(\"cell-init\", this.initializeCell.bind(this));\n\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeGroupHeader(group){\n\t\tvar self = this,\n\t\tconfig = {};\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, group);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl;\n\n\t\t\tif(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== group || !self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(group, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== group || self.toRowAfter){\n\t\t\t\t\trowEl = group.getElement();\n\t\t\t\t\tif(rowEl.previousSibling){\n\t\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tgroup.modules.moveRow = config;\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tconfig = {},\n\t\trowEl;\n\n\t\t//inter table drag drop\n\t\tconfig.mouseup = function(e){\n\t\t\tself.tableRowDrop(e, row);\n\t\t}.bind(self);\n\n\t\t//same table drag drop\n\t\tconfig.mousemove = function(e){\n\t\t\tvar rowEl = row.getElement();\n\n\t\t\tif(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){\n\t\t\t\tif(self.toRow !== row || !self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\t\tself.moveRow(row, true);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(self.toRow !== row || self.toRowAfter){\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(row, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\n\t\tif(!this.hasHandle){\n\n\t\t\trowEl = row.getElement();\n\n\t\t\trowEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trowEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(row, row.getElement());\n\t\t}\n\n\t\trow.modules.moveRow = config;\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tthis.hasHandle = true;\n\t\t}\n\t}\n\n\tinitializeCell(cell){\n\t\tif(cell.column.definition.rowHandle && this.table.options.movableRows !== false){\n\t\t\tvar self = this,\n\t\t\tcellEl = cell.getElement(true);\n\n\t\t\tcellEl.addEventListener(\"mousedown\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tself.checkTimeout = setTimeout(function(){\n\t\t\t\t\t\tself.startMove(e, cell.row);\n\t\t\t\t\t}, self.checkPeriod);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcellEl.addEventListener(\"mouseup\", function(e){\n\t\t\t\tif(e.which === 1){\n\t\t\t\t\tif(self.checkTimeout){\n\t\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.bindTouchEvents(cell.row, cellEl);\n\t\t}\n\t}\n\n\tbindTouchEvents(row, element){\n\t\tvar startYMove = false, //shifting center position of the cell\n\t\tnextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast;\n\n\t\telement.addEventListener(\"touchstart\", (e) => {\n\t\t\tthis.checkTimeout = setTimeout(() => {\n\t\t\t\tthis.touchMove = true;\n\t\t\t\tnextRow = row.nextRow();\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight()/2 : 0;\n\t\t\t\tprevRow = row.prevRow();\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight()/2 : 0;\n\t\t\t\tnextRowHeightLast = 0;\n\t\t\t\tprevRowHeightLast = 0;\n\t\t\t\tstartYMove = false;\n\n\t\t\t\tthis.startMove(e, row);\n\t\t\t}, this.checkPeriod);\n\t\t}, {passive: true});\n\t\tthis.moving, this.toRow, this.toRowAfter;\n\t\telement.addEventListener(\"touchmove\", (e) => {\n\n\t\t\tvar diff, moveToRow;\n\n\t\t\tif(this.moving){\n\t\t\t\te.preventDefault();\n\n\t\t\t\tthis.moveHover(e);\n\n\t\t\t\tif(!startYMove){\n\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t}\n\n\t\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\t\tif(diff > 0){\n\t\t\t\t\tif(nextRow && diff - nextRowHeightLast > nextRowHeight){\n\t\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, true);\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(prevRow && -diff - prevRowHeightLast > prevRowHeight){\n\t\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\t\tif(moveToRow !== row){\n\t\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\t\tthis.moveRow(moveToRow, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(moveToRow){\n\t\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"touchend\", (e) => {\n\t\t\tif(this.checkTimeout){\n\t\t\t\tclearTimeout(this.checkTimeout);\n\t\t\t}\n\t\t\tif(this.moving){\n\t\t\t\tthis.endMove(e);\n\t\t\t\tthis.touchMove = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t_bindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\t_unbindMouseMove(){\n\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\tif((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow && row.modules.moveRow.mousemove){\n\t\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t\t}\n\t\t});\n\t}\n\n\tstartMove(e, row){\n\t\tvar element = row.getElement();\n\n\t\tthis.setStartPosition(e, row);\n\n\t\tthis.moving = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t\t//create placeholder\n\t\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\t\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\t\tif(!this.connection){\n\t\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\t\telement.parentNode.removeChild(element);\n\t\t}else{\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\t\tthis.connectToTables(row);\n\t\t}\n\n\t\t//create hover element\n\t\tthis.hoverElement = element.cloneNode(true);\n\t\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\t\tif(this.connection){\n\t\t\tdocument.body.appendChild(this.hoverElement);\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\t\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t\t}else{\n\t\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\t\tthis.hoverElement.style.left = \"0\";\n\t\t\tthis.hoverElement.style.top = \"0\";\n\n\t\t\tthis._bindMouseMove();\n\t\t}\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\t\tthis.dispatchExternal(\"rowMoving\", row.getComponent());\n\n\t\tthis.moveHover(e);\n\t}\n\n\tsetStartPosition(e, row){\n\t\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t\tpageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t\telement, position;\n\n\t\telement = row.getElement();\n\t\tif(this.connection){\n\t\t\tposition = element.getBoundingClientRect();\n\n\t\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t\t}else{\n\t\t\tthis.startY = (pageY - element.getBoundingClientRect().top);\n\t\t}\n\t}\n\n\tendMove(e){\n\t\tif(!e || e.which === 1 || this.touchMove){\n\t\t\tthis._unbindMouseMove();\n\n\t\t\tif(!this.connection){\n\t\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t\t}\n\n\t\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tif(this.toRow){\n\t\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t\t}else{\n\t\t\t\tthis.dispatchExternal(\"rowMoveCancelled\", this.moving.getComponent());\n\t\t\t}\n\n\t\t\tthis.moving = false;\n\t\t\tthis.toRow = false;\n\t\t\tthis.toRowAfter = false;\n\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\t\tif(this.connection){\n\t\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\t\tthis.disconnectFromTables();\n\t\t\t}\n\t\t}\n\t}\n\n\tmoveRow(row, after){\n\t\tthis.toRow = row;\n\t\tthis.toRowAfter = after;\n\t}\n\n\tmoveHover(e){\n\t\tif(this.connection){\n\t\t\tthis.moveHoverConnections.call(this, e);\n\t\t}else{\n\t\t\tthis.moveHoverTable.call(this, e);\n\t\t}\n\t}\n\n\tmoveHoverTable(e){\n\t\tvar rowHolder = this.table.rowManager.getElement(),\n\t\tscrollTop = rowHolder.scrollTop,\n\t\tyPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop;\n\t\t\n\t\tthis.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + \"px\";\n\t}\n\n\tmoveHoverConnections(e){\n\t\tthis.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + \"px\";\n\t\tthis.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + \"px\";\n\t}\n\n\telementRowDrop(e, element, row){\n\t\tthis.dispatchExternal(\"movableRowsElementDrop\", e, element, row ? row.getComponent() : false);\n\t}\n\n\t//establish connection with other tables\n\tconnectToTables(row){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStart\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\t\trow:row,\n\t\t\t});\n\t\t}\n\n\t\tif(this.connectionSelectorsElements){\n\n\t\t\tthis.connectionElements = [];\n\n\t\t\tif(!Array.isArray(this.connectionSelectorsElements)){\n\t\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t\t}\n\n\t\t\tthis.connectionSelectorsElements.forEach((query) => {\n\t\t\t\tif(typeof query === \"string\"){\n\t\t\t\t\tthis.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t\t}else{\n\t\t\t\t\tthis.connectionElements.push(query);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.connectionElements.forEach((element) => {\n\t\t\t\tvar dropEvent = (e) => {\n\t\t\t\t\tthis.elementRowDrop(e, element, this.moving);\n\t\t\t\t};\n\n\t\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t\t});\n\t\t}\n\t}\n\n\t//disconnect from other tables\n\tdisconnectFromTables(){\n\t\tvar connectionTables;\n\n\t\tif(this.connectionSelectorsTables){\n\t\t\tconnectionTables = this.commsConnections(this.connectionSelectorsTables);\n\n\t\t\tthis.dispatchExternal(\"movableRowsSendingStop\", connectionTables);\n\n\t\t\tthis.commsSend(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t\t}\n\n\t\tthis.connectionElements.forEach((element) => {\n\t\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\t\tdelete element.tabulatorElementDropEvent;\n\t\t});\n\t}\n\n\t//accept incomming connection\n\tconnect(table, row){\n\t\tif(!this.connectedTable){\n\t\t\tthis.connectedTable = table;\n\t\t\tthis.connectedRow = row;\n\n\t\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) => {\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.tableRowDropEvent = this.tableRowDrop.bind(this);\n\n\t\t\tthis.table.element.addEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStart\", row, table);\n\n\t\t\treturn true;\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//close incoming connection\n\tdisconnect(table){\n\t\tif(table === this.connectedTable){\n\t\t\tthis.connectedTable = false;\n\t\t\tthis.connectedRow = false;\n\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\t\tthis.table.rowManager.getDisplayRows().forEach((row) =>{\n\t\t\t\tif(row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup){\n\t\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.table.element.removeEventListener(\"mouseup\", this.tableRowDropEvent);\n\n\t\t\tthis.dispatchExternal(\"movableRowsReceivingStop\", table);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t\t}\n\t}\n\n\tdropComplete(table, row, success){\n\t\tvar sender = false;\n\n\t\tif(success){\n\n\t\t\tswitch(typeof this.table.options.movableRowsSender){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(sender){\n\t\t\t\tsender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table);\n\t\t\t}else{\n\t\t\t\tif(this.table.options.movableRowsSender){\n\t\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchExternal(\"movableRowsSent\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsSentFailed\", this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t}\n\n\t\tthis.endMove();\n\t}\n\n\ttableRowDrop(e, row){\n\t\tvar receiver = false,\n\t\tsuccess = false;\n\n\t\te.stopImmediatePropagation();\n\n\t\tswitch(typeof this.table.options.movableRowsReceiver){\n\t\t\tcase \"string\":\n\t\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(receiver){\n\t\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t\t}\n\n\t\tif(success){\n\t\t\tthis.dispatchExternal(\"movableRowsReceived\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"movableRowsReceivedFailed\", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t\t}\n\n\t\tthis.commsSend(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\t\trow:row,\n\t\t\tsuccess:success,\n\t\t});\n\t}\n\n\tcommsReceived(table, action, data){\n\t\tswitch(action){\n\t\t\tcase \"connect\":\n\t\t\t\treturn this.connect(table, data.row);\n\n\t\t\tcase \"disconnect\":\n\t\t\t\treturn this.disconnect(table);\n\n\t\t\tcase \"dropcomplete\":\n\t\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t}\n\t}\n}\n\nMoveRows.prototype.receivers = {\n\tinsert:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd:function(fromRow, toRow, fromTable){\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate:function(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(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(fromRow, toRow, toTable){\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.moduleName = \"moveRow\";\n\nexport default MoveRows;","import Module from '../../core/Module.js';\n\nimport defaultMutators from './defaults/mutators.js';\n\nclass Mutator extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of mutation types\n\t\tthis.enabled = true;\n\n\t\tthis.registerColumnOption(\"mutator\");\n\t\tthis.registerColumnOption(\"mutatorParams\");\n\t\tthis.registerColumnOption(\"mutatorData\");\n\t\tthis.registerColumnOption(\"mutatorDataParams\");\n\t\tthis.registerColumnOption(\"mutatorEdit\");\n\t\tthis.registerColumnOption(\"mutatorEditParams\");\n\t\tthis.registerColumnOption(\"mutatorClipboard\");\n\t\tthis.registerColumnOption(\"mutatorClipboardParams\");\n\t\tthis.registerColumnOption(\"mutateLink\");\n\t}\n\n\tinitialize(){\n\t\tthis.subscribe(\"cell-value-changing\", this.transformCell.bind(this));\n\t\tthis.subscribe(\"cell-value-changed\", this.mutateLink.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"row-data-init-before\", this.rowDataChanged.bind(this));\n\t\tthis.subscribe(\"row-data-changing\", this.rowDataChanged.bind(this));\n\t}\n\n\trowDataChanged(row, tempData, updatedData){\n\t\treturn this.transformRow(tempData, \"data\", updatedData);\n\t}\n\n\t//initialize column mutator\n\tinitializeColumn(column){\n\t\tvar match = false,\n\t\tconfig = {};\n\n\t\tthis.allowedTypes.forEach((type) => {\n\t\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t\tmutator;\n\n\t\t\tif(column.definition[key]){\n\t\t\t\tmutator = this.lookupMutator(column.definition[key]);\n\n\t\t\t\tif(mutator){\n\t\t\t\t\tmatch = true;\n\n\t\t\t\t\tconfig[key] = {\n\t\t\t\t\t\tmutator:mutator,\n\t\t\t\t\t\tparams: column.definition[key + \"Params\"] || {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(match){\n\t\t\tcolumn.modules.mutate = config;\n\t\t}\n\t}\n\n\tlookupMutator(value){\n\t\tvar mutator = false;\n\n\t\t//set column mutator\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tif(Mutator.mutators[value]){\n\t\t\t\t\tmutator = Mutator.mutators[value];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tmutator = value;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn mutator;\n\t}\n\n\t//apply mutator to row\n\ttransformRow(data, type, updatedData){\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\tvalue;\n\n\t\tif(this.enabled){\n\n\t\t\tthis.table.columnManager.traverse((column) => {\n\t\t\t\tvar mutator, params, component;\n\n\t\t\t\tif(column.modules.mutate){\n\t\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\t\tif(mutator){\n\t\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\t\tif((type == \"data\" && !updatedData)|| typeof value !== \"undefined\"){\n\t\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\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\treturn data;\n\t}\n\n\t//apply mutator to new cell value\n\ttransformCell(cell, value){\n\t\tif(cell.column.modules.mutate){\n\t\t\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t\t\ttempData = {};\n\n\t\t\tif(mutator){\n\t\t\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\t\t\tcell.column.setFieldValue(tempData, value);\n\t\t\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tmutateLink(cell){\n\t\tvar links = cell.column.definition.mutateLink;\n\n\t\tif(links){\n\t\t\tif(!Array.isArray(links)){\n\t\t\t\tlinks = [links];\n\t\t\t}\n\n\t\t\tlinks.forEach((link) => {\n\t\t\t\tvar linkCell = cell.row.getCell(link);\n\n\t\t\t\tif(linkCell){\n\t\t\t\t\tlinkCell.setValue(linkCell.getValue(), true, true);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tenable(){\n\t\tthis.enabled = true;\n\t}\n\n\tdisable(){\n\t\tthis.enabled = false;\n\t}\n}\n\nMutator.moduleName = \"mutator\";\n\n//load defaults\nMutator.mutators = defaultMutators;\n\nexport default Mutator;","export default {};","import rows from './pageCounters/rows.js';\nimport pages from './pageCounters/pages.js';\n\n\nexport default {\n\trows:rows,\n\tpages:pages,\n};","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\n\tthis.table.modules.localize.langBind(\"pagination|counter|rows\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\n\tif(totalRows){\n\t\tvalueEl.innerHTML = \" \" + currentRow + \"-\" + Math.min((currentRow + pageSize - 1), totalRows) + \" \";\n\t\t\n\t\ttotalEl.innerHTML = \" \" + totalRows + \" \";\n\t\t\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(ofEl);\n\t\tel.appendChild(totalEl);\n\t\tel.appendChild(rowsEl);\n\t}else{\n\t\tvalueEl.innerHTML = \" 0 \";\n\n\t\tel.appendChild(showingEl);\n\t\tel.appendChild(valueEl);\n\t\tel.appendChild(rowsEl);\n\t}\n\t\n\treturn el;\n}","export default function(pageSize, currentRow, currentPage, totalRows, totalPages){\n\n\tvar el = document.createElement(\"span\"),\n\tshowingEl = document.createElement(\"span\"),\n\tvalueEl = document.createElement(\"span\"),\n\tofEl = document.createElement(\"span\"),\n\ttotalEl = document.createElement(\"span\"),\n\trowsEl = document.createElement(\"span\");\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|showing\", (value) => {\n\t\tshowingEl.innerHTML = value;\n\t});\n\t\n\tvalueEl.innerHTML = \" \" + currentPage + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|of\", (value) => {\n\t\tofEl.innerHTML = value;\n\t});\n\t\n\ttotalEl.innerHTML = \" \" + totalPages + \" \";\n\t\n\tthis.table.modules.localize.langBind(\"pagination|counter|pages\", (value) => {\n\t\trowsEl.innerHTML = value;\n\t});\n\t\n\tel.appendChild(showingEl);\n\tel.appendChild(valueEl);\n\tel.appendChild(ofEl);\n\tel.appendChild(totalEl);\n\tel.appendChild(rowsEl);\n\t\n\treturn el;\n}","import Module from '../../core/Module.js';\n\nimport defaultPageCounters from './defaults/pageCounters.js';\n\nclass Page extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.mode = \"local\";\n\t\tthis.progressiveLoad = false;\n\t\t\n\t\tthis.element = null;\n\t\tthis.pageCounterElement = null;\n\t\tthis.pageCounter = null;\n\t\t\n\t\tthis.size = 0;\n\t\tthis.page = 1;\n\t\tthis.count = 5;\n\t\tthis.max = 1;\n\n\t\tthis.remoteRowCountEstimate = null;\n\t\t\n\t\tthis.initialLoad = true;\n\t\tthis.dataChanging = false; //flag to check if data is being changed by this module\n\t\t\n\t\tthis.pageSizes = [];\n\t\t\n\t\tthis.registerTableOption(\"pagination\", false); //set pagination type\n\t\tthis.registerTableOption(\"paginationMode\", \"local\"); //local or remote pagination\n\t\tthis.registerTableOption(\"paginationSize\", false); //set number of rows to a page\n\t\tthis.registerTableOption(\"paginationInitialPage\", 1); //initial page to show on load\n\t\tthis.registerTableOption(\"paginationCounter\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationCounterElement\", false); // set pagination counter\n\t\tthis.registerTableOption(\"paginationButtonCount\", 5); // set count of page button\n\t\tthis.registerTableOption(\"paginationSizeSelector\", false); //add pagination size selector element\n\t\tthis.registerTableOption(\"paginationElement\", false); //element to hold pagination numbers\n\t\t// this.registerTableOption(\"paginationDataSent\", {}); //pagination data sent to the server\n\t\t// this.registerTableOption(\"paginationDataReceived\", {}); //pagination data received from the server\n\t\tthis.registerTableOption(\"paginationAddRow\", \"page\"); //add rows on table or page\n\t\t\n\t\tthis.registerTableOption(\"progressiveLoad\", false); //progressive loading\n\t\tthis.registerTableOption(\"progressiveLoadDelay\", 0); //delay between requests\n\t\tthis.registerTableOption(\"progressiveLoadScrollMargin\", 0); //margin before scroll begins\n\t\t\n\t\tthis.registerTableFunction(\"setMaxPage\", this.setMaxPage.bind(this));\n\t\tthis.registerTableFunction(\"setPage\", this.setPage.bind(this));\n\t\tthis.registerTableFunction(\"setPageToRow\", this.userSetPageToRow.bind(this));\n\t\tthis.registerTableFunction(\"setPageSize\", this.userSetPageSize.bind(this));\n\t\tthis.registerTableFunction(\"getPageSize\", this.getPageSize.bind(this));\n\t\tthis.registerTableFunction(\"previousPage\", this.previousPage.bind(this));\n\t\tthis.registerTableFunction(\"nextPage\", this.nextPage.bind(this));\n\t\tthis.registerTableFunction(\"getPage\", this.getPage.bind(this));\n\t\tthis.registerTableFunction(\"getPageMax\", this.getPageMax.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"pageTo\", this.setPageToRow.bind(this));\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.subscribe(\"row-deleted\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"row-added\", this.rowsUpdated.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"footer-redraw\", this.footerRedraw.bind(this));\n\n\t\t\tif(this.table.options.paginationAddRow == \"page\"){\n\t\t\t\tthis.subscribe(\"row-adding-position\", this.rowAddingPosition.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.paginationMode === \"remote\"){\n\t\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\t}\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad){\n\t\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t\t}\n\t\t\t\n\t\t\tthis.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40);\n\t\t\tthis.registerDisplayHandler(this.getRows.bind(this), 50);\n\t\t\t\n\t\t\tthis.createElements();\n\t\t\tthis.initializePageCounter();\n\t\t\tthis.initializePaginator();\n\t\t}else if(this.table.options.progressiveLoad){\n\t\t\tthis.subscribe(\"data-params\", this.remotePageParams.bind(this));\n\t\t\tthis.subscribe(\"data-loaded\", this._parseRemoteData.bind(this));\n\t\t\tthis.subscribe(\"table-built\", this.calculatePageSizes.bind(this));\n\t\t\tthis.subscribe(\"data-processed\", this.initialLoadComplete.bind(this));\n\t\t\t\n\t\t\tthis.initializeProgressive(this.table.options.progressiveLoad);\n\t\t\t\n\t\t\tif(this.table.options.progressiveLoad === \"scroll\"){\n\t\t\t\tthis.subscribe(\"scroll-vertical\", this.scrollVertical.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\t\n\trowAddingPosition(row, top){\n\t\tvar rowManager = this.table.rowManager,\n\t\tdisplayRows = rowManager.getDisplayRows(),\n\t\tindex;\n\t\t\n\t\tif(top){\n\t\t\tif(displayRows.length){\n\t\t\t\tindex = displayRows[0];\n\t\t\t}else{\n\t\t\t\tif(rowManager.activeRows.length){\n\t\t\t\t\tindex = rowManager.activeRows[rowManager.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(displayRows.length){\n\t\t\t\tindex = displayRows[displayRows.length - 1];\n\t\t\t\ttop = displayRows.length < this.size ? false : true;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn {index, top};\n\t}\n\t\n\tcalculatePageSizes(){\n\t\tvar testElRow, testElCell;\n\t\t\n\t\tif(this.table.options.paginationSize){\n\t\t\tthis.size = this.table.options.paginationSize;\n\t\t}else{\n\t\t\ttestElRow = document.createElement(\"div\");\n\t\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\t\ttestElRow.style.visibility = \"hidden\";\n\t\t\t\n\t\t\ttestElCell = document.createElement(\"div\");\n\t\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\t\ttestElCell.innerHTML = \"Page Row Test\";\n\t\t\t\n\t\t\ttestElRow.appendChild(testElCell);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().appendChild(testElRow);\n\t\t\t\n\t\t\tthis.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\t\t\t\n\t\t\tthis.table.rowManager.getTableElement().removeChild(testElRow);\n\t\t}\n\n\t\tthis.dispatchExternal(\"pageSizeChanged\", this.size);\n\t\t\n\t\tthis.generatePageSizeSelectList();\n\t}\n\t\n\tinitialLoadComplete(){\n\t\tthis.initialLoad = false;\n\t}\n\t\n\tremotePageParams(data, config, silent, params){\n\t\tif(!this.initialLoad){\n\t\t\tif((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){\n\t\t\t\tthis.reset(true);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//configure request params\n\t\tparams.page = this.page;\n\t\t\n\t\t//set page size if defined\n\t\tif(this.size){\n\t\t\tparams.size = this.size;\n\t\t}\n\t\t\n\t\treturn params;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetPageToRow(row){\n\t\tif(this.table.options.pagination){\n\t\t\trow = this.table.rowManager.findRow(row);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\treturn this.setPageToRow(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Promise.reject();\n\t}\n\t\n\tuserSetPageSize(size){\n\t\tif(this.table.options.pagination){\n\t\t\tthis.setPageSize(size);\n\t\t\treturn this.setPage(1);\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tscrollVertical(top, dir){\n\t\tvar element, diff, margin;\n\t\tif(!dir && !this.table.dataLoader.loading){\n\t\t\telement = this.table.rowManager.getElement();\n\t\t\tdiff = element.scrollHeight - element.clientHeight - top;\n\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2);\n\t\t\t\n\t\t\tif(diff < margin){\n\t\t\t\tthis.nextPage()\n\t\t\t\t\t.catch(() => {}); //consume the exception thrown when on the last page\n\t\t\t}\n\t\t}\n\t}\n\t\n\trestOnRenderBefore(rows, renderInPosition){\n\t\tif(!renderInPosition){\n\t\t\tif(this.mode === \"local\"){\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\trowsUpdated(){\n\t\tthis.refreshData(true, \"all\");\n\t}\n\t\n\tcreateElements(){\n\t\tvar button;\n\t\t\n\t\tthis.element = document.createElement(\"span\");\n\t\tthis.element.classList.add(\"tabulator-paginator\");\n\t\t\n\t\tthis.pagesElement = document.createElement(\"span\");\n\t\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\t\t\n\t\tbutton = document.createElement(\"button\");\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\tbutton.setAttribute(\"aria-label\", \"\");\n\t\tbutton.setAttribute(\"title\", \"\");\n\t\t\n\t\tthis.firstBut = button.cloneNode(true);\n\t\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\t\t\n\t\tthis.prevBut = button.cloneNode(true);\n\t\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\t\t\n\t\tthis.nextBut = button.cloneNode(true);\n\t\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\t\t\n\t\tthis.lastBut = button.cloneNode(true);\n\t\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\t\t\n\t\tif(this.table.options.paginationSizeSelector){\n\t\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t\t}\n\t}\n\t\n\tgeneratePageSizeSelectList(){\n\t\tvar pageSizes = [];\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t\n\t\t\tif(Array.isArray(this.table.options.paginationSizeSelector)){\n\t\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\t\n\t\t\t\tif(this.pageSizes.indexOf(this.size) == -1){\n\t\t\t\t\tpageSizes = [];\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 1; i < 5; i++){\n\t\t\t\t\t\tpageSizes.push(this.size * i);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t\t}else{\n\t\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\twhile(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t\t\n\t\t\tpageSizes.forEach((item) => {\n\t\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\t\titemEl.value = item;\n\t\t\t\t\n\t\t\t\tif(item === true){\n\t\t\t\t\tthis.langBind(\"pagination|all\", function(value){\n\t\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\titemEl.innerHTML = item;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.appendChild(itemEl);\n\t\t\t});\n\t\t\t\n\t\t\tthis.pageSizeSelect.value = this.size;\n\t\t}\n\t}\n\t\n\tinitializePageCounter(){\n\t\tvar counter = this.table.options.paginationCounter,\n\t\tpageCounter = null;\n\t\t\n\t\tif(counter){\n\t\t\tif(typeof counter === \"function\"){\n\t\t\t\tpageCounter = counter;\n\t\t\t}else{\n\t\t\t\tpageCounter = Page.pageCounters[counter];\n\t\t\t}\n\t\t\t\n\t\t\tif(pageCounter){\n\t\t\t\tthis.pageCounter = pageCounter;\n\t\t\t\t\n\t\t\t\tthis.pageCounterElement = document.createElement(\"span\");\n\t\t\t\tthis.pageCounterElement.classList.add(\"tabulator-page-counter\");\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Pagination Error - No such page counter found: \", counter);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup pagination\n\tinitializePaginator(hidden){\n\t\tvar pageSelectLabel, paginationCounterHolder;\n\t\t\n\t\tif(!hidden){\n\t\t\t//build pagination element\n\t\t\t\n\t\t\t//bind localizations\n\t\t\tthis.langBind(\"pagination|first\", (value) => {\n\t\t\t\tthis.firstBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|first_title\", (value) => {\n\t\t\t\tthis.firstBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.firstBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev\", (value) => {\n\t\t\t\tthis.prevBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|prev_title\", (value) => {\n\t\t\t\tthis.prevBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.prevBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next\", (value) => {\n\t\t\t\tthis.nextBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|next_title\", (value) => {\n\t\t\t\tthis.nextBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.nextBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last\", (value) => {\n\t\t\t\tthis.lastBut.innerHTML = value;\n\t\t\t});\n\t\t\t\n\t\t\tthis.langBind(\"pagination|last_title\", (value) => {\n\t\t\t\tthis.lastBut.setAttribute(\"aria-label\", value);\n\t\t\t\tthis.lastBut.setAttribute(\"title\", value);\n\t\t\t});\n\t\t\t\n\t\t\t//click bindings\n\t\t\tthis.firstBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(1);\n\t\t\t});\n\t\t\t\n\t\t\tthis.prevBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.previousPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.nextBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.nextPage();\n\t\t\t});\n\t\t\t\n\t\t\tthis.lastBut.addEventListener(\"click\", () => {\n\t\t\t\tthis.setPage(this.max);\n\t\t\t});\n\t\t\t\n\t\t\tif(this.table.options.paginationElement){\n\t\t\t\tthis.element = this.table.options.paginationElement;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.pageSizeSelect){\n\t\t\t\tpageSelectLabel = document.createElement(\"label\");\n\t\t\t\t\n\t\t\t\tthis.langBind(\"pagination|page_size\", (value) => {\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\t\t\tthis.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\t\t\tpageSelectLabel.innerHTML = value;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.element.appendChild(pageSelectLabel);\n\t\t\t\tthis.element.appendChild(this.pageSizeSelect);\n\t\t\t\t\n\t\t\t\tthis.pageSizeSelect.addEventListener(\"change\", (e) => {\n\t\t\t\t\tthis.setPageSize(this.pageSizeSelect.value == \"true\" ? true : this.pageSizeSelect.value);\n\t\t\t\t\tthis.setPage(1);\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//append to DOM\n\t\t\tthis.element.appendChild(this.firstBut);\n\t\t\tthis.element.appendChild(this.prevBut);\n\t\t\tthis.element.appendChild(this.pagesElement);\n\t\t\tthis.element.appendChild(this.nextBut);\n\t\t\tthis.element.appendChild(this.lastBut);\n\t\t\t\n\t\t\tif(!this.table.options.paginationElement){\n\t\t\t\tif(this.table.options.paginationCounter){\n\n\t\t\t\t\tpaginationCounterHolder; \n\n\t\t\t\t\tif(this.table.options.paginationCounterElement){\n\t\t\t\t\t\tif(this.table.options.paginationCounterElement instanceof HTMLElement){\n\t\t\t\t\t\t\tthis.table.options.paginationCounterElement.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t}else if(typeof this.table.options.paginationCounterElement === \"string\"){\n\t\t\t\t\t\t\tpaginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(paginationCounterHolder){\n\t\t\t\t\t\t\t\tpaginationCounterHolder.appendChild(this.pageCounterElement);\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconsole.warn(\"Pagination Error - Unable to find element matching paginationCounterElement selector:\", this.table.options.paginationCounterElement);\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\tthis.footerAppend(this.pageCounterElement);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.footerAppend(this.element);\n\t\t\t}\n\t\t\t\n\t\t\tthis.page = this.table.options.paginationInitialPage;\n\t\t\tthis.count = this.table.options.paginationButtonCount;\n\t\t}\n\t\t\n\t\t//set default values\n\t\tthis.mode = this.table.options.paginationMode;\n\t}\n\t\n\tinitializeProgressive(mode){\n\t\tthis.initializePaginator(true);\n\t\tthis.mode = \"progressive_\" + mode;\n\t\tthis.progressiveLoad = true;\n\t}\n\t\n\ttrackChanges(){\n\t\tthis.dispatch(\"page-changed\");\n\t}\n\t\n\t//calculate maximum page from number of rows\n\tsetMaxRows(rowCount){\n\t\tif(!rowCount){\n\t\t\tthis.max = 1;\n\t\t}else{\n\t\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount/this.size);\n\t\t}\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t}\n\t}\n\t\n\t//reset to first page without triggering action\n\treset(force){\n\t\tif(!this.initialLoad){\n\t\t\tif(this.mode == \"local\" || force){\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.trackChanges();\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//set the maximum page\n\tsetMaxPage(max){\n\t\t\n\t\tmax = parseInt(max);\n\t\t\n\t\tthis.max = max || 1;\n\t\t\n\t\tif(this.page > this.max){\n\t\t\tthis.page = this.max;\n\t\t\tthis.trigger();\n\t\t}\n\t}\n\t\n\t//set current page number\n\tsetPage(page){\n\t\tswitch(page){\n\t\t\tcase \"first\":\n\t\t\t\treturn this.setPage(1);\n\t\n\t\t\tcase \"prev\":\n\t\t\t\treturn this.previousPage();\n\t\t\t\n\t\t\tcase \"next\":\n\t\t\t\treturn this.nextPage();\n\t\t\t\n\t\t\tcase \"last\":\n\t\t\t\treturn this.setPage(this.max);\n\t\t}\n\t\t\n\t\tpage = parseInt(page);\n\t\t\n\t\tif((page > 0 && page <= this.max) || this.mode !== \"local\"){\n\t\t\tthis.page = page;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + this.max + \":\", page);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageToRow(row){\n\t\tvar rows = this.displayRows(-1);\n\t\tvar index = rows.indexOf(row);\n\t\n\t\tif(index > -1){\n\t\t\tvar page = this.size === true ? 1 : Math.ceil((index + 1) / this.size);\n\t\t\t\n\t\t\treturn this.setPage(page);\n\t\t}else{\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tsetPageSize(size){\n\t\tif(size !== true){\n\t\t\tsize = parseInt(size);\n\t\t}\n\n\t\tif(size > 0){\n\t\t\tthis.size = size;\n\t\t\tthis.dispatchExternal(\"pageSizeChanged\", size);\n\t\t}\n\t\t\n\t\tif(this.pageSizeSelect){\n\t\t\t// this.pageSizeSelect.value = size;\n\t\t\tthis.generatePageSizeSelectList();\n\t\t}\n\t\t\n\t\tthis.trackChanges();\n\t}\n\t\n\t_setPageCounter(totalRows, size, currentRow){\n\t\tvar content;\n\t\t\n\t\tif(this.pageCounter){\n\n\t\t\tif(this.mode === \"remote\"){\n\t\t\t\tsize = this.size;\n\t\t\t\tcurrentRow = ((this.page - 1) * this.size) + 1;\n\t\t\t\ttotalRows = this.remoteRowCountEstimate;\n\t\t\t}\n\n\t\t\tcontent = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max);\n\t\t\t\n\t\t\tswitch(typeof content){\n\t\t\t\tcase \"object\":\n\t\t\t\t\tif(content instanceof Node){\n\t\t\t\t\t\n\t\t\t\t\t\t//clear previous cell contents\n\t\t\t\t\t\twhile(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.pageCounterElement.appendChild(content);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\t\n\t\t\t\t\t\tif(content != null){\n\t\t\t\t\t\t\tconsole.warn(\"Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:\", content);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tthis.pageCounterElement.innerHTML = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.pageCounterElement.innerHTML = content;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//setup the pagination buttons\n\t_setPageButtons(){\n\t\tlet leftSize = Math.floor((this.count-1) / 2);\n\t\tlet rightSize = Math.ceil((this.count-1) / 2);\n\t\tlet min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1);\n\t\tlet max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max);\n\t\t\n\t\twhile(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild);\n\t\t\n\t\tif(this.page == 1){\n\t\t\tthis.firstBut.disabled = true;\n\t\t\tthis.prevBut.disabled = true;\n\t\t}else{\n\t\t\tthis.firstBut.disabled = false;\n\t\t\tthis.prevBut.disabled = false;\n\t\t}\n\t\t\n\t\tif(this.page == this.max){\n\t\t\tthis.lastBut.disabled = true;\n\t\t\tthis.nextBut.disabled = true;\n\t\t}else{\n\t\t\tthis.lastBut.disabled = false;\n\t\t\tthis.nextBut.disabled = false;\n\t\t}\n\t\t\n\t\tfor(let i = min; i <= max; i++){\n\t\t\tif(i>0 && i <= this.max){\n\t\t\t\tthis.pagesElement.appendChild(this._generatePageButton(i));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.footerRedraw();\n\t}\n\t\n\t_generatePageButton(page){\n\t\tvar button = document.createElement(\"button\");\n\t\t\n\t\tbutton.classList.add(\"tabulator-page\");\n\t\tif(page == this.page){\n\t\t\tbutton.classList.add(\"active\");\n\t\t}\n\t\t\n\t\tbutton.setAttribute(\"type\", \"button\");\n\t\tbutton.setAttribute(\"role\", \"button\");\n\t\t\n\t\tthis.langBind(\"pagination|page_title\", (value) => {\n\t\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t\t});\n\t\t\n\t\tbutton.setAttribute(\"data-page\", page);\n\t\tbutton.textContent = page;\n\t\t\n\t\tbutton.addEventListener(\"click\", (e) => {\n\t\t\tthis.setPage(page);\n\t\t});\n\t\t\n\t\treturn button;\n\t}\n\t\n\t//previous page\n\tpreviousPage(){\n\t\tif(this.page > 1){\n\t\t\tthis.page--;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\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\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//next page\n\tnextPage(){\n\t\tif(this.page < this.max){\n\t\t\tthis.page++;\n\t\t\t\n\t\t\tthis.trackChanges();\n\t\t\t\n\t\t\treturn this.trigger();\n\t\t\t\n\t\t}else{\n\t\t\tif(!this.progressiveLoad){\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + this.max + \":\", this.max + 1);\n\t\t\t}\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t//return current page number\n\tgetPage(){\n\t\treturn this.page;\n\t}\n\t\n\t//return max page number\n\tgetPageMax(){\n\t\treturn this.max;\n\t}\n\t\n\tgetPageSize(size){\n\t\treturn this.size;\n\t}\n\t\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\t\n\t//return appropriate rows for current page\n\tgetRows(data){\n\t\tvar actualRowPageSize = 0,\n\t\toutput, start, end, actualStartRow;\n\n\t\tvar actualRows = data.filter((row) => {\n\t\t\treturn row.type === \"row\";\n\t\t});\n\t\t\n\t\tif(this.mode == \"local\"){\n\t\t\toutput = [];\n\t\t\t\n\t\t\tthis.setMaxRows(data.length);\n\t\t\t\n\t\t\tif(this.size === true){\n\t\t\t\tstart = 0;\n\t\t\t\tend = data.length;\n\t\t\t}else{\n\t\t\t\tstart = this.size * (this.page - 1);\n\t\t\t\tend = start + parseInt(this.size);\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageButtons();\n\t\t\t\n\t\t\tfor(let i = start; i < end; i++){\n\t\t\t\tlet row = data[i];\n\n\t\t\t\tif(row){\n\t\t\t\t\toutput.push(row);\n\n\t\t\t\t\tif(row.type === \"row\"){\n\t\t\t\t\t\tif(!actualStartRow){\n\t\t\t\t\t\t\tactualStartRow = row;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t\tactualRowPageSize++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0);\n\t\t\t\n\t\t\treturn output;\n\t\t}else{\n\t\t\tthis._setPageButtons();\n\t\t\tthis._setPageCounter(actualRows.length);\n\t\t\t\n\t\t\treturn data.slice(0);\n\t\t}\n\t}\n\t\n\ttrigger(){\n\t\tvar left;\n\t\t\n\t\tswitch(this.mode){\n\t\t\tcase \"local\":\n\t\t\t\tleft = this.table.rowManager.scrollLeft;\n\t\t\t\n\t\t\t\tthis.refreshData();\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\n\t\t\t\treturn Promise.resolve();\n\t\t\t\n\t\t\tcase \"remote\":\n\t\t\t\tthis.dataChanging = true;\n\t\t\t\treturn this.reloadData(null)\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\tthis.dataChanging = false;\n\t\t\t\t\t});\n\t\t\t\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\treturn this.reloadData(null, true);\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", this.mode);\n\t\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\t_parseRemoteData(data){\n\t\tvar margin;\n\t\t\n\t\tif(typeof data.last_page === \"undefined\"){\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").last_page || \"last_page\") + \"' property\");\n\t\t}\n\t\t\n\t\tif(data.data){\n\t\t\tthis.max = parseInt(data.last_page) || 1;\n\n\t\t\tthis.remoteRowCountEstimate = typeof data.last_row !== \"undefined\" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0));\n\t\t\t\n\t\t\tif(this.progressiveLoad){\n\t\t\t\tswitch(this.mode){\n\t\t\t\t\tcase \"progressive_load\":\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page == 1){\n\t\t\t\t\t\t\tthis.table.rowManager.setData(data.data, false, this.page == 1);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.table.rowManager.addRows(data.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t}, this.table.options.progressiveLoadDelay);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\t\tdata = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data);\n\t\t\t\t\t\n\t\t\t\t\t\tthis.table.rowManager.setData(data, this.page !== 1, this.page == 1);\n\t\t\t\t\t\n\t\t\t\t\t\tmargin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);\n\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){\n\t\t\t\t\t\t\tif(this.page < this.max){\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.nextPage();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t}else{\n\t\t\t\t// left = this.table.rowManager.scrollLeft;\n\t\t\t\tthis.dispatchExternal(\"pageLoaded\", this.getPage());\n\t\t\t\t// this.table.rowManager.scrollHorizontal(left);\n\t\t\t\t// this.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + (this.options(\"dataReceiveParams\").data || \"data\") + \"' property\");\n\t\t}\n\t\t\n\t\treturn data.data;\n\t}\n\t\n\t//handle the footer element being redrawn\n\tfooterRedraw(){\n\t\tvar footer = this.table.footerManager.containerElement;\n\n\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}else{\n\t\t\tthis.pagesElement.style.display = '';\n\t\t\t\n\t\t\tif((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){\n\t\t\t\tthis.pagesElement.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n}\n\nPage.moduleName = \"page\";\n\n//load defaults\nPage.pageCounters = defaultPageCounters;\n\nexport default Page;\n","// read persistance information from storage\nexport default {\n\tlocal:function(id, type){\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie:function(id, type){\n\t\tvar cookie = document.cookie,\n\t\tkey = id + \"-\" + type,\n\t\tcookiePos = cookie.indexOf(key + \"=\"),\n\t\tend, 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.slice(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif(end > -1){\n\t\t\t\tcookie = cookie.slice(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","//write persistence information to storage\nexport default {\n\tlocal:function(id, type, data){\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie:function(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};","import Module from '../../core/Module.js';\n\nimport defaultReaders from './defaults/readers.js';\nimport defaultWriters from './defaults/writers.js';\n\nclass Persistence extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.mode = \"\";\n\t\tthis.id = \"\";\n\t\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\t\tthis.defWatcherBlock = false;\n\t\tthis.config = {};\n\t\tthis.readFunc = false;\n\t\tthis.writeFunc = false;\n\n\t\tthis.registerTableOption(\"persistence\", false);\n\t\tthis.registerTableOption(\"persistenceID\", \"\"); //key for persistent storage\n\t\tthis.registerTableOption(\"persistenceMode\", true); //mode for storing persistence information\n\t\tthis.registerTableOption(\"persistenceReaderFunc\", false); //function for handling persistence data reading\n\t\tthis.registerTableOption(\"persistenceWriterFunc\", false); //function for handling persistence data writing\n\t}\n\n\t// Test for whether localStorage is available for use.\n\tlocalStorageTest() {\n\t\tvar testKey = \"_tabulator_test\";\n\n\t\ttry {\n\t\t\twindow.localStorage.setItem( testKey, testKey);\n\t\t\twindow.localStorage.removeItem( testKey );\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t//setup parameters\n\tinitialize(){\n\t\tif(this.table.options.persistence){\n\t\t\t//determine persistent layout storage type\n\t\t\tvar mode = this.table.options.persistenceMode,\n\t\t\tid = this.table.options.persistenceID,\n\t\t\tretrievedData;\n\n\t\t\tthis.mode = mode !== true ? mode : (this.localStorageTest() ? \"local\" : \"cookie\");\n\n\t\t\tif(this.table.options.persistenceReaderFunc){\n\t\t\t\tif(typeof this.table.options.persistenceReaderFunc === \"function\"){\n\t\t\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.readers[this.table.options.persistenceReaderFunc]){\n\t\t\t\t\t\tthis.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.readers[this.mode]){\n\t\t\t\t\tthis.readFunc = Persistence.readers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.table.options.persistenceWriterFunc){\n\t\t\t\tif(typeof this.table.options.persistenceWriterFunc === \"function\"){\n\t\t\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t\t\t}else{\n\t\t\t\t\tif(Persistence.writers[this.table.options.persistenceWriterFunc]){\n\t\t\t\t\t\tthis.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc];\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(Persistence.writers[this.mode]){\n\t\t\t\t\tthis.writeFunc = Persistence.writers[this.mode];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//set storage tag\n\t\t\tthis.id = \"tabulator-\" + (id || (this.table.element.getAttribute(\"id\") || \"\"));\n\n\t\t\tthis.config = {\n\t\t\t\tsort:this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\t\t\tfilter:this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\t\t\theaderFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter,\n\t\t\t\tgroup:this.table.options.persistence === true || this.table.options.persistence.group,\n\t\t\t\tpage:this.table.options.persistence === true || this.table.options.persistence.page,\n\t\t\t\tcolumns:this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns,\n\t\t\t};\n\n\t\t\t//load pagination data if needed\n\t\t\tif(this.config.page){\n\t\t\t\tretrievedData = this.retrieveData(\"page\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)){\n\t\t\t\t\t\tthis.table.options.paginationSize = retrievedData.paginationSize;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(typeof retrievedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)){\n\t\t\t\t\t\tthis.table.options.paginationInitialPage = retrievedData.paginationInitialPage;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//load group data if needed\n\t\t\tif(this.config.group){\n\t\t\t\tretrievedData = this.retrieveData(\"group\");\n\n\t\t\t\tif(retrievedData){\n\t\t\t\t\tif(typeof retrievedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)){\n\t\t\t\t\t\tthis.table.options.groupBy = retrievedData.groupBy;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)){\n\t\t\t\t\t\tthis.table.options.groupStartOpen = retrievedData.groupStartOpen;\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof retrievedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)){\n\t\t\t\t\t\tthis.table.options.groupHeader = retrievedData.groupHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.config.columns){\n\t\t\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t\t\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\t\t\tthis.subscribe(\"column-show\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-hide\", this.save.bind(this, \"columns\"));\n\t\t\t\tthis.subscribe(\"column-moved\", this.save.bind(this, \"columns\"));\n\t\t\t}\n\n\t\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this), 0);\n\n\t\t\tthis.subscribe(\"table-redraw\", this.tableRedraw.bind(this));\n\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"filter\"));\n\t\t\tthis.subscribe(\"filter-changed\", this.eventSave.bind(this, \"headerFilter\"));\n\t\t\tthis.subscribe(\"sort-changed\", this.eventSave.bind(this, \"sort\"));\n\t\t\tthis.subscribe(\"group-changed\", this.eventSave.bind(this, \"group\"));\n\t\t\tthis.subscribe(\"page-changed\", this.eventSave.bind(this, \"page\"));\n\t\t\tthis.subscribe(\"column-resized\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"column-width\", this.eventSave.bind(this, \"columns\"));\n\t\t\tthis.subscribe(\"layout-refreshed\", this.eventSave.bind(this, \"columns\"));\n\t\t}\n\n\t\tthis.registerTableFunction(\"getColumnLayout\", this.getColumnLayout.bind(this));\n\t\tthis.registerTableFunction(\"setColumnLayout\", this.setColumnLayout.bind(this));\n\t}\n\n\teventSave(type){\n\t\tif(this.config[type]){\n\t\t\tthis.save(type);\n\t\t}\n\t}\n\n\ttableBuilt(){\n\t\tvar sorters, filters, headerFilters;\n\n\t\tif(this.config.sort){\n\t\t\tsorters = this.load(\"sort\");\n\n\t\t\tif(!sorters === false){\n\t\t\t\tthis.table.options.initialSort = sorters;\n\t\t\t}\n\t\t}\n\n\t\tif(this.config.filter){\n\t\t\tfilters = this.load(\"filter\");\n\n\t\t\tif(!filters === false){\n\t\t\t\tthis.table.options.initialFilter = filters;\n\t\t\t}\n\t\t}\n\t\tif(this.config.headerFilter){\n\t\t\theaderFilters = this.load(\"headerFilter\");\n\n\t\t\tif(!headerFilters === false){\n\t\t\t\tthis.table.options.initialHeaderFilter = headerFilters;\n\t\t\t}\n\t\t}\n\t\t\n\t}\n\n\ttableRedraw(force){\n\t\tif(force && this.config.columns){\n\t\t\tthis.save(\"columns\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\tgetColumnLayout(){\n\t\treturn this.parseColumns(this.table.columnManager.getColumns());\n\t}\n\n\tsetColumnLayout(layout){\n\t\tthis.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout, true));\n\t\treturn true;\n\t}\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\tinitializeColumn(column){\n\t\tvar def, keys;\n\n\t\tif(this.config.columns){\n\t\t\tthis.defWatcherBlock = true;\n\n\t\t\tdef = column.getDefinition();\n\n\t\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\t\tkeys.forEach((key)=>{\n\t\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\t\tvar value = def[key];\n\n\t\t\t\tif(props){\n\t\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\t\tset: (newValue) => {\n\t\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\t\tif(!this.defWatcherBlock){\n\t\t\t\t\t\t\t\tthis.save(\"columns\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(props.set){\n\t\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget:() => {\n\t\t\t\t\t\t\tif(props.get){\n\t\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\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\tthis.defWatcherBlock = false;\n\t\t}\n\t}\n\n\t//load saved definitions\n\tload(type, current){\n\t\tvar data = this.retrieveData(type);\n\n\t\tif(current){\n\t\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t//retrieve data from memory\n\tretrieveData(type){\n\t\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n\t}\n\n\t//merge old and new column definitions\n\tmergeDefinition(oldCols, newCols, mergeAllNew){\n\t\tvar output = [];\n\n\t\tnewCols = newCols || [];\n\n\t\tnewCols.forEach((column, to) => {\n\t\t\tvar from = this._findColumn(oldCols, column),\n\t\t\tkeys;\n\n\t\t\tif(from){\n\t\t\t\tif(mergeAllNew){\n\t\t\t\t\tkeys = Object.keys(column);\n\t\t\t\t}else if(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(from);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tif(key !== \"columns\" && typeof column[key] !== \"undefined\"){\n\t\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(from.columns){\n\t\t\t\t\tfrom.columns = this.mergeDefinition(from.columns, column.columns);\n\t\t\t\t}\n\n\t\t\t\toutput.push(from);\n\t\t\t}\n\t\t});\n\n\t\toldCols.forEach((column, i) => {\n\t\t\tvar from = this._findColumn(newCols, column);\n\n\t\t\tif (!from) {\n\t\t\t\tif(output.length>i){\n\t\t\t\t\toutput.splice(i, 0, column);\n\t\t\t\t}else{\n\t\t\t\t\toutput.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\t//find matching columns\n\t_findColumn(columns, subject){\n\t\tvar type = subject.columns ? \"group\" : (subject.field ? \"field\" : \"object\");\n\n\t\treturn columns.find(function(col){\n\t\t\tswitch(type){\n\t\t\t\tcase \"group\":\n\t\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\n\t\t\t\tcase \"field\":\n\t\t\t\t\treturn col.field === subject.field;\n\n\t\t\t\tcase \"object\":\n\t\t\t\t\treturn col === subject;\n\t\t\t}\n\t\t});\n\t}\n\n\t//save data\n\tsave(type){\n\t\tvar data = {};\n\n\t\tswitch(type){\n\t\t\tcase \"columns\":\n\t\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\t\tbreak;\n\n\t\t\tcase \"filter\":\n\t\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"headerFilter\":\n\t\t\t\tdata = this.table.modules.filter.getHeaderFilters();\n\t\t\t\tbreak;\n\n\t\t\tcase \"sort\":\n\t\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tdata = this.getGroupConfig();\n\t\t\t\tbreak;\n\n\t\t\tcase \"page\":\n\t\t\t\tdata = this.getPageConfig();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(this.writeFunc){\n\t\t\tthis.writeFunc(this.id, type, data);\n\t\t}\n\n\t}\n\n\t//ensure sorters contain no function data\n\tvalidateSorters(data){\n\t\tdata.forEach(function(item){\n\t\t\titem.column = item.field;\n\t\t\tdelete item.field;\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetGroupConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.group){\n\t\t\tif(this.config.group === true || this.config.group.groupBy){\n\t\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupStartOpen){\n\t\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t\t}\n\n\t\t\tif(this.config.group === true || this.config.group.groupHeader){\n\t\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgetPageConfig(){\n\t\tvar data = {};\n\n\t\tif(this.config.page){\n\t\t\tif(this.config.page === true || this.config.page.size){\n\t\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t\t}\n\n\t\t\tif(this.config.page === true || this.config.page.page){\n\t\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\n\t//parse columns for data to store\n\tparseColumns(columns){\n\t\tvar definitions = [],\n\t\texcludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\t\tcolumns.forEach((column) => {\n\t\t\tvar defStore = {},\n\t\t\tcolDef = column.getDefinition(),\n\t\t\tkeys;\n\n\t\t\tif(column.isGroup){\n\t\t\t\tdefStore.title = colDef.title;\n\t\t\t\tdefStore.columns = this.parseColumns(column.getColumns());\n\t\t\t}else{\n\t\t\t\tdefStore.field = column.getField();\n\n\t\t\t\tif(this.config.columns === true || this.config.columns == undefined){\n\t\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\t\tkeys.push(\"width\");\n\t\t\t\t\tkeys.push(\"visible\");\n\t\t\t\t}else{\n\t\t\t\t\tkeys = this.config.columns;\n\t\t\t\t}\n\n\t\t\t\tkeys.forEach((key)=>{\n\t\t\t\t\tswitch(key){\n\t\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1){\n\t\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\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\tdefinitions.push(defStore);\n\t\t});\n\n\t\treturn definitions;\n\t}\n}\n\nPersistence.moduleName = \"persistence\";\n\nPersistence.moduleInitOrder = -10;\n\n//load defaults\nPersistence.readers = defaultReaders;\nPersistence.writers = defaultWriters;\n\nexport default Persistence;","import Module from '../../core/Module.js';\n\nclass Popup extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.columnSubscribers = {};\n\t\t\n\t\tthis.registerTableOption(\"rowContextPopup\", false);\n\t\tthis.registerTableOption(\"rowClickPopup\", false);\n\t\tthis.registerTableOption(\"rowDblClickPopup\", false);\n\t\tthis.registerTableOption(\"groupContextPopup\", false);\n\t\tthis.registerTableOption(\"groupClickPopup\", false);\n\t\tthis.registerTableOption(\"groupDblClickPopup\", false);\n\t\t\n\t\tthis.registerColumnOption(\"headerContextPopup\");\n\t\tthis.registerColumnOption(\"headerClickPopup\");\n\t\tthis.registerColumnOption(\"headerDblClickPopup\");\n\t\tthis.registerColumnOption(\"headerPopup\");\n\t\tthis.registerColumnOption(\"headerPopupIcon\");\n\t\tthis.registerColumnOption(\"contextPopup\");\n\t\tthis.registerColumnOption(\"clickPopup\");\n\t\tthis.registerColumnOption(\"dblClickPopup\");\n\n\t\tthis.registerComponentFunction(\"cell\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"popup\", this._componentPopupCall.bind(this));\n\t\tthis.registerComponentFunction(\"group\", \"popup\", this._componentPopupCall.bind(this));\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializeRowWatchers();\n\t\tthis.initializeGroupWatchers();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\t_componentPopupCall(component, contents, position){\n\t\tthis.loadPopupEvent(contents, null, component, position);\n\t}\n\t\n\tinitializeRowWatchers(){\n\t\tif(this.table.options.rowContextPopup){\n\t\t\tthis.subscribe(\"row-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t\tthis.table.on(\"rowTapHold\", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.rowClickPopup){\n\t\t\tthis.subscribe(\"row-click\", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup));\n\t\t}\n\n\t\tif(this.table.options.rowDblClickPopup){\n\t\t\tthis.subscribe(\"row-dblclick\", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup));\n\t\t}\n\t}\n\t\n\tinitializeGroupWatchers(){\n\t\tif(this.table.options.groupContextPopup){\n\t\t\tthis.subscribe(\"group-contextmenu\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t\tthis.table.on(\"groupTapHold\", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup));\n\t\t}\n\t\t\n\t\tif(this.table.options.groupClickPopup){\n\t\t\tthis.subscribe(\"group-click\", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup));\n\t\t}\n\n\t\tif(this.table.options.groupDblClickPopup){\n\t\t\tthis.subscribe(\"group-dblclick\", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup));\n\t\t}\n\t}\n\n\tinitializeColumn(column){\n\t\tvar def = column.definition;\n\t\t\n\t\t//handle column events\n\t\tif(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){\n\t\t\tthis.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\");\n\t\t\tthis.subscribe(\"column-contextmenu\", this.columnSubscribers.headerContextPopup);\n\t\t\tthis.table.on(\"headerTapHold\", this.loadPopupTableColumnEvent.bind(this, \"headerContextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){\n\t\t\tthis.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerClickPopup\");\n\t\t\tthis.subscribe(\"column-click\", this.columnSubscribers.headerClickPopup);\n\t\t\n\t\t\n\t\t}if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){\n\t\t\tthis.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, \"headerDblClickPopup\");\n\t\t\tthis.subscribe(\"column-dblclick\", this.columnSubscribers.headerDblClickPopup);\n\t\t}\n\t\t\n\t\tif(def.headerPopup){\n\t\t\tthis.initializeColumnHeaderPopup(column);\n\t\t}\n\t\t\n\t\t//handle cell events\n\t\tif(def.contextPopup && !this.columnSubscribers.contextPopup){\n\t\t\tthis.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, \"contextPopup\");\n\t\t\tthis.subscribe(\"cell-contextmenu\", this.columnSubscribers.contextPopup);\n\t\t\tthis.table.on(\"cellTapHold\", this.loadPopupTableCellEvent.bind(this, \"contextPopup\"));\n\t\t}\n\t\t\n\t\tif(def.clickPopup && !this.columnSubscribers.clickPopup){\n\t\t\tthis.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, \"clickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.clickPopup);\n\t\t}\n\n\t\tif(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){\n\t\t\tthis.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, \"dblClickPopup\");\n\t\t\tthis.subscribe(\"cell-click\", this.columnSubscribers.dblClickPopup);\n\t\t}\n\t}\n\t\n\tinitializeColumnHeaderPopup(column){\n\t\tvar icon = column.definition.headerPopupIcon,\n\t\theaderPopupEl;\n\t\t\n\t\theaderPopupEl = document.createElement(\"span\");\n\t\theaderPopupEl.classList.add(\"tabulator-header-popup-button\");\n\n\t\tif(icon){\n\t\t\tif(typeof icon === \"function\"){\n\t\t\t\ticon = icon(column.getComponent());\n\t\t\t}\n\n\t\t\tif(icon instanceof HTMLElement){\n\t\t\t\theaderPopupEl.appendChild(icon);\n\t\t\t}else{\n\t\t\t\theaderPopupEl.innerHTML = icon;\n\t\t\t}\n\t\t}else{\n\t\t\theaderPopupEl.innerHTML = \"⋮\";\n\t\t}\n\t\t\n\t\theaderPopupEl.addEventListener(\"click\", (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t\t\n\t\t\tthis.loadPopupEvent(column.definition.headerPopup, e, column);\n\t\t});\n\t\t\n\t\tcolumn.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild);\n\t}\n\t\n\tloadPopupTableCellEvent(option, e, cell){\n\t\tif(cell._cell){\n\t\t\tcell = cell._cell;\n\t\t}\n\t\t\n\t\tif(cell.column.definition[option]){\n\t\t\tthis.loadPopupEvent(cell.column.definition[option], e, cell);\n\t\t}\n\t}\n\t\n\tloadPopupTableColumnEvent(option, e, column){\n\t\tif(column._column){\n\t\t\tcolumn = column._column;\n\t\t}\n\t\t\n\t\tif(column.definition[option]){\n\t\t\tthis.loadPopupEvent(column.definition[option], e, column);\n\t\t}\n\t}\n\t\n\tloadPopupEvent(contents, e, component, position){\n\t\tvar renderedCallback;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(component._group){\n\t\t\tcomponent = component._group;\n\t\t}else if(component._row){\n\t\t\tcomponent = component._row;\n\t\t}\n\t\t\n\t\tcontents = typeof contents == \"function\" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents;\n\t\t\n\t\tthis.loadPopup(e, component, contents, renderedCallback, position);\n\t}\n\t\n\tloadPopup(e, component, contents, renderedCallback, position){\n\t\tvar touch = !(e instanceof MouseEvent),\n\t\tcontentsEl, popup;\n\t\t\n\t\tif(contents instanceof HTMLElement){\n\t\t\tcontentsEl = contents;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\tcontentsEl.innerHTML = contents;\n\t\t}\n\t\t\n\t\tcontentsEl.classList.add(\"tabulator-popup\");\n\n\t\tcontentsEl.addEventListener(\"click\", (e) =>{\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif(!touch){\n\t\t\te.preventDefault();\n\t\t}\n\t\t\n\t\tpopup = this.popup(contentsEl);\n\n\t\tif(typeof renderedCallback === \"function\"){\n\t\t\tpopup.renderCallback(renderedCallback);\n\t\t}\n\n\t\tif(e){\n\t\t\tpopup.show(e);\n\t\t}else{\n\t\t\tpopup.show(component.getElement(), position || \"center\");\n\t\t}\n\n\t\t\n\t\tpopup.hideOnBlur(() => {\n\t\t\tthis.dispatchExternal(\"popupClosed\", component.getComponent());\n\t\t});\n\n\n\n\t\tthis.dispatchExternal(\"popupOpened\", component.getComponent());\n\t}\n}\n\nPopup.moduleName = \"popup\";\n\nexport default Popup;\n","import Module from '../../core/Module.js';\n\nclass Print extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.element = false;\n\t\tthis.manualBlock = false;\n\t\tthis.beforeprintEventHandler = null;\n\t\tthis.afterprintEventHandler = null;\n\n\t\tthis.registerTableOption(\"printAsHtml\", false); //enable print as html\n\t\tthis.registerTableOption(\"printFormatter\", false); //printing page formatter\n\t\tthis.registerTableOption(\"printHeader\", false); //page header contents\n\t\tthis.registerTableOption(\"printFooter\", false); //page footer contents\n\t\tthis.registerTableOption(\"printStyled\", true); //enable print as html styling\n\t\tthis.registerTableOption(\"printRowRange\", \"visible\"); //restrict print to visible rows only\n\t\tthis.registerTableOption(\"printConfig\", {}); //print config options\n\n\t\tthis.registerColumnOption(\"print\");\n\t\tthis.registerColumnOption(\"titlePrint\");\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\tthis.beforeprintEventHandler = this.replaceTable.bind(this);\n\t\t\tthis.afterprintEventHandler = this.cleanup.bind(this);\n\n\t\t\twindow.addEventListener(\"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.addEventListener(\"afterprint\", this.afterprintEventHandler);\n\t\t\tthis.subscribe(\"table-destroy\", this.destroy.bind(this));\n\t\t}\n\n\t\tthis.registerTableFunction(\"print\", this.printFullscreen.bind(this));\n\t}\n\n\tdestroy(){\n\t\tif(this.table.options.printAsHtml){\n\t\t\twindow.removeEventListener( \"beforeprint\", this.beforeprintEventHandler );\n\t\t\twindow.removeEventListener( \"afterprint\", this.afterprintEventHandler );\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\n\treplaceTable(){\n\t\tif(!this.manualBlock){\n\t\t\tthis.element = document.createElement(\"div\");\n\t\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\t\tthis.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\t\tthis.table.element.style.display = \"none\";\n\n\t\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t\t}\n\t}\n\n\tcleanup(){\n\t\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\t\tif(this.element && this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\tthis.table.element.style.display = \"\";\n\t\t}\n\t}\n\n\tprintFullscreen(visible, style, config){\n\t\tvar scrollX = window.scrollX,\n\t\tscrollY = window.scrollY,\n\t\theaderEl = document.createElement(\"div\"),\n\t\tfooterEl = document.createElement(\"div\"),\n\t\ttableEl = this.table.modules.export.generateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, \"print\"),\n\t\theaderContent, footerContent;\n\n\t\tthis.manualBlock = true;\n\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\t\tif(this.table.options.printHeader){\n\t\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\t\tif(typeof headerContent == \"string\"){\n\t\t\t\theaderEl.innerHTML = headerContent;\n\t\t\t}else{\n\t\t\t\theaderEl.appendChild(headerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(headerEl);\n\t\t}\n\n\t\tthis.element.appendChild(tableEl);\n\n\t\tif(this.table.options.printFooter){\n\t\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\n\t\t\tif(typeof footerContent == \"string\"){\n\t\t\t\tfooterEl.innerHTML = footerContent;\n\t\t\t}else{\n\t\t\t\tfooterEl.appendChild(footerContent);\n\t\t\t}\n\n\t\t\tthis.element.appendChild(footerEl);\n\t\t}\n\n\t\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\t\tdocument.body.appendChild(this.element);\n\n\t\tif(this.table.options.printFormatter){\n\t\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t\t}\n\n\t\twindow.print();\n\n\t\tthis.cleanup();\n\n\t\twindow.scrollTo(scrollX, scrollY);\n\n\t\tthis.manualBlock = false;\n\t}\n}\n\nPrint.moduleName = \"print\";\n\nexport default Print;","import Module from '../../core/Module.js';\n\nclass ReactiveData extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.data = false;\n\t\tthis.blocked = false; //block reactivity while performing update\n\t\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\t\tthis.currentVersion = 0;\n\t\t\n\t\tthis.registerTableOption(\"reactiveData\", false); //enable data reactivity\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.reactiveData){\n\t\t\tthis.subscribe(\"cell-value-save-before\", this.block.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"cell-value-save-after\", this.unblock.bind(this, \"cellsave\"));\n\t\t\tthis.subscribe(\"row-data-save-before\", this.block.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-save-after\", this.unblock.bind(this, \"rowsave\"));\n\t\t\tthis.subscribe(\"row-data-init-after\", this.watchRow.bind(this));\n\t\t\tthis.subscribe(\"data-processing\", this.watchData.bind(this));\n\t\t\tthis.subscribe(\"table-destroy\", this.unwatchData.bind(this));\n\t\t}\n\t}\n\t\n\twatchData(data){\n\t\tvar self = this,\n\t\tversion;\n\t\t\n\t\tthis.currentVersion ++;\n\t\t\n\t\tversion = this.currentVersion;\n\t\t\n\t\tthis.unwatchData();\n\t\t\n\t\tthis.data = data;\n\t\t\n\t\t//override array push function\n\t\tthis.origFuncs.push = data.push;\n\t\t\n\t\tObject.defineProperty(this.data, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\t\n\t\t\t\t\tself.block(\"data-push\");\n\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.push.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-push\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array unshift function\n\t\tthis.origFuncs.unshift = data.unshift;\n\t\t\n\t\tObject.defineProperty(this.data, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tresult;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-unshift\");\n\t\t\t\t\t\n\t\t\t\t\targs.forEach((arg) => {\n\t\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresult = self.origFuncs.unshift.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-unshift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array shift function\n\t\tthis.origFuncs.shift = data.shift;\n\t\t\n\t\tObject.defineProperty(this.data, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-shift\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.shift.call(data);\n\n\t\t\t\t\tself.unblock(\"data-shift\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t//override array pop function\n\t\tthis.origFuncs.pop = data.pop;\n\t\t\n\t\tObject.defineProperty(this.data, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar row, result;\n\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-pop\");\n\t\t\t\t\t\n\t\t\t\t\tif(self.data.length){\n\t\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.pop.call(data);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-pop\");\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t//override array splice function\n\t\tthis.origFuncs.splice = data.splice;\n\t\t\n\t\tObject.defineProperty(this.data, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function(){\n\t\t\t\tvar args = Array.from(arguments),\n\t\t\t\tstart = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t\tend = args[1],\n\t\t\t\tnewRows = args[2] ? args.slice(2) : false,\n\t\t\t\tstartRow, result;\n\t\t\t\t\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"data-splice\");\n\t\t\t\t\t//add new rows\n\t\t\t\t\tif(newRows){\n\t\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(startRow){\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tnewRows.forEach((rowData) => {\n\t\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\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\t\n\t\t\t\t\t//delete removed rows\n\t\t\t\t\tif(end !== 0){\n\t\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\t\t\t\t\t\t\n\t\t\t\t\t\toldRows.forEach((rowData, i) => {\n\t\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(row){\n\t\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 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\t\n\t\t\t\t\tif(newRows || end !== 0){\n\t\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tresult = self.origFuncs.splice.apply(data, arguments);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"data-splice\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn result ;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchData(){\n\t\tif(this.data !== false){\n\t\t\tfor(var key in this.origFuncs){\n\t\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable:true,\n\t\t\t\t\twritable:true,\n\t\t\t\t\tvalue: this.origFuncs.key,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\twatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tthis.watchKey(row, data, key);\n\t\t}\n\t\t\n\t\tif(this.table.options.dataTree){\n\t\t\tthis.watchTreeChildren(row);\n\t\t}\n\t}\n\t\n\twatchTreeChildren (row){\n\t\tvar self = this,\n\t\tchildField = row.getData()[this.table.options.dataTreeChildField],\n\t\torigFuncs = {};\n\t\t\n\t\tif(childField){\n\t\t\t\n\t\t\torigFuncs.push = childField.push;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"push\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-push\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-push\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.unshift = childField.unshift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-unshift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-unshift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.shift = childField.shift;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-shift\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.shift.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-shift\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.pop = childField.pop;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-pop\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.pop.call(childField);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-pop\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\torigFuncs.splice = childField.splice;\n\t\t\t\n\t\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tif(!self.blocked){\n\t\t\t\t\t\tself.block(\"tree-splice\");\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\t\t\t\t\t\tthis.rebuildTree(row);\n\t\t\t\t\t\t\n\t\t\t\t\t\tself.unblock(\"tree-splice\");\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trebuildTree(row){\n\t\tthis.table.modules.dataTree.initializeRow(row);\n\t\tthis.table.modules.dataTree.layoutRow(row);\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\t\n\twatchKey(row, data, key){\n\t\tvar self = this,\n\t\tprops = Object.getOwnPropertyDescriptor(data, key),\n\t\tvalue = data[key],\n\t\tversion = this.currentVersion;\n\t\t\n\t\tObject.defineProperty(data, key, {\n\t\t\tset: (newValue) => {\n\t\t\t\tvalue = newValue;\n\t\t\t\tif(!self.blocked && version === self.currentVersion){\n\t\t\t\t\tself.block(\"key\");\n\t\t\t\t\t\n\t\t\t\t\tvar update = {};\n\t\t\t\t\tupdate[key] = newValue;\n\t\t\t\t\trow.updateData(update);\n\t\t\t\t\t\n\t\t\t\t\tself.unblock(\"key\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(props.set){\n\t\t\t\t\tprops.set(newValue);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget:() => {\n\t\t\t\t\n\t\t\t\tif(props.get){\n\t\t\t\t\tprops.get();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn value;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tunwatchRow(row){\n\t\tvar data = row.getData();\n\t\t\n\t\tfor(var key in data){\n\t\t\tObject.defineProperty(data, key, {\n\t\t\t\tvalue:data[key],\n\t\t\t});\n\t\t}\n\t}\n\t\n\tblock(key){\n\t\tif(!this.blocked){\n\t\t\tthis.blocked = key;\n\t\t}\n\t}\n\t\n\tunblock(key){\n\t\tif(this.blocked === key){\n\t\t\tthis.blocked = false;\n\t\t}\n\t}\n}\n\nReactiveData.moduleName = \"reactiveData\";\n\nexport default ReactiveData;\n\n\n\n","import Module from '../../core/Module.js';\n\nclass ResizeColumns extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.startColumn = false;\n\t\tthis.startX = false;\n\t\tthis.startWidth = false;\n\t\tthis.latestX = false;\n\t\tthis.handle = null;\n\t\tthis.initialNextColumn = null;\n\t\tthis.nextColumn = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.registerColumnOption(\"resizable\", true);\n\t\tthis.registerTableOption(\"resizableColumnFit\", false);\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-rendered\", this.layoutColumnHeader.bind(this));\n\t}\n\t\n\tinitializeEventWatchers(){\n\t\tif(!this.initialized){\n\t\t\t\n\t\t\tthis.subscribe(\"cell-rendered\", this.layoutCellHandles.bind(this));\n\t\t\tthis.subscribe(\"cell-delete\", this.deInitializeComponent.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"cell-height\", this.resizeHandle.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.columnLayoutUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-hide\", this.deInitializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.columnLayoutUpdated.bind(this));\n\t\t\tthis.subscribe(\"column-width\", this.columnWidthUpdated.bind(this));\n\t\t\t\n\t\t\tthis.subscribe(\"column-delete\", this.deInitializeComponent.bind(this));\n\t\t\tthis.subscribe(\"column-height\", this.resizeHandle.bind(this));\n\t\t\t\n\t\t\tthis.initialized = true;\n\t\t}\n\t}\n\t\n\t\n\tlayoutCellHandles(cell){\n\t\tif(cell.row.type === \"row\"){\n\t\t\tthis.deInitializeComponent(cell);\n\t\t\tthis.initializeColumn(\"cell\", cell, cell.column, cell.element);\n\t\t}\n\t}\n\t\n\tlayoutColumnHeader(column){\n\t\tif(column.definition.resizable){\n\t\t\tthis.initializeEventWatchers();\n\t\t\tthis.deInitializeComponent(column);\n\t\t\tthis.initializeColumn(\"header\", column, column, column.element);\n\t\t}\n\t}\n\t\n\tcolumnLayoutUpdated(column){\n\t\tvar prev = column.prevColumn();\n\t\t\n\t\tthis.reinitializeColumn(column);\n\t\t\n\t\tif(prev){\n\t\t\tthis.reinitializeColumn(prev);\n\t\t}\n\t}\n\t\n\tcolumnWidthUpdated(column){\n\t\tif(column.modules.frozen){\n\t\t\tif(this.table.modules.frozenColumns.leftColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}else if(this.table.modules.frozenColumns.rightColumns.includes(column)){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((col) => {\n\t\t\t\t\tthis.reinitializeColumn(col);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfrozenColumnOffset(column){\n\t\tvar offset = false;\n\n\t\tif(column.modules.frozen){\n\t\t\toffset = column.modules.frozen.marginValue; \n\n\t\t\tif(column.modules.frozen.position === \"left\"){\n\t\t\t\toffset += column.getWidth() - 3;\n\t\t\t}else{\n\t\t\t\tif(offset){\n\t\t\t\t\toffset -= 3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn offset !== false ? offset + \"px\" : false;\n\t}\n\t\n\treinitializeColumn(column){\n\t\tvar frozenOffset = this.frozenColumnOffset(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(cell.modules.resize && cell.modules.resize.handleEl){\n\t\t\t\tif(frozenOffset){\n\t\t\t\t\tcell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t\t\tcell.modules.resize.handleEl.style[\"z-index\"] = 11;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcell.element.after(cell.modules.resize.handleEl);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(column.modules.resize && column.modules.resize.handleEl){\n\t\t\tif(frozenOffset){\n\t\t\t\tcolumn.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.element.after(column.modules.resize.handleEl);\n\t\t}\n\t}\n\t\n\tinitializeColumn(type, component, column, element){\n\t\tvar self = this,\n\t\tvariableHeight = false,\n\t\tmode = column.definition.resizable,\n\t\tconfig = {},\n\t\tnearestColumn = column.getLastColumn();\n\t\t\n\t\t//set column resize mode\n\t\tif(type === \"header\"){\n\t\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\t\tconfig = {variableHeight:variableHeight};\n\t\t}\n\t\t\n\t\tif((mode === true || mode == type) && this._checkResizability(nearestColumn)){\n\t\t\t\n\t\t\tvar handle = document.createElement('span');\n\t\t\thandle.className = \"tabulator-col-resize-handle\";\n\t\t\t\n\t\t\thandle.addEventListener(\"click\", function(e){\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t\t\n\t\t\tvar handleDown = function(e){\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself.initialNextColumn = self.nextColumn = nearestColumn.nextColumn();\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t};\n\t\t\t\n\t\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\t\t\t\n\t\t\t//resize column on double click\n\t\t\thandle.addEventListener(\"dblclick\", (e) => {\n\t\t\t\tvar oldWidth = nearestColumn.getWidth();\n\t\t\t\t\n\t\t\t\te.stopPropagation();\n\t\t\t\tnearestColumn.reinitializeWidth(true);\n\t\t\t\t\n\t\t\t\tif(oldWidth !== nearestColumn.getWidth()){\n\t\t\t\t\tself.dispatch(\"column-resized\", nearestColumn);\n\t\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", nearestColumn.getComponent());\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(column.modules.frozen){\n\t\t\t\thandle.style.position = \"sticky\";\n\t\t\t\thandle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);\n\t\t\t}\n\t\t\t\n\t\t\tconfig.handleEl = handle;\n\t\t\t\n\t\t\tif(element.parentNode && column.visible){\n\t\t\t\telement.after(handle);\t\t\t\n\t\t\t}\n\t\t}\n\t\t\n\t\tcomponent.modules.resize = config;\n\t}\n\t\n\tdeInitializeColumn(column){\n\t\tthis.deInitializeComponent(column);\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tthis.deInitializeComponent(cell);\n\t\t});\n\t}\n\t\n\tdeInitializeComponent(component){\n\t\tvar handleEl;\n\t\t\n\t\tif(component.modules.resize){\n\t\t\thandleEl = component.modules.resize.handleEl;\n\t\t\t\n\t\t\tif(handleEl && handleEl.parentElement){\n\t\t\t\thandleEl.parentElement.removeChild(handleEl);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tresizeHandle(component, height){\n\t\tif(component.modules.resize && component.modules.resize.handleEl){\n\t\t\tcomponent.modules.resize.handleEl.style.height = height;\n\t\t}\n\t}\n\t\n\t_checkResizability(column){\n\t\treturn column.definition.resizable;\n\t}\n\t\n\t_mouseDown(e, column, handle){\n\t\tvar self = this;\n\t\t\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tfunction mouseMove(e){\n\t\t\tvar x = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX,\n\t\t\tstartDiff = x - self.startX,\n\t\t\tmoveDiff = x - self.latestX,\n\t\t\tblockedBefore, blockedAfter;\n\t\t\t\n\t\t\tself.latestX = x;\n\t\t\t\n\t\t\tif(self.table.rtl){\n\t\t\t\tstartDiff = -startDiff;\n\t\t\t\tmoveDiff = -moveDiff;\n\t\t\t}\n\t\t\t\n\t\t\tblockedBefore = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tcolumn.setWidth(self.startWidth + startDiff);\n\t\t\t\n\t\t\tblockedAfter = column.width == column.minWidth || column.width == column.maxWidth;\n\t\t\t\n\t\t\tif(moveDiff < 0){\n\t\t\t\tself.nextColumn = self.initialNextColumn;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){\n\t\t\t\tlet colWidth = self.nextColumn.getWidth();\n\t\t\t\t\n\t\t\t\tif(moveDiff > 0){\n\t\t\t\t\tif(colWidth <= self.nextColumn.minWidth){\n\t\t\t\t\t\tself.nextColumn = self.nextColumn.nextColumn();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(self.nextColumn){\n\t\t\t\t\tself.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tself.table.columnManager.rerenderColumns(true);\n\t\t\t\n\t\t\tif(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfunction mouseUp(e){\n\t\t\t\n\t\t\t//block editor from taking action while resizing is taking place\n\t\t\tif(self.startColumn.modules.edit){\n\t\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t\t}\n\t\t\t\n\t\t\tif(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){\n\t\t\t\tcolumn.checkCellHeights();\n\t\t\t}\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\t\t\t\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\t\t\t\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\t\t\t\n\t\t\tif(self.startWidth !== column.getWidth()){\n\t\t\t\tself.table.columnManager.verticalAlignHeaders();\n\n\t\t\t\tself.dispatch(\"column-resized\", column);\n\t\t\t\tself.table.externalEvents.dispatch(\"columnResized\", column.getComponent());\n\t\t\t}\n\t\t}\n\t\t\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\n\t\t\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 = true;\n\t\t}\n\t\t\n\t\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\t\tself.latestX = self.startX;\n\t\tself.startWidth = column.getWidth();\n\t\t\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeColumns.moduleName = \"resizeColumns\";\n\nexport default ResizeColumns;","import Module from '../../core/Module.js';\n\nclass ResizeRows extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.startColumn = false;\n\t\tthis.startY = false;\n\t\tthis.startHeight = false;\n\t\tthis.handle = null;\n\t\tthis.prevHandle = null;\n\n\t\tthis.registerTableOption(\"resizableRows\", false); //resizable rows\n\t}\n\n\tinitialize(){\n\t\tif(this.table.options.resizableRows){\n\t\t\tthis.subscribe(\"row-layout-after\", this.initializeRow.bind(this));\n\t\t}\n\t}\n\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\trowEl = row.getElement();\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-row-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-row-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(e){\n\t\t\tself.startRow = row;\n\t\t\tself._mouseDown(e, row, handle);\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, {passive: true});\n\n\t\tprevHandle.addEventListener(\"click\", function(e){\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function(e){\n\t\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\t\tif(prevRow){\n\t\t\t\tself.startRow = prevRow;\n\t\t\t\tself._mouseDown(e, prevRow, prevHandle);\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\trowEl.appendChild(handle);\n\t\trowEl.appendChild(prevHandle);\n\t}\n\n\t_mouseDown(e, row, handle){\n\t\tvar self = this;\n\n\t\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\t\tfunction mouseMove(e){\n\t\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t\t}\n\n\t\tfunction mouseUp(e){\n\n\t\t\t// //block editor from taking action while resizing is taking place\n\t\t\t// if(self.startColumn.modules.edit){\n\t\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t\t// }\n\n\t\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\t\tself.dispatchExternal(\"rowResized\", row.getComponent());\n\t\t}\n\n\t\te.stopPropagation(); //prevent resize from interfering with movable columns\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 = true;\n\t\t// }\n\n\t\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\t\tself.startHeight = row.getHeight();\n\n\t\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\t\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\t\thandle.addEventListener(\"touchmove\", mouseMove, {passive: true});\n\t\thandle.addEventListener(\"touchend\", mouseUp);\n\t}\n}\n\nResizeRows.moduleName = \"resizeRows\";\n\nexport default ResizeRows;","import Module from '../../core/Module.js';\n\nclass ResizeTable extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.binding = false;\n\t\tthis.visibilityObserver = false;\n\t\tthis.resizeObserver = false;\n\t\tthis.containerObserver = false;\n\t\t\n\t\tthis.tableHeight = 0;\n\t\tthis.tableWidth = 0;\n\t\tthis.containerHeight = 0;\n\t\tthis.containerWidth = 0;\n\t\t\n\t\tthis.autoResize = false;\n\t\t\n\t\tthis.visible = false;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.initialRedraw = false;\n\t\t\n\t\tthis.registerTableOption(\"autoResize\", true); //auto resize table\n\t}\n\t\n\tinitialize(){\n\t\tif(this.table.options.autoResize){\n\t\t\tvar table = this.table,\n\t\t\ttableStyle;\n\t\t\t\n\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\n\t\t\tif(table.element.parentNode){\n\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof IntersectionObserver !== \"undefined\" && typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\"){\n\t\t\t\t\n\t\t\t\tthis.initializeVisibilityObserver();\n\t\t\t\t\n\t\t\t\tthis.autoResize = true;\n\t\t\t\t\n\t\t\t\tthis.resizeObserver = new ResizeObserver((entry) => {\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){\n\t\t\t\t\t\t\tthis.tableHeight = nodeHeight;\n\t\t\t\t\t\t\tthis.tableWidth = nodeWidth;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(table.element.parentNode){\n\t\t\t\t\t\t\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.resizeObserver.observe(table.element);\n\t\t\t\t\n\t\t\t\ttableStyle = window.getComputedStyle(table.element);\n\t\t\t\t\n\t\t\t\tif(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))){\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver = new ResizeObserver((entry) => {\n\t\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){\n\t\t\t\t\t\t\t\tthis.containerHeight = nodeHeight;\n\t\t\t\t\t\t\t\tthis.containerWidth = nodeWidth;\n\t\t\t\t\t\t\t\tthis.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t\t\tthis.tableWidth = table.element.clientWidth;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.redrawTable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.subscribe(\"table-resize\", this.tableResized.bind(this));\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tthis.binding = function(){\n\t\t\t\t\tif(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){\n\t\t\t\t\t\ttable.columnManager.rerenderColumns(true);\n\t\t\t\t\t\ttable.redraw();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\twindow.addEventListener(\"resize\", this.binding);\n\t\t\t}\n\t\t\t\n\t\t\tthis.subscribe(\"table-destroy\", this.clearBindings.bind(this));\n\t\t}\n\t}\n\t\n\tinitializeVisibilityObserver(){\n\t\tthis.visibilityObserver = new IntersectionObserver((entries) => {\n\t\t\tthis.visible = entries[0].isIntersecting;\n\t\t\t\n\t\t\tif(!this.initialized){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.initialRedraw = !this.visible;\n\t\t\t}else{\n\t\t\t\tif(this.visible){\n\t\t\t\t\tthis.redrawTable(this.initialRedraw);\n\t\t\t\t\tthis.initialRedraw = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.visibilityObserver.observe(this.table.element);\n\t}\n\t\n\tredrawTable(force){\n\t\tif(this.initialized && this.visible){\n\t\t\tthis.table.columnManager.rerenderColumns(true);\n\t\t\tthis.table.redraw(force);\n\t\t}\n\t}\n\t\n\ttableResized(){\n\t\tthis.table.rowManager.redraw();\n\t}\n\t\n\tclearBindings(){\n\t\tif(this.binding){\n\t\t\twindow.removeEventListener(\"resize\", this.binding);\n\t\t}\n\t\t\n\t\tif(this.resizeObserver){\n\t\t\tthis.resizeObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.visibilityObserver){\n\t\t\tthis.visibilityObserver.unobserve(this.table.element);\n\t\t}\n\t\t\n\t\tif(this.containerObserver){\n\t\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t\t}\n\t}\n}\n\nResizeTable.moduleName = \"resizeTable\";\n\nexport default ResizeTable;","import Module from '../../core/Module.js';\n\nclass ResponsiveLayout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.columns = [];\n\t\tthis.hiddenColumns = [];\n\t\tthis.mode = \"\";\n\t\tthis.index = 0;\n\t\tthis.collapseFormatter = [];\n\t\tthis.collapseStartOpen = true;\n\t\tthis.collapseHandleColumn = false;\n\n\t\tthis.registerTableOption(\"responsiveLayout\", false); //responsive layout flags\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseStartOpen\", true); //start showing collapsed data\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseUseFormatters\", true); //responsive layout collapse formatter\n\t\tthis.registerTableOption(\"responsiveLayoutCollapseFormatter\", false); //responsive layout collapse formatter\n\n\t\tthis.registerColumnOption(\"responsive\");\n\t}\n\n\t//generate responsive columns list\n\tinitialize(){\n\t\tif(this.table.options.responsiveLayout){\n\t\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\t\tthis.subscribe(\"column-show\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"column-hide\", this.updateColumnVisibility.bind(this));\n\t\t\tthis.subscribe(\"columns-loaded\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-moved\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-add\", this.initializeResponsivity.bind(this));\n\t\t\tthis.subscribe(\"column-delete\", this.initializeResponsivity.bind(this));\n\n\t\t\tthis.subscribe(\"table-redrawing\", this.tableRedraw.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.responsiveLayout === \"collapse\"){\n\t\t\t\tthis.subscribe(\"row-data-changed\", this.generateCollapsedRowContent.bind(this));\n\t\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\t\tthis.subscribe(\"row-layout\", this.layoutRow.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\ttableRedraw(force){\n\t\tif([\"fitColumns\", \"fitDataStretch\"].indexOf(this.layoutMode()) === -1){\n\t\t\tif(!force){\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tinitializeResponsivity(){\n\t\tvar columns = [];\n\n\t\tthis.mode = this.table.options.responsiveLayout;\n\t\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\t\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\t\tthis.hiddenColumns = [];\n\n\t\t//determine level of responsivity for each column\n\t\tthis.table.columnManager.columnsByIndex.forEach((column, i) => {\n\t\t\tif(column.modules.responsive){\n\t\t\t\tif(column.modules.responsive.order && column.modules.responsive.visible){\n\t\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\t\tcolumns.push(column);\n\n\t\t\t\t\tif(!column.visible && this.mode === \"collapse\"){\n\t\t\t\t\t\tthis.hiddenColumns.push(column);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//sort list by responsivity\n\t\tcolumns = columns.reverse();\n\t\tcolumns = columns.sort((a, b) => {\n\t\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\t\treturn diff || (b.modules.responsive.index - a.modules.responsive.index);\n\t\t});\n\n\t\tthis.columns = columns;\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.generateCollapsedContent();\n\t\t}\n\n\t\t//assign collapse column\n\t\tfor (let col of this.table.columnManager.columnsByIndex){\n\t\t\tif(col.definition.formatter == \"responsiveCollapse\"){\n\t\t\t\tthis.collapseHandleColumn = col;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(this.collapseHandleColumn){\n\t\t\tif(this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}else{\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//define layout information\n\tinitializeColumn(column){\n\t\tvar def = column.getDefinition();\n\n\t\tcolumn.modules.responsive = {order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible:def.visible === false ? false : true};\n\t}\n\n\tinitializeRow(row){\n\t\tvar el;\n\n\t\tif(row.type !== \"calc\"){\n\t\t\tel = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\t\trow.modules.responsiveLayout = {\n\t\t\t\telement:el,\n\t\t\t\topen:this.collapseStartOpen,\n\t\t\t};\n\n\t\t\tif(!this.collapseStartOpen){\n\t\t\t\tel.style.display = 'none';\n\t\t\t}\n\t\t}\n\t}\n\n\tlayoutRow(row){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t}\n\t}\n\n\t//update column visibility\n\tupdateColumnVisibility(column, responsiveToggle){\n\t\tif(!responsiveToggle && column.modules.responsive){\n\t\t\tcolumn.modules.responsive.visible = column.visible;\n\t\t\tthis.initializeResponsivity();\n\t\t}\n\t}\n\n\thideColumn(column){\n\t\tvar colCount = this.hiddenColumns.length;\n\n\t\tcolumn.hide(false, true);\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tthis.hiddenColumns.unshift(column);\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !colCount){\n\t\t\t\tthis.collapseHandleColumn.show();\n\t\t\t}\n\t\t}\n\t}\n\n\tshowColumn(column){\n\t\tvar index;\n\n\t\tcolumn.show(false, true);\n\t\t//set column width to prevent calculation loops on uninitialized columns\n\t\tcolumn.setWidth(column.getWidth());\n\n\t\tif(this.mode === \"collapse\"){\n\t\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\t\tif(index > -1){\n\t\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t\t}\n\n\t\t\tthis.generateCollapsedContent();\n\n\t\t\tif(this.collapseHandleColumn && !this.hiddenColumns.length){\n\t\t\t\tthis.collapseHandleColumn.hide();\n\t\t\t}\n\t\t}\n\t}\n\n\t//redraw columns to fit space\n\tupdate(){\n\t\tvar working = true;\n\n\t\twhile(working){\n\n\t\t\tlet width = this.table.modules.layout.getMode() == \"fitColumns\" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth();\n\n\t\t\tlet diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width;\n\n\t\t\tif(diff < 0){\n\t\t\t\t//table is too wide\n\t\t\t\tlet column = this.columns[this.index];\n\n\t\t\t\tif(column){\n\t\t\t\t\tthis.hideColumn(column);\n\t\t\t\t\tthis.index ++;\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\t//table has spare space\n\t\t\t\tlet column = this.columns[this.index -1];\n\n\t\t\t\tif(column){\n\t\t\t\t\tif(diff > 0){\n\t\t\t\t\t\tif(diff >= column.getWidth()){\n\t\t\t\t\t\t\tthis.showColumn(column);\n\t\t\t\t\t\t\tthis.index --;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tworking = false;\n\t\t\t\t\t\t}\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}\n\n\t\t\tif(!this.table.rowManager.activeRowsCount){\n\t\t\t\tthis.table.rowManager.renderEmptyScroll();\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedContent(){\n\t\tvar rows = this.table.rowManager.getDisplayRows();\n\n\t\trows.forEach((row) => {\n\t\t\tthis.generateCollapsedRowContent(row);\n\t\t});\n\t}\n\n\tgenerateCollapsedRowContent(row){\n\t\tvar el, contents;\n\n\t\tif(row.modules.responsiveLayout){\n\t\t\tel = row.modules.responsiveLayout.element;\n\n\t\t\twhile(el.firstChild) el.removeChild(el.firstChild);\n\n\t\t\tcontents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\t\tif(contents){\n\t\t\t\tel.appendChild(contents);\n\t\t\t}\n\t\t}\n\t}\n\n\tgenerateCollapsedRowData(row){\n\t\tvar data = row.getData(),\n\t\toutput = [],\n\t\tmockCellComponent;\n\n\t\tthis.hiddenColumns.forEach((column) => {\n\t\t\tvar value = column.getFieldValue(data);\n\n\t\t\tif(column.definition.title && column.field){\n\t\t\t\tif(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){\n\n\t\t\t\t\tmockCellComponent = {\n\t\t\t\t\t\tvalue:false,\n\t\t\t\t\t\tdata:{},\n\t\t\t\t\t\tgetValue:function(){\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetData:function(){\n\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetType:function(){\n\t\t\t\t\t\t\treturn \"cell\";\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetElement:function(){\n\t\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetRow:function(){\n\t\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetColumn:function(){\n\t\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgetTable:() => {\n\t\t\t\t\t\t\treturn this.table;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction onRendered(callback){\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\toutput.push({\n\t\t\t\t\t\tfield: column.field,\n\t\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn output;\n\t}\n\n\tformatCollapsedData(data){\n\t\tvar list = document.createElement(\"table\");\n\n\t\tdata.forEach(function(item){\n\t\t\tvar row = document.createElement(\"tr\");\n\t\t\tvar titleData = document.createElement(\"td\");\n\t\t\tvar valueData = document.createElement(\"td\");\n\t\t\tvar node_content;\n\n\t\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\t\ttitleData.appendChild(titleHighlight);\n\t\t\tthis.langBind(\"columns|\" + item.field, function(text){\n\t\t\t\ttitleHighlight.innerHTML = text || item.title;\n\t\t\t});\n\n\t\t\tif(item.value instanceof Node){\n\t\t\t\tnode_content = document.createElement(\"div\");\n\t\t\t\tnode_content.appendChild(item.value);\n\t\t\t\tvalueData.appendChild(node_content);\n\t\t\t}else{\n\t\t\t\tvalueData.innerHTML = item.value;\n\t\t\t}\n\n\t\t\trow.appendChild(titleData);\n\t\t\trow.appendChild(valueData);\n\t\t\tlist.appendChild(row);\n\t\t}, this);\n\n\t\treturn Object.keys(data).length ? list : \"\";\n\t}\n}\n\nResponsiveLayout.moduleName = \"responsiveLayout\";\n\nexport default ResponsiveLayout;\n","import Module from '../../core/Module.js';\n\nclass SelectRow extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = false; //flag selecting in progress\n\t\tthis.lastClickedRow = false; //last clicked row\n\t\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\t\tthis.selectedRows = []; //hold selected rows\n\t\tthis.headerCheckboxElement = null; // hold header select element\n\t\t\n\t\tthis.registerTableOption(\"selectableRows\", \"highlight\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRowsRangeMode\", \"drag\"); //highlight rows on hover\n\t\tthis.registerTableOption(\"selectableRowsRollingSelection\", true); //roll selection once maximum number of selectable rows is reached\n\t\tthis.registerTableOption(\"selectableRowsPersistence\", true); // maintain selection when table view is updated\n\t\tthis.registerTableOption(\"selectableRowsCheck\", function(data, row){return true;}); //check whether row is selectable\n\t\t\n\t\tthis.registerTableFunction(\"selectRow\", this.selectRows.bind(this));\n\t\tthis.registerTableFunction(\"deselectRow\", this.deselectRows.bind(this));\n\t\tthis.registerTableFunction(\"toggleSelectRow\", this.toggleRow.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedRows\", this.getSelectedRows.bind(this));\n\t\tthis.registerTableFunction(\"getSelectedData\", this.getSelectedData.bind(this));\n\t\t\n\t\t//register component functions\n\t\tthis.registerComponentFunction(\"row\", \"select\", this.selectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"deselect\", this.deselectRows.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"toggleSelect\", this.toggleRow.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"isSelected\", this.isRowSelected.bind(this));\n\t}\n\t\n\tinitialize(){\n\n\t\tthis.deprecatedOptionsCheck();\n\n\t\tif(this.table.options.selectableRows === \"highlight\" && this.table.options.selectableRange){\n\t\t\tthis.table.options.selectableRows = false;\n\t\t}\n\n\t\tif(this.table.options.selectableRows !== false){\n\t\t\tthis.subscribe(\"row-init\", this.initializeRow.bind(this));\n\t\t\tthis.subscribe(\"row-deleting\", this.rowDeleted.bind(this));\n\t\t\tthis.subscribe(\"rows-wipe\", this.clearSelectionData.bind(this));\n\t\t\tthis.subscribe(\"rows-retrieve\", this.rowRetrieve.bind(this));\n\t\t\t\n\t\t\tif(this.table.options.selectableRows && !this.table.options.selectableRowsPersistence){\n\t\t\t\tthis.subscribe(\"data-refreshing\", this.deselectRows.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheck(\"selectable\", \"selectableRows\", true);\n\t\tthis.deprecationCheck(\"selectableRollingSelection\", \"selectableRowsRollingSelection\", true);\n\t\tthis.deprecationCheck(\"selectableRangeMode\", \"selectableRowsRangeMode\", true);\n\t\tthis.deprecationCheck(\"selectablePersistence\", \"selectableRowsPersistence\", true);\n\t\tthis.deprecationCheck(\"selectableCheck\", \"selectableRowsCheck\", true);\n\t}\n\t\n\trowRetrieve(type, prevValue){\n\t\treturn type === \"selected\" ? this.selectedRows : prevValue;\n\t}\n\t\n\trowDeleted(row){\n\t\tthis._deselectRow(row, true);\n\t}\n\t\n\tclearSelectionData(silent){\n\t\tvar prevSelected = this.selectedRows.length;\n\n\t\tthis.selecting = false;\n\t\tthis.lastClickedRow = false;\n\t\tthis.selectPrev = [];\n\t\tthis.selectedRows = [];\n\t\t\n\t\tif(prevSelected && silent !== true){\n\t\t\tthis._rowSelectionChanged();\n\t\t}\n\t}\n\t\n\tinitializeRow(row){\n\t\tvar self = this,\n\t\tselectable = self.checkRowSelectability(row),\n\t\telement = row.getElement();\n\t\t\n\t\t// trigger end of row selection\n\t\tvar endSelect = function(){\n\t\t\t\n\t\t\tsetTimeout(function(){\n\t\t\t\tself.selecting = false;\n\t\t\t}, 50);\n\t\t\t\n\t\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t\t};\n\t\t\n\t\trow.modules.select = {selected:false};\n\n\t\telement.classList.toggle(\"tabulator-selectable\", selectable);\n\t\telement.classList.toggle(\"tabulator-unselectable\", !selectable);\n\t\t\n\t\t//set row selection class\n\t\tif(self.checkRowSelectability(row)){\t\t\t\n\t\t\tif(self.table.options.selectableRows && self.table.options.selectableRows != \"highlight\"){\n\t\t\t\tif(self.table.options.selectableRowsRangeMode === \"click\"){\n\t\t\t\t\telement.addEventListener(\"click\", this.handleComplexRowClick.bind(this, row));\n\t\t\t\t}else{\n\t\t\t\t\telement.addEventListener(\"click\", function(e){\n\t\t\t\t\t\tif(!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!self.selecting){\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mousedown\", function(e){\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selecting = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.selectPrev = [];\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\telement.addEventListener(\"mouseenter\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(self.selectPrev[1] == row){\n\t\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\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\t\n\t\t\t\t\telement.addEventListener(\"mouseout\", function(e){\n\t\t\t\t\t\tif(self.selecting){\n\t\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\t\tself.selectPrev.unshift(row);\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\t\n\thandleComplexRowClick(row, e){\n\t\tif(e.shiftKey){\n\t\t\tthis.table._clearSelection();\n\t\t\tthis.lastClickedRow = this.lastClickedRow || row;\n\t\t\t\n\t\t\tvar lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow);\n\t\t\tvar rowIdx = this.table.rowManager.getDisplayRowIndex(row);\n\t\t\t\n\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\n\t\t\tvar rows = this.table.rowManager.getDisplayRows().slice(0);\n\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\t\t\t\n\t\t\tif(e.ctrlKey || e.metaKey){\n\t\t\t\ttoggledRows.forEach((toggledRow)=>{\n\t\t\t\t\tif(toggledRow !== this.lastClickedRow){\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.table.options.selectableRows !== true && !this.isRowSelected(row)){\n\t\t\t\t\t\t\tif(this.selectedRows.length < this.table.options.selectableRows){\n\t\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.toggleRow(toggledRow);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.lastClickedRow = row;\n\t\t\t}else{\n\t\t\t\tthis.deselectRows(undefined, true);\n\t\t\t\t\n\t\t\t\tif(this.table.options.selectableRows !== true){\n\t\t\t\t\tif(toggledRows.length > this.table.options.selectableRows){\n\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, this.table.options.selectableRows);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectRows(toggledRows);\n\t\t\t}\n\t\t\tthis.table._clearSelection();\n\t\t}\n\t\telse if(e.ctrlKey || e.metaKey){\n\t\t\tthis.toggleRow(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}else{\n\t\t\tthis.deselectRows(undefined, true);\n\t\t\tthis.selectRows(row);\n\t\t\tthis.lastClickedRow = row;\n\t\t}\n\t}\n\n\tcheckRowSelectability(row){\n\t\tif(row && row.type === \"row\"){\n\t\t\treturn this.table.options.selectableRowsCheck.call(this.table, row.getComponent());\n\t\t}\n\n\t\treturn false;\n\t}\n\t\n\t//toggle row selection\n\ttoggleRow(row){\n\t\tif(this.checkRowSelectability(row)){\n\t\t\tif(row.modules.select && row.modules.select.selected){\n\t\t\t\tthis._deselectRow(row);\n\t\t\t}else{\n\t\t\t\tthis._selectRow(row);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//select a number of rows\n\tselectRows(rows){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"number\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\tbreak;\n\t\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._selectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(false, changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._selectRow(rowMatch, false, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//select an individual row\n\t_selectRow(rowInfo, silent, force){\n\t\t//handle max row count\n\t\tif(!isNaN(this.table.options.selectableRows) && this.table.options.selectableRows !== true && !force){\n\t\t\tif(this.selectedRows.length >= this.table.options.selectableRows){\n\t\t\t\tif(this.table.options.selectableRowsRollingSelection){\n\t\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t\t}else{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tvar row = this.table.rowManager.findRow(rowInfo);\n\t\t\n\t\tif(row){\n\t\t\tif(this.selectedRows.indexOf(row) == -1){\n\t\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = true;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.selectedRows.push(row);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowSelected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tthis._rowSelectionChanged(silent, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tisRowSelected(row){\n\t\treturn this.selectedRows.indexOf(row) !== -1;\n\t}\n\t\n\t//deselect a number of rows\n\tdeselectRows(rows, silent){\n\t\tvar changes = [], \n\t\trowMatch, change;\n\t\t\n\t\tswitch(typeof rows){\n\t\t\tcase \"undefined\":\n\t\t\t\trowMatch = Object.assign([], this.selectedRows);\n\t\t\t\tbreak;\n\n\t\t\tcase \"number\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"string\":\n\t\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\t\t\t\n\t\t\t\tif(!rowMatch){\n\t\t\t\t\trowMatch = this.table.rowManager.getRows(rows);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trowMatch = rows;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(Array.isArray(rowMatch)){\n\t\t\tif(rowMatch.length){\n\t\t\t\trowMatch.forEach((row) => {\n\t\t\t\t\tchange = this._deselectRow(row, true, true);\n\n\t\t\t\t\tif(change){\n\t\t\t\t\t\tchanges.push(change);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged(silent, [], changes);\n\t\t\t}\n\t\t}else{\n\t\t\tif(rowMatch){\n\t\t\t\tthis._deselectRow(rowMatch, silent, true);\n\t\t\t}\n\t\t}\t\n\t}\n\t\n\t//deselect an individual row\n\t_deselectRow(rowInfo, silent){\n\t\tvar self = this,\n\t\trow = self.table.rowManager.findRow(rowInfo),\n\t\tindex, element;\n\t\t\n\t\tif(row){\n\t\t\tindex = self.selectedRows.findIndex(function(selectedRow){\n\t\t\t\treturn selectedRow == row;\n\t\t\t});\n\t\t\t\n\t\t\tif(index > -1){\n\n\t\t\t\telement = row.getElement();\n\t\t\t\t\n\t\t\t\tif(element){\n\t\t\t\t\telement.classList.remove(\"tabulator-selected\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(!row.modules.select){\n\t\t\t\t\trow.modules.select = {};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trow.modules.select.selected = false;\n\t\t\t\tif(row.modules.select.checkboxEl){\n\t\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t\t}\n\t\t\t\tself.selectedRows.splice(index, 1);\n\t\t\t\t\n\t\t\t\tif(this.table.options.dataTreeSelectPropagate){\n\t\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatchExternal(\"rowDeselected\", row.getComponent());\n\t\t\t\t\n\t\t\t\tself._rowSelectionChanged(silent, undefined, row);\n\n\t\t\t\treturn row;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!silent){\n\t\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tgetSelectedData(){\n\t\tvar data = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\tdata.push(row.getData());\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetSelectedRows(){\n\t\tvar rows = [];\n\t\t\n\t\tthis.selectedRows.forEach(function(row){\n\t\t\trows.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t_rowSelectionChanged(silent, selected = [], deselected = []){\n\t\tif(this.headerCheckboxElement){\n\t\t\tif(this.selectedRows.length === 0){\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else if(this.table.rowManager.rows.length === this.selectedRows.length){\n\t\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t\t} else {\n\t\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif(!silent){\n\t\t\tif(!Array.isArray(selected)){\n\t\t\t\tselected = [selected];\n\t\t\t}\n\n\t\t\tselected = selected.map(row => row.getComponent());\n\n\t\t\tif(!Array.isArray(deselected)){\n\t\t\t\tdeselected = [deselected];\n\t\t\t}\n\n\t\t\tdeselected = deselected.map(row => row.getComponent());\n\n\t\t\tthis.dispatchExternal(\"rowSelectionChanged\", this.getSelectedData(), this.getSelectedRows(), selected, deselected);\n\t\t}\n\t}\n\t\n\tregisterRowSelectCheckbox (row, element) {\n\t\tif(!row._row.modules.select){\n\t\t\trow._row.modules.select = {};\n\t\t}\n\t\t\n\t\trow._row.modules.select.checkboxEl = element;\n\t}\n\t\n\tregisterHeaderSelectCheckbox (element) {\n\t\tthis.headerCheckboxElement = element;\n\t}\n\t\n\tchildRowSelection(row, select){\n\t\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\t\t\n\t\tif(select){\n\t\t\tfor(let child of children){\n\t\t\t\tthis._selectRow(child, true);\n\t\t\t}\n\t\t}else{\n\t\t\tfor(let child of children){\n\t\t\t\tthis._deselectRow(child, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nSelectRow.moduleName = \"selectRow\";\n\nexport default SelectRow;","//sort datetime\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar DT = window.DateTime || luxon.DateTime;\n\tvar format = params.format || \"dd/MM/yyyy HH:mm:ss\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tif(typeof DT != \"undefined\"){\n\t\tif(!DT.isDateTime(a)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\ta = DT.fromISO(String(a));\n\t\t\t}else{\n\t\t\t\ta = DT.fromFormat(String(a), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!DT.isDateTime(b)){\n\t\t\tif(format === \"iso\"){\n\t\t\t\tb = DT.fromISO(String(b));\n\t\t\t}else{\n\t\t\t\tb = DT.fromFormat(String(b), format);\n\t\t\t}\n\t\t}\n\n\t\tif(!a.isValid){\n\t\t\temptyAlign = !b.isValid ? 0 : -1;\n\t\t}else if(!b.isValid){\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\n\t}else{\n\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on luxon.js\");\n\t}\n}","import number from './sorters/number.js';\nimport string from './sorters/string.js';\nimport date from './sorters/date.js';\nimport time from './sorters/time.js';\nimport datetime from './sorters/datetime.js';\nimport boolean from './sorters/boolean.js';\nimport array from './sorters/array.js';\nimport exists from './sorters/exists.js';\nimport alphanum from './sorters/alphanum.js';\n\nexport default {\n\tnumber:number,\n\tstring:string,\n\tdate:date,\n\ttime:time,\n\tdatetime:datetime,\n\tboolean:boolean,\n\tarray:array,\n\texists:exists,\n\talphanum:alphanum\n};","//sort numbers\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar decimal = params.decimalSeparator;\n\tvar thousand = params.thousandSeparator;\n\tvar emptyAlign = 0;\n\n\ta = String(a);\n\tb = String(b);\n\n\tif(thousand){\n\t\ta = a.split(thousand).join(\"\");\n\t\tb = b.split(thousand).join(\"\");\n\t}\n\n\tif(decimal){\n\t\ta = a.split(decimal).join(\".\");\n\t\tb = b.split(decimal).join(\".\");\n\t}\n\n\ta = parseFloat(a);\n\tb = parseFloat(b);\n\n\t//handle non numeric values\n\tif(isNaN(a)){\n\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t}else if(isNaN(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\treturn a - b;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort strings\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\tvar locale;\n\n\t//handle empty values\n\tif(!a){\n\t\temptyAlign = !b ? 0 : -1;\n\t}else if(!b){\n\t\temptyAlign = 1;\n\t}else{\n\t\t//compare valid values\n\t\tswitch(typeof params.locale){\n\t\t\tcase \"boolean\":\n\t\t\t\tif(params.locale){\n\t\t\t\t\tlocale = this.langLocale();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tlocale = params.locale;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import datetime from './datetime.js';\n\n//sort date\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"dd/MM/yyyy\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","import datetime from './datetime.js';\n\n//sort times\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tif(!params.format){\n\t\tparams.format = \"HH:mm\";\n\t}\n\n\treturn datetime.call(this, a, b, aRow, bRow, column, dir, params);\n}","//sort booleans\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\treturn el1 - el2;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar type = params.type || \"length\",\n\talignEmptyValues = params.alignEmptyValues,\n\temptyAlign = 0;\n\n\tfunction calc(value){\n\t\tvar result;\n\n\t\tswitch(type){\n\t\t\tcase \"length\":\n\t\t\t\tresult = value.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"sum\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tcase \"max\":\n\t\t\t\tresult = Math.max.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"min\":\n\t\t\t\tresult = Math.min.apply(null, value) ;\n\t\t\t\tbreak;\n\n\t\t\tcase \"avg\":\n\t\t\t\tresult = value.reduce(function(c, d){\n\t\t\t\t\treturn c + d;\n\t\t\t\t}) / value.length;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t//handle non array values\n\tif(!Array.isArray(a)){\n\t\temptyAlign = !Array.isArray(b) ? 0 : -1;\n\t}else if(!Array.isArray(b)){\n\t\temptyAlign = 1;\n\t}else{\n\t\treturn calc(b) - calc(a);\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","//sort if element contains any data\nexport default function(a, b, aRow, bRow, column, dir, params){\n\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\treturn el1 - el2;\n}","//sort alpha numeric strings\nexport default function(as, bs, aRow, bRow, column, dir, params){\n\tvar a, b, a1, b1, i= 0, L, rx = /(\\d+)|(\\D+)/g, rd = /\\d/;\n\tvar alignEmptyValues = params.alignEmptyValues;\n\tvar emptyAlign = 0;\n\n\t//handle empty values\n\tif(!as && as!== 0){\n\t\temptyAlign = !bs && bs!== 0 ? 0 : -1;\n\t}else if(!bs && bs!== 0){\n\t\temptyAlign = 1;\n\t}else{\n\n\t\tif(isFinite(as) && isFinite(bs)) return as - bs;\n\t\ta = String(as).toLowerCase();\n\t\tb = String(bs).toLowerCase();\n\t\tif(a === b) return 0;\n\t\tif(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\ta = a.match(rx);\n\t\tb = b.match(rx);\n\t\tL = a.length > b.length ? b.length : a.length;\n\t\twhile(i < L){\n\t\t\ta1= a[i];\n\t\t\tb1= b[i++];\n\t\t\tif(a1 !== b1){\n\t\t\t\tif(isFinite(a1) && isFinite(b1)){\n\t\t\t\t\tif(a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\tif(b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\treturn a1 - b1;\n\t\t\t\t}\n\t\t\t\telse return a1 > b1 ? 1 : -1;\n\t\t\t}\n\t\t}\n\n\t\treturn a.length > b.length;\n\t}\n\n\t//fix empty values in position\n\tif((alignEmptyValues === \"top\" && dir === \"desc\") || (alignEmptyValues === \"bottom\" && dir === \"asc\")){\n\t\temptyAlign *= -1;\n\t}\n\n\treturn emptyAlign;\n}","import Module from '../../core/Module.js';\n\nimport defaultSorters from './defaults/sorters.js';\n\nclass Sort extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.sortList = []; //holder current sort\n\t\tthis.changed = false; //has the sort changed since last render\n\t\t\n\t\tthis.registerTableOption(\"sortMode\", \"local\"); //local or remote sorting\n\t\t\n\t\tthis.registerTableOption(\"initialSort\", false); //initial sorting criteria\n\t\tthis.registerTableOption(\"columnHeaderSortMulti\", true); //multiple or single column sorting\n\t\tthis.registerTableOption(\"sortOrderReverse\", false); //reverse internal sort ordering\n\t\tthis.registerTableOption(\"headerSortElement\", \"
        \"); //header sort element\n\t\tthis.registerTableOption(\"headerSortClickElement\", \"header\"); //element which triggers sort when clicked\n\t\t\n\t\tthis.registerColumnOption(\"sorter\");\n\t\tthis.registerColumnOption(\"sorterParams\");\n\t\t\n\t\tthis.registerColumnOption(\"headerSort\", true);\n\t\tthis.registerColumnOption(\"headerSortStartingDir\");\n\t\tthis.registerColumnOption(\"headerSortTristate\");\n\t\t\n\t}\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"column-layout\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"table-built\", this.tableBuilt.bind(this));\n\t\tthis.registerDataHandler(this.sort.bind(this), 20);\n\t\t\n\t\tthis.registerTableFunction(\"setSort\", this.userSetSort.bind(this));\n\t\tthis.registerTableFunction(\"getSorters\", this.getSort.bind(this));\n\t\tthis.registerTableFunction(\"clearSort\", this.clearSort.bind(this));\n\t\t\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.subscribe(\"data-params\", this.remoteSortParams.bind(this));\n\t\t}\n\t}\n\t\n\ttableBuilt(){\n\t\tif(this.table.options.initialSort){\n\t\t\tthis.setSort(this.table.options.initialSort);\n\t\t}\n\t}\n\t\n\tremoteSortParams(data, config, silent, params){\n\t\tvar sorters = this.getSort();\n\t\t\n\t\tsorters.forEach((item) => {\n\t\t\tdelete item.column;\n\t\t});\n\t\t\n\t\tparams.sort = sorters;\n\t\t\n\t\treturn params;\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\tuserSetSort(sortList, dir){\n\t\tthis.setSort(sortList, dir);\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\t\n\tclearSort(){\n\t\tthis.clear();\n\t\t// this.table.rowManager.sorterRefresh();\n\t\tthis.refreshSort();\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\t//initialize column header for sorting\n\tinitializeColumn(column){\n\t\tvar sorter = false,\n\t\tcolEl,\n\t\tarrowEl;\n\t\t\n\t\tswitch(typeof column.definition.sorter){\n\t\t\tcase \"string\":\n\t\t\t\tif(Sort.sorters[column.definition.sorter]){\n\t\t\t\t\tsorter = Sort.sorters[column.definition.sorter];\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\tsorter = column.definition.sorter;\n\t\t\t\tbreak;\n\t\t}\n\t\t\n\t\tcolumn.modules.sort = {\n\t\t\tsorter:sorter, dir:\"none\",\n\t\t\tparams:column.definition.sorterParams || {},\n\t\t\tstartingDir:column.definition.headerSortStartingDir || \"asc\",\n\t\t\ttristate: column.definition.headerSortTristate,\n\t\t};\n\t\t\n\t\tif(column.definition.headerSort !== false){\n\t\t\t\n\t\t\tcolEl = column.getElement();\n\t\t\t\n\t\t\tcolEl.classList.add(\"tabulator-sortable\");\n\t\t\t\n\t\t\tarrowEl = document.createElement(\"div\");\n\t\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\t\t\t\n\t\t\tswitch(this.table.options.headerSortClickElement){\n\t\t\t\tcase \"icon\":\n\t\t\t\t\tarrowEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"header\":\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcolEl.classList.add(\"tabulator-col-sorter-element\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch(this.table.options.headerSortElement){\n\t\t\t\tcase \"function\":\n\t\t\t\t//do nothing\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"object\":\n\t\t\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t\t}\n\t\t\t\n\t\t\t//create sorter arrow\n\t\t\tcolumn.titleHolderElement.appendChild(arrowEl);\n\t\t\t\n\t\t\tcolumn.modules.sort.element = arrowEl;\n\t\t\t\n\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t\n\t\t\tif(this.table.options.headerSortClickElement === \"icon\"){\n\t\t\t\tarrowEl.addEventListener(\"mousedown\", (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\t//sort on click\n\t\t\t(this.table.options.headerSortClickElement === \"icon\" ? arrowEl : colEl).addEventListener(\"click\", (e) => {\n\t\t\t\tvar dir = \"\",\n\t\t\t\tsorters=[],\n\t\t\t\tmatch = false;\n\t\t\t\t\n\t\t\t\tif(column.modules.sort){\n\t\t\t\t\tif(column.modules.sort.tristate){\n\t\t\t\t\t\tif(column.modules.sort.dir == \"none\"){\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(column.modules.sort.dir == column.modules.sort.startingDir){\n\t\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tdir = \"none\";\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\tswitch(column.modules.sort.dir){\n\t\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\t\tsorters = this.getSort();\n\t\t\t\t\t\t\n\t\t\t\t\t\tmatch = sorters.findIndex((sorter) => {\n\t\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(match > -1){\n\t\t\t\t\t\t\tsorters[match].dir = dir;\n\t\t\t\t\t\t\t\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}else{\n\t\t\t\t\t\t\tif(dir != \"none\"){\n\t\t\t\t\t\t\t\tsorters.push({column:column, dir:dir});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t//add to existing sort\n\t\t\t\t\t\tthis.setSort(sorters);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tif(dir == \"none\"){\n\t\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\t\tthis.setSort(column, dir);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// this.table.rowManager.sorterRefresh(!this.sortList.length);\n\t\t\t\t\tthis.refreshSort();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trefreshSort(){\n\t\tif(this.table.options.sortMode === \"remote\"){\n\t\t\tthis.reloadData(null, false, false);\n\t\t}else{\n\t\t\tthis.refreshData(true);\n\t\t}\n\t\t\n\t\t//TODO - Persist left position of row manager\n\t\t// left = this.scrollLeft;\n\t\t// this.scrollHorizontal(left);\n\t}\n\t\n\t//check if the sorters have changed since last use\n\thasChanged(){\n\t\tvar changed = this.changed;\n\t\tthis.changed = false;\n\t\treturn changed;\n\t}\n\t\n\t//return current sorters\n\tgetSort(){\n\t\tvar self = this,\n\t\tsorters = [];\n\t\t\n\t\tself.sortList.forEach(function(item){\n\t\t\tif(item.column){\n\t\t\t\tsorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir});\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn sorters;\n\t}\n\t\n\t//change sort list and trigger sort\n\tsetSort(sortList, dir){\n\t\tvar self = this,\n\t\tnewSortList = [];\n\t\t\n\t\tif(!Array.isArray(sortList)){\n\t\t\tsortList = [{column: sortList, dir:dir}];\n\t\t}\n\t\t\n\t\tsortList.forEach(function(item){\n\t\t\tvar column;\n\t\t\t\n\t\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\titem.column = column;\n\t\t\t\tnewSortList.push(item);\n\t\t\t\tself.changed = true;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t\tself.sortList = newSortList;\n\t\t\n\t\tthis.dispatch(\"sort-changed\");\n\t}\n\t\n\t//clear sorters\n\tclear(){\n\t\tthis.setSort([]);\n\t}\n\t\n\t//find appropriate sorter for column\n\tfindSorter(column){\n\t\tvar row = this.table.rowManager.activeRows[0],\n\t\tsorter = \"string\",\n\t\tfield, value;\n\t\t\n\t\tif(row){\n\t\t\trow = row.getData();\n\t\t\tfield = column.getField();\n\t\t\t\n\t\t\tif(field){\n\t\t\t\t\n\t\t\t\tvalue = column.getFieldValue(row);\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn Sort.sorters[sorter];\n\t}\n\t\n\t//work through sort list sorting data\n\tsort(data){\n\t\tvar self = this,\n\t\tsortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t\tsortListActual = [],\n\t\trowComponents = [];\n\t\t\n\t\tif(this.subscribedExternal(\"dataSorting\")){\n\t\t\tthis.dispatchExternal(\"dataSorting\", self.getSort());\n\t\t}\n\t\t\n\t\tself.clearColumnHeaders();\n\t\t\n\t\tif(this.table.options.sortMode !== \"remote\"){\n\t\t\t\n\t\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tvar sortObj;\n\t\t\t\t\n\t\t\t\tif(item.column){\n\t\t\t\t\tsortObj = item.column.modules.sort;\n\t\t\t\t\t\n\t\t\t\t\tif(sortObj){\n\t\t\t\t\t\t\n\t\t\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\t\t\tif(!sortObj.sorter){\n\t\t\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\t\t\t\t\t\t\n\t\t\t\t\t\tsortListActual.push(item);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t//sort data\n\t\t\tif (sortListActual.length) {\n\t\t\t\tself._sortItems(data, sortListActual);\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\tsortList.forEach(function(item, i){\n\t\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataSorted\")){\n\t\t\tdata.forEach((row) => {\n\t\t\t\trowComponents.push(row.getComponent());\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"dataSorted\", self.getSort(), rowComponents);\n\t\t}\n\t\t\n\t\treturn data;\n\t}\n\t\n\t//clear sort arrows on columns\n\tclearColumnHeaders(){\n\t\tthis.table.columnManager.getRealColumns().forEach((column) => {\n\t\t\tif(column.modules.sort){\n\t\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t\t\tthis.setColumnHeaderSortIcon(column, \"none\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//set the column header sort direction\n\tsetColumnHeader(column, dir){\n\t\tcolumn.modules.sort.dir = dir;\n\t\tcolumn.getElement().setAttribute(\"aria-sort\", dir === \"asc\" ? \"ascending\" : \"descending\");\n\t\tthis.setColumnHeaderSortIcon(column, dir);\n\t}\n\t\n\tsetColumnHeaderSortIcon(column, dir){\n\t\tvar sortEl = column.modules.sort.element,\n\t\tarrowEl;\n\t\t\n\t\tif(column.definition.headerSort && typeof this.table.options.headerSortElement === \"function\"){\n\t\t\twhile(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild);\n\t\t\t\n\t\t\tarrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir);\n\t\t\t\n\t\t\tif(typeof arrowEl === \"object\"){\n\t\t\t\tsortEl.appendChild(arrowEl);\n\t\t\t}else{\n\t\t\t\tsortEl.innerHTML = arrowEl;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t//sort each item in sort list\n\t_sortItems(data, sortList){\n\t\tvar sorterCount = sortList.length - 1;\n\t\t\n\t\tdata.sort((a, b) => {\n\t\t\tvar result;\n\t\t\t\n\t\t\tfor(var i = sorterCount; i>= 0; i--){\n\t\t\t\tlet sortItem = sortList[i];\n\t\t\t\t\n\t\t\t\tresult = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\t\t\t\t\n\t\t\t\tif(result !== 0){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn result;\n\t\t});\n\t}\n\t\n\t//process individual rows for a sort function on active data\n\t_sortRow(a, b, column, dir, params){\n\t\tvar el1Comp, el2Comp;\n\t\t\n\t\t//switch elements depending on search direction\n\t\tvar el1 = dir == \"asc\" ? a : b;\n\t\tvar el2 = dir == \"asc\" ? b : a;\n\t\t\n\t\ta = column.getFieldValue(el1.getData());\n\t\tb = column.getFieldValue(el2.getData());\n\t\t\n\t\ta = typeof a !== \"undefined\" ? a : \"\";\n\t\tb = typeof b !== \"undefined\" ? b : \"\";\n\t\t\n\t\tel1Comp = el1.getComponent();\n\t\tel2Comp = el2.getComponent();\n\t\t\n\t\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n\t}\n}\n\nSort.moduleName = \"sort\";\n\n//load defaults\nSort.sorters = defaultSorters;\n\nexport default Sort;\n","class RangeComponent {\n\tconstructor(range) {\n\t\tthis._range = range;\n\n\t\treturn new Proxy(this, {\n\t\t\tget: function (target, name, receiver) {\n\t\t\t\tif (typeof target[name] !== \"undefined\") {\n\t\t\t\t\treturn target[name];\n\t\t\t\t} else {\n\t\t\t\t\treturn target._range.table.componentFunctionBinder.handle(\"range\", target._range, name);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\tgetElement() {\n\t\treturn this._range.element;\n\t}\n\n\tgetData() {\n\t\treturn this._range.getData();\n\t}\n\n\tgetCells() {\n\t\treturn this._range.getCells(true);\n\t}\n\n\tgetStructuredCells() {\n\t\treturn this._range.getStructuredCells();\n\t}\n\n\tgetRows() {\n\t\treturn this._range.getRows().map((row) => row.getComponent());\n\t}\n\n\tgetColumns() {\n\t\treturn this._range.getColumns().map((column) => column.getComponent());\n\t}\n\t\n\tgetBounds() {\n\t\treturn this._range.getBounds();\n\t}\n\n\tgetTopEdge() {\n\t\treturn this._range.top;\n\t}\n\n\tgetBottomEdge() {\n\t\treturn this._range.bottom;\n\t}\n\n\tgetLeftEdge() {\n\t\treturn this._range.left;\n\t}\n\n\tgetRightEdge() {\n\t\treturn this._range.right;\n\t}\n\n\tsetBounds(start, end){\n\t\tif(this._range.destroyedGuard(\"setBounds\")){\n\t\t\tthis._range.setBounds(start ? start._cell : start, end ? end._cell : end);\n\t\t}\n\t}\n\n\tsetStartBound(start){\n\t\tif(this._range.destroyedGuard(\"setStartBound\")){\n\t\t\tthis._range.setEndBound(start ? start._cell : start);\n\t\t\tthis._range.rangeManager.layoutElement();\n\t\t}\n\t}\n\n\tsetEndBound(end){\n\t\tif(this._range.destroyedGuard(\"setEndBound\")){\n\t\t\tthis._range.setEndBound(end ? end._cell : end);\n\t\t\tthis._range.rangeManager.layoutElement();\n\t\t}\n\t}\n\n\tclearValues(){\n\t\tif(this._range.destroyedGuard(\"clearValues\")){\n\t\t\tthis._range.clearValues();\n\t\t}\n\t}\n\n\tremove(){\n\t\tif(this._range.destroyedGuard(\"remove\")){\n\t\t\tthis._range.destroy(true);\n\t\t}\n\t}\n}\n\nexport default RangeComponent;\n","import CoreFeature from '../../core/CoreFeature.js';\nimport RangeComponent from \"./RangeComponent\";\n\nclass Range extends CoreFeature{\n\tconstructor(table, rangeManager, start, end) {\n\t\tsuper(table);\n\t\t\n\t\tthis.rangeManager = rangeManager;\n\t\tthis.element = null;\n\t\tthis.initialized = false;\n\t\tthis.initializing = {\n\t\t\tstart:false,\n\t\t\tend:false,\n\t\t};\n\t\tthis.destroyed = false;\n\t\t\n\t\tthis.top = 0;\n\t\tthis.bottom = 0;\n\t\tthis.left = 0;\n\t\tthis.right = 0;\n\t\t\n\t\tthis.table = table;\n\t\tthis.start = {row:0, col:0};\n\t\tthis.end = {row:0, col:0};\n\n\t\tif(this.rangeManager.rowHeader){\n\t\t\tthis.left = 1;\n\t\t\tthis.right = 1;\n\t\t\tthis.start.col = 1;\n\t\t\tthis.end.col = 1;\n\t\t}\n\t\t\n\t\tthis.initElement();\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tthis.initBounds(start, end);\n\t\t});\n\t}\n\t\n\tinitElement(){\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-range\");\n\t}\n\t\n\tinitBounds(start, end){\n\t\tthis._updateMinMax();\n\t\t\n\t\tif(start){\n\t\t\tthis.setBounds(start, end || start);\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Boundary Setup ///////\n\t///////////////////////////////////\n\t\n\tsetStart(row, col) {\n\t\tif(this.start.row !== row || this.start.col !== col){\n\t\t\tthis.start.row = row;\n\t\t\tthis.start.col = col;\n\t\t\t\n\t\t\tthis.initializing.start = true;\n\t\t\tthis._updateMinMax();\n\t\t}\n\t}\n\t\n\tsetEnd(row, col) {\n\t\tif(this.end.row !== row || this.end.col !== col){\n\t\t\tthis.end.row = row;\n\t\t\tthis.end.col = col;\n\t\t\t\n\t\t\tthis.initializing.end = true;\n\t\t\tthis._updateMinMax();\n\t\t}\n\t}\n\t\n\tsetBounds(start, end, visibleRows){\n\t\tif(start){\n\t\t\tthis.setStartBound(start);\n\t\t}\n\t\t\n\t\tthis.setEndBound(end || start);\n\t\tthis.rangeManager.layoutElement(visibleRows);\n\t}\n\t\n\tsetStartBound(element){\n\t\tvar row, col;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(this.rangeManager.columnSelection){\n\t\t\t\tthis.setStart(0, element.getPosition() - 1);\n\t\t\t}\n\t\t}else{\n\t\t\trow = element.row.position - 1;\n\t\t\tcol = element.column.getPosition() - 1;\n\t\t\t\n\t\t\tif (element.column === this.rangeManager.rowHeader) {\n\t\t\t\tthis.setStart(row, 1);\n\t\t\t} else {\n\t\t\t\tthis.setStart(row, col);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tsetEndBound(element){\n\t\tvar rowsCount = this._getTableRows().length,\n\t\trow, col, isRowHeader;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(this.rangeManager.columnSelection){\n\t\t\t\tif (this.rangeManager.selecting === \"column\") {\n\t\t\t\t\tthis.setEnd(rowsCount - 1, element.getPosition() - 1);\n\t\t\t\t} else if (this.rangeManager.selecting === \"cell\") {\n\t\t\t\t\tthis.setEnd(0, element.getPosition() - 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\trow = element.row.position - 1;\n\t\t\tcol = element.column.getPosition() - 1;\n\t\t\tisRowHeader = element.column === this.rangeManager.rowHeader;\n\t\t\t\n\t\t\tif (this.rangeManager.selecting === \"row\") {\n\t\t\t\tthis.setEnd(row, this._getTableColumns().length - 1);\n\t\t\t} else if (this.rangeManager.selecting !== \"row\" && isRowHeader) {\n\t\t\t\tthis.setEnd(row, 0);\n\t\t\t} else if (this.rangeManager.selecting === \"column\") {\n\t\t\t\tthis.setEnd(rowsCount - 1, col);\n\t\t\t} else {\n\t\t\t\tthis.setEnd(row, col);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_updateMinMax() {\n\t\tthis.top = Math.min(this.start.row, this.end.row);\n\t\tthis.bottom = Math.max(this.start.row, this.end.row);\n\t\tthis.left = Math.min(this.start.col, this.end.col);\n\t\tthis.right = Math.max(this.start.col, this.end.col);\n\t\t\n\t\tif(this.initialized){\n\t\t\tthis.dispatchExternal(\"rangeChanged\", this.getComponent());\n\t\t}else{\n\t\t\tif(this.initializing.start && this.initializing.end){\n\t\t\t\tthis.initialized = true;\n\t\t\t\tthis.dispatchExternal(\"rangeAdded\", this.getComponent());\n\t\t\t}\n\t\t}\n\t}\n\t\n\t_getTableColumns() {\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex();\n\t}\n\t\n\t_getTableRows() {\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Rendering ///////\n\t///////////////////////////////////\n\t\n\tlayout() {\n\t\tvar _vDomTop = this.table.rowManager.renderer.vDomTop,\n\t\t_vDomBottom = this.table.rowManager.renderer.vDomBottom,\n\t\t_vDomLeft = this.table.columnManager.renderer.leftCol,\n\t\t_vDomRight = this.table.columnManager.renderer.rightCol,\t\t\n\t\ttop, bottom, left, right, topLeftCell, bottomRightCell;\n\t\t\n\t\tif (_vDomTop == null) {\n\t\t\t_vDomTop = 0;\n\t\t}\n\t\t\n\t\tif (_vDomBottom == null) {\n\t\t\t_vDomBottom = Infinity;\n\t\t}\n\t\t\n\t\tif (_vDomLeft == null) {\n\t\t\t_vDomLeft = 0;\n\t\t}\n\t\t\n\t\tif (_vDomRight == null) {\n\t\t\t_vDomRight = Infinity;\n\t\t}\n\t\t\n\t\tif (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) {\n\t\t\ttop = Math.max(this.top, _vDomTop);\n\t\t\tbottom = Math.min(this.bottom, _vDomBottom);\n\t\t\tleft = Math.max(this.left, _vDomLeft);\n\t\t\tright = Math.min(this.right, _vDomRight);\n\t\t\t\n\t\t\ttopLeftCell = this.rangeManager.getCell(top, left);\n\t\t\tbottomRightCell = this.rangeManager.getCell(bottom, right);\n\t\t\t\n\t\t\tthis.element.classList.add(\"tabulator-range-active\");\n\t\t\t// this.element.classList.toggle(\"tabulator-range-active\", this === this.rangeManager.activeRange);\n\t\t\t\n\t\t\tthis.element.style.left = topLeftCell.row.getElement().offsetLeft + topLeftCell.getElement().offsetLeft + \"px\";\n\t\t\tthis.element.style.top = topLeftCell.row.getElement().offsetTop + \"px\";\n\t\t\tthis.element.style.width = bottomRightCell.getElement().offsetLeft + bottomRightCell.getElement().offsetWidth - topLeftCell.getElement().offsetLeft + \"px\";\n\t\t\tthis.element.style.height = bottomRightCell.row.getElement().offsetTop + bottomRightCell.row.getElement().offsetHeight - topLeftCell.row.getElement().offsetTop + \"px\";\n\t\t}\n\t}\n\t\n\tatTopLeft(cell) {\n\t\treturn cell.row.position - 1 === this.top && cell.column.getPosition() - 1 === this.left;\n\t}\n\t\n\tatBottomRight(cell) {\n\t\treturn cell.row.position - 1 === this.bottom && cell.column.getPosition() - 1 === this.right;\n\t}\n\t\n\toccupies(cell) {\n\t\treturn this.occupiesRow(cell.row) && this.occupiesColumn(cell.column);\n\t}\n\t\n\toccupiesRow(row) {\n\t\treturn this.top <= row.position - 1 && row.position - 1 <= this.bottom;\n\t}\n\t\n\toccupiesColumn(col) {\n\t\treturn this.left <= col.getPosition() - 1 && col.getPosition() - 1 <= this.right;\n\t}\n\t\n\toverlaps(left, top, right, bottom) {\n\t\tif ((this.left > right || left > this.right) || (this.top > bottom || top > this.bottom)){\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\treturn true;\n\t}\n\t\n\tgetData() {\n\t\tvar data = [],\n\t\trows = this.getRows(),\n\t\tcolumns = this.getColumns();\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tvar rowData = row.getData(),\n\t\t\tresult = {};\n\t\t\t\n\t\t\tcolumns.forEach((column) => {\n\t\t\t\tresult[column.field] = rowData[column.field];\n\t\t\t});\n\t\t\t\n\t\t\tdata.push(result);\n\t\t});\n\t\t\n\t\treturn data;\n\t}\n\t\n\tgetCells(structured, component) {\n\t\tvar cells = [],\n\t\trows = this.getRows(),\n\t\tcolumns = this.getColumns();\n\t\t\n\t\tif (structured) {\n\t\t\tcells = rows.map((row) => {\n\t\t\t\tvar arr = [];\n\t\t\t\t\n\t\t\t\trow.getCells().forEach((cell) => {\n\t\t\t\t\tif (columns.includes(cell.column)) {\n\t\t\t\t\t\tarr.push(component ? cell.getComponent() : cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn arr;\n\t\t\t});\n\t\t} else {\n\t\t\trows.forEach((row) => {\n\t\t\t\trow.getCells().forEach((cell) => {\n\t\t\t\t\tif (columns.includes(cell.column)) {\n\t\t\t\t\t\tcells.push(component ? cell.getComponent() : cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn cells;\n\t}\n\t\n\tgetStructuredCells() {\n\t\treturn this.getCells(true, true);\n\t}\n\t\n\tgetRows() {\n\t\treturn this._getTableRows().slice(this.top, this.bottom + 1);\n\t}\n\t\n\tgetColumns() {\n\t\treturn this._getTableColumns().slice(this.left, this.right + 1);\n\t}\n\t\n\tclearValues(){\n\t\tvar cells = this.getCells();\n\t\tvar clearValue = this.table.options.selectableRangeClearCellsValue;\n\t\t\n\t\tthis.table.blockRedraw();\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tcell.setValue(clearValue);\n\t\t});\n\t\t\n\t\tthis.table.restoreRedraw();\n\t\t\n\t}\n\t\n\tgetBounds(component){\n\t\tvar cells = this.getCells(false, component),\n\t\toutput = {\n\t\t\tstart:null,\n\t\t\tend:null,\n\t\t};\n\t\t\n\t\tif(cells.length){\n\t\t\toutput.start = cells[0];\n\t\t\toutput.end = cells[cells.length - 1];\n\t\t}else{\n\t\t\tconsole.warn(\"No bounds defined on range\");\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponent() {\n\t\tif (!this.component) {\n\t\t\tthis.component = new RangeComponent(this);\n\t\t}\n\t\treturn this.component;\n\t}\n\t\n\tdestroy(notify) {\n\t\tthis.destroyed = true;\n\t\t\n\t\tthis.element.remove();\n\t\t\n\t\tif(notify){\n\t\t\tthis.rangeManager.rangeRemoved(this);\n\t\t}\n\t\t\n\t\tif(this.initialized){\n\t\t\tthis.dispatchExternal(\"rangeRemoved\", this.getComponent());\n\t\t}\n\t}\n\t\n\tdestroyedGuard(func){\n\t\tif(this.destroyed){\n\t\t\tconsole.warn(\"You cannot call the \" + func + \" function on a destroyed range\");\n\t\t}\n\t\t\n\t\treturn !this.destroyed;\n\t}\n}\n\nexport default Range;\n","import Module from \"../../core/Module.js\";\nimport Range from \"./Range.js\";\n\nclass SelectRange extends Module {\n\tconstructor(table) {\n\t\tsuper(table);\n\t\t\n\t\tthis.selecting = \"cell\";\n\t\tthis.mousedown = false;\n\t\tthis.ranges = [];\n\t\tthis.overlay = null;\n\t\tthis.rowHeader = null;\n\t\tthis.layoutChangeTimeout = null;\n\t\tthis.columnSelection = false;\n\t\tthis.rowSelection = false;\n\t\tthis.maxRanges = 0;\n\t\tthis.activeRange = false;\n\t\tthis.blockKeydown = false;\n\t\t\n\t\tthis.keyDownEvent = this._handleKeyDown.bind(this);\n\t\tthis.mouseUpEvent = this._handleMouseUp.bind(this);\n\t\t\n\t\tthis.registerTableOption(\"selectableRange\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeColumns\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeRows\", false); //enable selectable range\n\t\tthis.registerTableOption(\"selectableRangeClearCells\", false); //allow clearing of active range\n\t\tthis.registerTableOption(\"selectableRangeClearCellsValue\", undefined); //value for cleared active range\n\n\t\tthis.registerTableFunction(\"getRangesData\", this.getRangesData.bind(this));\n\t\tthis.registerTableFunction(\"getRanges\", this.getRanges.bind(this));\n\t\tthis.registerTableFunction(\"addRange\", this.addRangeFromComponent.bind(this));\n\n\t\tthis.registerComponentFunction(\"cell\", \"getRanges\", this.cellGetRanges.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"getRanges\", this.rowGetRanges.bind(this));\n\t\tthis.registerComponentFunction(\"column\", \"getRanges\", this.colGetRanges.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Initialization ///////\n\t///////////////////////////////////\n\t\n\tinitialize() {\n\t\tif (this.options(\"selectableRange\")) {\t\t\n\t\t\tif(!this.options(\"selectableRows\")){\n\t\t\t\t\n\t\t\t\tthis.maxRanges = this.options(\"selectableRange\");\n\t\t\t\t\n\t\t\t\tthis.initializeTable();\n\t\t\t\tthis.initializeWatchers();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"SelectRange functionality cannot be used in conjunction with row selection\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\tinitializeTable() {\t\t\n\t\tthis.overlay = document.createElement(\"div\");\n\t\tthis.overlay.classList.add(\"tabulator-range-overlay\");\n\t\t\n\t\tthis.rangeContainer = document.createElement(\"div\");\n\t\tthis.rangeContainer.classList.add(\"tabulator-range-container\");\n\t\t\n\t\tthis.activeRangeCellElement = document.createElement(\"div\");\n\t\tthis.activeRangeCellElement.classList.add(\"tabulator-range-cell-active\");\n\t\t\n\t\tthis.overlay.appendChild(this.rangeContainer);\n\t\tthis.overlay.appendChild(this.activeRangeCellElement);\n\t\t\n\t\tthis.table.rowManager.element.addEventListener(\"keydown\", this.keyDownEvent);\n\t\t\n\t\tthis.resetRanges();\n\t\t\n\t\tthis.table.rowManager.element.appendChild(this.overlay);\n\t\tthis.table.columnManager.element.setAttribute(\"tabindex\", 0);\n\t\tthis.table.element.classList.add(\"tabulator-ranges\");\n\t}\n\t\n\tinitializeWatchers() {\n\t\tthis.columnSelection = this.options(\"selectableRangeColumns\");\n\t\tthis.rowSelection = this.options(\"selectableRangeRows\");\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t\tthis.subscribe(\"column-mousedown\", this.handleColumnMouseDown.bind(this));\n\t\tthis.subscribe(\"column-mousemove\", this.handleColumnMouseMove.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.handleColumnResized.bind(this));\n\t\tthis.subscribe(\"column-width\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"column-height\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"column-resized\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"columns-loaded\", this.updateHeaderColumn.bind(this));\n\n\t\tthis.subscribe(\"cell-height\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"cell-rendered\", this.renderCell.bind(this));\n\t\tthis.subscribe(\"cell-mousedown\", this.handleCellMouseDown.bind(this));\n\t\tthis.subscribe(\"cell-mousemove\", this.handleCellMouseMove.bind(this));\n\t\tthis.subscribe(\"cell-click\", this.handleCellClick.bind(this));\n\t\tthis.subscribe(\"cell-editing\", this.handleEditingCell.bind(this));\n\t\t\n\t\tthis.subscribe(\"page-changed\", this.redraw.bind(this));\n\n\t\tthis.subscribe(\"scroll-vertical\", this.layoutChange.bind(this));\n\t\tthis.subscribe(\"scroll-horizontal\", this.layoutChange.bind(this));\n\t\t\n\t\tthis.subscribe(\"data-destroy\", this.tableDestroyed.bind(this));\n\t\tthis.subscribe(\"data-processed\", this.resetRanges.bind(this));\n\t\t\n\t\tthis.subscribe(\"table-layout\", this.layoutElement.bind(this));\n\t\tthis.subscribe(\"table-redraw\", this.redraw.bind(this));\n\t\tthis.subscribe(\"table-destroy\", this.tableDestroyed.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-editor-clear\", this.finishEditingCell.bind(this));\n\t\tthis.subscribe(\"edit-blur\", this.restoreFocus.bind(this));\n\t\t\n\t\tthis.subscribe(\"keybinding-nav-prev\", this.keyNavigate.bind(this, \"left\"));\n\t\tthis.subscribe(\"keybinding-nav-next\", this.keyNavigate.bind(this, \"right\"));\n\t\tthis.subscribe(\"keybinding-nav-left\", this.keyNavigate.bind(this, \"left\"));\n\t\tthis.subscribe(\"keybinding-nav-right\", this.keyNavigate.bind(this, \"right\"));\n\t\tthis.subscribe(\"keybinding-nav-up\", this.keyNavigate.bind(this, \"up\"));\n\t\tthis.subscribe(\"keybinding-nav-down\", this.keyNavigate.bind(this, \"down\"));\n\t\tthis.subscribe(\"keybinding-nav-range\", this.keyNavigateRange.bind(this));\n\t}\n\t\n\t\n\tinitializeColumn(column) {\n\t\tif(this.columnSelection && column.definition.headerSort && this.options(\"headerSortClickElement\") !== \"icon\"){\n\t\t\tconsole.warn(\"Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'.\");\n\t\t}\n\t\t\n\t\tif (column.modules.edit) {\n\t\t\t// Block editor from taking action so we can trigger edit by\n\t\t\t// double clicking.\n\t\t\t// column.modules.edit.blocked = true;\n\t\t}\n\t}\n\t\n\tupdateHeaderColumn(){\n\t\tif(this.rowSelection){\n\t\t\tthis.rowHeader = this.table.columnManager.getVisibleColumnsByIndex()[0];\n\t\t\t\n\t\t\tif(this.rowHeader){\n\t\t\t\tthis.rowHeader.definition.cssClass = this.rowHeader.definition.cssClass + \" tabulator-range-row-header\";\n\t\t\t\t\n\t\t\t\tif(this.rowHeader.definition.headerSort){\n\t\t\t\t\tconsole.warn(\"Using column headerSort with selectableRangeRows option may result in unpredictable behavior\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif(this.rowHeader.definition.editor){\n\t\t\t\t\tconsole.warn(\"Using column editor with selectableRangeRows option may result in unpredictable behavior\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Table Functions ///////\n\t///////////////////////////////////\n\t\n\tgetRanges(){\n\t\treturn this.ranges.map((range) => range.getComponent());\n\t}\n\t\n\tgetRangesData() {\n\t\treturn this.ranges.map((range) => range.getData());\n\t}\n\t\n\taddRangeFromComponent(start, end){\n\t\tstart = start ? start._cell : null;\n\t\tend = end ? end._cell : null;\n\t\t\n\t\treturn this.addRange(start, end);\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Component Functions ///////\n\t///////////////////////////////////\n\t\n\tcellGetRanges(cell){\n\t\tvar ranges = [];\n\t\t\n\t\tif (cell.column === this.rowHeader) {\n\t\t\tranges = this.ranges.filter((range) => range.occupiesRow(cell.row));\n\t\t} else {\n\t\t\tranges = this.ranges.filter((range) => range.occupies(cell));\n\t\t}\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\trowGetRanges(row){\n\t\tvar ranges = this.ranges.filter((range) => range.occupiesRow(row));\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\tcolGetRanges(col){\n\t\tvar ranges = this.ranges.filter((range) => range.occupiesColumn(col));\n\t\t\n\t\treturn ranges.map((range) => range.getComponent());\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Event Handlers /////////\n\t///////////////////////////////////\n\t\n\t_handleMouseUp(e){\n\t\tthis.mousedown = false;\n\t\tdocument.removeEventListener(\"mouseup\", this.mouseUpEvent);\n\t}\n\t\n\t_handleKeyDown(e) {\n\t\tif (!this.blockKeydown && (!this.table.modules.edit || (this.table.modules.edit && !this.table.modules.edit.currentCell))) {\n\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t// is editing a cell?\n\t\t\t\tif (this.table.modules.edit && this.table.modules.edit.currentCell) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.table.modules.edit.editCell(this.getActiveCell());\n\t\t\t\t\n\t\t\t\te.preventDefault();\n\t\t\t}\n\n\t\t\tif ((e.key === \"Backspace\" || e.key === \"Delete\") && this.options(\"selectableRangeClearCells\")) {\n\t\t\t\tif(this.activeRange){\n\t\t\t\t\tthis.activeRange.clearValues();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tinitializeFocus(cell){\n\t\tvar range;\n\t\t\n\t\ttry{\n\t\t\tif (document.selection) { // IE\n\t\t\t\trange = document.body.createTextRange();\n\t\t\t\trange.moveToElementText(cell.getElement());\n\t\t\t\trange.select();\n\t\t\t} else if (window.getSelection) {\n\t\t\t\trange = document.createRange();\n\t\t\t\trange.selectNode(cell.getElement());\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t}\n\t\t}catch(e){}\n\t}\n\t\n\trestoreFocus(element){\n\t\tthis.table.rowManager.element.focus();\n\t\t\n\t\treturn true;\n\t}\n\t\n\t///////////////////////////////////\n\t////// Column Functionality ///////\n\t///////////////////////////////////\n\t\n\thandleColumnResized(column) {\n\t\tvar selected;\n\t\t\n\t\tif (this.selecting !== \"column\" && this.selecting !== \"all\") {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tselected = this.ranges.some((range) => range.occupiesColumn(column));\n\t\t\n\t\tif (!selected) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.ranges.forEach((range) => {\n\t\t\tvar selectedColumns = range.getColumns(true);\n\t\t\t\n\t\t\tselectedColumns.forEach((selectedColumn) => {\n\t\t\t\tif (selectedColumn !== column) {\n\t\t\t\t\tselectedColumn.setWidth(column.width);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\t\n\thandleColumnMouseDown(event, column) {\n\t\tif (event.button === 2 && (this.selecting === \"column\" || this.selecting === \"all\") && this.activeRange.occupiesColumn(column)) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.mousedown = true;\n\t\t\n\t\tdocument.addEventListener(\"mouseup\", this.mouseUpEvent);\n\t\t\n\t\tthis.newSelection(event, column);\n\t}\n\t\n\thandleColumnMouseMove(e, column) {\n\t\tif (column === this.rowHeader || !this.mousedown || this.selecting === 'all') {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRange.setBounds(false, column, true);\n\t}\n\t\n\t///////////////////////////////////\n\t//////// Cell Functionality ///////\n\t///////////////////////////////////\n\t\n\trenderCell(cell) {\n\t\tvar el = cell.getElement(),\n\t\trangeIdx = this.ranges.findIndex((range) => range.occupies(cell));\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", rangeIdx !== -1);\n\t\tel.classList.toggle(\"tabulator-range-only-cell-selected\", this.ranges.length === 1 && this.ranges[0].atTopLeft(cell) &&\tthis.ranges[0].atBottomRight(cell));\n\t\t\n\t\tel.dataset.range = rangeIdx;\n\t}\n\t\n\thandleCellMouseDown(event, cell) {\n\t\tif (event.button === 2 && (this.activeRange.occupies(cell) || ((this.selecting === \"row\" || this.selecting === \"all\") && this.activeRange.occupiesRow(cell.row)))) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.mousedown = true;\n\t\t\n\t\tdocument.addEventListener(\"mouseup\", this.mouseUpEvent);\n\t\t\n\t\tthis.newSelection(event, cell);\n\t}\n\t\n\thandleCellMouseMove(e, cell) {\n\t\tif (!this.mousedown || this.selecting === \"all\") {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRange.setBounds(false, cell, true);\n\t}\n\t\n\thandleCellClick(e, cell){\n\t\tthis.initializeFocus(cell);\n\t}\n\t\n\thandleEditingCell(cell) {\n\t\tif(this.activeRange){\n\t\t\tthis.activeRange.setBounds(cell);\n\t\t}\n\t}\n\t\n\tfinishEditingCell() {\n\t\tthis.blockKeydown = true;\n\t\tthis.table.rowManager.element.focus();\n\n\t\tsetTimeout(() => {\n\t\t\tthis.blockKeydown = false;\n\t\t}, 10);\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Navigation ///////\n\t///////////////////////////////////\n\t\n\tkeyNavigate(dir, e){\n\t\tif(this.navigate(false, false, dir)){\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\tkeyNavigateRange(e, dir, jump, expand){\n\t\tif(this.navigate(jump, expand, dir)){\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\t\n\tnavigate(jump, expand, dir) {\n\t\tvar moved = false,\n\t\trange, rangeEdge, nextRow, nextCol, row, column;\n\t\t\n\t\t// Don't navigate while editing\n\t\tif (this.table.modules.edit && this.table.modules.edit.currentCell) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// If there are more than 1 range, use the active range and destroy the others\n\t\tif (this.ranges.length > 1) {\n\t\t\tthis.ranges = this.ranges.filter((range) => {\n\t\t\t\tif (range === this.activeRange) {\n\t\t\t\t\trange.setEnd(range.start.row, range.start.col);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\trange.destroy();\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t\t\n\t\trange = this.activeRange;\n\t\t\n\t\trangeEdge = expand ? range.end : range.start;\n\t\tnextRow = rangeEdge.row;\n\t\tnextCol = rangeEdge.col;\n\t\t\n\t\tif(jump){\n\t\t\tswitch(dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnextCol = this.findJumpCellLeft(range.start.row, rangeEdge.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnextCol = this.findJumpCellRight(range.start.row, rangeEdge.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnextRow = this.findJumpCellUp(rangeEdge.row, range.start.col);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnextRow = this.findJumpCellDown(rangeEdge.row, range.start.col);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}else{\n\t\t\tif(expand){\n\t\t\t\tif ((this.selecting === 'row' && (dir === 'left' || dir === 'right')) || (this.selecting === 'column' && (dir === 'up' || dir === 'down'))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tswitch(dir){\n\t\t\t\tcase \"left\":\n\t\t\t\t\tnextCol = Math.max(nextCol - 1, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tnextCol = Math.min(nextCol + 1, this.getTableColumns().length - 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\t\tnextRow = Math.max(nextRow - 1, 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\t\tnextRow = Math.min(nextRow + 1, this.getTableRows().length - 1);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tmoved = nextCol !== rangeEdge.col || nextRow !== rangeEdge.row;\n\t\t\n\t\tif(!expand){\n\t\t\trange.setStart(nextRow, nextCol);\n\t\t}\n\t\t\n\t\trange.setEnd(nextRow, nextCol);\n\t\t\n\t\tif(!expand){\n\t\t\tthis.selecting = \"cell\";\n\t\t}\n\t\t\n\t\tif (moved) {\n\t\t\trow = this.getRowByRangePos(range.end.row);\n\t\t\tcolumn = this.getColumnByRangePos(range.end.col);\n\t\t\t\n\t\t\tif ((dir === 'left' || dir === 'right') && column.getElement().parentNode === null) {\n\t\t\t\tcolumn.getComponent().scrollTo(undefined, false);\n\t\t\t} else if ((dir === 'up' || dir === 'down') && row.getElement().parentNode === null) {\n\t\t\t\trow.getComponent().scrollTo(undefined, false);\n\t\t\t} else {\n\t\t\t\t// Use faster autoScroll when the elements are on the DOM\n\t\t\t\tthis.autoScroll(range, row.getElement(), column.getElement());\n\t\t\t}\n\t\t\t\n\t\t\tthis.layoutElement();\n\t\t\t\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\trangeRemoved(removed){\n\t\tthis.ranges = this.ranges.filter((range) => range !== removed);\n\t\t\n\t\tif(this.activeRange === removed){\n\t\t\tif(this.ranges.length){\n\t\t\t\tthis.activeRange = this.ranges[this.ranges.length - 1];\n\t\t\t}else{\n\t\t\t\tthis.addRange();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.layoutElement();\n\t}\n\t\n\tfindJumpCell(cells, reverse, emptyStart, emptySide){\n\t\tvar nextCell;\n\t\t\n\t\tif(reverse){\n\t\t\tcells = cells.reverse();\n\t\t}\n\t\t\n\t\tfor(let currentCell of cells){\n\t\t\tlet currentValue = currentCell.getValue();\n\t\t\t\n\t\t\tif(emptyStart){\n\t\t\t\tnextCell = currentCell;\n\t\t\t\tif(currentValue){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(emptySide){\n\t\t\t\t\tnextCell = currentCell;\n\t\t\t\t\t\n\t\t\t\t\tif(currentValue){\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tif(currentValue){\n\t\t\t\t\t\tnextCell = currentCell;\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\t\n\t\treturn nextCell;\n\t}\n\t\n\tfindJumpCellLeft(rowPos, colPos){\n\t\tvar row = this.getRowByRangePos(rowPos),\n\t\tcells = row.cells.filter((cell) => cell.column.visible),\n\t\tisStartingCellEmpty = !cells[colPos].getValue(),\n\t\tisLeftOfStartingCellEmpty = cells[colPos] ? !cells[colPos].getValue() : false,\n\t\tjumpCol = colPos,\n\t\ttargetCells = this.rowHeader ? cells.slice(1, colPos) : cells.slice(0, colPos),\n\t\tnextCell = this.findJumpCell(targetCells, true, isStartingCellEmpty, isLeftOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpCol = nextCell.column.getPosition() - 1;\n\t\t}\n\t\t\n\t\treturn jumpCol;\n\t}\n\t\n\tfindJumpCellRight(rowPos, colPos){\n\t\tvar row = this.getRowByRangePos(rowPos),\n\t\tcells = row.cells.filter((cell) => cell.column.visible),\n\t\tisStartingCellEmpty = !cells[colPos].getValue(),\n\t\tisRightOfStartingCellEmpty = cells[colPos + 1] ? !cells[colPos + 1].getValue() : false,\n\t\tjumpCol = colPos,\n\t\tnextCell = this.findJumpCell(cells.slice(colPos + 1, cells.length), false, isStartingCellEmpty, isRightOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpCol = nextCell.column.getPosition() - 1;\n\t\t}\n\t\t\n\t\treturn jumpCol;\n\t}\n\t\n\tfindJumpCellUp(rowPos, colPos) {\n\t\tvar column = this.getColumnByRangePos(colPos),\n\t\tcells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)),\n\t\tisStartingCellEmpty = !cells[rowPos].getValue(),\n\t\tisTopOfStartingCellEmpty = cells[rowPos - 1] ? !cells[rowPos - 1].getValue() : false,\n\t\tjumpRow = rowPos,\n\t\tnextCell = this.findJumpCell(cells.slice(0, jumpRow), true, isStartingCellEmpty, isTopOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpRow = nextCell.row.position - 1;\n\t\t}\n\t\t\n\t\treturn jumpRow;\n\t}\n\t\n\tfindJumpCellDown(rowPos, colPos) {\n\t\tvar column = this.getColumnByRangePos(colPos),\n\t\tcells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)),\n\t\tisStartingCellEmpty = !cells[rowPos].getValue(),\n\t\tisBottomOfStartingCellEmpty = cells[rowPos + 1] ? !cells[rowPos + 1].getValue() : false,\n\t\tjumpRow = rowPos,\n\t\tnextCell = this.findJumpCell(cells.slice(jumpRow + 1, cells.length), false, isStartingCellEmpty, isBottomOfStartingCellEmpty);\n\t\t\n\t\tif(nextCell){\n\t\t\tjumpRow = nextCell.row.position - 1;\n\t\t}\n\t\t\n\t\treturn jumpRow;\n\t}\n\t\n\t///////////////////////////////////\n\t/////// Selection ///////\n\t///////////////////////////////////\n\tnewSelection(event, element) {\n\t\tvar range;\n\t\t\n\t\tif (element.type === \"column\") {\n\t\t\tif(!this.columnSelection){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif (element === this.rowHeader) {\n\t\t\t\trange = this.resetRanges();\n\t\t\t\tthis.selecting = \"all\";\n\t\t\t\t\n\t\t\t\tvar topLeftCell, bottomRightCell = this.getCell(-1, -1);\n\n\t\t\t\tif(this.rowHeader){\n\t\t\t\t\ttopLeftCell = this.getCell(0, 1);\n\t\t\t\t}else{\n\t\t\t\t\ttopLeftCell = this.getCell(0, 0);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\trange.setBounds(topLeftCell, bottomRightCell);\t\t\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tthis.selecting = \"column\";\n\t\t\t}\n\t\t} else if (element.column === this.rowHeader) {\n\t\t\tthis.selecting = \"row\";\n\t\t} else {\n\t\t\tthis.selecting = \"cell\";\n\t\t}\n\t\t\n\t\tif (event.shiftKey) {\n\t\t\tthis.activeRange.setBounds(false, element);\n\t\t} else if (event.ctrlKey) {\n\t\t\tthis.addRange().setBounds(element);\n\t\t} else {\n\t\t\tthis.resetRanges().setBounds(element);\n\t\t}\n\t}\n\t\n\tautoScroll(range, row, column) {\n\t\tvar tableHolder = this.table.rowManager.element,\n\t\trowHeader, rect, view, withinHorizontalView, withinVerticalView;\n\n\t\tif (typeof row === 'undefined') {\n\t\t\trow = this.getRowByRangePos(range.end.row).getElement();\n\t\t}\n\t\t\n\t\tif (typeof column === 'undefined') {\n\t\t\tcolumn = this.getColumnByRangePos(range.end.col).getElement();\n\t\t}\n\n\t\tif (this.rowHeader) {\n\t\t\trowHeader = this.rowHeader.getElement();\n\t\t}\n\t\t\n\t\trect = {\n\t\t\tleft: column.offsetLeft,\n\t\t\tright: column.offsetLeft + column.offsetWidth,\n\t\t\ttop: row.offsetTop,\n\t\t\tbottom: row.offsetTop + row.offsetHeight,\n\t\t};\n\t\t\n\t\tview = {\n\t\t\tleft: tableHolder.scrollLeft,\n\t\t\tright: Math.ceil(tableHolder.scrollLeft + tableHolder.clientWidth),\n\t\t\ttop: tableHolder.scrollTop,\n\t\t\tbottom:\ttableHolder.scrollTop +\ttableHolder.offsetHeight - this.table.rowManager.scrollbarWidth,\n\t\t};\n\n\t\tif (rowHeader) {\n\t\t\tview.left += rowHeader.offsetWidth;\n\t\t}\n\t\t\n\t\twithinHorizontalView = view.left < rect.left &&\trect.left < view.right && view.left < rect.right &&\trect.right < view.right;\n\t\t\n\t\twithinVerticalView = view.top < rect.top &&\trect.top < view.bottom && view.top < rect.bottom &&\trect.bottom < view.bottom;\n\t\t\n\t\tif (!withinHorizontalView) {\n\t\t\tif (rect.left < view.left) {\n\t\t\t\ttableHolder.scrollLeft = rect.left;\n\t\t\t\tif (rowHeader) {\n\t\t\t\t\ttableHolder.scrollLeft -= rowHeader.offsetWidth;\n\t\t\t\t}\n\t\t\t} else if (rect.right > view.right) {\n\t\t\t\ttableHolder.scrollLeft = rect.right - tableHolder.clientWidth;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (!withinVerticalView) {\n\t\t\tif (rect.top < view.top) {\n\t\t\t\ttableHolder.scrollTop = rect.top;\n\t\t\t} else if (rect.bottom > view.bottom) {\n\t\t\t\ttableHolder.scrollTop = rect.bottom - tableHolder.clientHeight;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t/////// Layout ///////\n\t///////////////////////////////////\n\t\n\tlayoutChange(){\n\t\tthis.overlay.style.visibility = \"hidden\";\n\t\tclearTimeout(this.layoutChangeTimeout);\n\t\tthis.layoutChangeTimeout = setTimeout(this.layoutRanges.bind(this), 200);\n\t}\n\t\n\tredraw(force) {\n\t\tif (force) {\n\t\t\tthis.selecting = 'cell';\n\t\t\tthis.resetRanges();\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\t\n\tlayoutElement(visibleRows) {\n\t\tvar rows;\n\t\t\n\t\tif (visibleRows) {\n\t\t\trows = this.table.rowManager.getVisibleRows(true);\n\t\t} else {\n\t\t\trows = this.table.rowManager.getRows();\n\t\t}\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\") {\n\t\t\t\tthis.layoutRow(row);\n\t\t\t\trow.cells.forEach((cell) => this.renderCell(cell));\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.getTableColumns().forEach((column) => {\n\t\t\tthis.layoutColumn(column);\n\t\t});\n\t\t\n\t\tthis.layoutRanges();\n\t}\n\t\n\tlayoutRow(row) {\n\t\tvar el = row.getElement(),\n\t\tselected = false,\n\t\toccupied = this.ranges.some((range) => range.occupiesRow(row));\n\t\t\n\t\tif (this.selecting === \"row\") {\n\t\t\tselected = occupied;\n\t\t} else if (this.selecting === \"all\") {\n\t\t\tselected = true;\n\t\t}\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", selected);\n\t\tel.classList.toggle(\"tabulator-range-highlight\", occupied);\n\t}\n\t\n\tlayoutColumn(column) {\n\t\tvar el = column.getElement(),\t\t\n\t\tselected = false,\n\t\toccupied = this.ranges.some((range) => range.occupiesColumn(column));\n\t\t\n\t\tif (this.selecting === \"column\") {\n\t\t\tselected = occupied;\n\t\t} else if (this.selecting === \"all\") {\n\t\t\tselected = true;\n\t\t}\n\t\t\n\t\tel.classList.toggle(\"tabulator-range-selected\", selected);\n\t\tel.classList.toggle(\"tabulator-range-highlight\", occupied);\n\t}\n\t\n\tlayoutRanges() {\n\t\tvar activeCell;\n\t\t\n\t\tif (!this.table.initialized) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tactiveCell = this.getActiveCell();\n\t\t\n\t\tif (!activeCell) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.activeRangeCellElement.style.left = activeCell.row.getElement().offsetLeft + activeCell.getElement().offsetLeft + \"px\";\n\t\tthis.activeRangeCellElement.style.top =\tactiveCell.row.getElement().offsetTop + \"px\";\n\t\tthis.activeRangeCellElement.style.width = activeCell.getElement().offsetLeft + activeCell.getElement().offsetWidth - activeCell.getElement().offsetLeft + \"px\";\n\t\tthis.activeRangeCellElement.style.height = activeCell.row.getElement().offsetTop + activeCell.row.getElement().offsetHeight - activeCell.row.getElement().offsetTop + \"px\";\n\t\t\n\t\tthis.ranges.forEach((range) => range.layout());\n\t\t\n\t\tthis.overlay.style.visibility = \"visible\";\n\t}\n\t\n\t\n\t///////////////////////////////////\n\t/////// Helper Functions ///////\n\t///////////////////////////////////\t\n\t\n\tgetCell(rowIdx, colIdx) {\n\t\tvar row;\n\t\t\n\t\tif (colIdx < 0) {\n\t\t\tcolIdx = this.getTableColumns().length + colIdx;\n\t\t\tif (colIdx < 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (rowIdx < 0) {\n\t\t\trowIdx = this.getTableRows().length + rowIdx;\n\t\t}\n\t\t\n\t\trow = this.table.rowManager.getRowFromPosition(rowIdx + 1);\n\t\t\n\t\treturn row ? row.getCells(false, true).filter((cell) => cell.column.visible)[colIdx] : null;\n\t}\n\t\n\t\n\tgetActiveCell() {\n\t\treturn this.getCell(this.activeRange.start.row, this.activeRange.start.col);\n\t}\n\t\n\tgetRowByRangePos(pos) {\n\t\treturn this.getTableRows()[pos];\n\t}\n\t\n\tgetColumnByRangePos(pos) {\n\t\treturn this.getTableColumns()[pos];\n\t}\n\t\n\tgetTableRows() {\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\t\n\tgetTableColumns() {\n\t\treturn this.table.columnManager.getVisibleColumnsByIndex();\n\t}\n\t\n\taddRange(start, end) {\n\t\tvar range;\n\t\t\n\t\tif(this.maxRanges !== true && this.ranges.length >= this.maxRanges){\n\t\t\tthis.ranges.shift().destroy();\n\t\t}\n\t\t\n\t\trange = new Range(this.table, this, start, end);\n\t\t\n\t\tthis.activeRange = range;\n\t\tthis.ranges.push(range);\n\t\tthis.rangeContainer.appendChild(range.element);\n\t\t\n\t\treturn range;\n\t}\n\t\n\tresetRanges() {\n\t\tvar range, cell;\n\t\t\n\t\tthis.ranges.forEach((range) => range.destroy());\n\t\tthis.ranges = [];\n\t\t\n\t\trange = this.addRange();\n\t\t\n\t\tif(this.table.rowManager.activeRows.length){\n\t\t\tcell = this.table.rowManager.activeRows[0].cells[this.rowHeader ? 1 : 0];\n\n\t\t\tif(cell){\n\t\t\t\trange.setBounds(cell);\n\t\t\t\tthis.initializeFocus(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn range;\n\t}\n\t\n\ttableDestroyed(){\n\t\tdocument.removeEventListener(\"mouseup\", this.mouseUpEvent);\n\t\tthis.table.rowManager.element.removeEventListener(\"keydown\", this.keyDownEvent);\n\t}\n\t\n\tselectedRows(component) {\n\t\treturn component ? this.activeRange.getRows().map((row) => row.getComponent()) : this.activeRange.getRows();\n\t}\n\t\n\tselectedColumns(component) {\n\t\treturn component ? this.activeRange.getColumns().map((col) => col.getComponent()) : this.activeRange.getColumns();\n\t}\n}\n\nSelectRange.moduleName = \"selectRange\";\n\nexport default SelectRange;\n","import Module from '../../core/Module.js';\nimport Cell from '../../core/cell/Cell.js';\n\nclass Tooltip extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.tooltipSubscriber = null,\n\t\tthis.headerSubscriber = null,\n\t\t\n\t\tthis.timeout = null;\n\t\tthis.popupInstance = null;\n\t\t\n\t\tthis.registerTableOption(\"tooltipGenerationMode\", undefined); //deprecated\n\t\tthis.registerTableOption(\"tooltipDelay\", 300); \n\t\t\n\t\tthis.registerColumnOption(\"tooltip\");\n\t\tthis.registerColumnOption(\"headerTooltip\");\n\t}\n\t\n\tinitialize(){\n\t\tthis.deprecatedOptionsCheck();\n\t\t\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\t\n\tdeprecatedOptionsCheck(){\n\t\tthis.deprecationCheckMsg(\"tooltipGenerationMode\", \"This option is no longer needed as tooltips are always generated on hover now\");\n\t}\t\n\t\n\tinitializeColumn(column){\n\t\tif(column.definition.headerTooltip && !this.headerSubscriber){\n\t\t\tthis.headerSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"column-mousemove\", this.mousemoveCheck.bind(this, \"headerTooltip\"));\n\t\t\tthis.subscribe(\"column-mouseout\", this.mouseoutCheck.bind(this, \"headerTooltip\"));\n\t\t}\n\t\t\n\t\tif(column.definition.tooltip && !this.tooltipSubscriber){\n\t\t\tthis.tooltipSubscriber = true;\n\t\t\t\n\t\t\tthis.subscribe(\"cell-mousemove\", this.mousemoveCheck.bind(this, \"tooltip\"));\n\t\t\tthis.subscribe(\"cell-mouseout\", this.mouseoutCheck.bind(this, \"tooltip\"));\n\t\t}\n\t}\n\t\n\tmousemoveCheck(action, e, component){\n\t\tvar tooltip = action === \"tooltip\" ? component.column.definition.tooltip : component.definition.headerTooltip;\n\t\t\n\t\tif(tooltip){\n\t\t\tthis.clearPopup();\n\t\t\tthis.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay);\n\t\t}\n\t}\n\n\tmouseoutCheck(action, e, component){\n\t\tif(!this.popupInstance){\n\t\t\tthis.clearPopup();\n\t\t}\n\t}\n\t\n\tclearPopup(action, e, component){\n\t\tclearTimeout(this.timeout);\n\t\tthis.timeout = null;\n\t\t\n\t\tif(this.popupInstance){\n\t\t\tthis.popupInstance.hide();\n\t\t}\n\t}\n\t\n\tloadTooltip(e, component, tooltip){\n\t\tvar contentsEl, renderedCallback, coords;\n\n\t\tfunction onRendered(callback){\n\t\t\trenderedCallback = callback;\n\t\t}\n\t\t\n\t\tif(typeof tooltip === \"function\"){\n\t\t\ttooltip = tooltip(e, component.getComponent(), onRendered);\n\t\t}\n\t\t\n\t\tif(tooltip instanceof HTMLElement){\n\t\t\tcontentsEl = tooltip;\n\t\t}else{\n\t\t\tcontentsEl = document.createElement(\"div\");\n\t\t\t\n\t\t\tif(tooltip === true){\n\t\t\t\tif(component instanceof Cell){\n\t\t\t\t\ttooltip = component.value;\n\t\t\t\t}else{\n\t\t\t\t\tif(component.definition.field){\n\t\t\t\t\t\tthis.langBind(\"columns|\" + component.definition.field, (value) => {\n\t\t\t\t\t\t\tcontentsEl.innerHTML = tooltip = value || component.definition.title;\n\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\ttooltip = component.definition.title;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tcontentsEl.innerHTML = tooltip;\n\t\t}\n\t\t\n\t\tif(tooltip || tooltip === 0 || tooltip === false){\n\t\t\tcontentsEl.classList.add(\"tabulator-tooltip\");\n\n\t\t\tcontentsEl.addEventListener(\"mousemove\", e => e.preventDefault());\n\t\t\t\n\t\t\tthis.popupInstance = this.popup(contentsEl);\n\t\t\t\n\t\t\tif(typeof renderedCallback === \"function\"){\n\t\t\t\tthis.popupInstance.renderCallback(renderedCallback);\n\t\t\t}\n\n\t\t\tcoords = this.popupInstance.containerEventCoords(e);\n\t\t\t\n\t\t\tthis.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => {\n\t\t\t\tthis.dispatchExternal(\"TooltipClosed\", component.getComponent());\n\t\t\t\tthis.popupInstance = null;\n\t\t\t});\n\t\t\t\n\t\t\tthis.dispatchExternal(\"TooltipOpened\", component.getComponent());\n\t\t}\n\t}\n}\n\nTooltip.moduleName = \"tooltip\";\n\nexport default Tooltip;\n","export default {\n\t//is integer\n\tinteger: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tvalue = Number(value);\n\n\t\treturn !isNaN(value) && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function(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(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 alphanumeric\n\talphanumeric: function(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tvar reg = new RegExp(/^[a-z0-9]+$/i);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//maximum value\n\tmax: function(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(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(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(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\n\t//minimum string length\n\tminLength: function(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(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(cell, value, parameters){\n\t\tif(value === \"\" || value === null || typeof value === \"undefined\"){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(typeof parameters == \"string\"){\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function(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(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(cell, value, parameters){\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t},\n};","import Module from '../../core/Module.js';\n\nimport defaultValidators from './defaults/validators.js';\n\nclass Validate extends Module{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.invalidCells = [];\n\t\t\n\t\tthis.registerTableOption(\"validationMode\", \"blocking\");\n\t\t\n\t\tthis.registerColumnOption(\"validator\");\n\t\t\n\t\tthis.registerTableFunction(\"getInvalidCells\", this.getInvalidCells.bind(this));\n\t\tthis.registerTableFunction(\"clearCellValidation\", this.userClearCellValidation.bind(this));\n\t\tthis.registerTableFunction(\"validate\", this.userValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"cell\", \"isValid\", this.cellIsValid.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"clearValidation\", this.clearValidation.bind(this));\n\t\tthis.registerComponentFunction(\"cell\", \"validate\", this.cellValidate.bind(this));\n\t\t\n\t\tthis.registerComponentFunction(\"column\", \"validate\", this.columnValidate.bind(this));\n\t\tthis.registerComponentFunction(\"row\", \"validate\", this.rowValidate.bind(this));\n\t}\n\t\n\t\n\tinitialize(){\n\t\tthis.subscribe(\"cell-delete\", this.clearValidation.bind(this));\n\t\tthis.subscribe(\"column-layout\", this.initializeColumnCheck.bind(this));\n\t\t\n\t\tthis.subscribe(\"edit-success\", this.editValidate.bind(this));\n\t\tthis.subscribe(\"edit-editor-clear\", this.editorClear.bind(this));\n\t\tthis.subscribe(\"edit-edited-clear\", this.editedClear.bind(this));\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Event Handling //////////\n\t///////////////////////////////////\n\t\n\teditValidate(cell, value, previousValue){\n\t\tvar valid = this.table.options.validationMode !== \"manual\" ? this.validate(cell.column.modules.validate, cell, value) : true;\n\t\t\n\t\t// allow time for editor to make render changes then style cell\n\t\tif(valid !== true){\n\t\t\tsetTimeout(() => {\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t\tthis.dispatchExternal(\"validationFailed\", cell.getComponent(), value, valid);\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn valid;\n\t}\n\t\n\teditorClear(cell, cancelled){\n\t\tif(cancelled){\n\t\t\tif(cell.column.modules.validate){\n\t\t\t\tthis.cellValidate(cell);\n\t\t\t}\n\t\t}\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t}\n\t\n\teditedClear(cell){\n\t\tif(cell.modules.validate){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Cell Functions /////////\n\t///////////////////////////////////\n\t\n\tcellIsValid(cell){\n\t\treturn cell.modules.validate ? (cell.modules.validate.invalid || true) : true;\n\t}\n\t\n\tcellValidate(cell){\n\t\treturn this.validate(cell.column.modules.validate, cell, cell.getValue());\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Column Functions ////////\n\t///////////////////////////////////\n\t\n\tcolumnValidate(column){\n\t\tvar invalid = [];\n\t\t\n\t\tcolumn.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t////////// Row Functions //////////\n\t///////////////////////////////////\n\t\n\trowValidate(row){\n\t\tvar invalid = [];\n\t\t\n\t\trow.cells.forEach((cell) => {\n\t\t\tif(this.cellValidate(cell) !== true){\n\t\t\t\tinvalid.push(cell.getComponent());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn invalid.length ? invalid : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Table Functions /////////\n\t///////////////////////////////////\n\t\n\t\n\tuserClearCellValidation(cells){\n\t\tif(!cells){\n\t\t\tcells = this.getInvalidCells();\n\t\t}\n\t\t\n\t\tif(!Array.isArray(cells)){\n\t\t\tcells = [cells];\n\t\t}\n\t\t\n\t\tcells.forEach((cell) => {\n\t\t\tthis.clearValidation(cell._getSelf());\n\t\t});\n\t}\n\t\n\tuserValidate(cells){\n\t\tvar output = [];\n\t\t\n\t\t//clear row data\n\t\tthis.table.rowManager.rows.forEach((row) => {\n\t\t\trow = row.getComponent();\n\t\t\t\n\t\t\tvar valid = row.validate();\n\t\t\t\n\t\t\tif(valid !== true){\n\t\t\t\toutput = output.concat(valid);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output.length ? output : true;\n\t}\n\t\n\t///////////////////////////////////\n\t///////// Internal Logic //////////\n\t///////////////////////////////////\n\t\n\tinitializeColumnCheck(column){\n\t\tif(typeof column.definition.validator !== \"undefined\"){\n\t\t\tthis.initializeColumn(column);\n\t\t}\n\t}\n\t\n\t//validate\n\tinitializeColumn(column){\n\t\tvar self = this,\n\t\tconfig = [],\n\t\tvalidator;\n\t\t\n\t\tif(column.definition.validator){\n\t\t\t\n\t\t\tif(Array.isArray(column.definition.validator)){\n\t\t\t\tcolumn.definition.validator.forEach((item) => {\n\t\t\t\t\tvalidator = self._extractValidator(item);\n\t\t\t\t\t\n\t\t\t\t\tif(validator){\n\t\t\t\t\t\tconfig.push(validator);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\t\t\t\t\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\t\n\t\t\tcolumn.modules.validate = config.length ? config : false;\n\t\t}\n\t}\n\t\n\t_extractValidator(value){\n\t\tvar type, params, pos;\n\t\t\n\t\tswitch(typeof value){\n\t\t\tcase \"string\":\n\t\t\t\tpos = value.indexOf(':');\n\t\t\t\n\t\t\t\tif(pos > -1){\n\t\t\t\t\ttype = value.substring(0,pos);\n\t\t\t\t\tparams = value.substring(pos+1);\n\t\t\t\t}else{\n\t\t\t\t\ttype = value;\n\t\t\t\t}\n\t\t\t\n\t\t\t\treturn this._buildValidator(type, params);\n\t\t\t\n\t\t\tcase \"function\":\n\t\t\t\treturn this._buildValidator(value);\n\t\t\t\n\t\t\tcase \"object\":\n\t\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t}\n\t}\n\t\n\t_buildValidator(type, params){\n\t\t\n\t\tvar func = typeof type == \"function\" ? type : Validate.validators[type];\n\t\t\n\t\tif(!func){\n\t\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn {\n\t\t\t\ttype:typeof type == \"function\" ? \"function\" : type,\n\t\t\t\tfunc:func,\n\t\t\t\tparams:params,\n\t\t\t};\n\t\t}\n\t}\n\t\n\tvalidate(validators, cell, value){\n\t\tvar self = this,\n\t\tfailedValidators = [],\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\n\t\tif(validators){\n\t\t\tvalidators.forEach((item) => {\n\t\t\t\tif(!item.func.call(self, cell.getComponent(), value, item.params)){\n\t\t\t\t\tfailedValidators.push({\n\t\t\t\t\t\ttype:item.type,\n\t\t\t\t\t\tparameters:item.params\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\tif(!cell.modules.validate){\n\t\t\tcell.modules.validate = {};\n\t\t}\n\t\t\n\t\tif(!failedValidators.length){\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}else{\n\t\t\tcell.modules.validate.invalid = failedValidators;\n\t\t\t\n\t\t\tif(this.table.options.validationMode !== \"manual\"){\n\t\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t\t}\n\t\t\t\n\t\t\tif(invalidIndex == -1){\n\t\t\t\tthis.invalidCells.push(cell);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn failedValidators.length ? failedValidators : true;\n\t}\n\t\n\tgetInvalidCells(){\n\t\tvar output = [];\n\t\t\n\t\tthis.invalidCells.forEach((cell) => {\n\t\t\toutput.push(cell.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tclearValidation(cell){\n\t\tvar invalidIndex;\n\t\t\n\t\tif(cell.modules.validate && cell.modules.validate.invalid){\n\t\t\t\n\t\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\t\tcell.modules.validate.invalid = false;\n\t\t\t\n\t\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\t\t\t\n\t\t\tif(invalidIndex > -1){\n\t\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nValidate.moduleName = \"validate\";\n\n//load defaults\nValidate.validators = defaultValidators;\n\nexport default Validate;\n","export default class OptionsList {\n\tconstructor(table, msgType, defaults = {}){\n\t\tthis.table = table;\n\t\tthis.msgType = msgType;\n\t\tthis.registeredDefaults = Object.assign({}, defaults);\n\t}\n\t\n\tregister(option, value){\n\t\tthis.registeredDefaults[option] = value;\n\t}\n\t\n\tgenerate(defaultOptions, userOptions = {}){\n\t\tvar output = Object.assign({}, this.registeredDefaults),\n\t\twarn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true;\n\t\t\n\t\tObject.assign(output, defaultOptions);\n\t\t\n\t\tfor (let key in userOptions){\n\t\t\tif(!output.hasOwnProperty(key)){\n\t\t\t\tif(warn){\n\t\t\t\t\tconsole.warn(\"Invalid \" + this.msgType + \" option:\", key);\n\t\t\t\t}\n\n\t\t\t\toutput[key] = userOptions.key;\n\t\t\t}\n\t\t}\n\t\n\t\t\n\t\tfor (let key in output){\n\t\t\tif(key in userOptions){\n\t\t\t\toutput[key] = userOptions[key];\n\t\t\t}else{\n\t\t\t\tif(Array.isArray(output[key])){\n\t\t\t\t\toutput[key] = Object.assign([], output[key]);\n\t\t\t\t}else if(typeof output[key] === \"object\" && output[key] !== null){\n\t\t\t\t\toutput[key] = Object.assign({}, output[key]);\n\t\t\t\t}else if (typeof output[key] === \"undefined\"){\n\t\t\t\t\tdelete output[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Helpers from '../tools/Helpers.js';\n\nexport default class Renderer extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.elementVertical = table.rowManager.element;\n\t\tthis.elementHorizontal = table.columnManager.element;\n\t\tthis.tableElement = table.rowManager.tableElement;\n\n\t\tthis.verticalFillMode = \"fit\"; // used by row manager to determine how to size the render area (\"fit\" - fits container to the contents, \"fill\" - fills the container without resizing it)\n\t}\n\n\n\t///////////////////////////////////\n\t/////// Internal Bindings /////////\n\t///////////////////////////////////\n\n\tinitialize(){\n\t\t//initialize core functionality\n\t}\n\n\tclearRows(){\n\t\t//clear down existing rows layout\n\t}\n\n\tclearColumns(){\n\t\t//clear down existing columns layout\n\t}\n\n\n\treinitializeColumnWidths(columns){\n\t\t//resize columns to fit data\n\t}\n\n\n\trenderRows(){\n\t\t//render rows from a clean slate\n\t}\n\n\trenderColumns(){\n\t\t//render columns from a clean slate\n\t}\n\n\trerenderRows(callback){\n\t\t// rerender rows and keep position\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t}\n\n\trerenderColumns(update, blockRedraw){\n\t\t//rerender columns\n\t}\n\n\trenderRowCells(row){\n\t\t//render the cells in a row\n\t}\n\n\trerenderRowCells(row, force){\n\t\t//rerender the cells in a row\n\t}\n\n\tscrollColumns(left, dir){\n\t\t//handle horizontal scrolling\n\t}\n\n\tscrollRows(top, dir){\n\t\t//handle vertical scrolling\n\t}\n\n\tresize(){\n\t\t//container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION)\n\t}\n\n\tscrollToRow(row){\n\t\t//scroll to a specific row\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\t//determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\t//return the visible rows\n\t\treturn [];\n\t}\n\n\t///////////////////////////////////\n\t//////// Helper Functions /////////\n\t///////////////////////////////////\n\n\trows(){\n\t\treturn this.table.rowManager.getDisplayRows();\n\t}\n\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\n\t///////////////////////////////////\n\t/////// External Triggers /////////\n\t/////// (DO NOT OVERRIDE) /////////\n\t///////////////////////////////////\n\n\tclear(){\n\t\t//clear down existing layout\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t}\n\n\trender(){\n\t\t//render from a clean slate\n\t\tthis.renderRows();\n\t\tthis.renderColumns();\n\t}\n\n\trerender(callback){\n\t\t// rerender and keep position\n\t\tthis.rerenderRows();\n\t\tthis.rerenderColumns();\n\t}\n\n\tscrollToRowPosition(row, position, ifVisible){\n\t\tvar rowIndex = this.rows().indexOf(row),\n\t\trowEl = row.getElement(),\n\t\toffset = 0;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif(rowIndex > -1){\n\n\t\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\t\tifVisible = this.table.options.scrollToRowIfVisible;\n\t\t\t\t}\n\n\t\t\t\t//check row visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(Helpers.elVisible(rowEl)){\n\t\t\t\t\t\toffset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\t\tposition = this.table.options.scrollToRowPosition;\n\t\t\t\t}\n\n\t\t\t\tif(position === \"nearest\"){\n\t\t\t\t\tposition = this.scrollToRowNearestTop(row) ? \"top\" : \"bottom\";\n\t\t\t\t}\n\n\t\t\t\t//scroll to row\n\t\t\t\tthis.scrollToRow(row);\n\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\t\tif(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"top\":\n\t\t\t\t\t\tthis.elementVertical.scrollTop = rowEl.offsetTop;\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t\t}\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class BasicHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\trenderRowCells(row, inFragment) {\n\t\tconst rowFrag = document.createDocumentFragment();\n\t\trow.cells.forEach((cell) => {\n\t\t\trowFrag.appendChild(cell.getElement());\n\t\t});\n\t\trow.element.appendChild(rowFrag);\n\t\t\n\t\tif(!inFragment){\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tcolumns.forEach(function(column){\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\t}\n}","import Renderer from '../Renderer.js';\n\nexport default class VirtualDomHorizontal extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.leftCol = 0;\n\t\tthis.rightCol = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\t\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t\t\n\t\tthis.fitDataColAvg = 0;\n\t\t\n\t\tthis.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen\n\t\t\n\t\tthis.visibleRows = null;\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.isFitData = false;\n\t\t\n\t\tthis.columns = [];\n\t}\n\t\n\tinitialize(){\n\t\tthis.compatibilityCheck();\n\t\tthis.layoutCheck();\n\t\tthis.vertScrollListen();\n\t}\n\t\n\tcompatibilityCheck(){\t\t\n\t\tif(this.options(\"layout\") == \"fitDataTable\"){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with fitDataTable layout mode\");\n\t\t}\n\t\t\n\t\tif(this.options(\"responsiveLayout\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not compatible with responsive columns\");\n\t\t}\n\t\t\n\t\tif(this.options(\"rtl\")){\n\t\t\tconsole.warn(\"Horizontal Virtual DOM is not currently compatible with RTL text direction\");\n\t\t}\n\t}\n\t\n\tlayoutCheck(){\n\t\tthis.isFitData = this.options(\"layout\").startsWith('fitData');\n\t}\n\t\n\tvertScrollListen(){\n\t\tthis.subscribe(\"scroll-vertical\", this.clearVisRowCache.bind(this));\n\t\tthis.subscribe(\"data-refreshed\", this.clearVisRowCache.bind(this));\n\t}\n\t\n\tclearVisRowCache(){\n\t\tthis.visibleRows = null;\n\t}\n\t\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\t\n\trenderColumns(row, force){\n\t\tthis.dataChange();\n\t}\n\t\n\t\n\tscrollColumns(left, dir){\n\t\tif(this.scrollLeft != left){\n\t\t\tthis.scrollLeft = left;\n\t\t\t\n\t\t\tthis.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer));\n\t\t}\n\t}\n\t\n\tcalcWindowBuffer(){\n\t\tvar buffer = this.elementVertical.clientWidth;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\tvar width = column.getWidth();\n\t\t\t\t\n\t\t\t\tif(width > buffer){\n\t\t\t\t\tbuffer = width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.windowBuffer = buffer * 2;\n\t}\n\t\n\trerenderColumns(update, blockRedraw){\t\t\n\t\tvar old = {\n\t\t\tcols:this.columns,\n\t\t\tleftCol:this.leftCol,\n\t\t\trightCol:this.rightCol,\n\t\t},\n\t\tcolPos = 0;\n\t\t\n\t\tif(update && !this.initialized){\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tthis.clear();\n\t\t\n\t\tthis.calcWindowBuffer();\n\t\t\n\t\tthis.scrollLeft = this.elementVertical.scrollLeft;\n\t\t\n\t\tthis.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer;\n\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\n\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\tvar config = {},\n\t\t\twidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\tif(!column.modules.frozen){\t\t\t\n\t\t\t\t\twidth = column.getWidth();\n\n\t\t\t\t\tconfig.leftPos = colPos;\n\t\t\t\t\tconfig.rightPos = colPos + width;\n\t\t\t\t\t\n\t\t\t\t\tconfig.width = width;\n\t\t\t\t\t\n\t\t\t\t\tif (this.isFitData) {\n\t\t\t\t\t\tconfig.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){\n\t\t\t\t\t\t//column is visible\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(this.leftCol == -1){\n\t\t\t\t\t\t\tthis.leftCol = this.columns.length;\n\t\t\t\t\t\t\tthis.vDomPadLeft = colPos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.rightCol = this.columns.length;\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// column is hidden\n\t\t\t\t\t\tif(this.leftCol !== -1){\n\t\t\t\t\t\t\tthis.vDomPadRight += width;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.columns.push(column);\n\t\t\t\t\t\n\t\t\t\t\tcolumn.modules.vdomHoz = config;\n\t\t\t\t\t\n\t\t\t\t\tcolPos += width;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tif(!update || this.reinitChanged(old)){\n\t\t\t\tthis.reinitializeRows();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.elementVertical.scrollLeft = this.scrollLeft;\n\t}\n\t\n\trenderRowCells(row){\n\t\tif(this.initialized){\n\t\t\tthis.initializeRow(row);\n\t\t}else{\n\t\t\tconst rowFrag = document.createDocumentFragment();\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\trowFrag.appendChild(cell.getElement());\n\t\t\t});\n\t\t\trow.element.appendChild(rowFrag);\n\n\t\t\trow.cells.forEach((cell) => {\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\t}\n\t\n\trerenderRowCells(row, force){\n\t\tthis.reinitializeRow(row, force);\n\t}\n\t\n\treinitializeColumnWidths(columns){\n\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\tthis.columns[i].reinitializeWidth();\n\t\t}\n\t}\n\t\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\t\n\tdeinitialize(){\n\t\tthis.initialized = false;\n\t}\n\t\n\tclear(){\n\t\tthis.columns = [];\n\t\t\n\t\tthis.leftCol = -1;\n\t\tthis.rightCol = 0;\n\t\t\n\t\tthis.vDomScrollPosLeft = 0;\n\t\tthis.vDomScrollPosRight = 0;\n\t\tthis.vDomPadLeft = 0;\n\t\tthis.vDomPadRight = 0;\n\t}\n\t\n\tdataChange(){\n\t\tvar change = false,\n\t\trow, rowEl;\n\t\t\n\t\tif(this.isFitData){\n\t\t\tthis.table.columnManager.columnsByIndex.forEach((column) => {\n\t\t\t\tif(!column.definition.width && column.visible){\n\t\t\t\t\tchange = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(change && this.table.rowManager.getDisplayRows().length){\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;\n\t\t\t\t\n\t\t\t\trow = this.chain(\"rows-sample\", [1], [], () => {\n\t\t\t\t\treturn this.table.rowManager.getDisplayRows();\n\t\t\t\t})[0];\n\t\t\t\t\n\t\t\t\tif(row){\n\t\t\t\t\trowEl = row.getElement();\n\t\t\t\t\t\n\t\t\t\t\trow.generateCells();\n\t\t\t\t\t\n\t\t\t\t\tthis.tableElement.appendChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tfor(let colEnd = 0; colEnd < row.cells.length; colEnd++){\n\t\t\t\t\t\tlet cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\t\t\t\t\t\t\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t\t\t\n\t\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tif(this.options(\"layout\") === \"fitColumns\"){\n\t\t\t\tthis.layoutRefresh();\n\t\t\t\tthis.rerenderColumns(false, true);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treinitChanged(old){\n\t\tvar match = true;\n\t\t\n\t\tif(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\told.cols.forEach((col, i) => {\n\t\t\tif(col !== this.columns[i]){\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn !match;\n\t}\n\t\n\treinitializeRows(){\n\t\tvar visibleRows = this.getVisibleRows(),\n\t\totherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));\n\n\t\tvisibleRows.forEach((row) => {\n\t\t\tthis.reinitializeRow(row, true);\n\t\t});\n\n\t\totherRows.forEach((row) =>{\n\t\t\trow.deinitialize();\n\t\t});\n\t}\n\t\n\tgetVisibleRows(){\n\t\tif (!this.visibleRows){\n\t\t\tthis.visibleRows = this.table.rowManager.getVisibleRows();\n\t\t}\n\t\t\n\t\treturn this.visibleRows;\t\n\t}\n\t\n\tscroll(diff){\n\t\tthis.vDomScrollPosLeft += diff;\n\t\tthis.vDomScrollPosRight += diff;\n\t\t\n\t\tif(Math.abs(diff) > (this.windowBuffer / 2)){\n\t\t\tthis.rerenderColumns();\n\t\t}else{\n\t\t\tif(diff > 0){\n\t\t\t\t//scroll right\n\t\t\t\tthis.addColRight();\n\t\t\t\tthis.removeColLeft();\n\t\t\t}else{\n\t\t\t\t//scroll left\n\t\t\t\tthis.addColLeft();\n\t\t\t\tthis.removeColRight();\n\t\t\t}\n\t\t}\n\t}\n\t\n\tcolPositionAdjust (start, end, diff){\n\t\tfor(let i = start; i < end; i++){\n\t\t\tlet column = this.columns[i];\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.leftPos += diff;\n\t\t\tcolumn.modules.vdomHoz.rightPos += diff;\n\t\t}\n\t}\n\t\n\taddColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\n\t\t\tlet column = this.columns[this.rightCol + 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);\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\t\n\t\t\t\t\tthis.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tthis.rightCol++; // Don't move this below the >= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.rightCol >= (this.columns.length - 1)){\n\t\t\t\t\t\tthis.vDomPadRight = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\taddColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol - 1];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\trow.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());\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\t\n\t\t\t\t\tthis.leftCol--; // don't move this below the <= check below\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(this.leftCol <= 0){ // replicating logic in addColRight\n\t\t\t\t\t\tthis.vDomPadLeft = 0;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet diff = this.fitDataColActualWidthCheck(column);\n\t\t\t\t\t\n\t\t\t\t\tif(diff){\n\t\t\t\t\t\tthis.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff;\n\t\t\t\t\t\tthis.vDomPadRight -= diff;\n\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColRight(){\n\t\tvar changes = false,\n\t\tworking = true;\n\t\t\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.rightCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColRight\", ex.message);\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\t\n\t\t\t\t\tthis.vDomPadRight += column.getWidth();\n\t\t\t\t\tthis.rightCol --;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.rightCol = this.rightCol;\n\t\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingRight = this.vDomPadRight + \"px\";\n\t\t}\n\t}\n\t\n\tremoveColLeft(){\n\t\tvar changes = false,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet column = this.columns[this.leftCol];\n\t\t\t\n\t\t\tif(column){\n\t\t\t\tif(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){\n\t\t\t\t\tchanges = true;\n\t\t\t\t\t\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\t\t\t\t\t\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tconsole.warn(\"Could not removeColLeft\", ex.message);\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\t\n\t\t\t\t\tthis.vDomPadLeft += column.getWidth();\n\t\t\t\t\tthis.leftCol ++;\n\n\t\t\t\t\tthis.getVisibleRows().forEach((row) => {\n\t\t\t\t\t\tif(row.type !== \"group\"){\n\t\t\t\t\t\t\trow.modules.vdomHoz.leftCol = this.leftCol;\n\t\t\t\t\t\t}\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\t\t\n\t\tif(changes){\n\t\t\tthis.tableElement.style.paddingLeft = this.vDomPadLeft + \"px\";\n\t\t}\n\t}\n\t\n\tfitDataColActualWidthCheck(column){\n\t\tvar newWidth, widthDiff;\n\t\t\n\t\tif(column.modules.vdomHoz.fitDataCheck){\n\t\t\tcolumn.reinitializeWidth();\n\t\t\t\n\t\t\tnewWidth = column.getWidth();\n\t\t\twidthDiff = newWidth - column.modules.vdomHoz.width;\n\t\t\t\n\t\t\tif(widthDiff){\n\t\t\t\tcolumn.modules.vdomHoz.rightPos += widthDiff;\n\t\t\t\tcolumn.modules.vdomHoz.width = newWidth;\n\t\t\t\tthis.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff);\n\t\t\t}\n\t\t\t\n\t\t\tcolumn.modules.vdomHoz.fitDataCheck = false;\n\t\t}\n\t\t\n\t\treturn widthDiff;\n\t}\n\t\n\tinitializeRow(row){\n\t\tif(row.type !== \"group\"){\n\t\t\trow.modules.vdomHoz = {\n\t\t\t\tleftCol:this.leftCol,\n\t\t\t\trightCol:this.rightCol,\n\t\t\t};\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.leftColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor(let i = this.leftCol; i <= this.rightCol; i++){\n\t\t\t\tthis.appendCell(row, this.columns[i]);\n\t\t\t}\n\n\t\t\tif(this.table.modules.frozenColumns){\n\t\t\t\tthis.table.modules.frozenColumns.rightColumns.forEach((column) => {\n\t\t\t\t\tthis.appendCell(row, column);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tappendCell(row, column){\n\t\tif(column && column.visible){\n\t\t\tlet cell = row.getCell(column);\n\t\t\t\n\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\tcell.cellRendered();\n\t\t}\n\t}\n\t\n\treinitializeRow(row, force){\n\t\tif(row.type !== \"group\"){\n\t\t\tif(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){\n\t\t\t\t\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\twhile(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);\n\n\t\t\t\tthis.initializeRow(row);\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Column from './column/Column.js';\nimport ColumnComponent from './column/ColumnComponent.js';\nimport Helpers from './tools/Helpers.js';\nimport OptionsList from './tools/OptionsList.js';\n\nimport RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js';\nimport RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js';\n\nimport defaultColumnOptions from './column/defaults/options.js';\n\nexport default class ColumnManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.blockHozScrollEvent = false;\n\t\tthis.headersElement = null;\n\t\tthis.contentsElement = null;\n\t\tthis.element = null ; //containing element\n\t\tthis.columns = []; // column definition object\n\t\tthis.columnsByIndex = []; //columns by index\n\t\tthis.columnsByField = {}; //columns by field\n\t\tthis.scrollLeft = 0;\n\t\tthis.optionsList = new OptionsList(this.table, \"column definition\", defaultColumnOptions);\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockUpdate = null; //store latest redraw update only status\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t////////////// Setup Functions /////////////////\n\t\n\tinitialize(){\n\t\tthis.initializeRenderer();\n\t\t\n\t\tthis.headersElement = this.createHeadersElement();\n\t\tthis.contentsElement = this.createHeaderContentsElement();\n\t\tthis.element = this.createHeaderElement();\n\t\t\n\t\tthis.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);\n\t\tthis.element.insertBefore(this.contentsElement, this.element.firstChild);\n\n\t\tthis.initializeScrollWheelWatcher();\n\t\t\n\t\tthis.subscribe(\"scroll-horizontal\", this.scrollHorizontal.bind(this));\n\t\tthis.subscribe(\"scrollbar-vertical\", this.padVerticalScrollbar.bind(this));\n\t}\n\n\tpadVerticalScrollbar(width){\n\t\tif(this.table.rtl){\n\t\t\tthis.headersElement.style.marginLeft = width + \"px\";\n\t\t}else{\n\t\t\tthis.headersElement.style.marginRight = width + \"px\";\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomHorizontal,\n\t\t\t\"basic\": RendererBasicHorizontal,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderHorizontal === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderHorizontal];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderHorizontal;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderHorizontal);\n\t\t}\n\t}\n\t\n\t\n\tcreateHeadersElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-headers\");\n\t\tel.setAttribute(\"role\", \"row\");\n\t\t\n\t\treturn el;\n\t}\n\n\tcreateHeaderContentsElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header-contents\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateHeaderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-header\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\tif(!this.table.options.headerVisible){\n\t\t\tel.classList.add(\"tabulator-header-hidden\");\n\t\t}\n\t\t\n\t\treturn el;\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\t//return containing contents element\n\tgetContentsElement(){\n\t\treturn this.contentsElement;\n\t}\n\t\n\t\n\t//return header containing element\n\tgetHeadersElement(){\n\t\treturn this.headersElement;\n\t}\n\t\n\t//scroll horizontally to match table body\n\tscrollHorizontal(left){\n\t\tthis.contentsElement.scrollLeft = left;\n\n\t\tthis.scrollLeft = left;\n\t\t\n\t\tthis.renderer.scrollColumns(left);\n\t}\n\n\tinitializeScrollWheelWatcher(){\n\t\tthis.contentsElement.addEventListener(\"wheel\", (e) => {\n\t\t\tvar left;\n\n\t\t\tif(e.deltaX){\n\t\t\t\tleft = this.contentsElement.scrollLeft + e.deltaX;\n\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t///////////// Column Setup Functions /////////////\n\tgenerateColumnsFromRowData(data){\n\t\tvar cols = [],\n\t\tdefinitions = this.table.options.autoColumnsDefinitions,\n\t\trow, sorter;\n\t\t\n\t\tif(data && data.length){\n\t\t\t\n\t\t\trow = data[0];\n\t\t\t\n\t\t\tfor(var key in row){\n\t\t\t\tlet col = {\n\t\t\t\t\tfield:key,\n\t\t\t\t\ttitle:key,\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tlet value = row[key];\n\t\t\t\t\n\t\t\t\tswitch(typeof value){\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(value)){\n\t\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(!isNaN(value) && value !== \"\"){\n\t\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){\n\t\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcol.sorter = sorter;\n\t\t\t\t\n\t\t\t\tcols.push(col);\n\t\t\t}\n\t\t\t\n\t\t\tif(definitions){\n\t\t\t\t\n\t\t\t\tswitch(typeof definitions){\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tif(Array.isArray(definitions)){\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tvar match = definitions.find((def) => {\n\t\t\t\t\t\t\t\t\treturn def.field === col.field;\n\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\tif(match){\n\t\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcols.forEach((col) => {\n\t\t\t\t\t\t\t\tif(definitions[col.field]){\n\t\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.table.options.columns = cols;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis.table.options.columns = cols;\n\t\t\t}\n\t\t\t\n\t\t\tthis.setColumns(this.table.options.columns);\n\t\t}\n\t}\n\t\n\tsetColumns(cols, row){\n\t\twhile(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild);\n\t\t\n\t\tthis.columns = [];\n\t\tthis.columnsByIndex = [];\n\t\tthis.columnsByField = {};\n\t\t\n\t\tthis.dispatch(\"columns-loading\");\n\t\t\n\t\tcols.forEach((def, i) => {\n\t\t\tthis._addColumn(def);\n\t\t});\n\t\t\n\t\tthis._reIndexColumns();\n\t\t\n\t\tthis.dispatch(\"columns-loaded\");\n\t\t\n\t\tthis.rerenderColumns(false, true);\n\t\t\n\t\tthis.redraw(true);\n\t}\n\t\n\t_addColumn(definition, before, nextToColumn){\n\t\tvar column = new Column(definition, this),\n\t\tcolEl = column.getElement(),\n\t\tindex = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\t\t\n\t\tif(nextToColumn && index > -1){\n\t\t\tvar topColumn = nextToColumn.getTopColumn();\n\t\t\tvar parentIndex = this.columns.indexOf(topColumn);\n\t\t\tvar nextEl = topColumn.getElement();\n\t\t\t\n\t\t\tif(before){\n\t\t\t\tthis.columns.splice(parentIndex, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t\t}else{\n\t\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\t\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t\t}\n\t\t}else{\n\t\t\tif(before){\n\t\t\t\tthis.columns.unshift(column);\n\t\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t\t}else{\n\t\t\t\tthis.columns.push(column);\n\t\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t\t}\n\t\t}\n\t\t\n\t\tcolumn.columnRendered();\n\t\t\n\t\treturn column;\n\t}\n\t\n\tregisterColumnField(col){\n\t\tif(col.definition.field){\n\t\t\tthis.columnsByField[col.definition.field] = col;\n\t\t}\n\t}\n\t\n\tregisterColumnPosition(col){\n\t\tthis.columnsByIndex.push(col);\n\t}\n\t\n\t_reIndexColumns(){\n\t\tthis.columnsByIndex = [];\n\t\t\n\t\tthis.columns.forEach(function(column){\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t}\n\t\n\t//ensure column headers take up the correct amount of space in column groups\n\tverticalAlignHeaders(){\n\t\tvar minHeight = 0;\n\t\t\n\t\tif(!this.redrawBlock){\n\n\t\t\tthis.headersElement.style.height=\"\";\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.clearVerticalAlign();\n\t\t\t});\n\t\t\t\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tvar height = column.getHeight();\n\t\t\t\t\n\t\t\t\tif(height > minHeight){\n\t\t\t\t\tminHeight = height;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.headersElement.style.height = minHeight + \"px\";\n\n\t\t\tthis.columns.forEach((column) => {\n\t\t\t\tcolumn.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);\n\t\t\t});\n\t\t\t\n\t\t\tthis.table.rowManager.adjustTableSize();\n\t\t}\n\t}\n\t\n\t//////////////// Column Details /////////////////\n\tfindColumn(subject){\n\t\tvar columns;\n\n\t\tif(typeof subject == \"object\"){\n\t\t\t\n\t\t\tif(subject instanceof Column){\n\t\t\t\t//subject is column element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof ColumnComponent){\n\t\t\t\t//subject is public column component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\n\t\t\t\tcolumns = [];\n\n\t\t\t\tthis.columns.forEach((column) => {\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t\tcolumns = columns.concat(column.getColumns(true));\n\t\t\t\t});\n\n\t\t\t\t//subject is a HTML element of the column header\n\t\t\t\tlet match = columns.find((column) => {\n\t\t\t\t\treturn column.element === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}\n\t\t\t\n\t\t}else{\n\t\t\t//subject should be treated as the field name of the column\n\t\t\treturn this.columnsByField[subject] || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetColumnByField(field){\n\t\treturn this.columnsByField[field];\n\t}\n\t\n\tgetColumnsByFieldRoot(root){\n\t\tvar matches = [];\n\t\t\n\t\tObject.keys(this.columnsByField).forEach((field) => {\n\t\t\tvar fieldRoot = this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator)[0] : field;\n\t\t\tif(fieldRoot === root){\n\t\t\t\tmatches.push(this.columnsByField[field]);\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn matches;\n\t}\n\t\n\tgetColumnByIndex(index){\n\t\treturn this.columnsByIndex[index];\n\t}\n\t\n\tgetFirstVisibleColumn(){\n\t\tvar index = this.columnsByIndex.findIndex((col) => {\n\t\t\treturn col.visible;\n\t\t});\n\t\t\n\t\treturn index > -1 ? this.columnsByIndex[index] : false;\n\t}\n\n\tgetVisibleColumnsByIndex() {\n\t\treturn this.columnsByIndex.filter((col) => col.visible);\n\t}\n\t\n\tgetColumns(){\n\t\treturn this.columns;\n\t}\n\t\n\tfindColumnIndex(column){\n\t\treturn this.columnsByIndex.findIndex((col) => {\n\t\t\treturn column === col;\n\t\t});\n\t}\n\t\n\t//return all columns that are not groups\n\tgetRealColumns(){\n\t\treturn this.columnsByIndex;\n\t}\n\t\n\t//traverse across columns and call action\n\ttraverse(callback){\n\t\tthis.columnsByIndex.forEach((column,i) =>{\n\t\t\tcallback(column, i);\n\t\t});\n\t}\n\t\n\t//get definitions of actual columns\n\tgetDefinitions(active){\n\t\tvar output = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(!active || (active && column.visible)){\n\t\t\t\toutput.push(column.getDefinition());\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\t//get full nested definition tree\n\tgetDefinitionTree(){\n\t\tvar output = [];\n\t\t\n\t\tthis.columns.forEach((column) => {\n\t\t\toutput.push(column.getDefinition(true));\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(structured){\n\t\tvar output = [],\n\t\tcolumns = structured ? this.columns : this.columnsByIndex;\n\t\t\n\t\tcolumns.forEach((column) => {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetWidth(){\n\t\tvar width = 0;\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tif(column.visible){\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn width;\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tto.element.parentNode.insertBefore(from.element, to.element);\n\t\t\n\t\tif(after){\n\t\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t\t}\n\t\t\n\t\tthis.moveColumnActual(from, to, after);\n\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\t\n\tmoveColumnActual(from, to, after){\n\t\tif(from.parent.isGroup){\n\t\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t\t}else{\n\t\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t\t}\n\t\t\n\t\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\t\t\n\t\tthis.rerenderColumns(true);\n\t\t\n\t\tthis.dispatch(\"column-moved\", from, to, after);\n\t\t\n\t\tif(this.subscribedExternal(\"columnMoved\")){\n\t\t\tthis.dispatchExternal(\"columnMoved\", from.getComponent(), this.table.columnManager.getComponents());\n\t\t}\n\t}\n\t\n\t_moveColumnInArray(columns, from, to, after, updateRows){\n\t\tvar\tfromIndex = columns.indexOf(from),\n\t\ttoIndex, rows = [];\n\t\t\n\t\tif (fromIndex > -1) {\n\t\t\t\n\t\t\tcolumns.splice(fromIndex, 1);\n\t\t\t\n\t\t\ttoIndex = columns.indexOf(to);\n\t\t\t\n\t\t\tif (toIndex > -1) {\n\t\t\t\t\n\t\t\t\tif(after){\n\t\t\t\t\ttoIndex = toIndex+1;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}else{\n\t\t\t\ttoIndex = fromIndex;\n\t\t\t}\n\t\t\t\n\t\t\tcolumns.splice(toIndex, 0, from);\n\t\t\t\n\t\t\tif(updateRows){\n\t\t\t\t\n\t\t\t\trows = this.chain(\"column-moving-rows\", [from, to, after], null, []) || [];\n\t\t\t\t\n\t\t\t\trows = rows.concat(this.table.rowManager.rows);\n\t\t\t\t\n\t\t\t\trows.forEach(function(row){\n\t\t\t\t\tif(row.cells.length){\n\t\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\t\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t}\n\t\n\tscrollToColumn(column, position, ifVisible){\n\t\tvar left = 0,\n\t\toffset = column.getLeftOffset(),\n\t\tadjust = 0,\n\t\tcolEl = column.getElement();\n\t\t\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tif(typeof position === \"undefined\"){\n\t\t\t\tposition = this.table.options.scrollToColumnPosition;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof ifVisible === \"undefined\"){\n\t\t\t\tifVisible = this.table.options.scrollToColumnIfVisible;\n\t\t\t}\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\t//align to correct position\n\t\t\t\tswitch(position){\n\t\t\t\t\tcase \"middle\":\n\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\tadjust = -this.element.clientWidth / 2;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tadjust = colEl.clientWidth - this.headersElement.clientWidth;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//check column visibility\n\t\t\t\tif(!ifVisible){\n\t\t\t\t\tif(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//calculate scroll position\n\t\t\t\tleft = offset + adjust;\n\t\t\t\t\n\t\t\t\tleft = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0);\n\t\t\t\t\n\t\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\t\t\t\tthis.scrollHorizontal(left);\n\t\t\t\t\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\t\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t\t}\n\t\t\t\n\t\t});\n\t}\n\t\n\t//////////////// Cell Management /////////////////\n\tgenerateCells(row){\n\t\tvar cells = [];\n\t\t\n\t\tthis.columnsByIndex.forEach((column) => {\n\t\t\tcells.push(column.generateCell(row));\n\t\t});\n\t\t\n\t\treturn cells;\n\t}\n\t\n\t//////////////// Column Management /////////////////\n\tgetFlexBaseWidth(){\n\t\tvar totalWidth = this.table.element.clientWidth, //table element width\n\t\tfixedWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar if present\n\t\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\t\t\n\t\tthis.columnsByIndex.forEach(function(column){\n\t\t\tvar width, minWidth, colWidth;\n\t\t\t\n\t\t\tif(column.visible){\n\t\t\t\t\n\t\t\t\twidth = column.definition.width || 0;\n\t\t\t\t\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\t\t\t\t\n\t\t\t\tif(typeof(width) == \"string\"){\n\t\t\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width) ;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tcolWidth = width;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn fixedWidth;\n\t}\n\t\n\taddColumn(definition, before, nextToColumn){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this._addColumn(definition, before, nextToColumn);\n\t\t\t\n\t\t\tthis._reIndexColumns();\n\t\t\t\n\t\t\tthis.dispatch(\"column-add\", definition, before, nextToColumn);\n\t\t\t\n\t\t\tif(this.layoutMode() != \"fitColumns\"){\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\t\t\t\n\t\t\tthis.redraw(true);\n\t\t\t\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t\t\n\t\t\tthis.rerenderColumns();\n\t\t\t\n\t\t\tresolve(column);\n\t\t});\n\t}\n\t\n\t//remove column from system\n\tderegisterColumn(column){\n\t\tvar field = column.getField(),\n\t\tindex;\n\t\t\n\t\t//remove from field list\n\t\tif(field){\n\t\t\tdelete this.columnsByField[field];\n\t\t}\n\t\t\n\t\t//remove from index list\n\t\tindex = this.columnsByIndex.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columnsByIndex.splice(index, 1);\n\t\t}\n\t\t\n\t\t//remove from column list\n\t\tindex = this.columns.indexOf(column);\n\t\t\n\t\tif(index > -1){\n\t\t\tthis.columns.splice(index, 1);\n\t\t}\n\t\t\n\t\tthis.verticalAlignHeaders();\n\t\t\n\t\tthis.redraw();\n\t}\n\t\n\trerenderColumns(update, silent){\n\t\tif(!this.redrawBlock){\n\t\t\tthis.renderer.rerenderColumns(update, silent);\n\t\t}else{\n\t\t\tif(update === false || (update === true && this.redrawBlockUpdate === null)){\n\t\t\t\tthis.redrawBlockUpdate = update;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tblockRedraw(){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockUpdate = null;\n\t}\n\t\n\trestoreRedraw(){\n\t\tthis.redrawBlock = false;\n\t\tthis.verticalAlignHeaders();\n\t\tthis.renderer.rerenderColumns(this.redrawBlockUpdate);\n\t\t\n\t}\n\t\n\t//redraw columns\n\tredraw(force){\n\t\tif(Helpers.elVisible(this.element)){\n\t\t\tthis.verticalAlignHeaders();\n\t\t}\n\t\t\n\t\tif(force){\n\t\t\tthis.table.rowManager.resetScroll();\n\t\t\tthis.table.rowManager.reinitialize();\n\t\t}\n\t\t\n\t\tif(!this.confirm(\"table-redrawing\", force)){\n\t\t\tthis.layoutRefresh(force);\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-redraw\", force);\n\t\t\n\t\tthis.table.footerManager.redraw();\n\t}\n}","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class BasicVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.verticalFillMode = \"fill\";\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t}\n\t\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\t\t\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\telement.scrollTop = 0;\n\t\telement.scrollLeft = 0;\n\t\t\n\t\telement.style.minWidth = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\t}\n\t\n\trenderRows() {\n\t\tvar element = this.tableElement,\n\t\tonlyGroupHeaders = true,\n\t\ttableFrag = document.createDocumentFragment(),\n\t\trows = this.rows();\n\t\t\n\t\trows.forEach((row, index) => {\n\t\t\tthis.styleRow(row, index);\n\t\t\trow.initialize(false, true);\n\t\t\t\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\t\t\t\n\t\t\ttableFrag.appendChild(row.getElement());\n\t\t});\n\t\t\n\t\telement.appendChild(tableFrag);\n\t\t\n\t\trows.forEach((row) => {\n\t\t\trow.rendered();\n\t\t\t\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.calcHeight(true);\n\t\t\t}\n\t\t});\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif(!row.heightInitialized) {\n\t\t\t\trow.setCellHeight();\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(onlyGroupHeaders){\n\t\t\telement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t}else{\n\t\t\telement.style.minWidth = \"\";\n\t\t}\n\t}\n\t\n\t\n\trerenderRows(callback){\t\n\t\tthis.clearRows();\n\t\t\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\t\t\n\t\tthis.renderRows();\n\n\t\tif(!this.rows().length){\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\t}\n\t\n\tscrollToRowNearestTop(row){\n\t\tvar rowTop = Helpers.elOffset(row.getElement()).top;\n\t\t\n\t\treturn !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));\n\t}\n\t\n\tscrollToRow(row){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tthis.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;\n\t}\n\t\n\tvisibleRows(includingBuffer){\n\t\treturn this.rows();\n\t}\n\t\n}\n","import Renderer from '../Renderer.js';\nimport Helpers from '../../tools/Helpers.js';\n\nexport default class VirtualDomVertical extends Renderer{\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.verticalFillMode = \"fill\";\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\t\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\t\tthis.vDomBottom = 0; //hold position for last rendered row in the virtual DOM\n\n\t\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\t\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\t\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\t\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\t\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\t\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\t\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\t\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\t\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\t\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\t}\n\n\t//////////////////////////////////////\n\t///////// Public Functions ///////////\n\t//////////////////////////////////////\n\n\tclearRows(){\n\t\tvar element = this.tableElement;\n\n\t\t// element.children.detach();\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\telement.style.paddingTop = \"\";\n\t\telement.style.paddingBottom = \"\";\n\t\telement.style.minHeight = \"\";\n\t\telement.style.display = \"\";\n\t\telement.style.visibility = \"\";\n\n\t\tthis.elementVertical.scrollTop = 0;\n\t\tthis.elementVertical.scrollLeft = 0;\n\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\n\t\tthis.vDomTop = 0;\n\t\tthis.vDomBottom = 0;\n\t\tthis.vDomTopPad = 0;\n\t\tthis.vDomBottomPad = 0;\n\t\tthis.vDomScrollPosTop = 0;\n\t\tthis.vDomScrollPosBottom = 0;\n\t}\n\n\trenderRows(){\n\t\tthis._virtualRenderFill();\n\t}\n\n\trerenderRows(callback){\n\t\tvar scrollTop = this.elementVertical.scrollTop;\n\t\tvar topRow = false;\n\t\tvar topOffset = false;\n\n\t\tvar left = this.table.rowManager.scrollLeft;\n\n\t\tvar rows = this.rows();\n\n\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\n\t\t\tif(rows[i]){\n\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\tif(topOffset === false || Math.abs(diff) < topOffset){\n\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\ttopRow = i;\n\t\t\t\t}else{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\trows.forEach((row) => {\n\t\t\trow.deinitializeHeight();\n\t\t});\n\n\t\tif(callback){\n\t\t\tcallback();\n\t\t}\n\n\t\tif(this.rows().length){\n\t\t\tthis._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);\n\t\t}else{\n\t\t\tthis.clear();\n\t\t\tthis.table.rowManager.tableEmpty();\n\t\t}\n\n\t\tthis.scrollColumns(left);\n\t}\n\n\tscrollColumns(left){\n\t\tthis.table.rowManager.scrollHorizontal(left);\n\t}\n\n\tscrollRows(top, dir){\n\t\tvar topDiff = top - this.vDomScrollPosTop;\n\t\tvar bottomDiff = top - this.vDomScrollPosBottom;\n\t\tvar margin = this.vDomWindowBuffer * 2;\n\t\tvar rows = this.rows();\n\n\t\tthis.scrollTop = top;\n\n\t\tif(-topDiff > margin || bottomDiff > margin){\n\t\t\t//if big scroll redraw table;\n\t\t\tvar left = this.table.rowManager.scrollLeft;\n\t\t\tthis._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length));\n\t\t\tthis.scrollColumns(left);\n\t\t}else{\n\n\t\t\tif(dir){\n\t\t\t\t//scrolling up\n\t\t\t\tif(topDiff < 0){\n\t\t\t\t\tthis._addTopRow(rows, -topDiff);\n\t\t\t\t}\n\n\t\t\t\tif(bottomDiff < 0){\n\t\t\t\t\t//hide bottom row if needed\n\t\t\t\t\tif(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeBottomRow(rows, -bottomDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\n\t\t\t\tif(bottomDiff >= 0){\n\t\t\t\t\tthis._addBottomRow(rows, bottomDiff);\n\t\t\t\t}\n\n\t\t\t\t//scrolling down\n\t\t\t\tif(topDiff >= 0){\n\t\t\t\t\t//hide top row if needed\n\t\t\t\t\tif(this.scrollTop > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis._removeTopRow(rows, topDiff);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tresize(){\n\t\tthis.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight;\n\t}\n\n\tscrollToRowNearestTop(row){\n\t\tvar rowIndex = this.rows().indexOf(row);\n\n\t\treturn !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex));\n\t}\n\n\tscrollToRow(row){\n\t\tvar index = this.rows().indexOf(row);\n\n\t\tif(index > -1){\n\t\t\tthis._virtualRenderFill(index, true);\n\t\t}\n\t}\n\n\tvisibleRows(includingBuffer){\n\t\tvar topEdge = this.elementVertical.scrollTop,\n\t\tbottomEdge = this.elementVertical.clientHeight + topEdge,\n\t\ttopFound = false,\n\t\ttopRow = 0,\n\t\tbottomRow = 0,\n\t\trows = this.rows();\n\n\t\tif(includingBuffer){\n\t\t\ttopRow = this.vDomTop;\n\t\t\tbottomRow = this.vDomBottom;\n\t\t}else{\n\t\t\tfor(var i = this.vDomTop; i <= this.vDomBottom; i++){\n\t\t\t\tif(rows[i]){\n\t\t\t\t\tif(!topFound){\n\t\t\t\t\t\tif((topEdge - rows[i].getElement().offsetTop) >= 0){\n\t\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\t\tif(bottomEdge - rows[i].getElement().offsetTop >= 0){\n\t\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tbreak;\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(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}\n\t\t\t}\n\t\t}\n\n\t\treturn rows.slice(topRow, bottomRow + 1);\n\t}\n\n\t//////////////////////////////////////\n\t//////// Internal Rendering //////////\n\t//////////////////////////////////////\n\n\t//full virtual render\n\t_virtualRenderFill(position, forceMove, offset) {\n\t\tvar\telement = this.tableElement,\n\t\tholder = this.elementVertical,\n\t\ttopPad = 0,\n\t\trowsHeight = 0,\n\t\trowHeight = 0,\n\t\theightOccupied = 0,\n\t\ttopPadHeight = 0,\n\t\ti = 0,\n\t\trows = this.rows(),\n\t\trowsCount = rows.length,\n\t\tindex = 0,\n\t\trow,\n\t\trowFragment,\n\t\trenderedRows = [],\n\t\ttotalRowsRendered = 0,\n\t\trowsToRender = 0,\n\t\tfixedHeight = this.table.rowManager.fixedHeight,\n\t\tcontainerHeight = this.elementVertical.clientHeight, \n\t\tavgRowHeight = this.table.options.rowHeight, \n\t\tresized = true;\n\n\t\tposition = position || 0;\n\n\t\toffset = offset || 0;\n\n\t\tif(!position){\n\t\t\tthis.clear();\n\t\t}else {\n\t\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\n\t\t\t//check if position is too close to bottom of table\n\t\t\theightOccupied = (rowsCount - position + 1) * this.vDomRowHeight;\n\n\t\t\tif(heightOccupied < containerHeight){\n\t\t\t\tposition -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight);\n\t\t\t\tif(position < 0){\n\t\t\t\t\tposition = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate initial pad\n\t\t\ttopPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position);\n\t\t\tposition -= topPad;\n\t\t}\n\n\t\tif(rowsCount && Helpers.elVisible(this.elementVertical)){\n\t\t\tthis.vDomTop = position;\n\t\t\tthis.vDomBottom = position -1;\n\n\t\t\tif(fixedHeight || this.table.options.maxHeight) {\n\t\t\t\tif(avgRowHeight) {\n\t\t\t\t\trowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight);\n\t\t\t\t}\n\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender));\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowsToRender = rowsCount;\n\t\t\t}\n\n\t\t\twhile(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) {\n\t\t\t\trenderedRows = [];\n\t\t\t\trowFragment = document.createDocumentFragment();\n\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {\t\n\t\t\t\t\tindex = this.vDomBottom + 1,\n\t\t\t\t\trow = rows[index];\n\n\t\t\t\t\tthis.styleRow(row, index);\n\n\t\t\t\t\trow.initialize(false, true);\n\t\t\t\t\tif(!row.heightInitialized && !this.table.options.rowHeight){\n\t\t\t\t\t\trow.clearCellHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\trowFragment.appendChild(row.getElement());\n\t\t\t\t\trenderedRows.push(row);\n\t\t\t\t\tthis.vDomBottom ++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif(!renderedRows.length){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\telement.appendChild(rowFragment);\n\t\t\t\t\n\t\t\t\t// NOTE: The next 3 loops are separate on purpose\n\t\t\t\t// This is to batch up the dom writes and reads which drastically improves performance \n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trow.rendered();\n\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.calcHeight(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\tif(!row.heightInitialized) {\n\t\t\t\t\t\trow.setCellHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trenderedRows.forEach((row) => {\n\t\t\t\t\trowHeight = row.getHeight();\n\t\t\t\t\t\n\t\t\t\t\tif(totalRowsRendered < topPad){\n\t\t\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t\t\t}else {\n\t\t\t\t\t\trowsHeight += rowHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t}\n\t\t\t\t\ttotalRowsRendered++;\n\t\t\t\t});\n\n\t\t\t\tresized = this.table.rowManager.adjustTableSize();\n\t\t\t\tcontainerHeight = this.elementVertical.clientHeight;\n\t\t\t\tif(resized && (fixedHeight || this.table.options.maxHeight))\n\t\t\t\t{\n\t\t\t\t\tavgRowHeight = rowsHeight / totalRowsRendered;\n\t\t\t\t\trowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!position){\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t\t//adjust row height to match average of rendered elements\n\t\t\t\tthis.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered);\n\t\t\t\tthis.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1);\n\n\t\t\t\tthis.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight;\n\t\t\t}else {\n\t\t\t\tthis.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset;\n\t\t\t\tthis.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t\t}\n\t\t\t\n\t\t\telement.style.paddingTop = this.vDomTopPad+\"px\";\n\t\t\telement.style.paddingBottom = this.vDomBottomPad+\"px\";\n\n\t\t\tif(forceMove){\n\t\t\t\tthis.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0);\n\t\t\t}\n\n\t\t\tthis.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight);\n\n\t\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\t\tif(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){\n\t\t\t\tthis.scrollTop += this.elementVertical.offsetHeight - containerHeight;\n\t\t\t}\n\n\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\t\tholder.scrollTop = this.scrollTop;\n\n\t\t\tthis.dispatch(\"render-virtual-fill\");\n\t\t}\n\t}\n\n\t_addTopRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomTop -1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tif(this.vDomTop){\n\t\t\t\tlet row = rows[index],\n\t\t\t\trowHeight, initialized;\n\n\t\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\t\ttable.insertBefore(row.getElement(), table.firstChild);\n\n\t\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trow.initialize();\n\n\t\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\t\tthis.vDomTop--;\n\t\t\t\t\t\tindex--;\n\t\t\t\t\t\ti++;\n\n\t\t\t\t\t}else{\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\n\t\t\t\t}else{\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad -= paddingAdjust;\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 < 1){\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 -= paddingAdjust;\n\t\t}\n\t}\n\n\t_removeTopRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomTop],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomTop++;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\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\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomTopPad += paddingAdjust;\n\t\t\tthis.tableElement.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer;\n\t\t}\n\t}\n\n\t_addBottomRow(rows, fillableSpace){\n\t\tvar table = this.tableElement,\n\t\taddedRows = [],\n\t\tpaddingAdjust = 0,\n\t\tindex = this.vDomBottom + 1,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[index],\n\t\t\trowHeight, initialized;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\t\t\t\tinitialized = row.initialized;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\n\t\t\t\t\tthis.styleRow(row, index);\n\t\t\t\t\ttable.appendChild(row.getElement());\n\n\t\t\t\t\tif(!row.initialized || !row.heightInitialized){\n\t\t\t\t\t\taddedRows.push(row);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.initialize();\n\n\t\t\t\t\tif(!initialized){\n\t\t\t\t\t\trowHeight = row.getElement().offsetHeight;\n\n\t\t\t\t\t\tif(rowHeight > this.vDomWindowBuffer){\n\t\t\t\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tthis.vDomBottom++;\n\t\t\t\t\tindex++;\n\t\t\t\t\ti++;\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\tfor (let row of addedRows){\n\t\t\trow.clearCellHeight();\n\t\t}\n\n\t\tthis._quickNormalizeRowHeight(addedRows);\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad -= paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0 || index == rows.length -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 += paddingAdjust;\n\t\t}\n\t}\n\n\t_removeBottomRow(rows, fillableSpace){\n\t\tvar removableRows = [],\n\t\tpaddingAdjust = 0,\n\t\ti = 0,\n\t\tworking = true;\n\n\t\twhile(working){\n\t\t\tlet row = rows[this.vDomBottom],\n\t\t\trowHeight;\n\n\t\t\tif(row && i < this.vDomMaxRenderChain){\n\t\t\t\trowHeight = row.getHeight() || this.vDomRowHeight;\n\n\t\t\t\tif(fillableSpace >= rowHeight){\n\t\t\t\t\tthis.vDomBottom --;\n\n\t\t\t\t\tfillableSpace -= rowHeight;\n\t\t\t\t\tpaddingAdjust += rowHeight;\n\n\t\t\t\t\tremovableRows.push(row);\n\t\t\t\t\ti++;\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\tfor (let row of removableRows){\n\t\t\tlet rowEl = row.getElement();\n\n\t\t\tif(rowEl.parentNode){\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t}\n\t\t}\n\n\t\tif(paddingAdjust){\n\t\t\tthis.vDomBottomPad += paddingAdjust;\n\n\t\t\tif(this.vDomBottomPad < 0){\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\tthis.tableElement.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom -= paddingAdjust;\n\t\t}\n\t}\n\n\t_quickNormalizeRowHeight(rows){\n\t\tfor(let row of rows){\n\t\t\trow.calcHeight();\n\t\t}\n\n\t\tfor(let row of rows){\n\t\t\trow.setCellHeight();\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\nimport Row from './row/Row.js';\nimport RowComponent from './row/RowComponent.js';\nimport Helpers from './tools/Helpers.js';\n\nimport RendererBasicVertical from './rendering/renderers/BasicVertical.js';\nimport RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js';\n\nexport default class RowManager extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.element = this.createHolderElement(); //containing element\n\t\tthis.tableElement = this.createTableElement(); //table element\n\t\tthis.heightFixer = this.createTableElement(); //table element\n\t\tthis.placeholder = null; //placeholder element\n\t\tthis.placeholderContents = null; //placeholder element\n\t\t\n\t\tthis.firstRender = false; //handle first render\n\t\tthis.renderMode = \"virtual\"; //current rendering mode\n\t\tthis.fixedHeight = false; //current rendering mode\n\t\t\n\t\tthis.rows = []; //hold row data objects\n\t\tthis.activeRowsPipeline = []; //hold calculation of active rows\n\t\tthis.activeRows = []; //rows currently available to on display in the table\n\t\tthis.activeRowsCount = 0; //count of active rows\n\t\t\n\t\tthis.displayRows = []; //rows currently on display in the table\n\t\tthis.displayRowsCount = 0; //count of display rows\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing\n\t\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\t\tthis.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed\n\t\t\n\t\tthis.dataPipeline = []; //hold data pipeline tasks\n\t\tthis.displayPipeline = []; //hold data display pipeline tasks\n\t\t\n\t\tthis.scrollbarWidth = 0;\n\t\t\n\t\tthis.renderer = null;\n\t}\n\t\n\t//////////////// Setup Functions /////////////////\n\t\n\tcreateHolderElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-tableholder\");\n\t\tel.setAttribute(\"tabindex\", 0);\n\t\t// el.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tcreateTableElement (){\n\t\tvar el = document.createElement(\"div\");\n\t\t\n\t\tel.classList.add(\"tabulator-table\");\n\t\tel.setAttribute(\"role\", \"rowgroup\");\n\t\t\n\t\treturn el;\n\t}\n\t\n\tinitializePlaceholder(){\n\t\tvar placeholder = this.table.options.placeholder;\n\t\t\n\t\tif(typeof placeholder === \"function\"){\n\t\t\tplaceholder = placeholder.call(this.table);\n\t\t}\n\t\t\n\t\tplaceholder = this.chain(\"placeholder\", [placeholder], placeholder, placeholder) || placeholder;\n\t\t\n\t\t//configure placeholder element\n\t\tif(placeholder){\t\n\t\t\tlet el = document.createElement(\"div\");\n\t\t\tel.classList.add(\"tabulator-placeholder\");\n\t\t\t\n\t\t\tif(typeof placeholder == \"string\"){\n\t\t\t\tlet contents = document.createElement(\"div\");\n\t\t\t\tcontents.classList.add(\"tabulator-placeholder-contents\");\n\t\t\t\tcontents.innerHTML = placeholder;\n\t\t\t\t\n\t\t\t\tel.appendChild(contents);\n\t\t\t\t\n\t\t\t\tthis.placeholderContents = contents;\n\t\t\t\t\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && placeholder instanceof HTMLElement){\n\t\t\t\t\n\t\t\t\tel.appendChild(placeholder);\n\t\t\t\tthis.placeholderContents = placeholder;\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Invalid placeholder provided, must be string or HTML Element\", placeholder);\n\t\t\t\t\n\t\t\t\tthis.el = null;\n\t\t\t}\n\t\t\t\n\t\t\tthis.placeholder = el;\n\t\t}\n\t}\n\t\n\t//return containing element\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\t\n\t//return table element\n\tgetTableElement(){\n\t\treturn this.tableElement;\n\t}\n\t\n\tinitialize(){\n\t\tthis.initializePlaceholder();\n\t\tthis.initializeRenderer();\n\t\t\n\t\t//initialize manager\n\t\tthis.element.appendChild(this.tableElement);\n\t\t\n\t\tthis.firstRender = true;\n\t\t\n\t\t//scroll header along with table body\n\t\tthis.element.addEventListener(\"scroll\", () => {\n\t\t\tvar left = this.element.scrollLeft,\n\t\t\tleftDir = this.scrollLeft > left,\n\t\t\ttop = this.element.scrollTop,\n\t\t\ttopDir = this.scrollTop > top;\n\t\t\t\n\t\t\t//handle horizontal scrolling\n\t\t\tif(this.scrollLeft != left){\n\t\t\t\tthis.scrollLeft = left;\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-horizontal\", left, leftDir);\n\t\t\t\tthis.dispatchExternal(\"scrollHorizontal\", left, leftDir);\n\t\t\t\t\n\t\t\t\tthis._positionPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\t//handle vertical scrolling\n\t\t\tif(this.scrollTop != top){\n\t\t\t\tthis.scrollTop = top;\n\t\t\t\t\n\t\t\t\tthis.renderer.scrollRows(top, topDir);\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"scroll-vertical\", top, topDir);\n\t\t\t\tthis.dispatchExternal(\"scrollVertical\", top, topDir);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t////////////////// Row Manipulation //////////////////\n\tfindRow(subject){\n\t\tif(typeof subject == \"object\"){\n\t\t\tif(subject instanceof Row){\n\t\t\t\t//subject is row element\n\t\t\t\treturn subject;\n\t\t\t}else if(subject instanceof RowComponent){\n\t\t\t\t//subject is public row component\n\t\t\t\treturn subject._getSelf() || false;\n\t\t\t}else if(typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement){\n\t\t\t\t//subject is a HTML element of the row\n\t\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\t\treturn row.getElement() === subject;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn match || false;\n\t\t\t}else if(subject === null){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else if(typeof subject == \"undefined\"){\n\t\t\treturn false;\n\t\t}else{\n\t\t\t//subject should be treated as the index of the row\n\t\t\tlet match = this.rows.find((row) => {\n\t\t\t\treturn row.data[this.table.options.index] == subject;\n\t\t\t});\n\t\t\t\n\t\t\treturn match || false;\n\t\t}\n\t\t\n\t\t//catch all for any other type of input\n\t\treturn false;\n\t}\n\t\n\tgetRowFromDataObject(data){\n\t\tvar match = this.rows.find((row) => {\n\t\t\treturn row.data === data;\n\t\t});\n\t\t\n\t\treturn match || false;\n\t}\n\t\n\tgetRowFromPosition(position){\n\t\treturn this.getDisplayRows().find((row) => {\n\t\t\treturn row.getPosition() === position && row.isDisplayed();\n\t\t});\n\t}\n\t\n\tscrollToRow(row, position, ifVisible){\n\t\treturn this.renderer.scrollToRowPosition(row, position, ifVisible);\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\tsetData(data, renderInPosition, columnsChanged){\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\tif(renderInPosition && this.getDisplayRows().length){\n\t\t\t\tif(this.table.options.pagination){\n\t\t\t\t\tthis._setDataActual(data, true);\n\t\t\t\t}else{\n\t\t\t\t\tthis.reRenderInPosition(() => {\n\t\t\t\t\t\tthis._setDataActual(data);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(this.table.options.autoColumns && columnsChanged && this.table.initialized){\n\t\t\t\t\tthis.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t\t}\n\t\t\t\tthis.resetScroll();\n\t\t\t\t\n\t\t\t\tthis._setDataActual(data);\n\t\t\t}\n\t\t\t\n\t\t\tresolve();\n\t\t});\n\t}\n\t\n\t_setDataActual(data, renderInPosition){\n\t\tthis.dispatchExternal(\"dataProcessing\", data);\n\t\t\n\t\tthis._wipeElements();\n\t\t\n\t\tif(Array.isArray(data)){\n\t\t\tthis.dispatch(\"data-processing\", data);\n\t\t\t\n\t\t\tdata.forEach((def, i) => {\n\t\t\t\tif(def && typeof def === \"object\"){\n\t\t\t\t\tvar row = new Row(def, this);\n\t\t\t\t\tthis.rows.push(row);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(false, false, renderInPosition);\n\t\t\t\n\t\t\tthis.dispatch(\"data-processed\", data);\n\t\t\tthis.dispatchExternal(\"dataProcessed\", data);\n\t\t}else{\n\t\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data, \"\\nData: \", data);\n\t\t}\n\t}\n\t\n\t_wipeElements(){\n\t\tthis.dispatch(\"rows-wipe\");\n\t\t\n\t\tthis.destroy();\n\t\t\n\t\tthis.adjustTableSize();\n\t\t\n\t\tthis.dispatch(\"rows-wiped\");\n\t}\n\t\n\tdestroy(){\n\t\tthis.rows.forEach((row) => {\n\t\t\trow.wipe();\n\t\t});\n\t\t\n\t\tthis.rows = [];\n\t\tthis.activeRows = [];\n\t\tthis.activeRowsPipeline = [];\n\t\tthis.activeRowsCount = 0;\n\t\tthis.displayRows = [];\n\t\tthis.displayRowsCount = 0;\n\t}\n\t\n\tdeleteRow(row, blockRedraw){\n\t\tvar allIndex = this.rows.indexOf(row),\n\t\tactiveIndex = this.activeRows.indexOf(row);\n\t\t\n\t\tif(activeIndex > -1){\n\t\t\tthis.activeRows.splice(activeIndex, 1);\n\t\t}\n\t\t\n\t\tif(allIndex > -1){\n\t\t\tthis.rows.splice(allIndex, 1);\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tvar displayIndex = rows.indexOf(row);\n\t\t\t\n\t\t\tif(displayIndex > -1){\n\t\t\t\trows.splice(displayIndex, 1);\n\t\t\t}\n\t\t});\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatchExternal(\"rowDeleted\", row.getComponent());\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis.tableEmpty();\n\t\t}\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.getData());\n\t\t}\n\t}\n\t\n\taddRow(data, pos, index, blockRedraw){\n\t\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\t\treturn row;\n\t}\n\t\n\t//add multiple rows\n\taddRows(data, pos, index, refreshDisplayOnly){\n\t\tvar rows = [];\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tpos = this.findAddRowPos(pos);\n\t\t\t\n\t\t\tif(!Array.isArray(data)){\n\t\t\t\tdata = [data];\n\t\t\t}\n\t\t\t\n\t\t\tif((typeof index == \"undefined\" && pos) || (typeof index !== \"undefined\" && !pos)){\n\t\t\t\tdata.reverse();\n\t\t\t}\n\t\t\t\n\t\t\tdata.forEach((item, i) => {\n\t\t\t\tvar row = this.addRow(item, pos, index, true);\n\t\t\t\trows.push(row);\n\t\t\t\tthis.dispatch(\"row-added\", row, item, pos, index);\n\t\t\t});\n\t\t\t\n\t\t\tthis.refreshActiveData(refreshDisplayOnly ? \"displayPipeline\" : false, false, true);\n\t\t\t\n\t\t\tthis.regenerateRowPositions();\n\t\t\t\n\t\t\tif(this.displayRowsCount){\n\t\t\t\tthis._clearPlaceholder();\n\t\t\t}\n\t\t\t\n\t\t\tresolve(rows);\n\t\t});\n\t}\n\t\n\tfindAddRowPos(pos){\n\t\tif(typeof pos === \"undefined\"){\n\t\t\tpos = this.table.options.addRowPos;\n\t\t}\n\t\t\n\t\tif(pos === \"pos\"){\n\t\t\tpos = true;\n\t\t}\n\t\t\n\t\tif(pos === \"bottom\"){\n\t\t\tpos = false;\n\t\t}\n\t\t\n\t\treturn pos;\n\t}\n\t\n\taddRowActual(data, pos, index, blockRedraw){\n\t\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t\ttop = this.findAddRowPos(pos),\n\t\tallIndex = -1,\n\t\tactiveIndex, chainResult;\n\t\t\n\t\tif(!index){\n\t\t\tchainResult = this.chain(\"row-adding-position\", [row, top], null, {index, top});\n\t\t\t\n\t\t\tindex = chainResult.index;\n\t\t\ttop = chainResult.top;\n\t\t}\n\t\t\n\t\tif(typeof index !== \"undefined\"){\n\t\t\tindex = this.findRow(index);\n\t\t}\n\t\t\n\t\tindex = this.chain(\"row-adding-index\", [row, index, top], null, index);\n\t\t\n\t\tif(index){\n\t\t\tallIndex = this.rows.indexOf(index);\n\t\t}\n\t\t\n\t\tif(index && allIndex > -1){\n\t\t\tactiveIndex = this.activeRows.indexOf(index);\n\t\t\t\n\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\tvar displayIndex = rows.indexOf(index);\n\t\t\t\t\n\t\t\t\tif(displayIndex > -1){\n\t\t\t\t\trows.splice((top ? displayIndex : displayIndex + 1), 0, row);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tif(activeIndex > -1){\n\t\t\t\tthis.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row);\n\t\t\t}\n\t\t\t\n\t\t\tthis.rows.splice((top ? allIndex : allIndex + 1), 0, row);\n\t\t\t\n\t\t}else{\n\t\t\t\n\t\t\tif(top){\n\t\t\t\t\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.unshift(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.unshift(row);\n\t\t\t\tthis.rows.unshift(row);\n\t\t\t}else{\n\t\t\t\tthis.displayRowIterator(function(rows){\n\t\t\t\t\trows.push(row);\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.activeRows.push(row);\n\t\t\t\tthis.rows.push(row);\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.setActiveRows(this.activeRows);\n\t\t\n\t\tthis.dispatchExternal(\"rowAdded\", row.getComponent());\n\t\t\n\t\tif(this.subscribedExternal(\"dataChanged\")){\n\t\t\tthis.dispatchExternal(\"dataChanged\", this.table.rowManager.getData());\n\t\t}\n\t\t\n\t\tif(!blockRedraw){\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t\t\n\t\treturn row;\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tthis.dispatch(\"row-move\", from, to, after);\n\t\t\n\t\tthis.moveRowActual(from, to, after);\n\t\t\n\t\tthis.regenerateRowPositions();\n\t\t\n\t\tthis.dispatch(\"row-moved\", from, to, after);\n\t\tthis.dispatchExternal(\"rowMoved\", from.getComponent());\n\t}\n\t\n\tmoveRowActual(from, to, after){\n\t\tthis.moveRowInArray(this.rows, from, to, after);\n\t\tthis.moveRowInArray(this.activeRows, from, to, after);\n\t\t\n\t\tthis.displayRowIterator((rows) => {\n\t\t\tthis.moveRowInArray(rows, from, to, after);\n\t\t});\n\t\t\n\t\tthis.dispatch(\"row-moving\", from, to, after);\n\t}\n\t\n\tmoveRowInArray(rows, from, to, after){\n\t\tvar\tfromIndex, toIndex, start, end;\n\t\t\n\t\tif(from !== to){\n\t\t\t\n\t\t\tfromIndex = rows.indexOf(from);\n\t\t\t\n\t\t\tif (fromIndex > -1) {\n\t\t\t\t\n\t\t\t\trows.splice(fromIndex, 1);\n\t\t\t\t\n\t\t\t\ttoIndex = rows.indexOf(to);\n\t\t\t\t\n\t\t\t\tif (toIndex > -1) {\n\t\t\t\t\t\n\t\t\t\t\tif(after){\n\t\t\t\t\t\trows.splice(toIndex+1, 0, from);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t//restyle rows\n\t\t\tif(rows === this.getDisplayRows()){\n\t\t\t\t\n\t\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex +1;\n\t\t\t\t\n\t\t\t\tfor(let i = start; i <= end; i++){\n\t\t\t\t\tif(rows[i]){\n\t\t\t\t\t\tthis.styleRow(rows[i], i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearData(){\n\t\tthis.setData([]);\n\t}\n\t\n\tgetRowIndex(row){\n\t\treturn this.findRowIndex(row, this.rows);\n\t}\n\t\n\tgetDisplayRowIndex(row){\n\t\tvar index = this.getDisplayRows().indexOf(row);\n\t\treturn index > -1 ? index : false;\n\t}\n\t\n\tnextDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tnextRow = false;\n\t\t\n\t\t\n\t\tif(index !== false && index < this.displayRowsCount -1){\n\t\t\tnextRow = this.getDisplayRows()[index+1];\n\t\t}\n\t\t\n\t\tif(nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")){\n\t\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn nextRow;\n\t}\n\t\n\tprevDisplayRow(row, rowOnly){\n\t\tvar index = this.getDisplayRowIndex(row),\n\t\tprevRow = false;\n\t\t\n\t\tif(index){\n\t\t\tprevRow = this.getDisplayRows()[index-1];\n\t\t}\n\t\t\n\t\tif(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")){\n\t\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t\t}\n\t\t\n\t\treturn prevRow;\n\t}\n\t\n\tfindRowIndex(row, list){\n\t\tvar rowIndex;\n\t\t\n\t\trow = this.findRow(row);\n\t\t\n\t\tif(row){\n\t\t\trowIndex = list.indexOf(row);\n\t\t\t\n\t\t\tif(rowIndex > -1){\n\t\t\t\treturn rowIndex;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tgetData(active, transform){\n\t\tvar output = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\tif(row.type == \"row\"){\n\t\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetComponents(active){\n\t\tvar\toutput = [],\n\t\trows = this.getRows(active);\n\t\t\n\t\trows.forEach(function(row){\n\t\t\toutput.push(row.getComponent());\n\t\t});\n\t\t\n\t\treturn output;\n\t}\n\t\n\tgetDataCount(active){\n\t\tvar rows = this.getRows(active);\n\t\t\n\t\treturn rows.length;\n\t}\n\t\n\tscrollHorizontal(left){\n\t\tthis.scrollLeft = left;\n\t\tthis.element.scrollLeft = left;\n\t\t\n\t\tthis.dispatch(\"scroll-horizontal\", left);\n\t}\n\t\n\tregisterDataPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.dataPipeline.push({handler, priority});\n\t\t\tthis.dataPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Data pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\tregisterDisplayPipelineHandler(handler, priority){\n\t\tif(typeof priority !== \"undefined\"){\n\t\t\tthis.displayPipeline.push({handler, priority});\n\t\t\tthis.displayPipeline.sort((a, b) => {\n\t\t\t\treturn a.priority - b.priority;\n\t\t\t});\n\t\t}else{\n\t\t\tconsole.error(\"Display pipeline handlers must have a priority in order to be registered\");\n\t\t}\n\t}\n\t\n\t//set active data set\n\trefreshActiveData(handler, skipStage, renderInPosition){\n\t\tvar table = this.table,\n\t\tstage = \"\",\n\t\tindex = 0,\n\t\tcascadeOrder = [\"all\", \"dataPipeline\", \"display\", \"displayPipeline\", \"end\"];\n\t\t\n\t\tif(!this.table.destroyed){\n\t\t\tif(typeof handler === \"function\"){\n\t\t\t\tindex = this.dataPipeline.findIndex((item) => {\n\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tif(index > -1){\n\t\t\t\t\tstage = \"dataPipeline\";\n\t\t\t\t\t\n\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\tif(index == this.dataPipeline.length - 1){\n\t\t\t\t\t\t\tstage = \"display\";\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tindex = this.displayPipeline.findIndex((item) => {\n\t\t\t\t\t\treturn item.handler === handler;\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tif(index > -1){\n\t\t\t\t\t\tstage = \"displayPipeline\";\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(skipStage){\n\t\t\t\t\t\t\tif(index == this.displayPipeline.length - 1){\n\t\t\t\t\t\t\t\tstage = \"end\";\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tindex++;\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\tconsole.error(\"Unable to refresh data, invalid handler provided\", handler);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tstage = handler || \"all\";\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t\n\t\t\tif(this.redrawBlock){\n\t\t\t\tif(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){\n\t\t\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\t\t\thandler: handler,\n\t\t\t\t\t\tskipStage: skipStage,\n\t\t\t\t\t\trenderInPosition: renderInPosition,\n\t\t\t\t\t\tstage:stage,\n\t\t\t\t\t\tindex:index,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}else{\n\t\t\t\tif(Helpers.elVisible(this.element)){\n\t\t\t\t\tif(renderInPosition){\n\t\t\t\t\t\tthis.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition));\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(!handler){\n\t\t\t\t\t\t\tthis.table.columnManager.renderer.renderColumns();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.renderTable();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(table.options.layoutColumnsOnNewData){\n\t\t\t\t\t\t\tthis.table.columnManager.redraw(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tthis.refreshPipelines(handler, stage, index, renderInPosition);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.dispatch(\"data-refreshed\");\n\t\t\t}\n\t\t}\n\t}\n\t\n\trefreshPipelines(handler, stage, index, renderInPosition){\n\t\tthis.dispatch(\"data-refreshing\");\n\t\t\n\t\tif(!handler || !this.activeRowsPipeline[0]){\n\t\t\tthis.activeRowsPipeline[0] = this.rows.slice(0);\n\t\t}\n\t\t\n\t\t//cascade through data refresh stages\n\t\tswitch(stage){\n\t\t\tcase \"all\":\n\t\t\t//handle case where all data needs refreshing\n\t\t\t\n\t\t\tcase \"dataPipeline\":\n\t\t\t\tfor(let i = index; i < this.dataPipeline.length; i++){\n\t\t\t\t\tlet result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));\n\t\t\t\t\n\t\t\t\t\tthis.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tthis.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\tindex = 0;\n\t\t\t\tthis.resetDisplayRows();\n\t\t\t\n\t\t\tcase \"displayPipeline\":\n\t\t\t\tfor(let i = index; i < this.displayPipeline.length; i++){\n\t\t\t\t\tlet result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);\n\t\t\t\t\n\t\t\t\t\tthis.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"end\":\n\t\t\t//case to handle scenario when trying to skip past end stage\n\t\t\t\tthis.regenerateRowPositions();\n\t\t}\n\t\t\n\t\tif(this.getDisplayRows().length){\n\t\t\tthis._clearPlaceholder();\n\t\t}\n\t}\n\t\n\t//regenerate row positions\n\tregenerateRowPositions(){\n\t\tvar rows = this.getDisplayRows();\n\t\tvar index = 1;\n\t\t\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"row\"){\n\t\t\t\trow.setPosition(index);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t});\n\t}\n\t\n\tsetActiveRows(activeRows){\n\t\tthis.activeRows = this.activeRows = Object.assign([], activeRows);\n\t\tthis.activeRowsCount = this.activeRows.length;\n\t}\n\t\n\t//reset display rows array\n\tresetDisplayRows(){\n\t\tthis.displayRows = [];\n\t\t\n\t\tthis.displayRows.push(this.activeRows.slice(0));\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[0].length;\n\t}\n\t\n\t//set display row pipeline data\n\tsetDisplayRows(displayRows, index){\n\t\tthis.displayRows[index] = displayRows;\n\t\t\n\t\tif(index == this.displayRows.length -1){\n\t\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t\t}\n\t}\n\t\n\tgetDisplayRows(index){\n\t\tif(typeof index == \"undefined\"){\n\t\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length -1] : [];\n\t\t}else{\n\t\t\treturn this.displayRows[index] || [];\n\t\t}\n\t}\n\t\n\tgetVisibleRows(chain, viewable){\n\t\tvar rows = Object.assign([], this.renderer.visibleRows(!viewable));\n\t\t\n\t\tif(chain){\n\t\t\trows = this.chain(\"rows-visible\", [viewable], rows, rows);\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t//repeat action across display rows\n\tdisplayRowIterator(callback){\n\t\tthis.activeRowsPipeline.forEach(callback);\n\t\tthis.displayRows.forEach(callback);\n\t\t\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length -1].length;\n\t}\n\t\n\t//return only actual rows (not group headers etc)\n\tgetRows(type){\n\t\tvar rows = [];\n\t\t\n\t\tswitch(type){\n\t\t\tcase \"active\":\n\t\t\t\trows = this.activeRows;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"display\":\n\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.getVisibleRows(false, true);\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tdefault:\n\t\t\t\trows = this.chain(\"rows-retrieve\", type, null, this.rows) || this.rows;\n\t\t}\n\t\t\n\t\treturn rows;\n\t}\n\t\n\t///////////////// Table Rendering /////////////////\n\t//trigger rerender of table in current position\n\treRenderInPosition(callback){\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.redrawBlockRenderInPosition = true;\n\t\t\t}\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\t\n\t\t\tthis.renderer.rerenderRows(callback);\n\t\t\t\n\t\t\tif(!this.fixedHeight){\n\t\t\t\tthis.adjustTableSize();\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t\t\n\t\t\tthis.dispatchExternal(\"renderComplete\");\n\t\t}\n\t}\n\t\n\tscrollBarCheck(){\n\t\tvar scrollbarWidth = 0;\n\t\t\n\t\t//adjust for vertical scrollbar moving table when present\n\t\tif(this.element.scrollHeight > this.element.clientHeight){\n\t\t\tscrollbarWidth = this.element.offsetWidth - this.element.clientWidth;\n\t\t}\n\t\t\n\t\tif(scrollbarWidth !== this.scrollbarWidth){\n\t\t\tthis.scrollbarWidth = scrollbarWidth;\n\t\t\tthis.dispatch(\"scrollbar-vertical\", scrollbarWidth);\n\t\t}\n\t}\n\t\n\tinitializeRenderer(){\n\t\tvar renderClass;\n\t\t\n\t\tvar renderers = {\n\t\t\t\"virtual\": RendererVirtualDomVertical,\n\t\t\t\"basic\": RendererBasicVertical,\n\t\t};\n\t\t\n\t\tif(typeof this.table.options.renderVertical === \"string\"){\n\t\t\trenderClass = renderers[this.table.options.renderVertical];\n\t\t}else{\n\t\t\trenderClass = this.table.options.renderVertical;\n\t\t}\n\t\t\n\t\tif(renderClass){\n\t\t\tthis.renderMode = this.table.options.renderVertical;\n\t\t\t\n\t\t\tthis.renderer = new renderClass(this.table, this.element, this.tableElement);\n\t\t\tthis.renderer.initialize();\n\t\t\t\n\t\t\tif((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){\n\t\t\t\tthis.fixedHeight = true;\n\t\t\t}else{\n\t\t\t\tthis.fixedHeight = false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Unable to find matching renderer:\", this.table.options.renderVertical);\n\t\t}\n\t}\n\t\n\tgetRenderMode(){\n\t\treturn this.renderMode;\n\t}\n\t\n\trenderTable(){\n\t\tthis.dispatchExternal(\"renderStarted\");\n\t\t\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tthis._clearTable();\n\t\t\n\t\tif(this.displayRowsCount){\n\t\t\tthis.renderer.renderRows();\n\t\t\t\n\t\t\tif(this.firstRender){\n\t\t\t\tthis.firstRender = false;\n\t\t\t\t\n\t\t\t\tif(!this.fixedHeight){\n\t\t\t\t\tthis.adjustTableSize();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tthis.layoutRefresh(true);\n\t\t\t}\n\t\t}else{\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t\t\n\t\tif(!this.fixedHeight){\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t\t\n\t\tthis.dispatch(\"table-layout\");\n\t\t\n\t\tif(!this.displayRowsCount){\n\t\t\tthis._showPlaceholder();\n\t\t}\n\t\t\n\t\tthis.scrollBarCheck();\n\t\t\n\t\tthis.dispatchExternal(\"renderComplete\");\n\t}\n\t\n\t//show scrollbars on empty table div\n\trenderEmptyScroll(){\n\t\tif(this.placeholder){\n\t\t\tthis.tableElement.style.display = \"none\";\n\t\t}else{\n\t\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t\t// this.tableElement.style.visibility = \"hidden\";\n\t\t}\n\t}\n\t\n\t_clearTable(){\t\n\t\tthis._clearPlaceholder();\n\t\t\n\t\tthis.scrollTop = 0;\n\t\tthis.scrollLeft = 0;\n\t\t\n\t\tthis.renderer.clearRows();\n\t}\n\t\n\ttableEmpty(){\n\t\tthis.renderEmptyScroll();\n\t\tthis._showPlaceholder();\n\t}\n\n\tcheckPlaceholder(){\n\t\tif(this.displayRowsCount){\n\t\t\tthis._clearPlaceholder();\n\t\t}else{\n\t\t\tthis.tableEmpty();\n\t\t}\n\t}\n\t\n\t_showPlaceholder(){\n\t\tif(this.placeholder){\n\t\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t\t}\n\t\t\t\n\t\t\tthis.initializePlaceholder();\n\t\t\t\n\t\t\tthis.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\t\t\t\n\t\t\tthis.getElement().appendChild(this.placeholder);\n\t\t\tthis._positionPlaceholder();\n\n\t\t\tthis.adjustTableSize();\n\t\t}\n\t}\n\t\n\t_clearPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.parentNode.removeChild(this.placeholder);\n\t\t}\n\t\t\n\t\t// clear empty table placeholder min\n\t\tthis.tableElement.style.minWidth = \"\";\n\t\tthis.tableElement.style.display = \"\";\n\t}\n\t\n\t_positionPlaceholder(){\n\t\tif(this.placeholder && this.placeholder.parentNode){\n\t\t\tthis.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t\tthis.placeholderContents.style.width = this.table.rowManager.element.clientWidth + \"px\";\n\t\t\tthis.placeholderContents.style.marginLeft = this.scrollLeft + \"px\";\n\t\t}\n\t}\n\t\n\tstyleRow(row, index){\n\t\tvar rowEl = row.getElement();\n\t\t\n\t\tif(index % 2){\n\t\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t\t}else{\n\t\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t\t}\n\t}\n\t\n\t//normalize height of active rows\n\tnormalizeHeight(){\n\t\tthis.activeRows.forEach(function(row){\n\t\t\trow.normalizeHeight();\n\t\t});\n\t}\n\t\n\t//adjust the height of the table holder to fit in the Tabulator element\n\tadjustTableSize(){\n\t\tlet initialHeight = this.element.clientHeight, minHeight;\n\t\tlet resized = false;\n\t\t\n\t\tif(this.renderer.verticalFillMode === \"fill\"){\n\t\t\tlet otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\t\t\t\n\t\t\tif(this.fixedHeight){\n\t\t\t\tminHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + \"px\";\n\t\t\t\t\n\t\t\t\tconst height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.minHeight = minHeight || \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\t\tthis.element.style.height = height;\n\t\t\t\tthis.element.style.maxHeight = height;\n\t\t\t} else {\n\t\t\t\tthis.element.style.height = \"\";\n\t\t\t\tthis.element.style.height =\n\t\t\t\tthis.table.element.clientHeight - otherHeight + \"px\";\n\t\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t\t}\n\t\t\t\n\t\t\tthis.renderer.resize();\n\t\t\t\n\t\t\t//check if the table has changed size when dealing with variable height tables\n\t\t\tif(!this.fixedHeight && initialHeight != this.element.clientHeight){\n\t\t\t\tresized = true;\n\t\t\t\tif(this.subscribed(\"table-resize\")){\n\t\t\t\t\tthis.dispatch(\"table-resize\");\n\t\t\t\t}else{\n\t\t\t\t\tthis.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis.scrollBarCheck();\n\t\t}\n\t\t\n\t\tthis._positionPlaceholder();\n\t\treturn resized;\n\t}\n\t\n\t//reinitialize all rows\n\treinitialize(){\n\t\tthis.rows.forEach(function(row){\n\t\t\trow.reinitialize(true);\n\t\t});\n\t}\n\t\n\t//prevent table from being redrawn\n\tblockRedraw (){\n\t\tthis.redrawBlock = true;\n\t\tthis.redrawBlockRestoreConfig = false;\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw (){\n\t\tthis.redrawBlock = false;\n\t\t\n\t\tif(this.redrawBlockRestoreConfig){\n\t\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\t\t\t\n\t\t\tthis.redrawBlockRestoreConfig = false;\n\t\t}else{\n\t\t\tif(this.redrawBlockRenderInPosition){\n\t\t\t\tthis.reRenderInPosition();\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.redrawBlockRenderInPosition = false;\n\t}\n\t\n\t//redraw table\n\tredraw (force){\n\t\tthis.adjustTableSize();\n\t\tthis.table.tableWidth = this.table.element.clientWidth;\n\t\t\n\t\tif(!force){\t\n\t\t\tthis.reRenderInPosition();\n\t\t\tthis.scrollHorizontal(this.scrollLeft);\n\t\t}else{\n\t\t\tthis.renderTable();\n\t\t}\n\t}\n\t\n\tresetScroll(){\n\t\tthis.element.scrollLeft = 0;\n\t\tthis.element.scrollTop = 0;\n\t\t\n\t\tif(this.table.browser === \"ie\"){\n\t\t\tvar event = document.createEvent(\"Event\");\n\t\t\tevent.initEvent(\"scroll\", false, true);\n\t\t\tthis.element.dispatchEvent(event);\n\t\t}else{\n\t\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t\t}\n\t}\n}\n","import CoreFeature from './CoreFeature.js';\n\nexport default class FooterManager extends CoreFeature{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.active = false;\n\t\tthis.element = this.createElement(); //containing element\n\t\tthis.containerElement = this.createContainerElement(); //containing element\n\t\tthis.external = false;\n\t}\n\n\tinitialize(){\n\t\tthis.initializeElement();\n\t}\n\n\tcreateElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer\");\n\n\t\treturn el;\n\t}\n\n\t\n\tcreateContainerElement(){\n\t\tvar el = document.createElement(\"div\");\n\n\t\tel.classList.add(\"tabulator-footer-contents\");\n\n\t\tthis.element.appendChild(el);\n\n\t\treturn el;\n\t}\n\n\tinitializeElement(){\n\t\tif(this.table.options.footerElement){\n\n\t\t\tswitch(typeof this.table.options.footerElement){\n\t\t\t\tcase \"string\":\n\t\t\t\t\tif(this.table.options.footerElement[0] === \"<\"){\n\t\t\t\t\t\tthis.containerElement.innerHTML = this.table.options.footerElement;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.external = true;\n\t\t\t\t\t\tthis.containerElement = document.querySelector(this.table.options.footerElement);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tappend(element){\n\t\tthis.activate();\n\n\t\tthis.containerElement.appendChild(element);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tprepend(element){\n\t\tthis.activate();\n\n\t\tthis.element.insertBefore(element, this.element.firstChild);\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n\n\tremove(element){\n\t\telement.parentNode.removeChild(element);\n\t\tthis.deactivate();\n\t}\n\n\tdeactivate(force){\n\t\tif(!this.element.firstChild || force){\n\t\t\tif(!this.external){\n\t\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t\t}\n\t\t\tthis.active = false;\n\t\t}\n\t}\n\n\tactivate(){\n\t\tif(!this.active){\n\t\t\tthis.active = true;\n\t\t\tif(!this.external){\n\t\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\t\tthis.table.element.style.display = '';\n\t\t\t}\n\t\t}\n\t}\n\n\tredraw(){\n\t\tthis.dispatch(\"footer-redraw\");\n\t}\n}","import CoreFeature from '../CoreFeature.js';\nimport Row from '../row/Row.js';\n\nexport default class InteractionManager extends CoreFeature {\n\t\n\tconstructor (table){\n\t\tsuper(table);\n\t\t\n\t\tthis.el = null;\n\t\t\n\t\tthis.abortClasses = [\"tabulator-headers\", \"tabulator-table\"];\n\t\t\n\t\tthis.previousTargets = {};\n\t\t\n\t\tthis.listeners = [\n\t\t\t\"click\",\n\t\t\t\"dblclick\",\n\t\t\t\"contextmenu\",\n\t\t\t\"mouseenter\",\n\t\t\t\"mouseleave\",\n\t\t\t\"mouseover\",\n\t\t\t\"mouseout\",\n\t\t\t\"mousemove\",\n\t\t\t\"mouseup\",\n\t\t\t\"mousedown\",\n\t\t\t\"touchstart\",\n\t\t\t\"touchend\",\n\t\t];\n\t\t\n\t\tthis.componentMap = {\n\t\t\t\"tabulator-cell\":\"cell\",\n\t\t\t\"tabulator-row\":\"row\",\n\t\t\t\"tabulator-group\":\"group\",\n\t\t\t\"tabulator-col\":\"column\",\n\t\t};\n\t\t\n\t\tthis.pseudoTrackers = {\n\t\t\t\"row\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"cell\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"group\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t\t\"column\":{\n\t\t\t\tsubscriber:null,\n\t\t\t\ttarget:null,\n\t\t\t},\n\t\t};\n\t\t\n\t\tthis.pseudoTracking = false;\n\t}\n\t\n\tinitialize(){\n\t\tthis.el = this.table.element;\n\t\t\n\t\tthis.buildListenerMap();\n\t\tthis.bindSubscriptionWatchers();\n\t}\n\t\n\tbuildListenerMap(){\n\t\tvar listenerMap = {};\n\t\t\n\t\tthis.listeners.forEach((listener) => {\n\t\t\tlistenerMap[listener] = {\n\t\t\t\thandler:null,\n\t\t\t\tcomponents:[],\n\t\t\t};\n\t\t});\n\t\t\n\t\tthis.listeners = listenerMap;\n\t}\n\t\n\tbindPseudoEvents(){\n\t\tObject.keys(this.pseudoTrackers).forEach((key) => {\n\t\t\tthis.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key);\n\t\t\tthis.subscribe(key + \"-mouseover\", this.pseudoTrackers[key].subscriber);\n\t\t});\n\t\t\n\t\tthis.pseudoTracking = true;\n\t}\n\t\n\tpseudoMouseEnter(key, e, target){\n\t\tif(this.pseudoTrackers[key].target !== target){\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, this.pseudoTrackers[key].target);\n\t\t\t}\n\t\t\t\n\t\t\tthis.pseudoMouseLeave(key, e);\n\t\t\t\n\t\t\tthis.pseudoTrackers[key].target = target;\n\t\t\t\n\t\t\tthis.dispatch(key + \"-mouseenter\", e, target);\n\t\t}\n\t}\n\t\n\tpseudoMouseLeave(key, e){\n\t\tvar leaveList = Object.keys(this.pseudoTrackers),\n\t\tlinkedKeys = {\n\t\t\t\"row\":[\"cell\"],\n\t\t\t\"cell\":[\"row\"],\n\t\t};\n\t\t\n\t\tleaveList = leaveList.filter((item) => {\n\t\t\tvar links = linkedKeys[key];\n\t\t\treturn item !== key && (!links || (links && !links.includes(item)));\n\t\t});\n\t\t\n\t\t\n\t\tleaveList.forEach((key) => {\n\t\t\tvar target = this.pseudoTrackers[key].target;\n\t\t\t\n\t\t\tif(this.pseudoTrackers[key].target){\n\t\t\t\tthis.dispatch(key + \"-mouseleave\", e, target);\n\t\t\t\t\n\t\t\t\tthis.pseudoTrackers[key].target = null;\n\t\t\t}\n\t\t});\n\t}\n\t\n\t\n\tbindSubscriptionWatchers(){\n\t\tvar listeners = Object.keys(this.listeners),\n\t\tcomponents = Object.values(this.componentMap);\n\t\t\n\t\tfor(let comp of components){\n\t\t\tfor(let listener of listeners){\n\t\t\t\tlet key = comp + \"-\" + listener;\n\t\t\t\t\n\t\t\t\tthis.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener));\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.subscribe(\"table-destroy\", this.clearWatchers.bind(this));\n\t}\n\t\n\tsubscriptionChanged(component, key, added){\n\t\tvar listener = this.listeners[key].components,\n\t\tindex = listener.indexOf(component),\n\t\tchanged = false;\n\t\t\n\t\tif(added){\n\t\t\tif(index === -1){\n\t\t\t\tlistener.push(component);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}else{\n\t\t\tif(!this.subscribed(component + \"-\" + key)){\n\t\t\t\tif(index > -1){\n\t\t\t\t\tlistener.splice(index, 1);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif((key === \"mouseenter\" || key === \"mouseleave\") && !this.pseudoTracking){\n\t\t\tthis.bindPseudoEvents();\n\t\t}\n\t\t\n\t\tif(changed){\n\t\t\tthis.updateEventListeners();\n\t\t}\n\t}\n\t\n\tupdateEventListeners(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.components.length){\n\t\t\t\tif(!listener.handler){\n\t\t\t\t\tlistener.handler = this.track.bind(this, key);\n\t\t\t\t\tthis.el.addEventListener(key, listener.handler);\n\t\t\t\t\t// this.el.addEventListener(key, listener.handler, {passive: true})\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tif(listener.handler){\n\t\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\t\tlistener.handler = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\ttrack(type, e){\n\t\tvar path = (e.composedPath && e.composedPath()) || e.path;\n\t\t\n\t\tvar targets = this.findTargets(path);\n\t\ttargets = this.bindComponents(type, targets);\n\t\t\n\t\tthis.triggerEvents(type, e, targets);\n\t\t\n\t\tif(this.pseudoTracking && (type == \"mouseover\" || type == \"mouseleave\") && !Object.keys(targets).length){\n\t\t\tthis.pseudoMouseLeave(\"none\", e);\n\t\t}\n\t}\n\t\n\tfindTargets(path){\n\t\tvar targets = {};\n\t\t\n\t\tlet componentMap = Object.keys(this.componentMap);\n\t\t\n\t\tfor (let el of path) {\n\t\t\tlet classList = el.classList ? [...el.classList] : [];\n\t\t\t\n\t\t\tlet abort = classList.filter((item) => {\n\t\t\t\treturn this.abortClasses.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tif(abort.length){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tlet elTargets = classList.filter((item) => {\n\t\t\t\treturn componentMap.includes(item);\n\t\t\t});\n\t\t\t\n\t\t\tfor (let target of elTargets) {\n\t\t\t\tif(!targets[this.componentMap[target]]){\n\t\t\t\t\ttargets[this.componentMap[target]] = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(targets.group && targets.group === targets.row){\n\t\t\tdelete targets.row;\n\t\t}\n\n\t\treturn targets;\n\t}\n\t\n\tbindComponents(type, targets){\n\t\t//ensure row component is looked up before cell\n\t\tvar keys = Object.keys(targets).reverse(),\n\t\tlistener = this.listeners[type],\n\t\tmatches = {},\n\t\ttargetMatches = {};\n\t\t\n\t\tfor(let key of keys){\n\t\t\tlet component,\n\t\t\ttarget = targets[key],\n\t\t\tpreviousTarget = this.previousTargets[key];\n\t\t\t\n\t\t\tif(previousTarget && previousTarget.target === target){\n\t\t\t\tcomponent = previousTarget.component;\n\t\t\t}else{\n\t\t\t\tswitch(key){\n\t\t\t\t\tcase \"row\":\n\t\t\t\t\tcase \"group\":\n\t\t\t\t\t\tif(listener.components.includes(\"row\") || listener.components.includes(\"cell\") || listener.components.includes(\"group\")){\n\t\t\t\t\t\t\tlet rows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tcomponent = rows.find((row) => {\n\t\t\t\t\t\t\t\treturn row.getElement() === target;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(targets[\"row\"] && targets[\"row\"].parentNode && targets[\"row\"].parentNode.closest(\".tabulator-row\")){\n\t\t\t\t\t\t\t\ttargets[key] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"column\":\n\t\t\t\t\t\tif(listener.components.includes(\"column\")){\n\t\t\t\t\t\t\tcomponent = this.table.columnManager.findColumn(target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tcase \"cell\":\n\t\t\t\t\t\tif(listener.components.includes(\"cell\")){\n\t\t\t\t\t\t\tif(matches[\"row\"] instanceof Row){\n\t\t\t\t\t\t\t\tcomponent = matches[\"row\"].findCell(target);\n\t\t\t\t\t\t\t}else{\t\n\t\t\t\t\t\t\t\tif(targets[\"row\"]){\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif(component){\n\t\t\t\tmatches[key] = component;\n\t\t\t\ttargetMatches[key] = {\n\t\t\t\t\ttarget:target,\n\t\t\t\t\tcomponent:component,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.previousTargets = targetMatches;\n\t\t\n\t\treturn matches;\n\t}\n\t\n\ttriggerEvents(type, e, targets){\n\t\tvar listener = this.listeners[type];\n\n\t\tfor(let key in targets){\n\t\t\tif(targets[key] && listener.components.includes(key)){\n\t\t\t\tthis.dispatch(key + \"-\" + type, e, targets[key]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tclearWatchers(){\n\t\tfor(let key in this.listeners){\n\t\t\tlet listener = this.listeners[key];\n\t\t\t\n\t\t\tif(listener.handler){\n\t\t\t\tthis.el.removeEventListener(key, listener.handler);\n\t\t\t\tlistener.handler = null;\n\t\t\t}\n\t\t}\n\t}\n}\n","export default class ComponentFunctionBinder{\n\n\tconstructor(table){\n\t\tthis.table = table;\n\n\t\tthis.bindings = {};\n\t}\n\n\tbind(type, funcName, handler){\n\t\tif(!this.bindings[type]){\n\t\t\tthis.bindings[type] = {};\n\t\t}\n\n\t\tif(this.bindings[type][funcName]){\n\t\t\tconsole.warn(\"Unable to bind component handler, a matching function name is already bound\", type, funcName, handler);\n\t\t}else{\n\t\t\tthis.bindings[type][funcName] = handler;\n\t\t}\n\t}\n\n\thandle(type, component, name){\n\t\tif(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){\n\t\t\treturn this.bindings[type][name].bind(null, component);\n\t\t}else{\n\t\t\tif(name !== \"then\" && typeof name === \"string\" && !name.startsWith(\"_\")){\n\t\t\t\tif(this.table.options.debugInvalidComponentFuncs){\n\t\t\t\t\tconsole.error(\"The \" + type + \" component does not have a \" + name + \" function, have you checked that you have the correct Tabulator module installed?\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import CoreFeature from '../CoreFeature.js';\n\nexport default class DataLoader extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n\t\t\n\t\tthis.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request\n\t\tthis.loading = false;\n\t}\n\t\n\tinitialize(){}\n\t\n\tload(data, params, config, replace, silent, columnsChanged){\n\t\tvar requestNo = ++this.requestOrder;\n\n\t\tif(this.table.destroyed){\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\t\n\t\tthis.dispatchExternal(\"dataLoading\", data);\n\t\t\n\t\t//parse json data to array\n\t\tif (data && (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0)){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(this.confirm(\"data-loading\", [data, params, config, silent])){\n\t\t\tthis.loading = true;\n\t\t\t\n\t\t\tif(!silent){\n\t\t\t\tthis.alertLoader();\n\t\t\t}\n\t\t\t\n\t\t\t//get params for request\n\t\t\tparams = this.chain(\"data-params\", [data, config, silent], params || {}, params || {});\n\t\t\t\n\t\t\tparams = this.mapParams(params, this.table.options.dataSendParams);\n\t\t\t\n\t\t\tvar result = this.chain(\"data-load\", [data, params, config, silent], false, Promise.resolve([]));\n\t\t\t\n\t\t\treturn result.then((response) => {\n\t\t\t\tif(!this.table.destroyed){\n\t\t\t\t\tif(!Array.isArray(response) && typeof response == \"object\"){\n\t\t\t\t\t\tresponse = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar rowData = this.chain(\"data-loaded\", response, null, response);\n\t\t\t\t\t\n\t\t\t\t\tif(requestNo == this.requestOrder){\n\t\t\t\t\t\tthis.clearAlert();\n\t\t\t\t\t\t\n\t\t\t\t\t\tif(rowData !== false){\n\t\t\t\t\t\t\tthis.dispatchExternal(\"dataLoaded\", rowData);\n\t\t\t\t\t\t\tthis.table.rowManager.setData(rowData, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Data Load Response Blocked - Table has been destroyed\");\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(\"Data Load Error: \", error);\n\t\t\t\tthis.dispatchExternal(\"dataLoadError\", error);\n\t\t\t\t\n\t\t\t\tif(!silent){\n\t\t\t\t\tthis.alertError();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.clearAlert();\n\t\t\t\t}, this.table.options.dataLoaderErrorTimeout);\n\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t});\n\t\t}else{\n\t\t\tthis.dispatchExternal(\"dataLoaded\", data);\n\t\t\t\n\t\t\tif(!data){\n\t\t\t\tdata = [];\n\t\t\t}\n\t\t\t\n\t\t\tthis.table.rowManager.setData(data, replace, typeof columnsChanged === \"undefined\" ? !replace : columnsChanged);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\t\n\tmapParams(params, map){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in params){\n\t\t\toutput[map.hasOwnProperty(key) ? map[key] : key] = params[key];\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tobjectInvert(obj){\n\t\tvar output = {};\n\t\t\n\t\tfor(let key in obj){\n\t\t\toutput[obj[key]] = key;\n\t\t}\n\t\t\n\t\treturn output;\n\t}\n\t\n\tblockActiveLoad(){\n\t\tthis.requestOrder++;\n\t}\n\t\n\talertLoader(){\n\t\tvar shouldLoad = typeof this.table.options.dataLoader === \"function\" ? this.table.options.dataLoader() : this.table.options.dataLoader;\n\t\t\n\t\tif(shouldLoad){\n\t\t\tthis.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText(\"data|loading\"));\n\t\t}\n\t}\n\t\n\talertError(){\n\t\tthis.table.alertManager.alert(this.table.options.dataLoaderError || this.langText(\"data|error\"), \"error\");\n\t}\n\t\n\tclearAlert(){\n\t\tthis.table.alertManager.clear();\n\t}\n}","export default class ExternalEventBus {\n\n\tconstructor(table, optionsList, debug){\n\t\tthis.table = table;\n\t\tthis.events = {};\n\t\tthis.optionsList = optionsList || {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push(callback);\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tdelete this.events[key];\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift(),\n\t\tresult;\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((callback, i) => {\n\t\t\t\tlet callResult = callback.apply(this.table, args);\n\n\t\t\t\tif(!i){\n\t\t\t\t\tresult = callResult;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"ExternalEvent:\" + args[0];\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n}","export default class InternalEventBus {\n\n\tconstructor(debug){\n\t\tthis.events = {};\n\t\tthis.subscriptionNotifiers = {};\n\n\t\tthis.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this);\n\t\tthis.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this);\n\t\tthis.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this);\n\t\tthis.debug = debug;\n\t}\n\n\tsubscriptionChange(key, callback){\n\t\tif(!this.subscriptionNotifiers[key]){\n\t\t\tthis.subscriptionNotifiers[key] = [];\n\t\t}\n\n\t\tthis.subscriptionNotifiers[key].push(callback);\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis._notifySubscriptionChange(key, true);\n\t\t}\n\t}\n\n\tsubscribe(key, callback, priority = 10000){\n\t\tif(!this.events[key]){\n\t\t\tthis.events[key] = [];\n\t\t}\n\n\t\tthis.events[key].push({callback, priority});\n\n\t\tthis.events[key].sort((a, b) => {\n\t\t\treturn a.priority - b.priority;\n\t\t});\n\n\t\tthis._notifySubscriptionChange(key, true);\n\t}\n\n\tunsubscribe(key, callback){\n\t\tvar index;\n\n\t\tif(this.events[key]){\n\t\t\tif(callback){\n\t\t\t\tindex = this.events[key].findIndex((item) => {\n\t\t\t\t\treturn item.callback === callback;\n\t\t\t\t});\n\n\t\t\t\tif(index > -1){\n\t\t\t\t\tthis.events[key].splice(index, 1);\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Cannot remove event, no matching event found:\", key, callback);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Cannot remove event, no events set on:\", key);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._notifySubscriptionChange(key, false);\n\t}\n\n\tsubscribed(key){\n\t\treturn this.events[key] && this.events[key].length;\n\t}\n\n\t_chain(key, args, initialValue, fallback){\n\t\tvar value = initialValue;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tvalue = subscriber.callback.apply(this, args.concat([value]));\n\t\t\t});\n\n\t\t\treturn value;\n\t\t}else{\n\t\t\treturn typeof fallback === \"function\" ? fallback() : fallback;\n\t\t}\n\t}\n\n\t_confirm(key, args){\n\t\tvar confirmed = false;\n\n\t\tif(!Array.isArray(args)){\n\t\t\targs = [args];\n\t\t}\n\n\t\tif(this.subscribed(key)){\n\t\t\tthis.events[key].forEach((subscriber, i) => {\n\t\t\t\tif(subscriber.callback.apply(this, args)){\n\t\t\t\t\tconfirmed = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn confirmed;\n\t}\n\n\t_notifySubscriptionChange(key, subscribed){\n\t\tvar notifiers = this.subscriptionNotifiers[key];\n\n\t\tif(notifiers){\n\t\t\tnotifiers.forEach((callback)=>{\n\t\t\t\tcallback(subscribed);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args.shift();\n\n\t\tif(this.events[key]){\n\t\t\tthis.events[key].forEach((subscriber) => {\n\t\t\t\tsubscriber.callback.apply(this, args);\n\t\t\t});\n\t\t}\n\t}\n\n\t_debugDispatch(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._dispatch(...arguments);\n\t}\n\n\t_debugChain(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._chain(...arguments);\n\t}\n\n\t_debugConfirm(){\n\t\tvar args = Array.from(arguments),\n\t\tkey = args[0];\n\n\t\targs[0] = \"InternalEvent:\" + key;\n\n\t\tif(this.debug === true || this.debug.includes(key)){\n\t\t\tconsole.log(...args);\n\t\t}\n\n\t\treturn this._confirm(...arguments);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class DeprecationAdvisor extends CoreFeature{\n\t\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\t\n\t_warnUser(){\n\t\tif(this.options(\"debugDeprecation\")){\n\t\t\tconsole.warn(...arguments);\n\t\t}\n\t}\n\t\n\tcheck(oldOption, newOption, convert){\n\t\tvar msg = \"\";\n\t\t\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tmsg = \"Deprecated Setup Option - Use of the %c\" + oldOption + \"%c option is now deprecated\";\n\t\t\t\n\t\t\tif(newOption){\n\t\t\t\tmsg = msg + \", Please use the %c\" + newOption + \"%c option instead\";\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\n\t\t\t\tif(convert){\n\t\t\t\t\tthis.table.options[newOption] = this.table.options[oldOption];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tthis._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tcheckMsg(oldOption, msg){\n\t\tif(typeof this.options(oldOption) !== \"undefined\"){\n\t\t\tthis._warnUser(\"%cDeprecated Setup Option - Use of the %c\" + oldOption + \" %c option is now deprecated, \" + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;');\n\t\t\t\n\t\t\treturn false;\n\t\t}else{\n\t\t\treturn true;\n\t\t}\n\t}\n\t\n\tmsg(msg){\n\t\tthis._warnUser(msg);\n\t}\n}","import Tabulator from '../Tabulator.js';\n\nclass TableRegistry {\n\n\tstatic register(table){\n\t\tTableRegistry.tables.push(table);\n\t}\n\n\tstatic deregister(table){\n\t\tvar index = TableRegistry.tables.indexOf(table);\n\n\t\tif(index > -1){\n\t\t\tTableRegistry.tables.splice(index, 1);\n\t\t}\n\t}\n\n\tstatic lookupTable(query, silent){\n\t\tvar results = [],\n\t\tmatches, 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 = TableRegistry.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\n\t\t}else if((typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement) || query instanceof Tabulator){\n\t\t\tmatch = TableRegistry.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(TableRegistry.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\n\tstatic matchElement(element){\n\t\treturn TableRegistry.tables.find(function(table){\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n}\n\nTableRegistry.tables = [];\n\nexport default TableRegistry;","//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable\nexport default function(columns, forced){\n\tcolumns.forEach(function(column){\n\t\tcolumn.reinitializeWidth();\n\t});\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","import fitData from './modes/fitData.js';\nimport fitDataGeneral from './modes/fitDataGeneral.js';\nimport fitDataStretch from './modes/fitDataStretch.js';\nimport fitColumns from './modes/fitColumns.js';\n\nexport default {\n\tfitData:fitData,\n\tfitDataFill:fitDataGeneral,\n\tfitDataTable:fitDataGeneral,\n\tfitDataStretch:fitDataStretch,\n\tfitColumns:fitColumns ,\n};","//resize columns to fit data they contain\nexport default function(columns, forced){\n\tif(forced){\n\t\tthis.table.columnManager.renderer.reinitializeColumnWidths(columns);\n\t}\n\t\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n}","//resize columns to fit data the contain and stretch last column to fill table\nexport default function(columns, forced){\n\tvar colsWidth = 0,\n\ttableWidth = this.table.rowManager.element.clientWidth,\n\tgap = 0,\n\tlastCol = false;\n\n\tcolumns.forEach((column, i) => {\n\t\tif(!column.widthFixed){\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\tif(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){\n\t\t\tlastCol = column;\n\t\t}\n\n\t\tif(column.visible){\n\t\t\tcolsWidth += column.getWidth();\n\t\t}\n\t});\n\n\tif(lastCol){\n\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tlastCol.setWidth(0);\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\tif(gap > 0){\n\t\t\tlastCol.setWidth(gap);\n\t\t}else{\n\t\t\tlastCol.reinitializeWidth();\n\t\t}\n\t}else{\n\t\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t}\n}","//resize columns to fit\nexport default function(columns, forced){\n\tvar totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width\n\tvar fixedWidth = 0; //total width of columns with a defined width\n\tvar flexWidth = 0; //total width available to flexible columns\n\tvar flexGrowUnits = 0; //total number of widthGrow blocks across all columns\n\tvar flexColWidth = 0; //desired width of flexible columns\n\tvar flexColumns = []; //array of flexible width columns\n\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\tvar flexShrinkUnits = 0; //total number of widthShrink blocks across all columns\n\tvar overflowWidth = 0; //horizontal overflow width\n\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\tfunction calcWidth(width){\n\t\tvar colWidth;\n\n\t\tif(typeof(width) == \"string\"){\n\t\t\tif(width.indexOf(\"%\") > -1){\n\t\t\t\tcolWidth = (totalWidth / 100) * parseInt(width);\n\t\t\t}else{\n\t\t\t\tcolWidth = parseInt(width);\n\t\t\t}\n\t\t}else{\n\t\t\tcolWidth = width;\n\t\t}\n\n\t\treturn colWidth;\n\t}\n\n\t//ensure columns resize to take up the correct amount of space\n\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols){\n\t\tvar oversizeCols = [],\n\t\toversizeSpace = 0,\n\t\tremainingSpace = 0,\n\t\tnextColWidth = 0,\n\t\tremainingFlexGrowUnits = flexGrowUnits,\n\t\tgap = 0,\n\t\tchangeUnits = 0,\n\t\tundersizeCols = [];\n\n\t\tfunction calcGrow(col){\n\t\t\treturn (colWidth * (col.column.definition.widthGrow || 1));\n\t\t}\n\n\t\tfunction calcShrink(col){\n\t\t\treturn (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));\n\t\t}\n\n\t\tcolumns.forEach(function(col, i){\n\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\t\t\tif(col.column.minWidth >= width){\n\t\t\t\toversizeCols.push(col);\n\t\t\t}else{\n\t\t\t\tif(col.column.maxWidth && col.column.maxWidth < width){\n\t\t\t\t\tcol.width = col.column.maxWidth;\n\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\n\t\t\t\t\tif(remainingFlexGrowUnits){\n\t\t\t\t\t\tcolWidth = Math.floor(freeSpace/remainingFlexGrowUnits);\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tundersizeCols.push(col);\n\t\t\t\t\tchangeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(oversizeCols.length){\n\t\t\toversizeCols.forEach(function(col){\n\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t});\n\n\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;\n\n\t\t\tgap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t}else{\n\t\t\tgap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;\n\n\t\t\tundersizeCols.forEach(function(column){\n\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t});\n\t\t}\n\n\t\treturn gap;\n\t}\n\n\tif(this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)){\n\t\tthis.table.modules.responsiveLayout.update();\n\t}\n\n\t//adjust for vertical scrollbar if present\n\tif(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){\n\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t}\n\n\tcolumns.forEach(function(column){\n\t\tvar width, minWidth, colWidth;\n\n\t\tif(column.visible){\n\n\t\t\twidth = column.definition.width;\n\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\tif(width){\n\n\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\tif(column.definition.widthShrink){\n\t\t\t\t\tfixedShrinkColumns.push({\n\t\t\t\t\t\tcolumn:column,\n\t\t\t\t\t\twidth:colWidth > minWidth ? colWidth : minWidth\n\t\t\t\t\t});\n\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t}\n\n\t\t\t}else{\n\t\t\t\tflexColumns.push({\n\t\t\t\t\tcolumn:column,\n\t\t\t\t\twidth:0,\n\t\t\t\t});\n\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t}\n\t\t}\n\t});\n\n\t//calculate available space\n\tflexWidth = totalWidth - fixedWidth;\n\n\t//calculate correct column size\n\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t//generate column widths\n\tgapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t//increase width of last column to account for rounding errors\n\tif(flexColumns.length && gapFill > 0){\n\t\tflexColumns[flexColumns.length-1].width += gapFill;\n\t}\n\n\t//calculate space for columns to be shrunk into\n\tflexColumns.forEach(function(col){\n\t\tflexWidth -= col.width;\n\t});\n\n\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t//shrink oversize columns if there is no available space\n\tif(overflowWidth > 0 && flexShrinkUnits){\n\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t}\n\n\t//decrease width of last column to account for rounding errors\n\tif(gapFill && fixedShrinkColumns.length){\n\t\tfixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;\n\t}\n\n\tflexColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n\n\tfixedShrinkColumns.forEach(function(col){\n\t\tcol.column.setWidth(col.width);\n\t});\n}\n","import Module from '../../core/Module.js';\n\nimport defaultModes from './defaults/modes.js';\n\nclass Layout extends Module{\n\n\tconstructor(table){\n\t\tsuper(table, \"layout\");\n\n\t\tthis.mode = null;\n\n\t\tthis.registerTableOption(\"layout\", \"fitData\"); //layout type\n\t\tthis.registerTableOption(\"layoutColumnsOnNewData\", false); //update column widths on setData\n\n\t\tthis.registerColumnOption(\"widthGrow\");\n\t\tthis.registerColumnOption(\"widthShrink\");\n\t}\n\n\t//initialize layout system\n\tinitialize(){\n\t\tvar layout = this.table.options.layout;\n\n\t\tif(Layout.modes[layout]){\n\t\t\tthis.mode = layout;\n\t\t}else{\n\t\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\t\t\tthis.mode = 'fitData';\n\t\t}\n\n\t\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n\t\tthis.subscribe(\"column-init\", this.initializeColumn.bind(this));\n\t}\n\n\tinitializeColumn(column){\n\t\tif(column.definition.widthGrow){\n\t\t\tcolumn.definition.widthGrow = Number(column.definition.widthGrow);\n\t\t}\n\t\tif(column.definition.widthShrink){\n\t\t\tcolumn.definition.widthShrink = Number(column.definition.widthShrink);\n\t\t}\n\t}\n\n\tgetMode(){\n\t\treturn this.mode;\n\t}\n\n\t//trigger table layout\n\tlayout(dataChanged){\n\t\tthis.dispatch(\"layout-refreshing\");\n\t\tLayout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged);\n\t\tthis.dispatch(\"layout-refreshed\");\n\t}\n}\n\nLayout.moduleName = \"layout\";\n\n//load defaults\nLayout.modes = defaultModes;\n\nexport default Layout;","import Module from '../../core/Module.js';\n\nimport Helpers from '../../core/tools/Helpers.js';\n\nimport defaultLangs from './defaults/langs.js';\n\nclass Localize extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\n\t\tthis.locale = \"default\"; //current locale\n\t\tthis.lang = false; //current language\n\t\tthis.bindings = {}; //update events to call when locale is changed\n\t\tthis.langList = {};\n\n\t\tthis.registerTableOption(\"locale\", false); //current system language\n\t\tthis.registerTableOption(\"langs\", {});\n\t}\n\n\tinitialize(){\n\t\tthis.langList = Helpers.deepClone(Localize.langs);\n\n\t\tif(this.table.options.columnDefaults.headerFilterPlaceholder !== false){\n\t\t\tthis.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);\n\t\t}\n\n\t\tfor(let locale in this.table.options.langs){\n\t\t\tthis.installLang(locale, this.table.options.langs[locale]);\n\t\t}\n\n\t\tthis.setLocale(this.table.options.locale);\n\n\t\tthis.registerTableFunction(\"setLocale\", this.setLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLocale\", this.getLocale.bind(this));\n\t\tthis.registerTableFunction(\"getLang\", this.getLang.bind(this));\n\t}\n\n\t//set header placeholder\n\tsetHeaderFilterPlaceholder(placeholder){\n\t\tthis.langList.default.headerFilters.default = placeholder;\n\t}\n\n\t//setup a lang description object\n\tinstallLang(locale, lang){\n\t\tif(this.langList[locale]){\n\t\t\tthis._setLangProp(this.langList[locale], lang);\n\t\t}else{\n\t\t\tthis.langList[locale] = lang;\n\t\t}\n\t}\n\n\t_setLangProp(lang, values){\n\t\tfor(let key in values){\n\t\t\tif(lang[key] && typeof lang[key] == \"object\"){\n\t\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t\t}else{\n\t\t\t\tlang[key] = values[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t//set current locale\n\tsetLocale(desiredLocale){\n\t\tdesiredLocale = desiredLocale || \"default\";\n\n\t\t//fill in any matching language values\n\t\tfunction traverseLang(trans, path){\n\t\t\tfor(var prop in trans){\n\t\t\t\tif(typeof trans[prop] == \"object\"){\n\t\t\t\t\tif(!path[prop]){\n\t\t\t\t\t\tpath[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t\t}else{\n\t\t\t\t\tpath[prop] = trans[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//determining correct locale to load\n\t\tif(desiredLocale === true && navigator.language){\n\t\t\t//get local from system\n\t\t\tdesiredLocale = navigator.language.toLowerCase();\n\t\t}\n\n\t\tif(desiredLocale){\n\t\t\t//if locale is not set, check for matching top level locale else use default\n\t\t\tif(!this.langList[desiredLocale]){\n\t\t\t\tlet prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\t\tif(this.langList[prefix]){\n\t\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\t\tdesiredLocale = prefix;\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\t\tdesiredLocale = \"default\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.locale = desiredLocale;\n\n\t\t//load default lang template\n\t\tthis.lang = Helpers.deepClone(this.langList.default || {});\n\n\t\tif(desiredLocale != \"default\"){\n\t\t\ttraverseLang(this.langList[desiredLocale], this.lang);\n\t\t}\n\n\t\tthis.dispatchExternal(\"localized\", this.locale, this.lang);\n\n\t\tthis._executeBindings();\n\t}\n\n\t//get current locale\n\tgetLocale(locale){\n\t\treturn this.locale;\n\t}\n\n\t//get lang object for given local or current if none provided\n\tgetLang(locale){\n\t\treturn locale ? this.langList[locale] : this.lang;\n\t}\n\n\t//get text for current locale\n\tgetText(path, value){\n\t\tvar fillPath = value ? path + \"|\" + value : path,\n\t\tpathArray = fillPath.split(\"|\"),\n\t\ttext = this._getLangElement(pathArray, this.locale);\n\n\t\t// if(text === false){\n\t\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t\t// }\n\n\t\treturn text || \"\";\n\t}\n\n\t//traverse langs object and find localized copy\n\t_getLangElement(path, locale){\n\t\tvar root = this.lang;\n\n\t\tpath.forEach(function(level){\n\t\t\tvar rootPath;\n\n\t\t\tif(root){\n\t\t\t\trootPath = root[level];\n\n\t\t\t\tif(typeof rootPath != \"undefined\"){\n\t\t\t\t\troot = rootPath;\n\t\t\t\t}else{\n\t\t\t\t\troot = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn root;\n\t}\n\n\t//set update binding\n\tbind(path, callback){\n\t\tif(!this.bindings[path]){\n\t\t\tthis.bindings[path] = [];\n\t\t}\n\n\t\tthis.bindings[path].push(callback);\n\n\t\tcallback(this.getText(path), this.lang);\n\t}\n\n\t//iterate through bindings and trigger updates\n\t_executeBindings(){\n\t\tfor(let path in this.bindings){\n\t\t\tthis.bindings[path].forEach((binding) => {\n\t\t\t\tbinding(this.getText(path), this.lang);\n\t\t\t});\n\t\t}\n\t}\n}\n\nLocalize.moduleName = \"localize\";\n\n//load defaults\nLocalize.langs = defaultLangs;\n\nexport default Localize;","export default {\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},\n\t\t\"data\":{\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\t\"counter\":{\n\t\t\t\t\"showing\": \"Showing\",\n\t\t\t\t\"of\": \"of\",\n\t\t\t\t\"rows\": \"rows\",\n\t\t\t\t\"pages\": \"pages\",\n\t\t\t}\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};","import Module from '../../core/Module.js';\nimport TableRegistry from '../../core/tools/TableRegistry.js';\n\nclass Comms extends Module{\n\n\tconstructor(table){\n\t\tsuper(table);\n\t}\n\n\tinitialize(){\n\t\tthis.registerTableFunction(\"tableComms\", this.receive.bind(this));\n\t}\n\n\tgetConnections(selectors){\n\t\tvar connections = [],\n\t\tconnection;\n\n\t\tconnection = TableRegistry.lookupTable(selectors);\n\n\t\tconnection.forEach((con) =>{\n\t\t\tif(this.table !== con){\n\t\t\t\tconnections.push(con);\n\t\t\t}\n\t\t});\n\n\t\treturn connections;\n\t}\n\n\tsend(selectors, module, action, data){\n\t\tvar connections = this.getConnections(selectors);\n\n\t\tconnections.forEach((connection) => {\n\t\t\tconnection.tableComms(this.table.element, module, action, data);\n\t\t});\n\n\t\tif(!connections.length && selectors){\n\t\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t\t}\n\t}\n\n\treceive(table, module, action, data){\n\t\tif(this.table.modExists(module)){\n\t\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t\t}else{\n\t\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t\t}\n\t}\n}\n\nComms.moduleName = \"comms\";\n\nexport default Comms;","import * as coreModules from '../modules/core.js';\nimport TableRegistry from './TableRegistry.js';\n\nexport default class ModuleBinder {\n\t\n\tconstructor(tabulator, modules){\n\t\tthis.bindStaticFunctionality(tabulator);\n\t\tthis.bindModules(tabulator, coreModules, true);\n\t\t\n\t\tif(modules){\n\t\t\tthis.bindModules(tabulator, modules);\n\t\t}\n\t}\n\t\n\tbindStaticFunctionality(tabulator){\n\t\ttabulator.moduleBindings = {};\n\t\t\n\t\ttabulator.extendModule = function(name, property, values){\n\t\t\tif(tabulator.moduleBindings[name]){\n\t\t\t\tvar source = tabulator.moduleBindings[name][property];\n\t\t\t\t\n\t\t\t\tif(source){\n\t\t\t\t\tif(typeof values == \"object\"){\n\t\t\t\t\t\tfor(let key in values){\n\t\t\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t\t\t}\n\t\t\t\t}else{\n\t\t\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t\t\t}\n\t\t};\n\t\t\n\t\ttabulator.registerModule = function(modules){\n\t\t\tif(!Array.isArray(modules)){\n\t\t\t\tmodules = [modules];\n\t\t\t}\n\t\t\t\n\t\t\tmodules.forEach((mod) => {\n\t\t\t\ttabulator.registerModuleBinding(mod);\n\t\t\t});\n\t\t};\n\t\t\n\t\ttabulator.registerModuleBinding = function(mod){\n\t\t\ttabulator.moduleBindings[mod.moduleName] = mod;\n\t\t};\n\t\t\n\t\ttabulator.findTable = function(query){\n\t\t\tvar results = TableRegistry.lookupTable(query, true);\n\t\t\treturn Array.isArray(results) && !results.length ? false : results;\n\t\t};\n\t\t\n\t\t//ensure that module are bound to instantiated function\n\t\ttabulator.prototype.bindModules = function(){\n\t\t\tvar orderedStartMods = [],\n\t\t\torderedEndMods = [],\n\t\t\tunOrderedMods = [];\n\t\t\t\n\t\t\tthis.modules = {};\n\t\t\t\n\t\t\tfor(var name in tabulator.moduleBindings){\n\t\t\t\tlet mod = tabulator.moduleBindings[name];\n\t\t\t\tlet module = new mod(this);\n\t\t\t\t\n\t\t\t\tthis.modules[name] = module;\n\t\t\t\t\n\t\t\t\tif(mod.prototype.moduleCore){\n\t\t\t\t\tthis.modulesCore.push(module);\n\t\t\t\t}else{\n\t\t\t\t\tif(mod.moduleInitOrder){\n\t\t\t\t\t\tif(mod.moduleInitOrder < 0){\n\t\t\t\t\t\t\torderedStartMods.push(module);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\torderedEndMods.push(module);\n\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\tunOrderedMods.push(module);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\torderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\torderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1);\n\t\t\t\n\t\t\tthis.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods));\n\t\t};\n\t}\n\t\n\tbindModules(tabulator, modules, core){\n\t\tvar mods = Object.values(modules);\n\t\t\n\t\tif(core){\n\t\t\tmods.forEach((mod) => {\n\t\t\t\tmod.prototype.moduleCore = true;\n\t\t\t});\n\t\t}\n\t\t\n\t\ttabulator.registerModule(mods);\n\t}\n}","import CoreFeature from '../CoreFeature.js';\n\nexport default class Alert extends CoreFeature{\n\tconstructor(table){\n\t\tsuper(table);\n \n\t\tthis.element = this._createAlertElement();\n\t\tthis.msgElement = this._createMsgElement();\n\t\tthis.type = null;\n \n\t\tthis.element.appendChild(this.msgElement);\n\t}\n \n\t_createAlertElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert\");\n\t\treturn el;\n\t}\n \n\t_createMsgElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-alert-msg\");\n\t\tel.setAttribute(\"role\", \"alert\");\n\t\treturn el;\n\t}\n \n\t_typeClass(){\n\t\treturn \"tabulator-alert-state-\" + this.type;\n\t}\n \n\talert(content, type = \"msg\"){\n\t\tif(content){\n\t\t\tthis.clear();\n\n\t\t\tthis.dispatch(\"alert-show\", type);\n \n\t\t\tthis.type = type;\n \n\t\t\twhile(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild);\n \n\t\t\tthis.msgElement.classList.add(this._typeClass());\n \n\t\t\tif(typeof content === \"function\"){\n\t\t\t\tcontent = content();\n\t\t\t}\n \n\t\t\tif(content instanceof HTMLElement){\n\t\t\t\tthis.msgElement.appendChild(content);\n\t\t\t}else{\n\t\t\t\tthis.msgElement.innerHTML = content;\n\t\t\t}\n \n\t\t\tthis.table.element.appendChild(this.element);\n\t\t}\n\t}\n \n\tclear(){\n\t\tthis.dispatch(\"alert-hide\", this.type);\n\n\t\tif(this.element.parentNode){\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n \n\t\tthis.msgElement.classList.remove(this._typeClass());\n\t}\n}","'use strict';\n\nimport defaultOptions from './defaults/options.js';\n\nimport ColumnManager from './ColumnManager.js';\nimport RowManager from './RowManager.js';\nimport FooterManager from './FooterManager.js';\n\nimport InteractionMonitor from './tools/InteractionMonitor.js';\nimport ComponentFunctionBinder from './tools/ComponentFunctionBinder.js';\nimport DataLoader from './tools/DataLoader.js';\n\nimport ExternalEventBus from './tools/ExternalEventBus.js';\nimport InternalEventBus from './tools/InternalEventBus.js';\n\nimport DeprecationAdvisor from './tools/DeprecationAdvisor.js';\n\nimport TableRegistry from './tools/TableRegistry.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nimport OptionsList from './tools/OptionsList.js';\n\nimport Alert from './tools/Alert.js';\n\nclass Tabulator {\n\t\n\tconstructor(element, options){\n\t\t\n\t\tthis.options = {};\n\t\t\n\t\tthis.columnManager = null; // hold Column Manager\n\t\tthis.rowManager = null; //hold Row Manager\n\t\tthis.footerManager = null; //holder Footer Manager\n\t\tthis.alertManager = null; //hold Alert Manager\n\t\tthis.vdomHoz = null; //holder horizontal virtual dom\n\t\tthis.externalEvents = null; //handle external event messaging\n\t\tthis.eventBus = null; //handle internal event messaging\n\t\tthis.interactionMonitor = false; //track user interaction\n\t\tthis.browser = \"\"; //hold current browser type\n\t\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\t\tthis.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance\n\t\tthis.rtl = false; //check if the table is in RTL mode\n\t\tthis.originalElement = null; //hold original table element if it has been replaced\n\t\t\n\t\tthis.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions\n\t\tthis.dataLoader = false; //bind component functions\n\t\t\n\t\tthis.modules = {}; //hold all modules bound to this table\n\t\tthis.modulesCore = []; //hold core modules bound to this table (for initialization purposes)\n\t\tthis.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes)\n\t\t\n\t\tthis.deprecationAdvisor = new DeprecationAdvisor(this);\n\t\tthis.optionsList = new OptionsList(this, \"table constructor\");\n\t\t\n\t\tthis.initialized = false;\n\t\tthis.destroyed = false;\n\t\t\n\t\tif(this.initializeElement(element)){\n\t\t\t\n\t\t\tthis.initializeCoreSystems(options);\n\t\t\t\n\t\t\t//delay table creation to allow event bindings immediately after the constructor\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._create();\n\t\t\t});\n\t\t}\n\t\t\n\t\tTableRegistry.register(this); //register table for inter-device communication\n\t}\n\t\n\tinitializeElement(element){\n\t\tif(typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement){\n\t\t\tthis.element = element;\n\t\t\treturn true;\n\t\t}else if(typeof element === \"string\"){\n\t\t\tthis.element = document.querySelector(element);\n\t\t\t\n\t\t\tif(this.element){\n\t\t\t\treturn true;\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tinitializeCoreSystems(options){\n\t\tthis.columnManager = new ColumnManager(this);\n\t\tthis.rowManager = new RowManager(this);\n\t\tthis.footerManager = new FooterManager(this);\n\t\tthis.dataLoader = new DataLoader(this);\n\t\tthis.alertManager = new Alert(this);\n\t\t\n\t\tthis.bindModules();\n\t\t\n\t\tthis.options = this.optionsList.generate(Tabulator.defaultOptions, options);\n\t\t\n\t\tthis._clearObjectPointers();\n\t\t\n\t\tthis._mapDeprecatedFunctionality();\n\t\t\n\t\tthis.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);\n\t\tthis.eventBus = new InternalEventBus(this.options.debugEventsInternal);\n\t\t\n\t\tthis.interactionMonitor = new InteractionMonitor(this);\n\t\t\n\t\tthis.dataLoader.initialize();\n\t\t// this.columnManager.initialize();\n\t\t// this.rowManager.initialize();\n\t\tthis.footerManager.initialize();\n\t}\n\t\n\t//convert deprecated functionality to new functions\n\t_mapDeprecatedFunctionality(){\n\t\t//all previously deprecated functionality removed in the 5.0 release\n\t}\n\t\n\t_clearSelection(){\n\t\t\n\t\tthis.element.classList.add(\"tabulator-block-select\");\n\t\t\n\t\tif (window.getSelection) {\n\t\t\tif (window.getSelection().empty) { // Chrome\n\t\t\t\twindow.getSelection().empty();\n\t\t\t} else if (window.getSelection().removeAllRanges) { // Firefox\n\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t}\n\t\t} else if (document.selection) { // IE?\n\t\t\tdocument.selection.empty();\n\t\t}\n\t\t\n\t\tthis.element.classList.remove(\"tabulator-block-select\");\n\t}\n\t\n\t//create table\n\t_create(){\n\t\tthis.externalEvents.dispatch(\"tableBuilding\");\n\t\tthis.eventBus.dispatch(\"table-building\");\n\t\t\n\t\tthis._rtlCheck();\n\t\t\n\t\tthis._buildElement();\n\t\t\n\t\tthis._initializeTable();\n\t\t\n\t\tthis._loadInitialData();\n\t\t\n\t\tthis.initialized = true;\n\t\t\n\t\tthis.externalEvents.dispatch(\"tableBuilt\");\n\t}\n\t\n\t_rtlCheck(){\n\t\tvar style = window.getComputedStyle(this.element);\n\t\t\n\t\tswitch(this.options.textDirection){\n\t\t\tcase\"auto\":\n\t\t\t\tif(style.direction !== \"rtl\"){\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\n\t\t\tcase \"rtl\":\n\t\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\t\tthis.rtl = true;\n\t\t\t\tbreak;\n\t\t\t\n\t\t\tcase \"ltr\":\n\t\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\t\t\t\n\t\t\tdefault:\n\t\t\t\tthis.rtl = false;\n\t\t}\n\t}\n\t\n\t//clear pointers to objects in default config object\n\t_clearObjectPointers(){\n\t\tthis.options.columns = this.options.columns.slice(0);\n\t\t\n\t\tif(Array.isArray(this.options.data) && !this.options.reactiveData){\n\t\t\tthis.options.data = this.options.data.slice(0);\n\t\t}\n\t}\n\t\n\t//build tabulator element\n\t_buildElement(){\n\t\tvar element = this.element,\n\t\toptions = this.options,\n\t\tnewElement;\n\t\t\n\t\tif(element.tagName === \"TABLE\"){\n\t\t\tthis.originalElement = this.element;\n\t\t\tnewElement = document.createElement(\"div\");\n\t\t\t\n\t\t\t//transfer attributes to new element\n\t\t\tvar attributes = element.attributes;\n\t\t\t\n\t\t\t// loop through attributes and apply them on div\n\t\t\tfor(var i in attributes){\n\t\t\t\tif(typeof attributes[i] == \"object\"){\n\t\t\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// replace table with div element\n\t\t\telement.parentNode.replaceChild(newElement, element);\n\t\t\t\n\t\t\tthis.element = element = newElement;\n\t\t}\n\t\t\n\t\telement.classList.add(\"tabulator\");\n\t\telement.setAttribute(\"role\", \"grid\");\n\t\t\n\t\t//empty element\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\t\n\t\t//set table height\n\t\tif(options.height){\n\t\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\t\telement.style.height = options.height;\n\t\t}\n\t\t\n\t\t//set table min height\n\t\tif(options.minHeight !== false){\n\t\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\t\telement.style.minHeight = options.minHeight;\n\t\t}\n\t\t\n\t\t//set table maxHeight\n\t\tif(options.maxHeight !== false){\n\t\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\t\telement.style.maxHeight = options.maxHeight;\n\t\t}\n\t}\n\t\n\t//initialize core systems and modules\n\t_initializeTable(){\n\t\tvar element = this.element,\n\t\toptions = this.options;\n\t\t\n\t\tthis.interactionMonitor.initialize();\n\t\t\n\t\tthis.columnManager.initialize();\n\t\tthis.rowManager.initialize();\n\t\t\n\t\tthis._detectBrowser();\n\t\t\n\t\t//initialize core modules\n\t\tthis.modulesCore.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\t//build table elements\n\t\telement.appendChild(this.columnManager.getElement());\n\t\telement.appendChild(this.rowManager.getElement());\n\t\t\n\t\tif(options.footerElement){\n\t\t\tthis.footerManager.activate();\n\t\t}\n\t\t\n\t\tif(options.autoColumns && options.data){\n\t\t\t\n\t\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t\t}\n\t\t\n\t\t//initialize regular modules\n\t\tthis.modulesRegular.forEach((mod) => {\n\t\t\tmod.initialize();\n\t\t});\n\t\t\n\t\tthis.columnManager.setColumns(options.columns);\n\t\t\n\t\tthis.eventBus.dispatch(\"table-built\");\n\t}\n\t\n\t_loadInitialData(){\n\t\tthis.dataLoader.load(this.options.data);\n\t\tthis.columnManager.verticalAlignHeaders();\n\t}\n\t\n\t//deconstructor\n\tdestroy(){\n\t\tvar element = this.element;\n\t\t\n\t\tthis.destroyed = true;\n\t\t\n\t\tTableRegistry.deregister(this); //deregister table from inter-device communication\n\t\t\n\t\tthis.eventBus.dispatch(\"table-destroy\");\n\t\t\n\t\t//clear row data\n\t\tthis.rowManager.destroy();\n\t\t\n\t\t//clear DOM\n\t\twhile(element.firstChild) element.removeChild(element.firstChild);\n\t\telement.classList.remove(\"tabulator\");\n\n\t\tthis.externalEvents.dispatch(\"tableDestroyed\");\n\t}\n\t\n\t_detectBrowser(){\n\t\tvar ua = navigator.userAgent||navigator.vendor||window.opera;\n\t\t\n\t\tif(ua.indexOf(\"Trident\") > -1){\n\t\t\tthis.browser = \"ie\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Edge\") > -1){\n\t\t\tthis.browser = \"edge\";\n\t\t\tthis.browserSlow = true;\n\t\t}else if(ua.indexOf(\"Firefox\") > -1){\n\t\t\tthis.browser = \"firefox\";\n\t\t\tthis.browserSlow = false;\n\t\t}else if(ua.indexOf(\"Mac OS\") > -1){\n\t\t\tthis.browser = \"safari\";\n\t\t\tthis.browserSlow = false;\n\t\t}else{\n\t\t\tthis.browser = \"other\";\n\t\t\tthis.browserSlow = false;\n\t\t}\n\t\t\n\t\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.slice(0,4));\n\t}\n\t\n\tinitGuard(func, msg){\n\t\tvar stack, line;\n\t\t\n\t\tif(this.options.debugInitialization && !this.initialized){\n\t\t\tif(!func){\n\t\t\t\tstack = new Error().stack.split(\"\\n\");\n\t\t\t\t\n\t\t\t\tline = stack[0] == \"Error\" ? stack[2] : stack[1];\n\t\t\t\t\n\t\t\t\tif(line[0] == \" \"){\n\t\t\t\t\tfunc = line.trim().split(\" \")[1].split(\".\")[1];\n\t\t\t\t}else{\n\t\t\t\t\tfunc = line.trim().split(\"@\")[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.warn(\"Table Not Initialized - Calling the \" + func + \" function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function.\" + (msg ? \" \" + msg : \"\"));\n\t\t}\n\t\t\n\t\treturn this.initialized;\n\t}\n\t\n\t////////////////// Data Handling //////////////////\n\t//block table redrawing\n\tblockRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocking\");\n\t\t\n\t\tthis.rowManager.blockRedraw();\n\t\tthis.columnManager.blockRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-blocked\");\n\t}\n\t\n\t//restore table redrawing\n\trestoreRedraw(){\n\t\tthis.initGuard();\n\n\t\tthis.eventBus.dispatch(\"redraw-restoring\");\n\n\t\tthis.rowManager.restoreRedraw();\n\t\tthis.columnManager.restoreRedraw();\n\n\t\tthis.eventBus.dispatch(\"redraw-restored\");\n\t}\n\t\n\t//load data\n\tsetData(data, params, config){\n\t\tthis.initGuard(false, \"To set initial data please use the 'data' property in the table constructor.\");\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, false);\n\t}\n\t\n\t//clear data\n\tclearData(){\n\t\tthis.initGuard();\n\t\t\n\t\tthis.dataLoader.blockActiveLoad();\n\t\tthis.rowManager.clearData();\n\t}\n\t\n\t//get table data array\n\tgetData(active){\n\t\treturn this.rowManager.getData(active);\n\t}\n\t\n\t//get table data array count\n\tgetDataCount(active){\n\t\treturn this.rowManager.getDataCount(active);\n\t}\n\t\n\t//replace data, keeping table in position with same sort\n\treplaceData(data, params, config){\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.dataLoader.load(data, params, config, true, true);\n\t}\n\t\n\t//update table data\n\tupdateData(data){\n\t\tvar responses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\tresponses++;\n\t\t\t\t\t\t\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\t\treject(\"Update Error - Unable to update row\", item, e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\treject(\"Update Error - Unable to find row\", item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\taddData(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data){\n\t\t\t\tthis.rowManager.addRows(data, pos, index)\n\t\t\t\t\t.then((rows) => {\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\n\t\t\t\t\t\trows.forEach(function(row){\n\t\t\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\t\tresolve(output);\n\t\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//update table data\n\tupdateOrAddData(data){\n\t\tvar rows = [],\n\t\tresponses = 0;\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.dataLoader.blockActiveLoad();\n\t\t\t\n\t\t\tif(typeof data === \"string\"){\n\t\t\t\tdata = JSON.parse(data);\n\t\t\t}\n\t\t\t\n\t\t\tif(data && data.length > 0){\n\t\t\t\tdata.forEach((item) => {\n\t\t\t\t\tvar row = this.rowManager.findRow(item[this.options.index]);\n\t\t\t\t\t\n\t\t\t\t\tresponses++;\n\t\t\t\t\t\n\t\t\t\t\tif(row){\n\t\t\t\t\t\trow.updateData(item)\n\t\t\t\t\t\t\t.then(()=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(row.getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis.rowManager.addRows(item)\n\t\t\t\t\t\t\t.then((newRows)=>{\n\t\t\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif(!responses){\n\t\t\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\t\treject(\"Update Error - No data provided\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//get row object\n\tgetRow(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//get row object\n\tgetRowFromPosition(position){\n\t\tvar row = this.rowManager.getRowFromPosition(position);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t//delete row from table\n\tdeleteRow(index){\n\t\tvar foundRows = [];\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(!Array.isArray(index)){\n\t\t\tindex = [index];\n\t\t}\n\t\t\n\t\t//find matching rows\n\t\tfor(let item of index){\n\t\t\tlet row = this.rowManager.findRow(item, true);\n\t\t\t\n\t\t\tif(row){\n\t\t\t\tfoundRows.push(row);\n\t\t\t}else{\n\t\t\t\tconsole.error(\"Delete Error - No matching row found:\", item);\n\t\t\t\treturn Promise.reject(\"Delete Error - No matching row found\");\n\t\t\t}\n\t\t}\n\t\t\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort((a, b) => {\n\t\t\treturn this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\t\t\n\t\t//delete rows\n\t\tfoundRows.forEach((row) =>{\n\t\t\trow.delete();\n\t\t});\n\t\t\n\t\tthis.rowManager.reRenderInPosition();\n\t\t\n\t\treturn Promise.resolve();\n\t}\n\t\n\t//add row to table\n\taddRow(data, pos, index){\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\treturn this.rowManager.addRows(data, pos, index, true)\n\t\t\t.then((rows)=>{\n\t\t\t\treturn rows[0].getComponent();\n\t\t\t});\n\t}\n\t\n\t//update a row if it exists otherwise create it\n\tupdateOrAddRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn row.getComponent();\n\t\t\t\t});\n\t\t}else{\n\t\t\treturn this.rowManager.addRows(data)\n\t\t\t\t.then((rows)=>{\n\t\t\t\t\treturn rows[0].getComponent();\n\t\t\t\t});\n\t\t}\n\t}\n\t\n\t//update row data\n\tupdateRow(index, data){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(typeof data === \"string\"){\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\t\t\n\t\tif(row){\n\t\t\treturn row.updateData(data)\n\t\t\t\t.then(()=>{\n\t\t\t\t\treturn Promise.resolve(row.getComponent());\n\t\t\t\t});\n\t\t}else{\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Update Error - No matching row found\");\n\t\t}\n\t}\n\t\n\t//scroll to row in DOM\n\tscrollToRow(index, position, ifVisible){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn this.rowManager.scrollToRow(row, position, ifVisible);\n\t\t}else{\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treturn Promise.reject(\"Scroll Error - No matching row found\");\n\t\t}\n\t}\n\t\n\tmoveRow(from, to, after){\n\t\tvar fromRow = this.rowManager.findRow(from);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromRow){\n\t\t\tfromRow.moveToRow(to, after);\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t\t}\n\t}\n\t\n\tgetRows(active){\n\t\treturn this.rowManager.getComponents(active);\t\n\t}\n\t\n\t//get position of row in table\n\tgetRowPosition(index){\n\t\tvar row = this.rowManager.findRow(index);\n\t\t\n\t\tif(row){\n\t\t\treturn row.getPosition();\n\t\t}else{\n\t\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t/////////////// Column Functions ///////////////\n\tsetColumns(definition){\n\t\tthis.initGuard(false, \"To set initial columns please use the 'columns' property in the table constructor\");\n\t\t\n\t\tthis.columnManager.setColumns(definition);\n\t}\n\t\n\tgetColumns(structured){\n\t\treturn this.columnManager.getComponents(structured);\n\t}\n\t\n\tgetColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tif(column){\n\t\t\treturn column.getComponent();\n\t\t}else{\n\t\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tgetColumnDefinitions(){\n\t\treturn this.columnManager.getDefinitionTree();\n\t}\n\t\n\tshowColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.show();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\thideColumn(field){\n\t\tvar column = this.columnManager.findColumn(field); \n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tcolumn.hide();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\ttoggleColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\tif(column.visible){\n\t\t\t\tcolumn.hide();\n\t\t\t}else{\n\t\t\t\tcolumn.show();\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\taddColumn(definition, before, field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\treturn this.columnManager.addColumn(definition, before, column)\n\t\t\t.then((column) => {\n\t\t\t\treturn column.getComponent();\n\t\t\t});\n\t}\n\t\n\tdeleteColumn(field){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.delete();\n\t\t}else{\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tupdateColumnDefinition(field, definition){\n\t\tvar column = this.columnManager.findColumn(field);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(column){\n\t\t\treturn column.updateDefinition(definition);\n\t\t}else{\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treturn Promise.reject();\n\t\t}\n\t}\n\t\n\tmoveColumn(from, to, after){\n\t\tvar fromColumn = this.columnManager.findColumn(from),\n\t\ttoColumn = this.columnManager.findColumn(to);\n\t\t\n\t\tthis.initGuard();\n\t\t\n\t\tif(fromColumn){\n\t\t\tif(toColumn){\n\t\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t\t}\n\t\t}else{\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t\t}\n\t}\n\t\n\t//scroll to column in DOM\n\tscrollToColumn(field, position, ifVisible){\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tvar column = this.columnManager.findColumn(field);\n\t\t\t\n\t\t\tif(column){\n\t\t\t\treturn this.columnManager.scrollToColumn(column, position, ifVisible);\n\t\t\t}else{\n\t\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\t\treturn Promise.reject(\"Scroll Error - No matching column found\");\n\t\t\t}\n\t\t});\n\t}\n\t\n\t//////////// General Public Functions ////////////\n\t//redraw list without updating data\n\tredraw(force){\n\t\tthis.initGuard();\n\n\t\tthis.columnManager.redraw(force);\n\t\tthis.rowManager.redraw(force);\n\t}\n\t\n\tsetHeight(height){\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.initializeRenderer();\n\t\tthis.rowManager.redraw(true);\n\t}\n\t\n\t//////////////////// Event Bus ///////////////////\n\t\n\ton(key, callback){\n\t\tthis.externalEvents.subscribe(key, callback);\n\t}\n\t\n\toff(key, callback){\n\t\tthis.externalEvents.unsubscribe(key, callback);\n\t}\n\t\n\tdispatchEvent(){\n\t\tvar args = Array.from(arguments);\n\t\targs.shift();\n\t\t\n\t\tthis.externalEvents.dispatch(...arguments);\n\t}\n\n\t//////////////////// Alerts ///////////////////\n\n\talert(contents, type){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.alert(contents, type);\n\t}\n\n\tclearAlert(){\n\t\tthis.initGuard();\n\n\t\tthis.alertManager.clear();\n\t}\n\t\n\t////////////// Extension Management //////////////\n\tmodExists(plugin, required){\n\t\tif(this.modules[plugin]){\n\t\t\treturn true;\n\t\t}else{\n\t\t\tif(required){\n\t\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule(key){\n\t\tvar mod = this.modules[key];\n\t\t\n\t\tif(!mod){\n\t\t\tconsole.error(\"Tabulator module not installed: \" + key);\n\t\t}\n\t\t\n\t\treturn mod;\n\t}\n}\n\n//default setup options\nTabulator.defaultOptions = defaultOptions;\n\n//bind modules and static functionality\nnew ModuleBinder(Tabulator);\n\nexport default Tabulator;\n","export default {\n\n\tdebugEventsExternal:false, //flag to console log events\n\tdebugEventsInternal:false, //flag to console log events\n\tdebugInvalidOptions:true, //allow toggling of invalid option warnings\n\tdebugInvalidComponentFuncs:true, //allow toggling of invalid component warnings\n\tdebugInitialization:true, //allow toggling of pre initialization function call warnings\n\tdebugDeprecation:true, //allow toggling of deprecation warnings\n\n\theight:false, //height of tabulator\n\tminHeight:false, //minimum height of tabulator\n\tmaxHeight:false, //maximum height of tabulator\n\n\tcolumnHeaderVertAlign:\"top\", //vertical alignment of column headers\n\n\tpopupContainer:false,\n\n\tcolumns:[],//store for colum header info\n\tcolumnDefaults:{}, //store column default props\n\n\tdata:false, //default starting data\n\n\tautoColumns:false, //build columns from data row structure\n\tautoColumnsDefinitions:false,\n\n\tnestedFieldSeparator:\".\", //separator for nested data\n\n\tfooterElement:false, //hold footer element\n\n\tindex:\"id\", //filed for row index\n\n\ttextDirection:\"auto\",\n\n\taddRowPos:\"bottom\", //position to insert blank rows, top|bottom\n\n\theaderVisible:true, //hide header\n\n\trenderVertical:\"virtual\",\n\trenderHorizontal:\"basic\",\n\trenderVerticalBuffer:0, // set virtual DOM buffer size\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\trowHeight:null,\n\n\tplaceholder:false,\n\n\tdataLoader:true,\n\tdataLoaderLoading:false,\n\tdataLoaderError:false,\n\tdataLoaderErrorTimeout:3000,\n\n\tdataSendParams:{},\n\n\tdataReceiveParams:{},\n};\n","//tabulator with all modules installed\nimport {default as Tabulator} from './Tabulator.js';\nimport * as modules from '../core/modules/optional.js';\nimport ModuleBinder from './tools/ModuleBinder.js';\n\nclass TabulatorFull extends Tabulator {}\n\n//bind modules and static functionality\nnew ModuleBinder(TabulatorFull, modules);\n\nexport default TabulatorFull;\n","export default class PseudoRow {\n\n\tconstructor (type){\n\t\tthis.type = type;\n\t\tthis.element = this._createElement();\n\t}\n\n\t_createElement(){\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-row\");\n\t\treturn el;\n\t}\n\n\tgetElement(){\n\t\treturn this.element;\n\t}\n\n\tgetComponent(){\n\t\treturn false;\n\t}\n\n\tgetData(){\n\t\treturn {};\n\t}\n\n\tgetHeight(){\n\t\treturn this.element.outerHeight;\n\t}\n\n\tinitialize(){}\n\n\treinitialize(){}\n\n\tnormalizeHeight(){}\n\n\tgenerateCells(){}\n\n\treinitializeHeight(){}\n\n\tcalcHeight(){}\n\n\tsetCellHeight(){}\n\n\tclearCellHeight(){}\n\n\trendered(){}\n}"],"names":["CoreFeature","constructor","table","this","reloadData","data","silent","columnsChanged","dataLoader","load","undefined","langText","modules","localize","getText","arguments","langBind","bind","langLocale","getLocale","commsConnections","comms","getConnections","commsSend","send","layoutMode","layout","getMode","layoutRefresh","force","subscribe","eventBus","unsubscribe","subscribed","key","subscriptionChange","dispatch","chain","confirm","dispatchExternal","externalEvents","subscribedExternal","subscriptionChangeExternal","options","setOption","value","deprecationCheck","oldOption","newOption","convert","deprecationAdvisor","check","deprecationCheckMsg","msg","checkMsg","deprecationMsg","module","Helpers","static","el","offsetWidth","offsetHeight","box","getBoundingClientRect","top","window","pageYOffset","document","documentElement","clientTop","left","pageXOffset","clientLeft","separator","field","output","structure","split","length","i","obj","clone","list","objectProto","__proto__","arrayProto","Object","assign","Array","isArray","match","copy","subject","findIndex","item","unshift","deepClone","Popup","element","parent","super","container","_lookupContainer","reversedX","childPopup","blurable","blurCallback","blurEventsBound","renderedCallback","visible","hideable","classList","add","blurEvent","hide","escEvent","_escapeCheck","destroyBinding","tableDestroyed","destroyed","popupContainer","querySelector","console","warn","_checkContainerIsParent","body","parentNode","renderCallback","callback","containerEventCoords","e","touch","MouseEvent","x","touches","pageX","y","pageY","parentOffset","elOffset","elementPositionCoords","position","containerOffset","offset","show","origin","parentEl","coords","HTMLElement","style","appendChild","_fitToScreen","addEventListener","stopPropagation","scrollTop","right","Math","max","scrollHeight","parseInt","isVisible","hideOnBlur","setTimeout","rowManager","keyCode","blockHide","restoreHide","removeEventListener","removeChild","child","Module","name","_handler","initialize","registerTableOption","optionsList","register","registerColumnOption","columnManager","registerTableFunction","func","args","initGuard","registerComponentFunction","component","handler","componentFunctionBinder","registerDataHandler","priority","registerDataPipelineHandler","registerDisplayHandler","registerDisplayPipelineHandler","displayRows","adjust","lookupIndex","index","displayPipeline","getDisplayRows","activeRows","refreshData","renderInPosition","refreshActiveData","footerAppend","footerManager","append","footerPrepend","prepend","footerRemove","remove","popup","menuEl","menuContainer","alert","content","type","alertManager","clearAlert","clear","Accessor","allowedTypes","initializeColumn","transformRow","column","config","forEach","accessor","charAt","toUpperCase","slice","definition","lookupAccessor","params","accessors","row","rowComponent","getComponent","traverse","colComponent","getFieldValue","setFieldValue","moduleName","generateParamsList","prefix","concat","push","serializeParams","encoded","encodeURIComponent","join","url","keys","method","toLowerCase","includes","json","headers","JSON","stringify","form","FormData","Ajax","urlGenerator","loaderPromise","contentTypeFormatters","ajaxRequestFunc","defaultLoaderPromise","ajaxURLGenerator","defaultURLGenerator","ajaxURL","setUrl","setDefaultConfig","ajaxConfig","getUrl","requestDataCheck","requestParams","requestData","ajaxParams","call","previousData","generateConfig","sendRequest","defaultConfig","ajaxRequesting","then","ajaxResponse","Promise","reject","contentType","resolve","ajaxContentType","Accept","mode","location","credentials","fetch","response","ok","catch","error","status","statusText","defaultContentTypeFormatters","Clipboard","pasteParser","pasteAction","customSelection","rowRange","blocked","clipboard","clipboardCopyRowRange","plain","html","preventDefault","clipboardCopyFormatter","export","generateExportList","clipboardCopyConfig","clipboardCopyStyled","generateHTMLTable","generatePlainContent","clipboardData","setData","originalEvent","reset","paste","setPasteParser","clipboardPasteParser","setPasteAction","clipboardPasteAction","rowData","columns","col","getKey","range","internal","sel","textRange","getSelection","createRange","selectNodeContents","toString","removeAllRanges","addRange","selection","createTextRange","moveToElementText","select","execCommand","action","pasteActions","parser","pasteParsers","rows","checkPasteOrigin","getPasteData","modExists","mutateData","mutator","valid","target","tagName","getData","replace","update","updateOrAddData","insert","addData","bounds","startCell","startRow","rowWidth","dataLength","selectRange","activeRange","singleCell","getBounds","start","end","indexOf","blockRedraw","updateData","restoreRedraw","headerFindSuccess","columnMap","find","title","trim","columnsByIndex","shift","colWidth","startCol","getVisibleColumnsByIndex","itemLength","CalcComponent","_row","Proxy","get","receiver","handle","transform","getElement","getTable","getCells","cells","cell","getCell","_getSelf","CellComponent","_cell","getValue","getOldValue","getInitialValue","initialValue","getRow","getType","getField","getColumn","setValue","mutate","restoreOldValue","setValueActual","restoreInitialValue","checkHeight","Cell","oldValue","height","width","minWidth","loaded","build","generateElement","setWidth","_configureCell","createElement","className","setAttribute","textAlign","hozAlign","vertAlign","display","alignItems","bottom","middle","justifyContent","center","cssClass","_generateContents","val","innerHTML","Node","firstChild","cellRendered","containerOnly","layoutElement","setValueProcessData","cellEdited","changed","widthStyled","clearWidth","getWidth","setMinWidth","minWidthStyled","setMaxWidth","maxWidth","maxWidthStyled","reinitializeHeight","clearHeight","setHeight","heightStyled","getHeight","delete","redrawBlock","deleteCell","calcs","getIndex","getCellIndex","ColumnComponent","_column","getDefinition","getTitleDownload","isGroup","toggle","getSubColumns","getParentColumn","Column","scrollTo","ifVisible","scrollToColumn","move","to","after","toColumn","findColumn","moveColumn","getNextColumn","nextCol","nextColumn","getPrevColumn","prevCol","prevColumn","updateDefinition","updates","result","reinitializeWidth","rerenderColumns","maxInitialWidth","variableHeight","headerVertical","headerHozAlign","headerWordWrap","editableTitle","def","contentElement","titleHolderElement","titleElement","groupElement","createGroupElement","fieldStructure","titleDownload","titleFormatterRendered","mapDefinitions","setField","widthFixed","newCol","attachColumn","checkColumnVisibility","registerColumnField","_initialize","columnHeaderVertAlign","defaults","columnDefaults","generate","defaultOptionList","checkDefinition","nestedFieldSeparator","_getNestedData","_getFlatData","_setNestedData","_setFlatData","registerColumnPosition","reRegisterPosition","_buildColumnHeaderContent","_buildGroupHeader","_buildColumnHeader","_buildColumnHeaderTitle","focus","text","_formatColumnHeaderTitle","contents","dataObj","columnRendered","verticalAlign","alignment","parentHeight","getGroupElement","clientHeight","getHeadersElement","minHeight","clearVerticalAlign","paddingTop","getFirstColumn","getLastColumn","getColumns","getTopColumn","updateBranches","colDefs","responsiveToggle","verticalAlignHeaders","matchChildWidths","childWidth","splice","setWidthActual","isNaN","floor","clientWidth","min","checkCellHeights","heightInitialized","offsetParent","clearCellHeight","calcHeight","setCellHeight","getLeftOffset","offsetLeft","ceil","cellCount","deregisterColumn","generateCell","findColumnIndex","_nextVisibleColumn","getColumnByIndex","_prevVisibleColumn","fitToData","setTo","addColumn","getPosition","defaultOptions","RowComponent","watchPosition","scrollToRow","moveToRow","normalizeHeight","reformat","reinitialize","getNextRow","nextRow","getPrevRow","prevRow","Row","manualHeight","outerHeight","initialized","positionWatchers","created","create","detachElement","generateCells","inFragment","deleteCells","renderer","renderRowCells","rowFormatter","rerenderRowCells","rendered","deinitialize","deinitializeHeight","children","maxHeight","rowHeight","resizableRows","updatedData","newRowData","elVisible","tempData","parse","attrname","getColumnsByFieldRoot","findCell","nextDisplayRow","prevDisplayRow","before","toRow","findRow","moveRowActual","deleteActual","detachModules","deleteRow","wipe","isDisplayed","setPosition","getGroup","group","avg","values","calcParams","precision","reduce","sum","Number","toFixed","parseFloat","String","count","unique","filter","ColumnCalcs","topCalcs","botCalcs","genColumn","topElement","botElement","topRow","botRow","topInitialized","botInitialized","recalcAfterBlock","cellValueChanged","initializeColumnCheck","rowsUpdated","scrollHorizontal","recalcActiveRows","recalcActiveRowsRefresh","tableRedraw","visibleRows","adjustForScrollbar","resizeHolderWidth","getResults","userRecalc","headersElement","recalc","redraw","blockCheck","viewable","groupBy","recalcRowGroup","dataTreeStartExpanded","dataTree","recalcAll","topCalc","bottomCalc","columnCalcs","topCalcParams","botCalcParams","bottomCalcParams","calculations","initializeTopRow","botCalc","initializeBottomRow","removeCalcs","adjustTableSize","reinitializeCalcs","fragment","createDocumentFragment","getContentsElement","insertBefore","nextSibling","scrollLeft","rowsToData","generateRow","frozenColumns","recalcGroup","groupRows","getRowGroup","getChildGroups","generateRowData","generateTopRow","generateBottomRow","dataTreeChildColumnCalcs","open","getFilteredTreeChildren","pos","disable","enable","format","formatter","getFormatter","paramKey","hasTopCalcs","hasBottomCalcs","results","getGroups","getGroupResults","groupObj","subGroups","getSubGroups","subGroupResults","subgroup","groups","rtl","paddingLeft","paddingRight","defaultCalculations","DataTree","indent","collapseEl","expandEl","branchEl","elementField","startOpen","collapseRow","expandRow","toggleRow","getTreeParent","getRowChildren","addTreeChildRow","isRowExpanded","dummyEl","dataTreeChildField","dataTreeChildIndent","dataTreeBranchElement","dataTreeCollapseElement","tabIndex","dataTreeExpandElement","initializeRow","layoutRow","rowDelete","rowDataChanged","columnMoving","initializeElementField","tableRedrawing","getRows","reinitializeRowChildren","firstCol","getFirstVisibleColumn","dataTreeElementColumn","getTreeChildren","redrawNeeded","childArray","controlEl","generateControlElement","cloneNode","marginRight","marginLeft","getComputedStyle","getPropertyValue","oldControl","replaceChild","getChildren","allChildren","generateChildren","dataTreeFilter","dataTreeSort","sort","sub","childData","childRow","getTreeParentRoot","childIndex","findChildIndex","recurse","getChildField","csv","setFileContents","delimiter","fileContents","depth","bom","jsonLines","pdf","header","autoTableParams","rowGroupStyles","fontStyle","fontSize","cellPadding","fillColor","rowCalcStyles","jsPDFParams","jsPDF","parseRow","styles","colSpan","rowSpan","orientation","unit","doc","jspdf","autoTable","didDrawPage","head","documentProcessing","xlsx","sheetName","workbook","XLSX","utils","book_new","tableFeatures","compression","compress","writeOptions","bookType","bookSST","generateSheet","merges","worksheet","s","c","r","a","b","j","Date","sheet_add_aoa","encode_range","SheetNames","Sheets","sheetOnly","sheets","sheet","active","intercept","buf","ArrayBuffer","view","Uint8Array","charCodeAt","s2ab","write","Download","mimeType","Blob","deprecatedOptionsCheck","download","downloadToTab","filename","interceptCallback","downloadFunc","downloaders","mime","triggerDownload","downloadConfig","downloadRowRange","groupHeader","groupHeaderDownload","_group","getRowCount","newTab","blob","downloadEncoder","URL","createObjectURL","navigator","msSaveOrOpenBlob","click","commsReceived","maskInput","mask","maskLetter","maskLetterChar","maskNumber","maskNumberChar","maskWildcard","maskWildcardChar","fillSymbols","symbol","char","ctrlKey","metaKey","maskAutoFill","placeholder","defaultDownloaders","Edit","editor","onRendered","success","cancel","editorParams","edit","_initializeParams","displayItems","currentItems","focusedItem","input","_createInputElement","listEl","_createListElement","initialValues","isFilter","filterTimeout","filtered","typing","listIteration","lastAction","filterTerm","actions","_deprecatedOptionsCheck","_initializeValue","_onRendered","listItemFormatter","sortValuesList","searchFunc","searchingPlaceholder","defaultValue","multiselect","headerFilterInitialListGen","cellEl","clickStop","preventScroll","_preventPopupBlur","_preventBlur","_inputKeyDown","_setListWidth","attribs","elementAttributes","clearable","padding","boxSizing","autocomplete","cursor","caretColor","getAttribute","_bindInputEvents","valueCheck","valueKeys","verticalNavigation","placeholderLoading","placeholderEmpty","filterDelay","emptyValue","freetext","filterFunc","filterRemote","allowEmpty","listOnEmpty","valuesLookup","valuesURL","_inputFocus","_inputClick","_inputBlur","_inputSearch","_inputKeyUp","rebuildOptionsList","_filter","clearTimeout","_filterList","_resolveValue","_clearChoices","_keyUp","_keyDown","_keySide","_keyEnter","_keyEsc","_keyHomeEnd","_keyTab","_keySelectLetter","_keyAutoCompLetter","_chooseItem","stopImmediatePropagation","_focusItem","_cancel","_scrollToValue","character","fromCharCode","label","startsWith","scrollIntoView","behavior","block","inline","_generateOptions","_sortOptions","_buildList","_showList","isInteger","_filterOptions","iteration","_ajaxRequest","_uniqueColumnValues","valuesLookupField","_addPlaceholder","responseValues","_parseList","_clearList","term","urlBuilder","getColumnByField","inputValues","entries","map","_parseListItem","option","level","_parseListGroup","itemParams","selected","original","sorter","_defaultSortFunction","_sortGroup","as","bs","a1","b1","L","rx","rd","emptyAlign","isFinite","test","_defaultFilterFunc","_filterItem","matches","_buildItem","itemFormatter","_groupClick","_itemClick","_styleItem","startVis","blur","cellValue","search","onChange","selectContents","textarea","vertNav","whiteSpace","resize","heightNow","shiftKey","shiftEnterSubmit","selectionStart","number","step","blurFunc","date","inputFormat","DT","DateTime","luxon","convertDate","isDateTime","fromISO","fromFormat","toFormat","luxDate","toISO","relatedTarget","rangeParent","explicitOriginalTarget","time","newDatetime","luxTime","log","datetime","luxDateTime","List","star","self","maxStars","getElementsByTagName","size","stars","starsHolder","createElementNS","starChange","browser","buildStar","starHolder","nextStar","changeValue","overflow","textOverflow","progress","mouseDrag","mouseDragWidth","percent","bar","updateValue","calcVal","round","backgroundColor","screenX","tickCross","tristate","indetermValue","indeterminateValue","indetermState","trueValueSet","falseValueSet","marginTop","checkedValue","checked","trueValue","falseValue","indeterminate","currentCell","mouseClick","recursionBlock","invalidEdit","editedCells","editors","getEditedCells","clearCellEdited","navigatePrev","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","cellIsEdited","clearEdited","editCell","cellCancelEdit","bindEditor","updateCellClass","columnDeleteCheck","rowDeleteCheck","rowEditableCheck","cancelEdit","pasteBlocker","keybindingNavigateNext","newRow","addRow","edited","allowEdit","nextCell","findPrevEditableCell","findNextEditableCell","prevCell","editable","getCurrentCell","clearEditor","cellEditCancelled","button","contains","focusCellNoEvent","forceEdit","focusScrollAdjust","getRenderMode","topEdge","bottomEdge","rowEl","offsetTop","leftEdge","rightEdge","leftMargin","rightMargin","renderHorizontal","vDomPadLeft","cellEditor","editFinished","cellClick","cellEditing","validationMode","editIndex","defaultEditors","ExportRow","ExportColumn","Export","cloneTableStyle","colVisProp","getHtml","selectedColumns","columnHeaders","headersToExportRows","generateColumnGroupHeaders","bodyToExportRows","rowLookup","generateTable","generateTableElement","getVisibleRows","selectRow","selectedRows","pagination","columnGroups","colData","processColumnGroup","maxDepth","groupData","subGroup","subGroupData","columnVisCheck","visProp","headerDepth","exportRows","parseColumnGroup","rowGroups","exportCols","headerEl","bodyEl","lookupTableStyles","setup","treeElementField","mapElementStyles","generateHeaderElement","generateGroupElement","generateCalcElement","generateRowElement","evenRow","oddRow","calcRow","firstRow","firstGroup","getElementsByClassName","styleCells","firstCell","lastCell","classNames","generator","cellStyle","cellWrapper","formatCells","formatExportValue","align","holder","htmlOutputConfig","from","props","lookup","color","fromStyle","prop","filterVal","rowVal","filterParams","regex","RegExp","like","keywords","keyword","matchAll","starts","ends","endsWith","in","Filter","filterList","headerFilters","headerFilterColumns","prevHeaderFilterChangeCheck","tableInitialized","searchRows","searchData","userSetFilter","userRefreshFilter","userAddFilter","getFilters","userSetHeaderFilterFocus","userGetHeaderFilterValue","userSetHeaderFilterValue","getHeaderFilters","userRemoveFilter","userClearFilter","userClearHeaderFilter","setHeaderFilterFocus","reloadHeaderFilter","getHeaderFilterValue","setHeaderFilterValue","initializeColumnHeaderFilter","hideHeaderFilterElements","showHeaderFilterElements","tableBuilt","generatePlaceholder","filterMode","remoteFilterParams","initialFilter","setFilter","initialHeaderFilter","placeholderHeaderFilter","refreshFilter","addFilter","removeFilter","all","clearFilter","clearHeaderFilter","headerFilter","filterType","tagType","attrType","filterChangeCheck","prevSuccess","emptyFunc","headerFilterFunc","filters","headerFilterFuncParams","fieldVal","colVal","trackChanges","generateHeaderFilterElement","filterElement","editorElement","typingTimer","searchTrigger","onRenderedCallback","headerElement","headerFilterEmptyCheck","headerFilterParams","headerFilterPlaceholder","contentsElement","headerFilterLiveFilterDelay","hasAttribute","headerFilterLiveFilter","hasChanged","findFilter","findSubFilters","ajax","filtersToArray","searchType","filterRecurse","rowList","activeRowComponents","filterRow","subFilter","defaultFilters","plaintext","formatterParams","emptyToSpace","sanitizeHTML","money","integer","decimal","rgx","floatVal","sign","decimalSym","thousandSym","thousand","negativeSign","symbolAfter","abs","link","urlPrefix","labelField","labelTraverse","path","urlField","retrieveNestedData","image","src","urlSuffix","empty","truthy","allowTruthy","tick","tickElement","cross","crossElement","outputFormat","invalid","invalidPlaceholder","isValid","timezone","setZone","datetimediff","suffix","humanize","now","diff","toHuman","traffic","percentValue","colors","legend","legendColor","legendAlign","barEl","barContainer","legendEl","holderEl","buttonTick","buttonCross","rownum","relativeToPage","page","getPageSize","getPage","innerText","responsiveCollapse","responsiveLayout","toggleList","isOpen","rowSelection","checkbox","selectableRowsRangeMode","toggleSelect","handleComplexRowClick","isSelected","registerRowSelectCheckbox","deselectRow","registerHeaderSelectCheckbox","Format","formatValue","formatHeader","lookupFormatter","formatterPrint","print","formatterClipboard","formatterHtmlOutput","htmlOutput","formatters","mockCell","titleFormatter","titleFormatterParams","entityMap","defaultFormatters","FrozenColumns","leftColumns","rightColumns","initializationMode","layoutCell","reinitializeColumns","blockLayout","unblockLayout","margin","edge","frozenCheck","frozen","layoutCalcRows","layoutGroupCalcs","groupList","layoutColumnPosition","allCells","leftParents","marginValue","getColGroupParentElement","reinitializeRows","getTableElement","_calcSpace","FrozenRows","freezeRow","unfreezeRow","isRowFrozen","detachRow","frozenRows","initializeRows","rowType","isFrozen","styleRows","styleRow","GroupComponent","groupManager","getParentGroup","toggleVisibility","Group","oldGroup","hasSubGroups","groupIDLookups","_addRowToGroup","_addRow","old","elementContents","arrowElement","createElements","addBindings","createValueGroups","elementsOnly","arrow","movableRows","moveRow","initializeGroupHeader","allowedValues","_createGroup","groupToggleElement","groupID","groupKey","headerGenerator","insertRow","conformRowData","toIndex","updateGroupRows","scrollHeader","getRowIndex","removeRow","groupValues","generateGroupHeaderContents","removeGroup","getHeadersAndRows","_visSet","groupClosedShowCalcs","prev","includeChildren","getPath","childNodes","GroupRows","displayHandler","setGroupBy","setGroupValues","setGroupStartOpen","setGroupHeader","userGetGroups","userGetGroupedData","rowGetGroup","_blockRedrawing","_restore_redrawing","groupUpdateOnCellEdit","cellUpdated","reassignRowToGroup","configureGroupSetup","rowDeleting","scrollHeaders","rowMoving","rowAddingIndex","rowSample","virtualRenderFill","groupStartOpen","langValue","lang","items","getRealColumns","lookupFunc","prevValue","tableElement","assignRowToGroup","moveRowInArray","getGroupedData","toGroup","fromGroup","generateGroups","groupComponents","pullGroupListData","groupListData","rowCount","headerContent","countGroups","oldGroups","createGroup","assignRowToExistingGroup","newGroupNeeded","oldRowGroup","oldGroupPath","newGroupPath","getExpectedPath","every","groupPath","groupId","checkBasicModeGroupHeaderWidth","onlyGroupHeaders","History","history","clearComponentHistory","rowDeleted","rowAdded","rowMoved","undo","redo","getHistoryUndoSize","getHistoryRedoSize","posFrom","posTo","newValue","undoers","redoers","_rebindRow","oldRow","cellEdit","rowAdd","checkPlaceholder","addRowActual","rowMove","getRowFromPosition","regenerateRowPositions","reRenderInPosition","HtmlTableImport","fieldIndex","hasIndex","tableElementCheck","originalElement","parseTable","_extractOptions","_extractHeaders","_generateBlankHeaders","attributes","optionsArr","attrib","_attribValue","_findCol","exists","textContent","replaceAll","registeredDefaults","inQuote","nextChar","array","Import","importFromFile","importFormat","loadDataCheck","loadData","importData","lookupImporter","structureData","err","importer","importers","extension","pickFile","extensions","accept","file","files","reader","FileReader","importReader","readAsArrayBuffer","readAsBinaryString","readAsDataURL","readAsText","onload","onerror","parsedData","autoColumns","structureArrayToObject","structureArrayToColumns","defaultImporters","Interaction","eventMap","rowClick","rowDblClick","rowContext","rowMouseEnter","rowMouseLeave","rowMouseOver","rowMouseOut","rowMouseMove","rowMouseDown","rowMouseUp","rowTap","rowDblTap","rowTapHold","cellDblClick","cellContext","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellMouseDown","cellMouseUp","cellTap","cellDblTap","cellTapHold","headerClick","headerDblClick","headerContext","headerMouseEnter","headerMouseLeave","headerMouseOver","headerMouseOut","headerMouseMove","headerMouseDown","headerMouseUp","headerTap","headerDblTap","headerTapHold","groupClick","groupDblClick","groupContext","groupMouseEnter","groupMouseLeave","groupMouseOver","groupMouseOut","groupMouseMove","groupMouseDown","groupMouseUp","groupTap","groupDblTap","groupTapHold","subscribers","touchSubscribers","columnSubscribers","touchWatchers","tap","tapDbl","tapHold","initializeExternalEvents","cellContentsSelectionFixer","clearTouchWatchers","selectNode","subscriptionChanged","added","subscribeTouchEvents","unsubscribeTouchEvents","handleTouch","noTouch","dispatchEvent","watchers","componentObj","Keybindings","watchKeys","pressedKeys","keyupBinding","keydownBinding","bindings","keybindings","mergedBindings","mapBindings","bindEvents","clearBindings","binding","mapBinding","symbolsList","ctrl","meta","code","checkBinding","navPrev","navNext","navUp","navDown","navLeft","navRight","scrollPageUp","scrollPageDown","scrollToStart","scrollToEnd","copyToClipboard","rangeJumpUp","rangeJumpDown","rangeJumpLeft","rangeJumpRight","rangeExpandUp","rangeExpandDown","rangeExpandLeft","rangeExpandRight","rangeExpandJumpUp","rangeExpandJumpDown","rangeExpandJumpLeft","rangeExpandJumpRight","keyBlock","newPos","displayRowsCount","scrollMax","Menu","nestedMenuBlock","currentComponent","rootPopup","initializeRowWatchers","initializeGroupWatchers","rowContextMenu","loadMenuEvent","on","rowClickMenu","rowDblClickMenu","groupContextMenu","groupClickMenu","groupDblClickMenu","headerContextMenu","loadMenuTableColumnEvent","headerClickMenu","headerDblClickMenu","headerMenu","initializeColumnHeaderMenu","contextMenu","loadMenuTableCellEvent","clickMenu","dblClickMenu","headerMenuEl","icon","headerMenuIcon","menu","loadMenu","parentPopup","itemEl","disabled","MoveColumns","placeholderElement","createPlaceholderElement","hoverElement","checkTimeout","checkPeriod","moving","toCol","toColAfter","startX","autoScrollMargin","autoScrollStep","autoScrollTimeout","touchMove","moveHover","endMove","movableColumns","abortMove","colEl","mousemove","which","startMove","bindTouchEvents","nextColWidth","prevColWidth","nextColWidthLast","prevColWidthLast","startXMove","passive","moveToCol","_bindMouseMove","_unbindMouseMove","movingCells","moveColumnActual","scrollPos","columnHolder","xPos","MoveRows","toRowAfter","hasHandle","startY","tableRowDropEvent","connection","connectionSelectorsTables","connectionSelectorsElements","connectionElements","connections","connectedTable","connectedRow","movableRowsConnectedTables","movableRowsConnectedElements","initializeCell","mouseup","tableRowDrop","previousSibling","rowHandle","nextRowHeight","prevRowHeight","nextRowHeightLast","prevRowHeightLast","startYMove","setStartPosition","connectToTables","pointerEvents","disconnectFromTables","moveHoverConnections","moveHoverTable","rowHolder","yPos","elementRowDrop","connectionTables","query","prototype","querySelectorAll","dropEvent","tabulatorElementDropEvent","connect","disconnect","dropComplete","sender","movableRowsSender","senders","movableRowsReceiver","receivers","fromRow","fromTable","toTable","Mutator","enabled","transformCell","mutateLink","lookupMutator","mutators","mutatorEdit","links","linkCell","pageSize","currentRow","currentPage","totalRows","totalPages","showingEl","valueEl","ofEl","totalEl","rowsEl","pages","Page","progressiveLoad","pageCounterElement","pageCounter","remoteRowCountEstimate","initialLoad","dataChanging","pageSizes","setMaxPage","setPage","userSetPageToRow","userSetPageSize","previousPage","nextPage","getPageMax","setPageToRow","initialLoadComplete","calculatePageSizes","footerRedraw","paginationAddRow","rowAddingPosition","paginationMode","remotePageParams","_parseRemoteData","restOnRenderBefore","initializePageCounter","initializePaginator","initializeProgressive","scrollVertical","testElRow","testElCell","paginationSize","visibility","generatePageSizeSelectList","setPageSize","dir","loading","progressiveLoadScrollMargin","pagesElement","firstBut","prevBut","nextBut","lastBut","paginationSizeSelector","pageSizeSelect","counter","paginationCounter","pageCounters","hidden","pageSelectLabel","paginationCounterHolder","paginationElement","paginationCounterElement","paginationInitialPage","paginationButtonCount","setMaxRows","trigger","_setPageCounter","_setPageButtons","leftSize","rightSize","_generatePageButton","actualStartRow","actualRowPageSize","actualRows","finally","last_page","last_row","addRows","progressiveLoadDelay","footer","containerElement","scrollWidth","defaultPageCounters","local","id","localStorage","getItem","cookie","cookiePos","setItem","expireDate","setDate","getDate","toUTCString","Persistence","defWatcherBlock","readFunc","writeFunc","localStorageTest","testKey","removeItem","persistence","retrievedData","persistenceMode","persistenceID","persistenceReaderFunc","readers","persistenceWriterFunc","writers","retrieveData","save","eventSave","getColumnLayout","setColumnLayout","sorters","initialSort","parseColumns","setColumns","mergeDefinition","getOwnPropertyDescriptor","defineProperty","set","current","oldCols","newCols","mergeAllNew","_findColumn","validateSorters","getSort","getGroupConfig","getPageConfig","definitions","excludedKeys","defStore","colDef","moduleInitOrder","defaultReaders","defaultWriters","_componentPopupCall","loadPopupEvent","rowContextPopup","rowClickPopup","rowDblClickPopup","groupContextPopup","groupClickPopup","groupDblClickPopup","headerContextPopup","loadPopupTableColumnEvent","headerClickPopup","headerDblClickPopup","headerPopup","initializeColumnHeaderPopup","contextPopup","loadPopupTableCellEvent","clickPopup","dblClickPopup","headerPopupEl","headerPopupIcon","loadPopup","contentsEl","Print","manualBlock","beforeprintEventHandler","afterprintEventHandler","printAsHtml","replaceTable","cleanup","destroy","printFullscreen","printConfig","printStyled","printRowRange","footerContent","scrollX","scrollY","footerEl","tableEl","printHeader","printFooter","printFormatter","ReactiveData","origFuncs","currentVersion","reactiveData","unblock","watchRow","watchData","unwatchData","version","enumerable","configurable","arg","apply","getRowFromDataObject","pop","newRows","reverse","oldRows","writable","watchKey","watchTreeChildren","childField","rebuildTree","unwatchRow","ResizeColumns","startColumn","startWidth","latestX","initialNextColumn","layoutColumnHeader","initializeEventWatchers","layoutCellHandles","deInitializeComponent","resizeHandle","columnLayoutUpdated","deInitializeColumn","columnWidthUpdated","resizable","reinitializeColumn","frozenColumnOffset","frozenOffset","handleEl","nearestColumn","_checkResizability","handleDown","_mouseDown","oldWidth","parentElement","mouseMove","blockedBefore","blockedAfter","startDiff","moveDiff","resizableColumnFit","browserSlow","mouseUp","ResizeRows","startHeight","prevHandle","prevHandleDown","screenY","ResizeTable","visibilityObserver","resizeObserver","containerObserver","tableHeight","tableWidth","containerHeight","containerWidth","autoResize","initialRedraw","tableStyle","IntersectionObserver","ResizeObserver","initializeVisibilityObserver","entry","browserMobile","nodeHeight","contentRect","nodeWidth","redrawTable","observe","fixedHeight","tableResized","isIntersecting","unobserve","ResponsiveLayout","hiddenColumns","collapseFormatter","collapseStartOpen","collapseHandleColumn","updateColumnVisibility","initializeResponsivity","generateCollapsedRowContent","responsiveLayoutCollapseFormatter","formatCollapsedData","responsiveLayoutCollapseStartOpen","responsive","order","generateCollapsedContent","hideColumn","colCount","showColumn","working","getFlexBaseWidth","headerVisible","activeRowsCount","renderEmptyScroll","generateCollapsedRowData","mockCellComponent","responsiveLayoutCollapseUseFormatters","node_content","titleData","valueData","titleHighlight","SelectRow","selecting","lastClickedRow","selectPrev","headerCheckboxElement","selectRows","deselectRows","getSelectedRows","getSelectedData","isRowSelected","selectableRows","selectableRange","clearSelectionData","rowRetrieve","selectableRowsPersistence","_deselectRow","prevSelected","_rowSelectionChanged","selectable","checkRowSelectability","endSelect","_clearSelection","lastClickedRowIdx","getDisplayRowIndex","rowIdx","fromRowIdx","toRowIdx","toggledRows","toggledRow","selectableRowsCheck","_selectRow","rowMatch","change","changes","rowInfo","selectableRowsRollingSelection","checkboxEl","dataTreeSelectPropagate","childRowSelection","selectedRow","deselected","aRow","bRow","alignEmptyValues","decimalSeparator","thousandSeparator","string","locale","localeCompare","boolean","calc","d","alphanum","Sort","sortList","userSetSort","clearSort","sortMode","remoteSortParams","setSort","refreshSort","arrowEl","sorterParams","startingDir","headerSortStartingDir","headerSortTristate","headerSort","headerSortClickElement","headerSortElement","setColumnHeaderSortIcon","columnHeaderSortMulti","newSortList","findSorter","sortOrderReverse","sortListActual","rowComponents","clearColumnHeaders","sortObj","setColumnHeader","_sortItems","sortEl","sorterCount","sortItem","_sortRow","el1Comp","el2Comp","el1","el2","defaultSorters","RangeComponent","_range","getStructuredCells","getTopEdge","getBottomEdge","getLeftEdge","getRightEdge","setBounds","destroyedGuard","setStartBound","setEndBound","rangeManager","clearValues","Range","initializing","rowHeader","initElement","initBounds","_updateMinMax","setStart","setEnd","columnSelection","isRowHeader","rowsCount","_getTableRows","_getTableColumns","topLeftCell","bottomRightCell","_vDomTop","vDomTop","_vDomBottom","vDomBottom","_vDomLeft","leftCol","_vDomRight","rightCol","Infinity","overlaps","atTopLeft","atBottomRight","occupies","occupiesRow","occupiesColumn","structured","arr","clearValue","selectableRangeClearCellsValue","notify","rangeRemoved","SelectRange","mousedown","ranges","overlay","layoutChangeTimeout","maxRanges","blockKeydown","keyDownEvent","_handleKeyDown","mouseUpEvent","_handleMouseUp","getRangesData","getRanges","addRangeFromComponent","cellGetRanges","rowGetRanges","colGetRanges","initializeTable","initializeWatchers","rangeContainer","activeRangeCellElement","resetRanges","handleColumnMouseDown","handleColumnMouseMove","handleColumnResized","layoutChange","updateHeaderColumn","renderCell","handleCellMouseDown","handleCellMouseMove","handleCellClick","handleEditingCell","finishEditingCell","restoreFocus","keyNavigate","keyNavigateRange","getActiveCell","initializeFocus","some","selectedColumn","event","newSelection","rangeIdx","dataset","navigate","jump","expand","moved","rangeEdge","findJumpCellLeft","findJumpCellRight","findJumpCellUp","findJumpCellDown","getTableColumns","getTableRows","getRowByRangePos","getColumnByRangePos","autoScroll","removed","findJumpCell","emptyStart","emptySide","currentValue","rowPos","colPos","isStartingCellEmpty","isLeftOfStartingCellEmpty","jumpCol","targetCells","isRightOfStartingCellEmpty","isTopOfStartingCellEmpty","jumpRow","isBottomOfStartingCellEmpty","rect","withinHorizontalView","withinVerticalView","tableHolder","scrollbarWidth","layoutRanges","layoutColumn","occupied","activeCell","colIdx","Tooltip","tooltipSubscriber","headerSubscriber","timeout","popupInstance","headerTooltip","mousemoveCheck","mouseoutCheck","tooltip","clearPopup","loadTooltip","tooltipDelay","parameters","float","numeric","alphanumeric","minLength","maxLength","cellData","required","Validate","invalidCells","getInvalidCells","userClearCellValidation","userValidate","cellIsValid","clearValidation","cellValidate","columnValidate","rowValidate","editValidate","editorClear","editedClear","previousValue","validate","cancelled","validator","_extractValidator","substring","_buildValidator","validators","failedValidators","invalidIndex","defaultValidators","OptionsList","msgType","userOptions","debugInvalidOptions","hasOwnProperty","Renderer","elementVertical","elementHorizontal","verticalFillMode","clearRows","clearColumns","reinitializeColumnWidths","renderRows","renderColumns","rerenderRows","scrollColumns","scrollRows","scrollToRowNearestTop","includingBuffer","render","rerender","scrollToRowPosition","rowIndex","scrollToRowIfVisible","BasicHorizontal","rowFrag","VirtualDomHorizontal","vDomScrollPosLeft","vDomScrollPosRight","vDomPadRight","fitDataColAvg","windowBuffer","isFitData","compatibilityCheck","layoutCheck","vertScrollListen","clearVisRowCache","dataChange","scroll","calcWindowBuffer","buffer","cols","leftPos","rightPos","fitDataCheck","vdomHoz","reinitChanged","reinitializeRow","colEnd","otherRows","addColRight","removeColLeft","addColLeft","removeColRight","colPositionAdjust","fitDataColActualWidthCheck","ex","message","newWidth","widthDiff","appendCell","ColumnManager","blockHozScrollEvent","columnsByField","defaultColumnOptions","redrawBlockUpdate","initializeRenderer","createHeadersElement","createHeaderContentsElement","createHeaderElement","initializeScrollWheelWatcher","padVerticalScrollbar","renderClass","renderers","virtual","RendererVirtualDomHorizontal","basic","RendererBasicHorizontal","deltaX","generateColumnsFromRowData","autoColumnsDefinitions","_addColumn","_reIndexColumns","nextToColumn","topColumn","parentIndex","nextEl","root","getDefinitions","getDefinitionTree","getComponents","_moveColumnInArray","updateRows","fromIndex","scrollToColumnPosition","scrollToColumnIfVisible","totalWidth","fixedWidth","resetScroll","BasicVertical","tableFrag","tableEmpty","rowTop","VirtualDomVertical","vDomRowHeight","vDomScrollPosTop","vDomScrollPosBottom","vDomTopPad","vDomBottomPad","vDomMaxRenderChain","vDomWindowBuffer","vDomWindowMinTotalRows","vDomWindowMinMarginRows","vDomTopNewRows","vDomBottomNewRows","paddingBottom","_virtualRenderFill","topOffset","topDiff","bottomDiff","_addTopRow","vDomScrollHeight","_removeBottomRow","_addBottomRow","_removeTopRow","renderVerticalBuffer","topFound","bottomRow","forceMove","rowFragment","topPad","rowsHeight","heightOccupied","topPadHeight","renderedRows","totalRowsRendered","rowsToRender","avgRowHeight","resized","fillableSpace","addedRows","paddingAdjust","_quickNormalizeRowHeight","removableRows","RowManager","createHolderElement","createTableElement","heightFixer","placeholderContents","firstRender","renderMode","activeRowsPipeline","redrawBlockRestoreConfig","redrawBlockRenderInPosition","dataPipeline","initializePlaceholder","leftDir","topDir","_positionPlaceholder","_setDataActual","_wipeElements","allIndex","activeIndex","setActiveRows","displayRowIterator","displayIndex","refreshDisplayOnly","findAddRowPos","_clearPlaceholder","addRowPos","chainResult","clearData","findRowIndex","rowOnly","getDataCount","skipStage","stage","cascadeOrder","refreshPipelines","renderTable","layoutColumnsOnNewData","resetDisplayRows","setDisplayRows","scrollBarCheck","RendererVirtualDomVertical","RendererBasicVertical","renderVertical","_clearTable","_showPlaceholder","initialHeight","otherHeight","external","createEvent","initEvent","Event","FooterManager","createContainerElement","initializeElement","footerElement","activate","deactivate","InteractionManager","abortClasses","previousTargets","listeners","componentMap","pseudoTrackers","subscriber","pseudoTracking","buildListenerMap","bindSubscriptionWatchers","listenerMap","listener","components","bindPseudoEvents","pseudoMouseEnter","pseudoMouseLeave","leaveList","linkedKeys","comp","clearWatchers","updateEventListeners","track","composedPath","targets","findTargets","bindComponents","triggerEvents","elTargets","targetMatches","previousTarget","closest","ComponentFunctionBinder","funcName","debugInvalidComponentFuncs","DataLoader","requestOrder","requestNo","alertLoader","mapParams","dataSendParams","objectInvert","dataReceiveParams","alertError","dataLoaderErrorTimeout","blockActiveLoad","dataLoaderLoading","dataLoaderError","ExternalEventBus","debug","events","subscriptionNotifiers","_debugDispatch","_dispatch","_notifySubscriptionChange","notifiers","callResult","InternalEventBus","_debugChain","_chain","_debugConfirm","_confirm","fallback","confirmed","DeprecationAdvisor","_warnUser","TableRegistry","tables","matchElement","Tabulator","lookupTable","forced","fitData","fitDataFill","fitDataGeneral","fitDataTable","fitDataStretch","colsWidth","gap","lastCol","fitColumns","flexColWidth","overflowWidth","flexWidth","flexGrowUnits","flexColumns","fixedShrinkColumns","flexShrinkUnits","gapFill","calcWidth","scaleColumns","freeSpace","shrinkCols","oversizeCols","oversizeSpace","remainingSpace","remainingFlexGrowUnits","changeUnits","undersizeCols","calcGrow","widthGrow","calcShrink","widthShrink","Layout","modes","dataChanged","defaultModes","Localize","langList","langs","setHeaderFilterPlaceholder","installLang","setLocale","getLang","default","_setLangProp","desiredLocale","language","traverseLang","trans","_executeBindings","pathArray","_getLangElement","rootPath","page_size","page_title","first","first_title","last","last_title","prev_title","next","next_title","showing","of","Comms","receive","selectors","con","tableComms","ModuleBinder","tabulator","bindStaticFunctionality","bindModules","coreModules","moduleBindings","extendModule","property","source","registerModule","mod","registerModuleBinding","findTable","orderedStartMods","orderedEndMods","unOrderedMods","moduleCore","modulesCore","modulesRegular","core","mods","Alert","_createAlertElement","msgElement","_createMsgElement","_typeClass","interactionMonitor","initializeCoreSystems","_create","_clearObjectPointers","_mapDeprecatedFunctionality","debugEventsExternal","debugEventsInternal","InteractionMonitor","_rtlCheck","_buildElement","_initializeTable","_loadInitialData","textDirection","direction","newElement","_detectBrowser","deregister","ua","userAgent","vendor","opera","stack","line","debugInitialization","Error","replaceData","responses","foundRows","updateOrAddRow","updateRow","getRowPosition","getColumnDefinitions","toggleColumn","deleteColumn","updateColumnDefinition","fromColumn","off","plugin","debugDeprecation","rowFormatterPrint","rowFormatterClipboard","rowFormatterHtmlOutput","TabulatorFull","PseudoRow","_createElement"],"mappings":"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"} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/package-lock.json b/tmp/tabulator-5.6.1/package-lock.json deleted file mode 100644 index 952900a..0000000 --- a/tmp/tabulator-5.6.1/package-lock.json +++ /dev/null @@ -1,5225 +0,0 @@ -{ - "name": "tabulator-tables", - "version": "5.6.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "tabulator-tables", - "version": "5.5.3", - "license": "MIT", - "devDependencies": { - "@rollup/plugin-node-resolve": "^11.0.1", - "eslint": "^8.10.0", - "eslint-plugin-only-warn": "^1.0.3", - "fs-extra": "^9.0.1", - "globby": "^11.0.2", - "node-sass": "^9.0.0", - "postcss": "^8.2.4", - "postcss-prettify": "^0.3.4", - "rollup": "^2.36.1", - "rollup-plugin-license": "^2.2.0", - "rollup-plugin-postcss": "^4.0.0", - "rollup-plugin-terser": "^7.0.2" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "node_modules/@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", - "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.1.tgz", - "integrity": "sha512-ltlsj/4Bhwwhb+Nb5xCz/6vieuEj2/BAkkqVIKmZwC7pIdl8srmgmglE4S0jFlZa32K4qvdQ6NHdmpRKD/LwoQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.14.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", - "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "dev": true, - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001420", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz", - "integrity": "sha512-OnyeJ9ascFA9roEj72ok2Ikp7PHJTKubtEJIQ/VK3fdsS50q4KWy+Z5X0A1/GswEItKX0ctAp8n4SYDE7wTu6A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commenting": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/commenting/-/commenting-1.1.0.tgz", - "integrity": "sha512-YeNK4tavZwtH7jEgK1ZINXzLKm6DZdEMfsaaieOsCAN0S8vsY7UeuO3Q7d/M018EFgE+IeUAuBOKkFccBZsUZA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/concat-with-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.13.tgz", - "integrity": "sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.2.12", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.3.0", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.6", - "postcss-merge-rules": "^5.1.2", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.283", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.283.tgz", - "integrity": "sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", - "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.2.2", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-only-warn": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-only-warn/-/eslint-plugin-only-warn-1.0.3.tgz", - "integrity": "sha512-XQOX/TfLoLw6h8ky51d29uUjXRTQHqBGXPylDEmy5fe/w7LIOnp8MA24b1OSMEn9BQoKow1q3g1kLe5/9uBTvw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/glob-parent/node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "dependencies": { - "globule": "^1.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/generic-names": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", - "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", - "dev": true, - "dependencies": { - "loader-utils": "^3.2.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globule": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", - "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", - "dev": true, - "dependencies": { - "glob": "~7.1.1", - "lodash": "^4.17.21", - "minimatch": "~3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/globule/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", - "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", - "dev": true, - "dependencies": { - "import-from": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string": { - "version": "0.26.6", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.6.tgz", - "integrity": "sha512-6d+3bFybzyQFJYSoRsl9ZC0wheze8M1LrQC7tNMRqXR4izUTDOLMd9BtSuExK9iAukFh+s5K0WAhc/dlQ+HKYA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-gyp/node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/node-gyp/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-gyp/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/node-gyp/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/node-gyp/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/node-gyp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-gyp/node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/node-gyp/node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/node-gyp/node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/node-gyp/node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-gyp/node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/node-gyp/node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/node-sass": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz", - "integrity": "sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "async-foreach": "^0.1.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "make-fetch-happen": "^10.0.4", - "meow": "^9.0.0", - "nan": "^2.17.0", - "node-gyp": "^8.4.1", - "sass-graph": "^4.0.1", - "stdout-stream": "^1.4.0", - "true-case-path": "^2.2.1" - }, - "bin": { - "node-sass": "bin/node-sass" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/node-sass/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/node-sass/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/node-sass/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/node-sass/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/node-sass/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-sass/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-name-regex": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/package-name-regex/-/package-name-regex-2.0.6.tgz", - "integrity": "sha512-gFL35q7kbE/zBaPA3UKhp2vSzcPYx2ecbYuwv1ucE9Il6IIgBDweBlH8D68UFGZic2MkllKa2KHCfC1IQBQUYA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/dword-design" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", - "dev": true, - "dependencies": { - "browserslist": "^4.20.3", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", - "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", - "dev": true, - "dependencies": { - "generic-names": "^4.0.0", - "icss-replace-symbols": "^1.1.0", - "lodash.camelcase": "^4.3.0", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "string-hash": "^1.1.1" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-prettify": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/postcss-prettify/-/postcss-prettify-0.3.4.tgz", - "integrity": "sha1-Grl4mb6jR3fk/BjYymH4WAdlGEM=", - "dev": true, - "dependencies": { - "defined": "1.0.0", - "postcss": "5.0.19" - } - }, - "node_modules/postcss-prettify/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-prettify/node_modules/postcss": { - "version": "5.0.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.0.19.tgz", - "integrity": "sha1-tjQqAdx1uMq36Wiv2pau/Gf4iK8=", - "dev": true, - "dependencies": { - "js-base64": "^2.1.9", - "source-map": "^0.5.1", - "supports-color": "^3.1.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/postcss-prettify/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/promise.series": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", - "integrity": "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "dependencies": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.36.1.tgz", - "integrity": "sha512-eAfqho8dyzuVvrGqpR0ITgEdq0zG2QJeWYh+HeuTbpcaXk8vNFc48B7bJa1xYosTCKx0CuW+447oQOW8HgBIZQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.2" - } - }, - "node_modules/rollup-plugin-license": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-license/-/rollup-plugin-license-2.8.1.tgz", - "integrity": "sha512-VYd9pzaNL7NN6xQp93XiiCV2UoduXgSmTcz6rl9bHPdiifT6yH3Zw/omEr73Rq8TIyN4nqJACBbKIT/2eE66wg==", - "dev": true, - "dependencies": { - "commenting": "~1.1.0", - "glob": "~7.2.0", - "lodash": "~4.17.21", - "magic-string": "~0.26.2", - "mkdirp": "~1.0.4", - "moment": "~2.29.3", - "package-name-regex": "~2.0.6", - "spdx-expression-validate": "~2.0.0", - "spdx-satisfies": "~5.0.1" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "rollup": "^1.0.0 || ^2.0.0" - } - }, - "node_modules/rollup-plugin-license/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup-plugin-postcss": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz", - "integrity": "sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "concat-with-sourcemaps": "^1.1.0", - "cssnano": "^5.0.1", - "import-cwd": "^3.0.0", - "p-queue": "^6.6.2", - "pify": "^5.0.0", - "postcss-load-config": "^3.0.0", - "postcss-modules": "^4.0.0", - "promise.series": "^0.2.0", - "resolve": "^1.19.0", - "rollup-pluginutils": "^2.8.2", - "safe-identifier": "^0.4.2", - "style-inject": "^0.3.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "postcss": "8.x" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/rollup-plugin-postcss/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "node_modules/run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-identifier": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", - "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "node_modules/sass-graph": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", - "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "lodash": "^4.17.11", - "scss-tokenizer": "^0.4.3", - "yargs": "^17.2.1" - }, - "bin": { - "sassgraph": "bin/sassgraph" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/scss-tokenizer": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", - "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", - "dev": true, - "dependencies": { - "js-base64": "^2.4.9", - "source-map": "^0.7.3" - } - }, - "node_modules/scss-tokenizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/spdx-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", - "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", - "dev": true, - "dependencies": { - "array-find-index": "^1.0.2", - "spdx-expression-parse": "^3.0.0", - "spdx-ranges": "^2.0.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-expression-validate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-validate/-/spdx-expression-validate-2.0.0.tgz", - "integrity": "sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, - "node_modules/spdx-ranges": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", - "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", - "dev": true - }, - "node_modules/spdx-satisfies": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz", - "integrity": "sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==", - "dev": true, - "dependencies": { - "spdx-compare": "^1.0.0", - "spdx-expression-parse": "^3.0.0", - "spdx-ranges": "^2.0.0" - } - }, - "node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/stdout-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/stdout-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", - "dev": true - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-inject": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", - "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", - "dev": true - }, - "node_modules/stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/true-case-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", - "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - } - } -} diff --git a/tmp/tabulator-5.6.1/package.json b/tmp/tabulator-5.6.1/package.json deleted file mode 100644 index 5e340bb..0000000 --- a/tmp/tabulator-5.6.1/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "tabulator-tables", - "version": "5.6.1", - "description": "Interactive table generation JavaScript library", - "style": "dist/css/tabulator.css", - "main": "dist/js/tabulator.js", - "module": "dist/js/tabulator_esm.js", - "sideEffects": [ - "**/*.css", - "**/*.scss" - ], - "scripts": { - "lint": "eslint src --fix", - "prebuild": "eslint src --fix", - "build": "rollup -c build/rollup.js", - "dev": "rollup -c build/rollup.js -w --environment TARGET:dev", - "dev:css": "rollup -c build/rollup.js -w --environment TARGET:css", - "dev:esm": "rollup -c build/rollup.js -w --environment TARGET:esm", - "dev:umd": "rollup -c build/rollup.js -w --environment TARGET:umd", - "dev:wrappers": "rollup -c build/rollup.js -w --environment TARGET:wrappers" - }, - "repository": { - "type": "git", - "url": "https://github.com/olifolkerd/tabulator.git" - }, - "keywords": [ - "table", - "grid", - "datagrid", - "tabulator", - "editable", - "sort", - "format", - "resizable", - "list", - "scrollable", - "ajax", - "json", - "widget", - "jquery", - "react", - "angular", - "vue" - ], - "author": "Oli Folkerd", - "license": "MIT", - "bugs": { - "url": "https://github.com/olifolkerd/tabulator/issues" - }, - "homepage": "https://tabulator.info/", - "devDependencies": { - "@rollup/plugin-node-resolve": "^11.0.1", - "eslint": "^8.10.0", - "eslint-plugin-only-warn": "^1.0.3", - "fs-extra": "^9.0.1", - "globby": "^11.0.2", - "node-sass": "^9.0.0", - "postcss": "^8.2.4", - "postcss-prettify": "^0.3.4", - "rollup": "^2.36.1", - "rollup-plugin-license": "^2.2.0", - "rollup-plugin-postcss": "^4.0.0", - "rollup-plugin-terser": "^7.0.2" - } -} diff --git a/tmp/tabulator-5.6.1/src/js/builds/esm.js b/tmp/tabulator-5.6.1/src/js/builds/esm.js deleted file mode 100644 index 5d68fb6..0000000 --- a/tmp/tabulator-5.6.1/src/js/builds/esm.js +++ /dev/null @@ -1,14 +0,0 @@ -export * from '../core/modules/optional.js'; -export {default as Tabulator} from '../core/Tabulator.js'; -export {default as TabulatorFull} from '../core/TabulatorFull.js'; - -export {default as CellComponent} from '../core/cell/CellComponent.js'; -export {default as ColumnComponent} from '../core/column/ColumnComponent.js'; -export {default as RowComponent} from '../core/row/RowComponent.js'; -export {default as GroupComponent} from '../modules/GroupRows/GroupComponent.js'; -export {default as CalcComponent} from '../modules/ColumnCalcs/CalcComponent.js'; - -export {default as PseudoRow} from '../core/row/PseudoRow.js'; - -export {default as Module} from '../core/Module.js'; -export {default as Renderer} from '../core/rendering/Renderer.js'; diff --git a/tmp/tabulator-5.6.1/src/js/builds/jquery_wrapper.js b/tmp/tabulator-5.6.1/src/js/builds/jquery_wrapper.js deleted file mode 100644 index aef69a3..0000000 --- a/tmp/tabulator-5.6.1/src/js/builds/jquery_wrapper.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the Tabulator package. - * - * (c) Oliver Folkerd - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * Full Documentation & Demos can be found at: http://olifolkerd.github.io/tabulator/ - * - */ - -(function (root, factory) { - "use strict"; - if (typeof define === 'function' && define.amd) { - define(['jquery', 'tabulator', 'jquery-ui'], factory); - } - else if(typeof module !== 'undefined' && module.exports) { - module.exports = factory( - require('jquery'), - require('tabulator'), - require('jquery-ui') - ); - } - else { - factory(root.jQuery, root.Tabulator); - } -}(this, function ($, Tabulator) { - - $.widget("ui.tabulator", { - _create:function(){ - var options = Object.assign({}, this.options); - var props = []; - - delete options.create; - delete options.disabled; - - this.table = new Tabulator(this.element[0], options); - window.table = this.table; - - //retrieve properties on prototype - props = Object.getOwnPropertyNames(Object.getPrototypeOf(Object.getPrototypeOf(this.table))); - - //retrieve properties added by modules - props = props.concat(Object.getOwnPropertyNames(this.table)); - - //map tabulator functions to jquery wrapper - for(let key of props){ - if(typeof this.table[key] === "function" && key.charAt(0) !== "_"){ - this[key] = this.table[key].bind(this.table); - } - } - }, - - _setOption: function(option, value){ - console.error("Tabulator jQuery wrapper does not support setting options after the table has been instantiated"); - }, - - _destroy: function(option, value){ - this.table.destroy(); - }, - }); -})); diff --git a/tmp/tabulator-5.6.1/src/js/builds/usd.js b/tmp/tabulator-5.6.1/src/js/builds/usd.js deleted file mode 100644 index c8b610d..0000000 --- a/tmp/tabulator-5.6.1/src/js/builds/usd.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from '../core/TabulatorFull.js'; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/ColumnManager.js b/tmp/tabulator-5.6.1/src/js/core/ColumnManager.js deleted file mode 100644 index b4b55df..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/ColumnManager.js +++ /dev/null @@ -1,750 +0,0 @@ -import CoreFeature from './CoreFeature.js'; -import Column from './column/Column.js'; -import ColumnComponent from './column/ColumnComponent.js'; -import Helpers from './tools/Helpers.js'; -import OptionsList from './tools/OptionsList.js'; - -import RendererBasicHorizontal from './rendering/renderers/BasicHorizontal.js'; -import RendererVirtualDomHorizontal from './rendering/renderers/VirtualDomHorizontal.js'; - -import defaultColumnOptions from './column/defaults/options.js'; - -export default class ColumnManager extends CoreFeature { - - constructor (table){ - super(table); - - this.blockHozScrollEvent = false; - this.headersElement = null; - this.contentsElement = null; - this.element = null ; //containing element - this.columns = []; // column definition object - this.columnsByIndex = []; //columns by index - this.columnsByField = {}; //columns by field - this.scrollLeft = 0; - this.optionsList = new OptionsList(this.table, "column definition", defaultColumnOptions); - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockUpdate = null; //store latest redraw update only status - - this.renderer = null; - } - - ////////////// Setup Functions ///////////////// - - initialize(){ - this.initializeRenderer(); - - this.headersElement = this.createHeadersElement(); - this.contentsElement = this.createHeaderContentsElement(); - this.element = this.createHeaderElement(); - - this.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild); - this.element.insertBefore(this.contentsElement, this.element.firstChild); - - this.initializeScrollWheelWatcher(); - - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("scrollbar-vertical", this.padVerticalScrollbar.bind(this)); - } - - padVerticalScrollbar(width){ - if(this.table.rtl){ - this.headersElement.style.marginLeft = width + "px"; - }else{ - this.headersElement.style.marginRight = width + "px"; - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": RendererVirtualDomHorizontal, - "basic": RendererBasicHorizontal, - }; - - if(typeof this.table.options.renderHorizontal === "string"){ - renderClass = renderers[this.table.options.renderHorizontal]; - }else{ - renderClass = this.table.options.renderHorizontal; - } - - if(renderClass){ - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - }else{ - console.error("Unable to find matching renderer:", this.table.options.renderHorizontal); - } - } - - - createHeadersElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-headers"); - el.setAttribute("role", "row"); - - return el; - } - - createHeaderContentsElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header-contents"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - createHeaderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-header"); - el.setAttribute("role", "rowgroup"); - - if(!this.table.options.headerVisible){ - el.classList.add("tabulator-header-hidden"); - } - - return el; - } - - //return containing element - getElement(){ - return this.element; - } - - //return containing contents element - getContentsElement(){ - return this.contentsElement; - } - - - //return header containing element - getHeadersElement(){ - return this.headersElement; - } - - //scroll horizontally to match table body - scrollHorizontal(left){ - this.contentsElement.scrollLeft = left; - - this.scrollLeft = left; - - this.renderer.scrollColumns(left); - } - - initializeScrollWheelWatcher(){ - this.contentsElement.addEventListener("wheel", (e) => { - var left; - - if(e.deltaX){ - left = this.contentsElement.scrollLeft + e.deltaX; - - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - } - - ///////////// Column Setup Functions ///////////// - generateColumnsFromRowData(data){ - var cols = [], - definitions = this.table.options.autoColumnsDefinitions, - row, sorter; - - if(data && data.length){ - - row = data[0]; - - for(var key in row){ - let col = { - field:key, - title:key, - }; - - let value = row[key]; - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - case "object": - if(Array.isArray(value)){ - sorter = "array"; - }else{ - sorter = "string"; - } - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else{ - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - }else{ - sorter = "string"; - } - } - break; - } - - col.sorter = sorter; - - cols.push(col); - } - - if(definitions){ - - switch(typeof definitions){ - case "function": - this.table.options.columns = definitions.call(this.table, cols); - break; - - case "object": - if(Array.isArray(definitions)){ - cols.forEach((col) => { - var match = definitions.find((def) => { - return def.field === col.field; - }); - - if(match){ - Object.assign(col, match); - } - }); - - }else{ - cols.forEach((col) => { - if(definitions[col.field]){ - Object.assign(col, definitions[col.field]); - } - }); - } - - this.table.options.columns = cols; - break; - } - }else{ - this.table.options.columns = cols; - } - - this.setColumns(this.table.options.columns); - } - } - - setColumns(cols, row){ - while(this.headersElement.firstChild) this.headersElement.removeChild(this.headersElement.firstChild); - - this.columns = []; - this.columnsByIndex = []; - this.columnsByField = {}; - - this.dispatch("columns-loading"); - - cols.forEach((def, i) => { - this._addColumn(def); - }); - - this._reIndexColumns(); - - this.dispatch("columns-loaded"); - - this.rerenderColumns(false, true); - - this.redraw(true); - } - - _addColumn(definition, before, nextToColumn){ - var column = new Column(definition, this), - colEl = column.getElement(), - index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn; - - if(nextToColumn && index > -1){ - var topColumn = nextToColumn.getTopColumn(); - var parentIndex = this.columns.indexOf(topColumn); - var nextEl = topColumn.getElement(); - - if(before){ - this.columns.splice(parentIndex, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl); - }else{ - this.columns.splice(parentIndex + 1, 0, column); - nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling); - } - }else{ - if(before){ - this.columns.unshift(column); - this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild); - }else{ - this.columns.push(column); - this.headersElement.appendChild(column.getElement()); - } - } - - column.columnRendered(); - - return column; - } - - registerColumnField(col){ - if(col.definition.field){ - this.columnsByField[col.definition.field] = col; - } - } - - registerColumnPosition(col){ - this.columnsByIndex.push(col); - } - - _reIndexColumns(){ - this.columnsByIndex = []; - - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - } - - //ensure column headers take up the correct amount of space in column groups - verticalAlignHeaders(){ - var minHeight = 0; - - if(!this.redrawBlock){ - - this.headersElement.style.height=""; - - this.columns.forEach((column) => { - column.clearVerticalAlign(); - }); - - this.columns.forEach((column) => { - var height = column.getHeight(); - - if(height > minHeight){ - minHeight = height; - } - }); - - this.headersElement.style.height = minHeight + "px"; - - this.columns.forEach((column) => { - column.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight); - }); - - this.table.rowManager.adjustTableSize(); - } - } - - //////////////// Column Details ///////////////// - findColumn(subject){ - var columns; - - if(typeof subject == "object"){ - - if(subject instanceof Column){ - //subject is column element - return subject; - }else if(subject instanceof ColumnComponent){ - //subject is public column component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - - columns = []; - - this.columns.forEach((column) => { - columns.push(column); - columns = columns.concat(column.getColumns(true)); - }); - - //subject is a HTML element of the column header - let match = columns.find((column) => { - return column.element === subject; - }); - - return match || false; - } - - }else{ - //subject should be treated as the field name of the column - return this.columnsByField[subject] || false; - } - - //catch all for any other type of input - return false; - } - - getColumnByField(field){ - return this.columnsByField[field]; - } - - getColumnsByFieldRoot(root){ - var matches = []; - - Object.keys(this.columnsByField).forEach((field) => { - var fieldRoot = this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator)[0] : field; - if(fieldRoot === root){ - matches.push(this.columnsByField[field]); - } - }); - - return matches; - } - - getColumnByIndex(index){ - return this.columnsByIndex[index]; - } - - getFirstVisibleColumn(){ - var index = this.columnsByIndex.findIndex((col) => { - return col.visible; - }); - - return index > -1 ? this.columnsByIndex[index] : false; - } - - getVisibleColumnsByIndex() { - return this.columnsByIndex.filter((col) => col.visible); - } - - getColumns(){ - return this.columns; - } - - findColumnIndex(column){ - return this.columnsByIndex.findIndex((col) => { - return column === col; - }); - } - - //return all columns that are not groups - getRealColumns(){ - return this.columnsByIndex; - } - - //traverse across columns and call action - traverse(callback){ - this.columnsByIndex.forEach((column,i) =>{ - callback(column, i); - }); - } - - //get definitions of actual columns - getDefinitions(active){ - var output = []; - - this.columnsByIndex.forEach((column) => { - if(!active || (active && column.visible)){ - output.push(column.getDefinition()); - } - }); - - return output; - } - - //get full nested definition tree - getDefinitionTree(){ - var output = []; - - this.columns.forEach((column) => { - output.push(column.getDefinition(true)); - }); - - return output; - } - - getComponents(structured){ - var output = [], - columns = structured ? this.columns : this.columnsByIndex; - - columns.forEach((column) => { - output.push(column.getComponent()); - }); - - return output; - } - - getWidth(){ - var width = 0; - - this.columnsByIndex.forEach((column) => { - if(column.visible){ - width += column.getWidth(); - } - }); - - return width; - } - - moveColumn(from, to, after){ - to.element.parentNode.insertBefore(from.element, to.element); - - if(after){ - to.element.parentNode.insertBefore(to.element, from.element); - } - - this.moveColumnActual(from, to, after); - - this.verticalAlignHeaders(); - - this.table.rowManager.reinitialize(); - } - - moveColumnActual(from, to, after){ - if(from.parent.isGroup){ - this._moveColumnInArray(from.parent.columns, from, to, after); - }else{ - this._moveColumnInArray(this.columns, from, to, after); - } - - this._moveColumnInArray(this.columnsByIndex, from, to, after, true); - - this.rerenderColumns(true); - - this.dispatch("column-moved", from, to, after); - - if(this.subscribedExternal("columnMoved")){ - this.dispatchExternal("columnMoved", from.getComponent(), this.table.columnManager.getComponents()); - } - } - - _moveColumnInArray(columns, from, to, after, updateRows){ - var fromIndex = columns.indexOf(from), - toIndex, rows = []; - - if (fromIndex > -1) { - - columns.splice(fromIndex, 1); - - toIndex = columns.indexOf(to); - - if (toIndex > -1) { - - if(after){ - toIndex = toIndex+1; - } - - }else{ - toIndex = fromIndex; - } - - columns.splice(toIndex, 0, from); - - if(updateRows){ - - rows = this.chain("column-moving-rows", [from, to, after], null, []) || []; - - rows = rows.concat(this.table.rowManager.rows); - - rows.forEach(function(row){ - if(row.cells.length){ - var cell = row.cells.splice(fromIndex, 1)[0]; - row.cells.splice(toIndex, 0, cell); - } - }); - - } - } - } - - scrollToColumn(column, position, ifVisible){ - var left = 0, - offset = column.getLeftOffset(), - adjust = 0, - colEl = column.getElement(); - - - return new Promise((resolve, reject) => { - - if(typeof position === "undefined"){ - position = this.table.options.scrollToColumnPosition; - } - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToColumnIfVisible; - } - - if(column.visible){ - - //align to correct position - switch(position){ - case "middle": - case "center": - adjust = -this.element.clientWidth / 2; - break; - - case "right": - adjust = colEl.clientWidth - this.headersElement.clientWidth; - break; - } - - //check column visibility - if(!ifVisible){ - if(offset > 0 && offset + colEl.offsetWidth < this.element.clientWidth){ - return false; - } - } - - //calculate scroll position - left = offset + adjust; - - left = Math.max(Math.min(left, this.table.rowManager.element.scrollWidth - this.table.rowManager.element.clientWidth),0); - - this.table.rowManager.scrollHorizontal(left); - this.scrollHorizontal(left); - - resolve(); - }else{ - console.warn("Scroll Error - Column not visible"); - reject("Scroll Error - Column not visible"); - } - - }); - } - - //////////////// Cell Management ///////////////// - generateCells(row){ - var cells = []; - - this.columnsByIndex.forEach((column) => { - cells.push(column.generateCell(row)); - }); - - return cells; - } - - //////////////// Column Management ///////////////// - getFlexBaseWidth(){ - var totalWidth = this.table.element.clientWidth, //table element width - fixedWidth = 0; - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - this.columnsByIndex.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width || 0; - - minWidth = parseInt(column.minWidth); - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width) ; - }else{ - colWidth = parseInt(width); - } - }else{ - colWidth = width; - } - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - } - }); - - return fixedWidth; - } - - addColumn(definition, before, nextToColumn){ - return new Promise((resolve, reject) => { - var column = this._addColumn(definition, before, nextToColumn); - - this._reIndexColumns(); - - this.dispatch("column-add", definition, before, nextToColumn); - - if(this.layoutMode() != "fitColumns"){ - column.reinitializeWidth(); - } - - this.redraw(true); - - this.table.rowManager.reinitialize(); - - this.rerenderColumns(); - - resolve(column); - }); - } - - //remove column from system - deregisterColumn(column){ - var field = column.getField(), - index; - - //remove from field list - if(field){ - delete this.columnsByField[field]; - } - - //remove from index list - index = this.columnsByIndex.indexOf(column); - - if(index > -1){ - this.columnsByIndex.splice(index, 1); - } - - //remove from column list - index = this.columns.indexOf(column); - - if(index > -1){ - this.columns.splice(index, 1); - } - - this.verticalAlignHeaders(); - - this.redraw(); - } - - rerenderColumns(update, silent){ - if(!this.redrawBlock){ - this.renderer.rerenderColumns(update, silent); - }else{ - if(update === false || (update === true && this.redrawBlockUpdate === null)){ - this.redrawBlockUpdate = update; - } - } - } - - blockRedraw(){ - this.redrawBlock = true; - this.redrawBlockUpdate = null; - } - - restoreRedraw(){ - this.redrawBlock = false; - this.verticalAlignHeaders(); - this.renderer.rerenderColumns(this.redrawBlockUpdate); - - } - - //redraw columns - redraw(force){ - if(Helpers.elVisible(this.element)){ - this.verticalAlignHeaders(); - } - - if(force){ - this.table.rowManager.resetScroll(); - this.table.rowManager.reinitialize(); - } - - if(!this.confirm("table-redrawing", force)){ - this.layoutRefresh(force); - } - - this.dispatch("table-redraw", force); - - this.table.footerManager.redraw(); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/CoreFeature.js b/tmp/tabulator-5.6.1/src/js/core/CoreFeature.js deleted file mode 100644 index 7e19be5..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/CoreFeature.js +++ /dev/null @@ -1,139 +0,0 @@ -export default class CoreFeature{ - - constructor(table){ - this.table = table; - } - - ////////////////////////////////////////// - /////////////// DataLoad ///////////////// - ////////////////////////////////////////// - - reloadData(data, silent, columnsChanged){ - return this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged); - } - - ////////////////////////////////////////// - ///////////// Localization /////////////// - ////////////////////////////////////////// - - langText(){ - return this.table.modules.localize.getText(...arguments); - } - - langBind(){ - return this.table.modules.localize.bind(...arguments); - } - - langLocale(){ - return this.table.modules.localize.getLocale(...arguments); - } - - - ////////////////////////////////////////// - ////////// Inter Table Comms ///////////// - ////////////////////////////////////////// - - commsConnections(){ - return this.table.modules.comms.getConnections(...arguments); - } - - commsSend(){ - return this.table.modules.comms.send(...arguments); - } - - ////////////////////////////////////////// - //////////////// Layout ///////////////// - ////////////////////////////////////////// - - layoutMode(){ - return this.table.modules.layout.getMode(); - } - - layoutRefresh(force){ - return this.table.modules.layout.layout(force); - } - - - ////////////////////////////////////////// - /////////////// Event Bus //////////////// - ////////////////////////////////////////// - - subscribe(){ - return this.table.eventBus.subscribe(...arguments); - } - - unsubscribe(){ - return this.table.eventBus.unsubscribe(...arguments); - } - - subscribed(key){ - return this.table.eventBus.subscribed(key); - } - - subscriptionChange(){ - return this.table.eventBus.subscriptionChange(...arguments); - } - - dispatch(){ - return this.table.eventBus.dispatch(...arguments); - } - - chain(){ - return this.table.eventBus.chain(...arguments); - } - - confirm(){ - return this.table.eventBus.confirm(...arguments); - } - - dispatchExternal(){ - return this.table.externalEvents.dispatch(...arguments); - } - - subscribedExternal(key){ - return this.table.externalEvents.subscribed(key); - } - - subscriptionChangeExternal(){ - return this.table.externalEvents.subscriptionChange(...arguments); - } - - ////////////////////////////////////////// - //////////////// Options ///////////////// - ////////////////////////////////////////// - - options(key){ - return this.table.options[key]; - } - - setOption(key, value){ - if(typeof value !== "undefined"){ - this.table.options[key] = value; - } - - return this.table.options[key]; - } - - ////////////////////////////////////////// - /////////// Deprecation Checks /////////// - ////////////////////////////////////////// - - deprecationCheck(oldOption, newOption, convert){ - return this.table.deprecationAdvisor.check(oldOption, newOption, convert); - } - - deprecationCheckMsg(oldOption, msg){ - return this.table.deprecationAdvisor.checkMsg(oldOption, msg); - } - - deprecationMsg(msg){ - return this.table.deprecationAdvisor.msg(msg); - } - ////////////////////////////////////////// - //////////////// Modules ///////////////// - ////////////////////////////////////////// - - module(key){ - return this.table.module(key); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/FooterManager.js b/tmp/tabulator-5.6.1/src/js/core/FooterManager.js deleted file mode 100644 index 3e7950f..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/FooterManager.js +++ /dev/null @@ -1,102 +0,0 @@ -import CoreFeature from './CoreFeature.js'; - -export default class FooterManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.active = false; - this.element = this.createElement(); //containing element - this.containerElement = this.createContainerElement(); //containing element - this.external = false; - } - - initialize(){ - this.initializeElement(); - } - - createElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer"); - - return el; - } - - - createContainerElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-footer-contents"); - - this.element.appendChild(el); - - return el; - } - - initializeElement(){ - if(this.table.options.footerElement){ - - switch(typeof this.table.options.footerElement){ - case "string": - if(this.table.options.footerElement[0] === "<"){ - this.containerElement.innerHTML = this.table.options.footerElement; - }else{ - this.external = true; - this.containerElement = document.querySelector(this.table.options.footerElement); - } - break; - - default: - this.element = this.table.options.footerElement; - break; - } - } - } - - getElement(){ - return this.element; - } - - append(element){ - this.activate(); - - this.containerElement.appendChild(element); - this.table.rowManager.adjustTableSize(); - } - - prepend(element){ - this.activate(); - - this.element.insertBefore(element, this.element.firstChild); - this.table.rowManager.adjustTableSize(); - } - - remove(element){ - element.parentNode.removeChild(element); - this.deactivate(); - } - - deactivate(force){ - if(!this.element.firstChild || force){ - if(!this.external){ - this.element.parentNode.removeChild(this.element); - } - this.active = false; - } - } - - activate(){ - if(!this.active){ - this.active = true; - if(!this.external){ - this.table.element.appendChild(this.getElement()); - this.table.element.style.display = ''; - } - } - } - - redraw(){ - this.dispatch("footer-redraw"); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/Module.js b/tmp/tabulator-5.6.1/src/js/core/Module.js deleted file mode 100644 index c9de1e6..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/Module.js +++ /dev/null @@ -1,142 +0,0 @@ -import CoreFeature from './CoreFeature.js'; -import Popup from './tools/Popup.js'; - -class Module extends CoreFeature{ - - constructor(table, name){ - super(table); - - this._handler = null; - } - - initialize(){ - // setup module when table is initialized, to be overridden in module - } - - - /////////////////////////////////// - ////// Options Registration /////// - /////////////////////////////////// - - registerTableOption(key, value){ - this.table.optionsList.register(key, value); - } - - registerColumnOption(key, value){ - this.table.columnManager.optionsList.register(key, value); - } - - /////////////////////////////////// - /// Public Function Registration /// - /////////////////////////////////// - - registerTableFunction(name, func){ - if(typeof this.table[name] === "undefined"){ - this.table[name] = (...args) => { - this.table.initGuard(name); - - return func(...args); - }; - }else{ - console.warn("Unable to bind table function, name already in use", name); - } - } - - registerComponentFunction(component, func, handler){ - return this.table.componentFunctionBinder.bind(component, func, handler); - } - - /////////////////////////////////// - ////////// Data Pipeline ////////// - /////////////////////////////////// - - registerDataHandler(handler, priority){ - this.table.rowManager.registerDataPipelineHandler(handler, priority); - this._handler = handler; - } - - registerDisplayHandler(handler, priority){ - this.table.rowManager.registerDisplayPipelineHandler(handler, priority); - this._handler = handler; - } - - displayRows(adjust){ - var index = this.table.rowManager.displayRows.length - 1, - lookupIndex; - - if(this._handler){ - lookupIndex = this.table.rowManager.displayPipeline.findIndex((item) => { - return item.handler === this._handler; - }); - - if(lookupIndex > -1){ - index = lookupIndex; - } - } - - if(adjust){ - index = index + adjust; - } - - if(this._handler){ - if(index > -1){ - return this.table.rowManager.getDisplayRows(index); - }else{ - return this.activeRows(); - } - } - } - - activeRows(){ - return this.table.rowManager.activeRows; - } - - refreshData(renderInPosition, handler){ - if(!handler){ - handler = this._handler; - } - - if(handler){ - this.table.rowManager.refreshActiveData(handler, false, renderInPosition); - } - } - - /////////////////////////////////// - //////// Footer Management //////// - /////////////////////////////////// - - footerAppend(element){ - return this.table.footerManager.append(element); - } - - footerPrepend(element){ - return this.table.footerManager.prepend(element); - } - - footerRemove(element){ - return this.table.footerManager.remove(element); - } - - /////////////////////////////////// - //////// Popups Management //////// - /////////////////////////////////// - - popup(menuEl, menuContainer){ - return new Popup(this.table, menuEl, menuContainer); - } - - /////////////////////////////////// - //////// Alert Management //////// - /////////////////////////////////// - - alert(content, type){ - return this.table.alertManager.alert(content, type); - } - - clearAlert(){ - return this.table.alertManager.clear(); - } - -} - -export default Module; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/RowManager.js b/tmp/tabulator-5.6.1/src/js/core/RowManager.js deleted file mode 100644 index 3a1dac6..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/RowManager.js +++ /dev/null @@ -1,1135 +0,0 @@ -import CoreFeature from './CoreFeature.js'; -import Row from './row/Row.js'; -import RowComponent from './row/RowComponent.js'; -import Helpers from './tools/Helpers.js'; - -import RendererBasicVertical from './rendering/renderers/BasicVertical.js'; -import RendererVirtualDomVertical from './rendering/renderers/VirtualDomVertical.js'; - -export default class RowManager extends CoreFeature{ - - constructor(table){ - super(table); - - this.element = this.createHolderElement(); //containing element - this.tableElement = this.createTableElement(); //table element - this.heightFixer = this.createTableElement(); //table element - this.placeholder = null; //placeholder element - this.placeholderContents = null; //placeholder element - - this.firstRender = false; //handle first render - this.renderMode = "virtual"; //current rendering mode - this.fixedHeight = false; //current rendering mode - - this.rows = []; //hold row data objects - this.activeRowsPipeline = []; //hold calculation of active rows - this.activeRows = []; //rows currently available to on display in the table - this.activeRowsCount = 0; //count of active rows - - this.displayRows = []; //rows currently on display in the table - this.displayRowsCount = 0; //count of display rows - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.redrawBlock = false; //prevent redraws to allow multiple data manipulations before continuing - this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed - this.redrawBlockRenderInPosition = false; //store latest redraw function calls for when redraw is needed - - this.dataPipeline = []; //hold data pipeline tasks - this.displayPipeline = []; //hold data display pipeline tasks - - this.scrollbarWidth = 0; - - this.renderer = null; - } - - //////////////// Setup Functions ///////////////// - - createHolderElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-tableholder"); - el.setAttribute("tabindex", 0); - // el.setAttribute("role", "rowgroup"); - - return el; - } - - createTableElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-table"); - el.setAttribute("role", "rowgroup"); - - return el; - } - - initializePlaceholder(){ - var placeholder = this.table.options.placeholder; - - if(typeof placeholder === "function"){ - placeholder = placeholder.call(this.table); - } - - placeholder = this.chain("placeholder", [placeholder], placeholder, placeholder) || placeholder; - - //configure placeholder element - if(placeholder){ - let el = document.createElement("div"); - el.classList.add("tabulator-placeholder"); - - if(typeof placeholder == "string"){ - let contents = document.createElement("div"); - contents.classList.add("tabulator-placeholder-contents"); - contents.innerHTML = placeholder; - - el.appendChild(contents); - - this.placeholderContents = contents; - - }else if(typeof HTMLElement !== "undefined" && placeholder instanceof HTMLElement){ - - el.appendChild(placeholder); - this.placeholderContents = placeholder; - }else{ - console.warn("Invalid placeholder provided, must be string or HTML Element", placeholder); - - this.el = null; - } - - this.placeholder = el; - } - } - - //return containing element - getElement(){ - return this.element; - } - - //return table element - getTableElement(){ - return this.tableElement; - } - - initialize(){ - this.initializePlaceholder(); - this.initializeRenderer(); - - //initialize manager - this.element.appendChild(this.tableElement); - - this.firstRender = true; - - //scroll header along with table body - this.element.addEventListener("scroll", () => { - var left = this.element.scrollLeft, - leftDir = this.scrollLeft > left, - top = this.element.scrollTop, - topDir = this.scrollTop > top; - - //handle horizontal scrolling - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.dispatch("scroll-horizontal", left, leftDir); - this.dispatchExternal("scrollHorizontal", left, leftDir); - - this._positionPlaceholder(); - } - - //handle vertical scrolling - if(this.scrollTop != top){ - this.scrollTop = top; - - this.renderer.scrollRows(top, topDir); - - this.dispatch("scroll-vertical", top, topDir); - this.dispatchExternal("scrollVertical", top, topDir); - } - }); - } - - ////////////////// Row Manipulation ////////////////// - findRow(subject){ - if(typeof subject == "object"){ - if(subject instanceof Row){ - //subject is row element - return subject; - }else if(subject instanceof RowComponent){ - //subject is public row component - return subject._getSelf() || false; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - //subject is a HTML element of the row - let match = this.rows.find((row) => { - return row.getElement() === subject; - }); - - return match || false; - }else if(subject === null){ - return false; - } - }else if(typeof subject == "undefined"){ - return false; - }else{ - //subject should be treated as the index of the row - let match = this.rows.find((row) => { - return row.data[this.table.options.index] == subject; - }); - - return match || false; - } - - //catch all for any other type of input - return false; - } - - getRowFromDataObject(data){ - var match = this.rows.find((row) => { - return row.data === data; - }); - - return match || false; - } - - getRowFromPosition(position){ - return this.getDisplayRows().find((row) => { - return row.getPosition() === position && row.isDisplayed(); - }); - } - - scrollToRow(row, position, ifVisible){ - return this.renderer.scrollToRowPosition(row, position, ifVisible); - } - - ////////////////// Data Handling ////////////////// - setData(data, renderInPosition, columnsChanged){ - return new Promise((resolve, reject)=>{ - if(renderInPosition && this.getDisplayRows().length){ - if(this.table.options.pagination){ - this._setDataActual(data, true); - }else{ - this.reRenderInPosition(() => { - this._setDataActual(data); - }); - } - }else{ - if(this.table.options.autoColumns && columnsChanged && this.table.initialized){ - this.table.columnManager.generateColumnsFromRowData(data); - } - this.resetScroll(); - - this._setDataActual(data); - } - - resolve(); - }); - } - - _setDataActual(data, renderInPosition){ - this.dispatchExternal("dataProcessing", data); - - this._wipeElements(); - - if(Array.isArray(data)){ - this.dispatch("data-processing", data); - - data.forEach((def, i) => { - if(def && typeof def === "object"){ - var row = new Row(def, this); - this.rows.push(row); - }else{ - console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def); - } - }); - - this.refreshActiveData(false, false, renderInPosition); - - this.dispatch("data-processed", data); - this.dispatchExternal("dataProcessed", data); - }else{ - console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data, "\nData: ", data); - } - } - - _wipeElements(){ - this.dispatch("rows-wipe"); - - this.destroy(); - - this.adjustTableSize(); - - this.dispatch("rows-wiped"); - } - - destroy(){ - this.rows.forEach((row) => { - row.wipe(); - }); - - this.rows = []; - this.activeRows = []; - this.activeRowsPipeline = []; - this.activeRowsCount = 0; - this.displayRows = []; - this.displayRowsCount = 0; - } - - deleteRow(row, blockRedraw){ - var allIndex = this.rows.indexOf(row), - activeIndex = this.activeRows.indexOf(row); - - if(activeIndex > -1){ - this.activeRows.splice(activeIndex, 1); - } - - if(allIndex > -1){ - this.rows.splice(allIndex, 1); - } - - this.setActiveRows(this.activeRows); - - this.displayRowIterator((rows) => { - var displayIndex = rows.indexOf(row); - - if(displayIndex > -1){ - rows.splice(displayIndex, 1); - } - }); - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - this.regenerateRowPositions(); - - this.dispatchExternal("rowDeleted", row.getComponent()); - - if(!this.displayRowsCount){ - this.tableEmpty(); - } - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.getData()); - } - } - - addRow(data, pos, index, blockRedraw){ - var row = this.addRowActual(data, pos, index, blockRedraw); - return row; - } - - //add multiple rows - addRows(data, pos, index, refreshDisplayOnly){ - var rows = []; - - return new Promise((resolve, reject) => { - pos = this.findAddRowPos(pos); - - if(!Array.isArray(data)){ - data = [data]; - } - - if((typeof index == "undefined" && pos) || (typeof index !== "undefined" && !pos)){ - data.reverse(); - } - - data.forEach((item, i) => { - var row = this.addRow(item, pos, index, true); - rows.push(row); - this.dispatch("row-added", row, item, pos, index); - }); - - this.refreshActiveData(refreshDisplayOnly ? "displayPipeline" : false, false, true); - - this.regenerateRowPositions(); - - if(this.displayRowsCount){ - this._clearPlaceholder(); - } - - resolve(rows); - }); - } - - findAddRowPos(pos){ - if(typeof pos === "undefined"){ - pos = this.table.options.addRowPos; - } - - if(pos === "pos"){ - pos = true; - } - - if(pos === "bottom"){ - pos = false; - } - - return pos; - } - - addRowActual(data, pos, index, blockRedraw){ - var row = data instanceof Row ? data : new Row(data || {}, this), - top = this.findAddRowPos(pos), - allIndex = -1, - activeIndex, chainResult; - - if(!index){ - chainResult = this.chain("row-adding-position", [row, top], null, {index, top}); - - index = chainResult.index; - top = chainResult.top; - } - - if(typeof index !== "undefined"){ - index = this.findRow(index); - } - - index = this.chain("row-adding-index", [row, index, top], null, index); - - if(index){ - allIndex = this.rows.indexOf(index); - } - - if(index && allIndex > -1){ - activeIndex = this.activeRows.indexOf(index); - - this.displayRowIterator(function(rows){ - var displayIndex = rows.indexOf(index); - - if(displayIndex > -1){ - rows.splice((top ? displayIndex : displayIndex + 1), 0, row); - } - }); - - if(activeIndex > -1){ - this.activeRows.splice((top ? activeIndex : activeIndex + 1), 0, row); - } - - this.rows.splice((top ? allIndex : allIndex + 1), 0, row); - - }else{ - - if(top){ - - this.displayRowIterator(function(rows){ - rows.unshift(row); - }); - - this.activeRows.unshift(row); - this.rows.unshift(row); - }else{ - this.displayRowIterator(function(rows){ - rows.push(row); - }); - - this.activeRows.push(row); - this.rows.push(row); - } - } - - this.setActiveRows(this.activeRows); - - this.dispatchExternal("rowAdded", row.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - if(!blockRedraw){ - this.reRenderInPosition(); - } - - return row; - } - - moveRow(from, to, after){ - this.dispatch("row-move", from, to, after); - - this.moveRowActual(from, to, after); - - this.regenerateRowPositions(); - - this.dispatch("row-moved", from, to, after); - this.dispatchExternal("rowMoved", from.getComponent()); - } - - moveRowActual(from, to, after){ - this.moveRowInArray(this.rows, from, to, after); - this.moveRowInArray(this.activeRows, from, to, after); - - this.displayRowIterator((rows) => { - this.moveRowInArray(rows, from, to, after); - }); - - this.dispatch("row-moving", from, to, after); - } - - moveRowInArray(rows, from, to, after){ - var fromIndex, toIndex, start, end; - - if(from !== to){ - - fromIndex = rows.indexOf(from); - - if (fromIndex > -1) { - - rows.splice(fromIndex, 1); - - toIndex = rows.indexOf(to); - - if (toIndex > -1) { - - if(after){ - rows.splice(toIndex+1, 0, from); - }else{ - rows.splice(toIndex, 0, from); - } - - }else{ - rows.splice(fromIndex, 0, from); - } - } - - //restyle rows - if(rows === this.getDisplayRows()){ - - start = fromIndex < toIndex ? fromIndex : toIndex; - end = toIndex > fromIndex ? toIndex : fromIndex +1; - - for(let i = start; i <= end; i++){ - if(rows[i]){ - this.styleRow(rows[i], i); - } - } - } - } - } - - clearData(){ - this.setData([]); - } - - getRowIndex(row){ - return this.findRowIndex(row, this.rows); - } - - getDisplayRowIndex(row){ - var index = this.getDisplayRows().indexOf(row); - return index > -1 ? index : false; - } - - nextDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - nextRow = false; - - - if(index !== false && index < this.displayRowsCount -1){ - nextRow = this.getDisplayRows()[index+1]; - } - - if(nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")){ - return this.nextDisplayRow(nextRow, rowOnly); - } - - return nextRow; - } - - prevDisplayRow(row, rowOnly){ - var index = this.getDisplayRowIndex(row), - prevRow = false; - - if(index){ - prevRow = this.getDisplayRows()[index-1]; - } - - if(rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")){ - return this.prevDisplayRow(prevRow, rowOnly); - } - - return prevRow; - } - - findRowIndex(row, list){ - var rowIndex; - - row = this.findRow(row); - - if(row){ - rowIndex = list.indexOf(row); - - if(rowIndex > -1){ - return rowIndex; - } - } - - return false; - } - - getData(active, transform){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - if(row.type == "row"){ - output.push(row.getData(transform || "data")); - } - }); - - return output; - } - - getComponents(active){ - var output = [], - rows = this.getRows(active); - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - return output; - } - - getDataCount(active){ - var rows = this.getRows(active); - - return rows.length; - } - - scrollHorizontal(left){ - this.scrollLeft = left; - this.element.scrollLeft = left; - - this.dispatch("scroll-horizontal", left); - } - - registerDataPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.dataPipeline.push({handler, priority}); - this.dataPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else{ - console.error("Data pipeline handlers must have a priority in order to be registered"); - } - } - - registerDisplayPipelineHandler(handler, priority){ - if(typeof priority !== "undefined"){ - this.displayPipeline.push({handler, priority}); - this.displayPipeline.sort((a, b) => { - return a.priority - b.priority; - }); - }else{ - console.error("Display pipeline handlers must have a priority in order to be registered"); - } - } - - //set active data set - refreshActiveData(handler, skipStage, renderInPosition){ - var table = this.table, - stage = "", - index = 0, - cascadeOrder = ["all", "dataPipeline", "display", "displayPipeline", "end"]; - - if(!this.table.destroyed){ - if(typeof handler === "function"){ - index = this.dataPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "dataPipeline"; - - if(skipStage){ - if(index == this.dataPipeline.length - 1){ - stage = "display"; - }else{ - index++; - } - } - }else{ - index = this.displayPipeline.findIndex((item) => { - return item.handler === handler; - }); - - if(index > -1){ - stage = "displayPipeline"; - - if(skipStage){ - if(index == this.displayPipeline.length - 1){ - stage = "end"; - }else{ - index++; - } - } - }else{ - console.error("Unable to refresh data, invalid handler provided", handler); - return; - } - } - }else{ - stage = handler || "all"; - index = 0; - } - - if(this.redrawBlock){ - if(!this.redrawBlockRestoreConfig || (this.redrawBlockRestoreConfig && ((this.redrawBlockRestoreConfig.stage === stage && index < this.redrawBlockRestoreConfig.index) || (cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))))){ - this.redrawBlockRestoreConfig = { - handler: handler, - skipStage: skipStage, - renderInPosition: renderInPosition, - stage:stage, - index:index, - }; - } - - return; - }else{ - if(Helpers.elVisible(this.element)){ - if(renderInPosition){ - this.reRenderInPosition(this.refreshPipelines.bind(this, handler, stage, index, renderInPosition)); - }else{ - this.refreshPipelines(handler, stage, index, renderInPosition); - - if(!handler){ - this.table.columnManager.renderer.renderColumns(); - } - - this.renderTable(); - - if(table.options.layoutColumnsOnNewData){ - this.table.columnManager.redraw(true); - } - } - }else{ - this.refreshPipelines(handler, stage, index, renderInPosition); - } - - this.dispatch("data-refreshed"); - } - } - } - - refreshPipelines(handler, stage, index, renderInPosition){ - this.dispatch("data-refreshing"); - - if(!handler || !this.activeRowsPipeline[0]){ - this.activeRowsPipeline[0] = this.rows.slice(0); - } - - //cascade through data refresh stages - switch(stage){ - case "all": - //handle case where all data needs refreshing - - case "dataPipeline": - for(let i = index; i < this.dataPipeline.length; i++){ - let result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0)); - - this.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0); - } - - this.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]); - - case "display": - index = 0; - this.resetDisplayRows(); - - case "displayPipeline": - for(let i = index; i < this.displayPipeline.length; i++){ - let result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition); - - this.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i); - } - - case "end": - //case to handle scenario when trying to skip past end stage - this.regenerateRowPositions(); - } - - if(this.getDisplayRows().length){ - this._clearPlaceholder(); - } - } - - //regenerate row positions - regenerateRowPositions(){ - var rows = this.getDisplayRows(); - var index = 1; - - rows.forEach((row) => { - if (row.type === "row"){ - row.setPosition(index); - index++; - } - }); - } - - setActiveRows(activeRows){ - this.activeRows = this.activeRows = Object.assign([], activeRows); - this.activeRowsCount = this.activeRows.length; - } - - //reset display rows array - resetDisplayRows(){ - this.displayRows = []; - - this.displayRows.push(this.activeRows.slice(0)); - - this.displayRowsCount = this.displayRows[0].length; - } - - //set display row pipeline data - setDisplayRows(displayRows, index){ - this.displayRows[index] = displayRows; - - if(index == this.displayRows.length -1){ - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - } - - getDisplayRows(index){ - if(typeof index == "undefined"){ - return this.displayRows.length ? this.displayRows[this.displayRows.length -1] : []; - }else{ - return this.displayRows[index] || []; - } - } - - getVisibleRows(chain, viewable){ - var rows = Object.assign([], this.renderer.visibleRows(!viewable)); - - if(chain){ - rows = this.chain("rows-visible", [viewable], rows, rows); - } - - return rows; - } - - //repeat action across display rows - displayRowIterator(callback){ - this.activeRowsPipeline.forEach(callback); - this.displayRows.forEach(callback); - - this.displayRowsCount = this.displayRows[this.displayRows.length -1].length; - } - - //return only actual rows (not group headers etc) - getRows(type){ - var rows = []; - - switch(type){ - case "active": - rows = this.activeRows; - break; - - case "display": - rows = this.table.rowManager.getDisplayRows(); - break; - - case "visible": - rows = this.getVisibleRows(false, true); - break; - - default: - rows = this.chain("rows-retrieve", type, null, this.rows) || this.rows; - } - - return rows; - } - - ///////////////// Table Rendering ///////////////// - //trigger rerender of table in current position - reRenderInPosition(callback){ - if(this.redrawBlock){ - if(callback){ - callback(); - }else{ - this.redrawBlockRenderInPosition = true; - } - }else{ - this.dispatchExternal("renderStarted"); - - this.renderer.rerenderRows(callback); - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - } - - scrollBarCheck(){ - var scrollbarWidth = 0; - - //adjust for vertical scrollbar moving table when present - if(this.element.scrollHeight > this.element.clientHeight){ - scrollbarWidth = this.element.offsetWidth - this.element.clientWidth; - } - - if(scrollbarWidth !== this.scrollbarWidth){ - this.scrollbarWidth = scrollbarWidth; - this.dispatch("scrollbar-vertical", scrollbarWidth); - } - } - - initializeRenderer(){ - var renderClass; - - var renderers = { - "virtual": RendererVirtualDomVertical, - "basic": RendererBasicVertical, - }; - - if(typeof this.table.options.renderVertical === "string"){ - renderClass = renderers[this.table.options.renderVertical]; - }else{ - renderClass = this.table.options.renderVertical; - } - - if(renderClass){ - this.renderMode = this.table.options.renderVertical; - - this.renderer = new renderClass(this.table, this.element, this.tableElement); - this.renderer.initialize(); - - if((this.table.element.clientHeight || this.table.options.height) && !(this.table.options.minHeight && this.table.options.maxHeight)){ - this.fixedHeight = true; - }else{ - this.fixedHeight = false; - } - }else{ - console.error("Unable to find matching renderer:", this.table.options.renderVertical); - } - } - - getRenderMode(){ - return this.renderMode; - } - - renderTable(){ - this.dispatchExternal("renderStarted"); - - this.element.scrollTop = 0; - - this._clearTable(); - - if(this.displayRowsCount){ - this.renderer.renderRows(); - - if(this.firstRender){ - this.firstRender = false; - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.layoutRefresh(true); - } - }else{ - this.renderEmptyScroll(); - } - - if(!this.fixedHeight){ - this.adjustTableSize(); - } - - this.dispatch("table-layout"); - - if(!this.displayRowsCount){ - this._showPlaceholder(); - } - - this.scrollBarCheck(); - - this.dispatchExternal("renderComplete"); - } - - //show scrollbars on empty table div - renderEmptyScroll(){ - if(this.placeholder){ - this.tableElement.style.display = "none"; - }else{ - this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px"; - // this.tableElement.style.minHeight = "1px"; - // this.tableElement.style.visibility = "hidden"; - } - } - - _clearTable(){ - this._clearPlaceholder(); - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.renderer.clearRows(); - } - - tableEmpty(){ - this.renderEmptyScroll(); - this._showPlaceholder(); - } - - checkPlaceholder(){ - if(this.displayRowsCount){ - this._clearPlaceholder(); - }else{ - this.tableEmpty(); - } - } - - _showPlaceholder(){ - if(this.placeholder){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - this.initializePlaceholder(); - - this.placeholder.setAttribute("tabulator-render-mode", this.renderMode); - - this.getElement().appendChild(this.placeholder); - this._positionPlaceholder(); - - this.adjustTableSize(); - } - } - - _clearPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.parentNode.removeChild(this.placeholder); - } - - // clear empty table placeholder min - this.tableElement.style.minWidth = ""; - this.tableElement.style.display = ""; - } - - _positionPlaceholder(){ - if(this.placeholder && this.placeholder.parentNode){ - this.placeholder.style.width = this.table.columnManager.getWidth() + "px"; - this.placeholderContents.style.width = this.table.rowManager.element.clientWidth + "px"; - this.placeholderContents.style.marginLeft = this.scrollLeft + "px"; - } - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else{ - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - //normalize height of active rows - normalizeHeight(){ - this.activeRows.forEach(function(row){ - row.normalizeHeight(); - }); - } - - //adjust the height of the table holder to fit in the Tabulator element - adjustTableSize(){ - let initialHeight = this.element.clientHeight, minHeight; - let resized = false; - - if(this.renderer.verticalFillMode === "fill"){ - let otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0)); - - if(this.fixedHeight){ - minHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + "px"; - - const height = "calc(100% - " + otherHeight + "px)"; - this.element.style.minHeight = minHeight || "calc(100% - " + otherHeight + "px)"; - this.element.style.height = height; - this.element.style.maxHeight = height; - } else { - this.element.style.height = ""; - this.element.style.height = - this.table.element.clientHeight - otherHeight + "px"; - this.element.scrollTop = this.scrollTop; - } - - this.renderer.resize(); - - //check if the table has changed size when dealing with variable height tables - if(!this.fixedHeight && initialHeight != this.element.clientHeight){ - resized = true; - if(this.subscribed("table-resize")){ - this.dispatch("table-resize"); - }else{ - this.redraw(); - } - } - - this.scrollBarCheck(); - } - - this._positionPlaceholder(); - return resized; - } - - //reinitialize all rows - reinitialize(){ - this.rows.forEach(function(row){ - row.reinitialize(true); - }); - } - - //prevent table from being redrawn - blockRedraw (){ - this.redrawBlock = true; - this.redrawBlockRestoreConfig = false; - } - - //restore table redrawing - restoreRedraw (){ - this.redrawBlock = false; - - if(this.redrawBlockRestoreConfig){ - this.refreshActiveData(this.redrawBlockRestoreConfig.handler, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition); - - this.redrawBlockRestoreConfig = false; - }else{ - if(this.redrawBlockRenderInPosition){ - this.reRenderInPosition(); - } - } - - this.redrawBlockRenderInPosition = false; - } - - //redraw table - redraw (force){ - this.adjustTableSize(); - this.table.tableWidth = this.table.element.clientWidth; - - if(!force){ - this.reRenderInPosition(); - this.scrollHorizontal(this.scrollLeft); - }else{ - this.renderTable(); - } - } - - resetScroll(){ - this.element.scrollLeft = 0; - this.element.scrollTop = 0; - - if(this.table.browser === "ie"){ - var event = document.createEvent("Event"); - event.initEvent("scroll", false, true); - this.element.dispatchEvent(event); - }else{ - this.element.dispatchEvent(new Event('scroll')); - } - } -} diff --git a/tmp/tabulator-5.6.1/src/js/core/Tabulator.js b/tmp/tabulator-5.6.1/src/js/core/Tabulator.js deleted file mode 100644 index 2950a0b..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/Tabulator.js +++ /dev/null @@ -1,896 +0,0 @@ -'use strict'; - -import defaultOptions from './defaults/options.js'; - -import ColumnManager from './ColumnManager.js'; -import RowManager from './RowManager.js'; -import FooterManager from './FooterManager.js'; - -import InteractionMonitor from './tools/InteractionMonitor.js'; -import ComponentFunctionBinder from './tools/ComponentFunctionBinder.js'; -import DataLoader from './tools/DataLoader.js'; - -import ExternalEventBus from './tools/ExternalEventBus.js'; -import InternalEventBus from './tools/InternalEventBus.js'; - -import DeprecationAdvisor from './tools/DeprecationAdvisor.js'; - -import TableRegistry from './tools/TableRegistry.js'; -import ModuleBinder from './tools/ModuleBinder.js'; - -import OptionsList from './tools/OptionsList.js'; - -import Alert from './tools/Alert.js'; - -class Tabulator { - - constructor(element, options){ - - this.options = {}; - - this.columnManager = null; // hold Column Manager - this.rowManager = null; //hold Row Manager - this.footerManager = null; //holder Footer Manager - this.alertManager = null; //hold Alert Manager - this.vdomHoz = null; //holder horizontal virtual dom - this.externalEvents = null; //handle external event messaging - this.eventBus = null; //handle internal event messaging - this.interactionMonitor = false; //track user interaction - this.browser = ""; //hold current browser type - this.browserSlow = false; //handle reduced functionality for slower browsers - this.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance - this.rtl = false; //check if the table is in RTL mode - this.originalElement = null; //hold original table element if it has been replaced - - this.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions - this.dataLoader = false; //bind component functions - - this.modules = {}; //hold all modules bound to this table - this.modulesCore = []; //hold core modules bound to this table (for initialization purposes) - this.modulesRegular = []; //hold regular modules bound to this table (for initialization purposes) - - this.deprecationAdvisor = new DeprecationAdvisor(this); - this.optionsList = new OptionsList(this, "table constructor"); - - this.initialized = false; - this.destroyed = false; - - if(this.initializeElement(element)){ - - this.initializeCoreSystems(options); - - //delay table creation to allow event bindings immediately after the constructor - setTimeout(() => { - this._create(); - }); - } - - TableRegistry.register(this); //register table for inter-device communication - } - - initializeElement(element){ - if(typeof HTMLElement !== "undefined" && element instanceof HTMLElement){ - this.element = element; - return true; - }else if(typeof element === "string"){ - this.element = document.querySelector(element); - - if(this.element){ - return true; - }else{ - console.error("Tabulator Creation Error - no element found matching selector: ", element); - return false; - } - }else{ - console.error("Tabulator Creation Error - Invalid element provided:", element); - return false; - } - } - - initializeCoreSystems(options){ - this.columnManager = new ColumnManager(this); - this.rowManager = new RowManager(this); - this.footerManager = new FooterManager(this); - this.dataLoader = new DataLoader(this); - this.alertManager = new Alert(this); - - this.bindModules(); - - this.options = this.optionsList.generate(Tabulator.defaultOptions, options); - - this._clearObjectPointers(); - - this._mapDeprecatedFunctionality(); - - this.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal); - this.eventBus = new InternalEventBus(this.options.debugEventsInternal); - - this.interactionMonitor = new InteractionMonitor(this); - - this.dataLoader.initialize(); - // this.columnManager.initialize(); - // this.rowManager.initialize(); - this.footerManager.initialize(); - } - - //convert deprecated functionality to new functions - _mapDeprecatedFunctionality(){ - //all previously deprecated functionality removed in the 5.0 release - } - - _clearSelection(){ - - this.element.classList.add("tabulator-block-select"); - - if (window.getSelection) { - if (window.getSelection().empty) { // Chrome - window.getSelection().empty(); - } else if (window.getSelection().removeAllRanges) { // Firefox - window.getSelection().removeAllRanges(); - } - } else if (document.selection) { // IE? - document.selection.empty(); - } - - this.element.classList.remove("tabulator-block-select"); - } - - //create table - _create(){ - this.externalEvents.dispatch("tableBuilding"); - this.eventBus.dispatch("table-building"); - - this._rtlCheck(); - - this._buildElement(); - - this._initializeTable(); - - this._loadInitialData(); - - this.initialized = true; - - this.externalEvents.dispatch("tableBuilt"); - } - - _rtlCheck(){ - var style = window.getComputedStyle(this.element); - - switch(this.options.textDirection){ - case"auto": - if(style.direction !== "rtl"){ - break; - } - - case "rtl": - this.element.classList.add("tabulator-rtl"); - this.rtl = true; - break; - - case "ltr": - this.element.classList.add("tabulator-ltr"); - - default: - this.rtl = false; - } - } - - //clear pointers to objects in default config object - _clearObjectPointers(){ - this.options.columns = this.options.columns.slice(0); - - if(Array.isArray(this.options.data) && !this.options.reactiveData){ - this.options.data = this.options.data.slice(0); - } - } - - //build tabulator element - _buildElement(){ - var element = this.element, - options = this.options, - newElement; - - if(element.tagName === "TABLE"){ - this.originalElement = this.element; - newElement = document.createElement("div"); - - //transfer attributes to new element - var attributes = element.attributes; - - // loop through attributes and apply them on div - for(var i in attributes){ - if(typeof attributes[i] == "object"){ - newElement.setAttribute(attributes[i].name, attributes[i].value); - } - } - - // replace table with div element - element.parentNode.replaceChild(newElement, element); - - this.element = element = newElement; - } - - element.classList.add("tabulator"); - element.setAttribute("role", "grid"); - - //empty element - while(element.firstChild) element.removeChild(element.firstChild); - - //set table height - if(options.height){ - options.height = isNaN(options.height) ? options.height : options.height + "px"; - element.style.height = options.height; - } - - //set table min height - if(options.minHeight !== false){ - options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px"; - element.style.minHeight = options.minHeight; - } - - //set table maxHeight - if(options.maxHeight !== false){ - options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px"; - element.style.maxHeight = options.maxHeight; - } - } - - //initialize core systems and modules - _initializeTable(){ - var element = this.element, - options = this.options; - - this.interactionMonitor.initialize(); - - this.columnManager.initialize(); - this.rowManager.initialize(); - - this._detectBrowser(); - - //initialize core modules - this.modulesCore.forEach((mod) => { - mod.initialize(); - }); - - //build table elements - element.appendChild(this.columnManager.getElement()); - element.appendChild(this.rowManager.getElement()); - - if(options.footerElement){ - this.footerManager.activate(); - } - - if(options.autoColumns && options.data){ - - this.columnManager.generateColumnsFromRowData(this.options.data); - } - - //initialize regular modules - this.modulesRegular.forEach((mod) => { - mod.initialize(); - }); - - this.columnManager.setColumns(options.columns); - - this.eventBus.dispatch("table-built"); - } - - _loadInitialData(){ - this.dataLoader.load(this.options.data); - this.columnManager.verticalAlignHeaders(); - } - - //deconstructor - destroy(){ - var element = this.element; - - this.destroyed = true; - - TableRegistry.deregister(this); //deregister table from inter-device communication - - this.eventBus.dispatch("table-destroy"); - - //clear row data - this.rowManager.destroy(); - - //clear DOM - while(element.firstChild) element.removeChild(element.firstChild); - element.classList.remove("tabulator"); - - this.externalEvents.dispatch("tableDestroyed"); - } - - _detectBrowser(){ - var ua = navigator.userAgent||navigator.vendor||window.opera; - - if(ua.indexOf("Trident") > -1){ - this.browser = "ie"; - this.browserSlow = true; - }else if(ua.indexOf("Edge") > -1){ - this.browser = "edge"; - this.browserSlow = true; - }else if(ua.indexOf("Firefox") > -1){ - this.browser = "firefox"; - this.browserSlow = false; - }else if(ua.indexOf("Mac OS") > -1){ - this.browser = "safari"; - this.browserSlow = false; - }else{ - this.browser = "other"; - this.browserSlow = false; - } - - this.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.slice(0,4)); - } - - initGuard(func, msg){ - var stack, line; - - if(this.options.debugInitialization && !this.initialized){ - if(!func){ - stack = new Error().stack.split("\n"); - - line = stack[0] == "Error" ? stack[2] : stack[1]; - - if(line[0] == " "){ - func = line.trim().split(" ")[1].split(".")[1]; - }else{ - func = line.trim().split("@")[0]; - } - } - - console.warn("Table Not Initialized - Calling the " + func + " function before the table is initialized may result in inconsistent behavior, Please wait for the `tableBuilt` event before calling this function." + (msg ? " " + msg : "")); - } - - return this.initialized; - } - - ////////////////// Data Handling ////////////////// - //block table redrawing - blockRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-blocking"); - - this.rowManager.blockRedraw(); - this.columnManager.blockRedraw(); - - this.eventBus.dispatch("redraw-blocked"); - } - - //restore table redrawing - restoreRedraw(){ - this.initGuard(); - - this.eventBus.dispatch("redraw-restoring"); - - this.rowManager.restoreRedraw(); - this.columnManager.restoreRedraw(); - - this.eventBus.dispatch("redraw-restored"); - } - - //load data - setData(data, params, config){ - this.initGuard(false, "To set initial data please use the 'data' property in the table constructor."); - - return this.dataLoader.load(data, params, config, false); - } - - //clear data - clearData(){ - this.initGuard(); - - this.dataLoader.blockActiveLoad(); - this.rowManager.clearData(); - } - - //get table data array - getData(active){ - return this.rowManager.getData(active); - } - - //get table data array count - getDataCount(active){ - return this.rowManager.getDataCount(active); - } - - //replace data, keeping table in position with same sort - replaceData(data, params, config){ - this.initGuard(); - - return this.dataLoader.load(data, params, config, true, true); - } - - //update table data - updateData(data){ - var responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - if(row){ - responses++; - - row.updateData(item) - .then(()=>{ - responses--; - - if(!responses){ - resolve(); - } - }) - .catch((e) => { - reject("Update Error - Unable to update row", item, e); - }); - }else{ - reject("Update Error - Unable to find row", item); - } - }); - }else{ - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - addData(data, pos, index){ - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data){ - this.rowManager.addRows(data, pos, index) - .then((rows) => { - var output = []; - - rows.forEach(function(row){ - output.push(row.getComponent()); - }); - - resolve(output); - }); - }else{ - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //update table data - updateOrAddData(data){ - var rows = [], - responses = 0; - - this.initGuard(); - - return new Promise((resolve, reject) => { - this.dataLoader.blockActiveLoad(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(data && data.length > 0){ - data.forEach((item) => { - var row = this.rowManager.findRow(item[this.options.index]); - - responses++; - - if(row){ - row.updateData(item) - .then(()=>{ - responses--; - rows.push(row.getComponent()); - - if(!responses){ - resolve(rows); - } - }); - }else{ - this.rowManager.addRows(item) - .then((newRows)=>{ - responses--; - rows.push(newRows[0].getComponent()); - - if(!responses){ - resolve(rows); - } - }); - } - }); - }else{ - console.warn("Update Error - No data provided"); - reject("Update Error - No data provided"); - } - }); - } - - //get row object - getRow(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getComponent(); - }else{ - console.warn("Find Error - No matching row found:", index); - return false; - } - } - - //get row object - getRowFromPosition(position){ - var row = this.rowManager.getRowFromPosition(position); - - if(row){ - return row.getComponent(); - }else{ - console.warn("Find Error - No matching row found:", position); - return false; - } - } - - //delete row from table - deleteRow(index){ - var foundRows = []; - - this.initGuard(); - - if(!Array.isArray(index)){ - index = [index]; - } - - //find matching rows - for(let item of index){ - let row = this.rowManager.findRow(item, true); - - if(row){ - foundRows.push(row); - }else{ - console.error("Delete Error - No matching row found:", item); - return Promise.reject("Delete Error - No matching row found"); - } - } - - //sort rows into correct order to ensure smooth delete from table - foundRows.sort((a, b) => { - return this.rowManager.rows.indexOf(a) > this.rowManager.rows.indexOf(b) ? 1 : -1; - }); - - //delete rows - foundRows.forEach((row) =>{ - row.delete(); - }); - - this.rowManager.reRenderInPosition(); - - return Promise.resolve(); - } - - //add row to table - addRow(data, pos, index){ - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - return this.rowManager.addRows(data, pos, index, true) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - - //update a row if it exists otherwise create it - updateOrAddRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return row.getComponent(); - }); - }else{ - return this.rowManager.addRows(data) - .then((rows)=>{ - return rows[0].getComponent(); - }); - } - } - - //update row data - updateRow(index, data){ - var row = this.rowManager.findRow(index); - - this.initGuard(); - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(row){ - return row.updateData(data) - .then(()=>{ - return Promise.resolve(row.getComponent()); - }); - }else{ - console.warn("Update Error - No matching row found:", index); - return Promise.reject("Update Error - No matching row found"); - } - } - - //scroll to row in DOM - scrollToRow(index, position, ifVisible){ - var row = this.rowManager.findRow(index); - - if(row){ - return this.rowManager.scrollToRow(row, position, ifVisible); - }else{ - console.warn("Scroll Error - No matching row found:", index); - return Promise.reject("Scroll Error - No matching row found"); - } - } - - moveRow(from, to, after){ - var fromRow = this.rowManager.findRow(from); - - this.initGuard(); - - if(fromRow){ - fromRow.moveToRow(to, after); - }else{ - console.warn("Move Error - No matching row found:", from); - } - } - - getRows(active){ - return this.rowManager.getComponents(active); - } - - //get position of row in table - getRowPosition(index){ - var row = this.rowManager.findRow(index); - - if(row){ - return row.getPosition(); - }else{ - console.warn("Position Error - No matching row found:", index); - return false; - } - } - - /////////////// Column Functions /////////////// - setColumns(definition){ - this.initGuard(false, "To set initial columns please use the 'columns' property in the table constructor"); - - this.columnManager.setColumns(definition); - } - - getColumns(structured){ - return this.columnManager.getComponents(structured); - } - - getColumn(field){ - var column = this.columnManager.findColumn(field); - - if(column){ - return column.getComponent(); - }else{ - console.warn("Find Error - No matching column found:", field); - return false; - } - } - - getColumnDefinitions(){ - return this.columnManager.getDefinitionTree(); - } - - showColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.show(); - }else{ - console.warn("Column Show Error - No matching column found:", field); - return false; - } - } - - hideColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - column.hide(); - }else{ - console.warn("Column Hide Error - No matching column found:", field); - return false; - } - } - - toggleColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - if(column.visible){ - column.hide(); - }else{ - column.show(); - } - }else{ - console.warn("Column Visibility Toggle Error - No matching column found:", field); - return false; - } - } - - addColumn(definition, before, field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - return this.columnManager.addColumn(definition, before, column) - .then((column) => { - return column.getComponent(); - }); - } - - deleteColumn(field){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.delete(); - }else{ - console.warn("Column Delete Error - No matching column found:", field); - return Promise.reject(); - } - } - - updateColumnDefinition(field, definition){ - var column = this.columnManager.findColumn(field); - - this.initGuard(); - - if(column){ - return column.updateDefinition(definition); - }else{ - console.warn("Column Update Error - No matching column found:", field); - return Promise.reject(); - } - } - - moveColumn(from, to, after){ - var fromColumn = this.columnManager.findColumn(from), - toColumn = this.columnManager.findColumn(to); - - this.initGuard(); - - if(fromColumn){ - if(toColumn){ - this.columnManager.moveColumn(fromColumn, toColumn, after); - }else{ - console.warn("Move Error - No matching column found:", toColumn); - } - }else{ - console.warn("Move Error - No matching column found:", from); - } - } - - //scroll to column in DOM - scrollToColumn(field, position, ifVisible){ - return new Promise((resolve, reject) => { - var column = this.columnManager.findColumn(field); - - if(column){ - return this.columnManager.scrollToColumn(column, position, ifVisible); - }else{ - console.warn("Scroll Error - No matching column found:", field); - return Promise.reject("Scroll Error - No matching column found"); - } - }); - } - - //////////// General Public Functions //////////// - //redraw list without updating data - redraw(force){ - this.initGuard(); - - this.columnManager.redraw(force); - this.rowManager.redraw(force); - } - - setHeight(height){ - this.options.height = isNaN(height) ? height : height + "px"; - this.element.style.height = this.options.height; - this.rowManager.initializeRenderer(); - this.rowManager.redraw(true); - } - - //////////////////// Event Bus /////////////////// - - on(key, callback){ - this.externalEvents.subscribe(key, callback); - } - - off(key, callback){ - this.externalEvents.unsubscribe(key, callback); - } - - dispatchEvent(){ - var args = Array.from(arguments); - args.shift(); - - this.externalEvents.dispatch(...arguments); - } - - //////////////////// Alerts /////////////////// - - alert(contents, type){ - this.initGuard(); - - this.alertManager.alert(contents, type); - } - - clearAlert(){ - this.initGuard(); - - this.alertManager.clear(); - } - - ////////////// Extension Management ////////////// - modExists(plugin, required){ - if(this.modules[plugin]){ - return true; - }else{ - if(required){ - console.error("Tabulator Module Not Installed: " + plugin); - } - return false; - } - } - - module(key){ - var mod = this.modules[key]; - - if(!mod){ - console.error("Tabulator module not installed: " + key); - } - - return mod; - } -} - -//default setup options -Tabulator.defaultOptions = defaultOptions; - -//bind modules and static functionality -new ModuleBinder(Tabulator); - -export default Tabulator; diff --git a/tmp/tabulator-5.6.1/src/js/core/TabulatorFull.js b/tmp/tabulator-5.6.1/src/js/core/TabulatorFull.js deleted file mode 100644 index 334692b..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/TabulatorFull.js +++ /dev/null @@ -1,11 +0,0 @@ -//tabulator with all modules installed -import {default as Tabulator} from './Tabulator.js'; -import * as modules from '../core/modules/optional.js'; -import ModuleBinder from './tools/ModuleBinder.js'; - -class TabulatorFull extends Tabulator {} - -//bind modules and static functionality -new ModuleBinder(TabulatorFull, modules); - -export default TabulatorFull; diff --git a/tmp/tabulator-5.6.1/src/js/core/cell/Cell.js b/tmp/tabulator-5.6.1/src/js/core/cell/Cell.js deleted file mode 100644 index f597aaf..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/cell/Cell.js +++ /dev/null @@ -1,295 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; -import CellComponent from './CellComponent.js'; - -export default class Cell extends CoreFeature{ - constructor(column, row){ - super(column.table); - - this.table = column.table; - this.column = column; - this.row = row; - this.element = null; - this.value = null; - this.initialValue; - this.oldValue = null; - this.modules = {}; - - this.height = null; - this.width = null; - this.minWidth = null; - - this.component = null; - - this.loaded = false; //track if the cell has been added to the DOM yet - - this.build(); - } - - //////////////// Setup Functions ///////////////// - //generate element - build(){ - this.generateElement(); - - this.setWidth(); - - this._configureCell(); - - this.setValueActual(this.column.getFieldValue(this.row.data)); - - this.initialValue = this.value; - } - - generateElement(){ - this.element = document.createElement('div'); - this.element.className = "tabulator-cell"; - this.element.setAttribute("role", "gridcell"); - } - - _configureCell(){ - var element = this.element, - field = this.column.getField(), - vertAligns = { - top:"flex-start", - bottom:"flex-end", - middle:"center", - }, - hozAligns = { - left:"flex-start", - right:"flex-end", - center:"center", - }; - - //set text alignment - element.style.textAlign = this.column.hozAlign; - - if(this.column.vertAlign){ - element.style.display = "inline-flex"; - - element.style.alignItems = vertAligns[this.column.vertAlign] || ""; - - if(this.column.hozAlign){ - element.style.justifyContent = hozAligns[this.column.hozAlign] || ""; - } - } - - if(field){ - element.setAttribute("tabulator-field", field); - } - - //add class to cell if needed - if(this.column.definition.cssClass){ - var classNames = this.column.definition.cssClass.split(" "); - classNames.forEach((className) => { - element.classList.add(className); - }); - } - - this.dispatch("cell-init", this); - - //hide cell if not visible - if(!this.column.visible){ - this.hide(); - } - } - - //generate cell contents - _generateContents(){ - var val; - - val = this.chain("cell-format", this, null, () => { - return this.element.innerHTML = this.value; - }); - - switch(typeof val){ - case "object": - if(val instanceof Node){ - - //clear previous cell contents - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.element.appendChild(val); - }else{ - this.element.innerHTML = ""; - - if(val != null){ - console.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); - } - } - break; - case "undefined": - this.element.innerHTML = ""; - break; - default: - this.element.innerHTML = val; - } - } - - cellRendered(){ - this.dispatch("cell-rendered", this); - } - - //////////////////// Getters //////////////////// - getElement(containerOnly){ - if(!this.loaded){ - this.loaded = true; - if(!containerOnly){ - this.layoutElement(); - } - } - - return this.element; - } - - getValue(){ - return this.value; - } - - getOldValue(){ - return this.oldValue; - } - - //////////////////// Actions //////////////////// - setValue(value, mutate, force){ - var changed = this.setValueProcessData(value, mutate, force); - - if(changed){ - this.dispatch("cell-value-updated", this); - - this.cellRendered(); - - if(this.column.definition.cellEdited){ - this.column.definition.cellEdited.call(this.table, this.getComponent()); - } - - this.dispatchExternal("cellEdited", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - } - } - - setValueProcessData(value, mutate, force){ - var changed = false; - - if(this.value !== value || force){ - - changed = true; - - if(mutate){ - value = this.chain("cell-value-changing", [this, value], null, value); - } - } - - this.setValueActual(value); - - if(changed){ - this.dispatch("cell-value-changed", this); - } - - return changed; - } - - setValueActual(value){ - this.oldValue = this.value; - - this.value = value; - - this.dispatch("cell-value-save-before", this); - - this.column.setFieldValue(this.row.data, value); - - this.dispatch("cell-value-save-after", this); - - if(this.loaded){ - this.layoutElement(); - } - } - - layoutElement(){ - this._generateContents(); - - this.dispatch("cell-layout", this); - } - - setWidth(){ - this.width = this.column.width; - this.element.style.width = this.column.widthStyled; - } - - clearWidth(){ - this.width = ""; - this.element.style.width = ""; - } - - getWidth(){ - return this.width || this.element.offsetWidth; - } - - setMinWidth(){ - this.minWidth = this.column.minWidth; - this.element.style.minWidth = this.column.minWidthStyled; - } - - setMaxWidth(){ - this.maxWidth = this.column.maxWidth; - this.element.style.maxWidth = this.column.maxWidthStyled; - } - - checkHeight(){ - // var height = this.element.css("height"); - this.row.reinitializeHeight(); - } - - clearHeight(){ - this.element.style.height = ""; - this.height = null; - - this.dispatch("cell-height", this, ""); - } - - setHeight(){ - this.height = this.row.height; - this.element.style.height = this.row.heightStyled; - - this.dispatch("cell-height", this, this.row.heightStyled); - } - - getHeight(){ - return this.height || this.element.offsetHeight; - } - - show(){ - this.element.style.display = this.column.vertAlign ? "inline-flex" : ""; - } - - hide(){ - this.element.style.display = "none"; - } - - delete(){ - this.dispatch("cell-delete", this); - - if(!this.table.rowManager.redrawBlock && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.column.deleteCell(this); - this.row.deleteCell(this); - this.calcs = {}; - } - - getIndex(){ - return this.row.getCellIndex(this); - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new CellComponent(this); - } - - return this.component; - } -} diff --git a/tmp/tabulator-5.6.1/src/js/core/cell/CellComponent.js b/tmp/tabulator-5.6.1/src/js/core/cell/CellComponent.js deleted file mode 100644 index 2796a16..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/cell/CellComponent.js +++ /dev/null @@ -1,79 +0,0 @@ -//public cell object -export default class CellComponent { - - constructor (cell){ - this._cell = cell; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else{ - return target._cell.table.componentFunctionBinder.handle("cell", target._cell, name); - } - } - }); - } - - getValue(){ - return this._cell.getValue(); - } - - getOldValue(){ - return this._cell.getOldValue(); - } - - getInitialValue(){ - return this._cell.initialValue; - } - - getElement(){ - return this._cell.getElement(); - } - - getRow(){ - return this._cell.row.getComponent(); - } - - getData(transform){ - return this._cell.row.getData(transform); - } - getType(){ - return "cell"; - } - getField(){ - return this._cell.column.getField(); - } - - getColumn(){ - return this._cell.column.getComponent(); - } - - setValue(value, mutate){ - if(typeof mutate == "undefined"){ - mutate = true; - } - - this._cell.setValue(value, mutate); - } - - restoreOldValue(){ - this._cell.setValueActual(this._cell.getOldValue()); - } - - restoreInitialValue(){ - this._cell.setValueActual(this._cell.initialValue); - } - - checkHeight(){ - this._cell.checkHeight(); - } - - getTable(){ - return this._cell.table; - } - - _getSelf(){ - return this._cell; - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/column/Column.js b/tmp/tabulator-5.6.1/src/js/core/column/Column.js deleted file mode 100644 index 4135e18..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/column/Column.js +++ /dev/null @@ -1,959 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; -import ColumnComponent from './ColumnComponent.js'; -import defaultOptions from './defaults/options.js'; - -import Cell from '../cell/Cell.js'; - -class Column extends CoreFeature{ - - constructor(def, parent){ - super(parent.table); - - this.definition = def; //column definition - this.parent = parent; //hold parent object - this.type = "column"; //type of element - this.columns = []; //child columns - this.cells = []; //cells bound to this column - this.element = this.createElement(); //column header element - this.contentElement = false; - this.titleHolderElement = false; - this.titleElement = false; - this.groupElement = this.createGroupElement(); //column group holder element - this.isGroup = false; - this.hozAlign = ""; //horizontal text alignment - this.vertAlign = ""; //vert text alignment - - //multi dimensional filed handling - this.field =""; - this.fieldStructure = ""; - this.getFieldValue = ""; - this.setFieldValue = ""; - - this.titleDownload = null; - this.titleFormatterRendered = false; - - this.mapDefinitions(); - - this.setField(this.definition.field); - - this.modules = {}; //hold module variables; - - this.width = null; //column width - this.widthStyled = ""; //column width pre-styled to improve render efficiency - this.maxWidth = null; //column maximum width - this.maxWidthStyled = ""; //column maximum pre-styled to improve render efficiency - this.maxInitialWidth = null; - this.minWidth = null; //column minimum width - this.minWidthStyled = ""; //column minimum pre-styled to improve render efficiency - this.widthFixed = false; //user has specified a width for this column - - this.visible = true; //default visible state - - this.component = null; - - //initialize column - if(this.definition.columns){ - - this.isGroup = true; - - this.definition.columns.forEach((def, i) => { - var newCol = new Column(def, this); - this.attachColumn(newCol); - }); - - this.checkColumnVisibility(); - }else{ - parent.registerColumnField(this); - } - - this._initialize(); - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.setAttribute("role", "columnheader"); - el.setAttribute("aria-sort", "none"); - - switch(this.table.options.columnHeaderVertAlign){ - case "middle": - el.style.justifyContent = "center"; - break; - case "bottom": - el.style.justifyContent = "flex-end"; - break; - } - - return el; - } - - createGroupElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col-group-cols"); - - return el; - } - - mapDefinitions(){ - var defaults = this.table.options.columnDefaults; - - //map columnDefaults onto column definitions - if(defaults){ - for(let key in defaults){ - if(typeof this.definition[key] === "undefined"){ - this.definition[key] = defaults[key]; - } - } - } - - this.definition = this.table.columnManager.optionsList.generate(Column.defaultOptionList, this.definition); - } - - checkDefinition(){ - Object.keys(this.definition).forEach((key) => { - if(Column.defaultOptionList.indexOf(key) === -1){ - console.warn("Invalid column definition option in '" + (this.field || this.definition.title) + "' column:", key); - } - }); - } - - setField(field){ - this.field = field; - this.fieldStructure = field ? (this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field]) : []; - this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData; - this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData; - } - - //register column position with column manager - registerColumnPosition(column){ - this.parent.registerColumnPosition(column); - } - - //register column position with column manager - registerColumnField(column){ - this.parent.registerColumnField(column); - } - - //trigger position registration - reRegisterPosition(){ - if(this.isGroup){ - this.columns.forEach(function(column){ - column.reRegisterPosition(); - }); - }else{ - this.registerColumnPosition(this); - } - } - - //build header element - _initialize(){ - var def = this.definition; - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(def.headerVertical){ - this.element.classList.add("tabulator-col-vertical"); - - if(def.headerVertical === "flip"){ - this.element.classList.add("tabulator-col-vertical-flip"); - } - } - - this.contentElement = this._buildColumnHeaderContent(); - - this.element.appendChild(this.contentElement); - - if(this.isGroup){ - this._buildGroupHeader(); - }else{ - this._buildColumnHeader(); - } - - this.dispatch("column-init", this); - } - - //build header element for header - _buildColumnHeader(){ - var def = this.definition; - - this.dispatch("column-layout", this); - - //set column visibility - if(typeof def.visible != "undefined"){ - if(def.visible){ - this.show(true); - }else{ - this.hide(true); - } - } - - //assign additional css classes to column header - if(def.cssClass){ - var classNames = def.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - if(def.field){ - this.element.setAttribute("tabulator-field", def.field); - } - - //set min width if present - this.setMinWidth(parseInt(def.minWidth)); - - if (def.maxInitialWidth) { - this.maxInitialWidth = parseInt(def.maxInitialWidth); - } - - if(def.maxWidth){ - this.setMaxWidth(parseInt(def.maxWidth)); - } - - this.reinitializeWidth(); - - //set horizontal text alignment - this.hozAlign = this.definition.hozAlign; - this.vertAlign = this.definition.vertAlign; - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - } - - _buildColumnHeaderContent(){ - var contentElement = document.createElement("div"); - contentElement.classList.add("tabulator-col-content"); - - this.titleHolderElement = document.createElement("div"); - this.titleHolderElement.classList.add("tabulator-col-title-holder"); - - contentElement.appendChild(this.titleHolderElement); - - this.titleElement = this._buildColumnHeaderTitle(); - - this.titleHolderElement.appendChild(this.titleElement); - - return contentElement; - } - - //build title element of column - _buildColumnHeaderTitle(){ - var def = this.definition; - - var titleHolderElement = document.createElement("div"); - titleHolderElement.classList.add("tabulator-col-title"); - - if(def.headerWordWrap){ - titleHolderElement.classList.add("tabulator-col-title-wrap"); - } - - if(def.editableTitle){ - var titleElement = document.createElement("input"); - titleElement.classList.add("tabulator-title-editor"); - - titleElement.addEventListener("click", (e) => { - e.stopPropagation(); - titleElement.focus(); - }); - - titleElement.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - titleElement.addEventListener("change", () => { - def.title = titleElement.value; - this.dispatchExternal("columnTitleChanged", this.getComponent()); - }); - - titleHolderElement.appendChild(titleElement); - - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - titleElement.value = text || (def.title || " "); - }); - }else{ - titleElement.value = def.title || " "; - } - - }else{ - if(def.field){ - this.langBind("columns|" + def.field, (text) => { - this._formatColumnHeaderTitle(titleHolderElement, text || (def.title || " ")); - }); - }else{ - this._formatColumnHeaderTitle(titleHolderElement, def.title || " "); - } - } - - return titleHolderElement; - } - - _formatColumnHeaderTitle(el, title){ - var contents = this.chain("column-format", [this, title, el], null, () => { - return title; - }); - - switch(typeof contents){ - case "object": - if(contents instanceof Node){ - el.appendChild(contents); - }else{ - el.innerHTML = ""; - console.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); - } - break; - case "undefined": - el.innerHTML = ""; - break; - default: - el.innerHTML = contents; - } - } - - //build header element for column group - _buildGroupHeader(){ - this.element.classList.add("tabulator-col-group"); - this.element.setAttribute("role", "columngroup"); - this.element.setAttribute("aria-title", this.definition.title); - - //asign additional css classes to column header - if(this.definition.cssClass){ - var classNames = this.definition.cssClass.split(" "); - classNames.forEach((className) => { - this.element.classList.add(className); - }); - } - - this.titleElement.style.textAlign = this.definition.headerHozAlign; - - this.element.appendChild(this.groupElement); - } - - //flat field lookup - _getFlatData(data){ - return data[this.field]; - } - - //nested field lookup - _getNestedData(data){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length, - output; - - for(let i = 0; i < length; i++){ - - dataObj = dataObj[structure[i]]; - - output = dataObj; - - if(!dataObj){ - break; - } - } - - return output; - } - - //flat field set - _setFlatData(data, value){ - if(this.field){ - data[this.field] = value; - } - } - - //nested field set - _setNestedData(data, value){ - var dataObj = data, - structure = this.fieldStructure, - length = structure.length; - - for(let i = 0; i < length; i++){ - - if(i == length -1){ - dataObj[structure[i]] = value; - }else{ - if(!dataObj[structure[i]]){ - if(typeof value !== "undefined"){ - dataObj[structure[i]] = {}; - }else{ - break; - } - } - - dataObj = dataObj[structure[i]]; - } - } - } - - //attach column to this group - attachColumn(column){ - if(this.groupElement){ - this.columns.push(column); - this.groupElement.appendChild(column.getElement()); - - column.columnRendered(); - }else{ - console.warn("Column Warning - Column being attached to another column instead of column group"); - } - } - - //vertically align header in column - verticalAlign(alignment, height){ - - //calculate height of column header and group holder element - var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : (height || this.parent.getHeadersElement().clientHeight); - // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight; - - this.element.style.height = parentHeight + "px"; - - this.dispatch("column-height", this, this.element.style.height); - - if(this.isGroup){ - this.groupElement.style.minHeight = (parentHeight - this.contentElement.offsetHeight) + "px"; - } - - //vertically align cell contents - // if(!this.isGroup && alignment !== "top"){ - // if(alignment === "bottom"){ - // this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) + "px"; - // }else{ - // this.element.style.paddingTop = ((this.element.clientHeight - this.contentElement.offsetHeight) / 2) + "px"; - // } - // } - - this.columns.forEach(function(column){ - column.verticalAlign(alignment); - }); - } - - //clear vertical alignment - clearVerticalAlign(){ - this.element.style.paddingTop = ""; - this.element.style.height = ""; - this.element.style.minHeight = ""; - this.groupElement.style.minHeight = ""; - - this.columns.forEach(function(column){ - column.clearVerticalAlign(); - }); - - this.dispatch("column-height", this, ""); - } - - //// Retrieve Column Information //// - //return column header element - getElement(){ - return this.element; - } - - //return column group element - getGroupElement(){ - return this.groupElement; - } - - //return field name - getField(){ - return this.field; - } - - getTitleDownload() { - return this.titleDownload; - } - - //return the first column in a group - getFirstColumn(){ - if(!this.isGroup){ - return this; - }else{ - if(this.columns.length){ - return this.columns[0].getFirstColumn(); - }else{ - return false; - } - } - } - - //return the last column in a group - getLastColumn(){ - if(!this.isGroup){ - return this; - }else{ - if(this.columns.length){ - return this.columns[this.columns.length -1].getLastColumn(); - }else{ - return false; - } - } - } - - //return all columns in a group - getColumns(traverse){ - var columns = []; - - if(traverse){ - this.columns.forEach((column) => { - columns.push(column); - - columns = columns.concat(column.getColumns(true)); - }); - }else{ - columns = this.columns; - } - - return columns; - } - - //return all columns in a group - getCells(){ - return this.cells; - } - - //retrieve the top column in a group of columns - getTopColumn(){ - if(this.parent.isGroup){ - return this.parent.getTopColumn(); - }else{ - return this; - } - } - - //return column definition object - getDefinition(updateBranches){ - var colDefs = []; - - if(this.isGroup && updateBranches){ - this.columns.forEach(function(column){ - colDefs.push(column.getDefinition(true)); - }); - - this.definition.columns = colDefs; - } - - return this.definition; - } - - //////////////////// Actions //////////////////// - checkColumnVisibility(){ - var visible = false; - - this.columns.forEach(function(column){ - if(column.visible){ - visible = true; - } - }); - - if(visible){ - this.show(); - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - }else{ - this.hide(); - } - } - - //show column - show(silent, responsiveToggle){ - if(!this.visible){ - this.visible = true; - - this.element.style.display = ""; - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.show(); - }); - - if(!this.isGroup && this.width === null){ - this.reinitializeWidth(); - } - - this.table.columnManager.verticalAlignHeaders(); - - this.dispatch("column-show", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), true); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - //hide column - hide(silent, responsiveToggle){ - if(this.visible){ - this.visible = false; - - this.element.style.display = "none"; - - this.table.columnManager.verticalAlignHeaders(); - - if(this.parent.isGroup){ - this.parent.checkColumnVisibility(); - } - - this.cells.forEach(function(cell){ - cell.hide(); - }); - - this.dispatch("column-hide", this, responsiveToggle); - - if(!silent){ - this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - if(!this.silent){ - this.table.columnManager.rerenderColumns(); - } - } - } - - matchChildWidths(){ - var childWidth = 0; - - if(this.contentElement && this.columns.length){ - this.columns.forEach(function(column){ - if(column.visible){ - childWidth += column.getWidth(); - } - }); - - this.contentElement.style.maxWidth = (childWidth - 1) + "px"; - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - } - } - - removeChild(child){ - var index = this.columns.indexOf(child); - - if(index > -1){ - this.columns.splice(index, 1); - } - - if(!this.columns.length){ - this.delete(); - } - } - - setWidth(width){ - this.widthFixed = true; - this.setWidthActual(width); - } - - setWidthActual(width){ - if(isNaN(width)){ - width = Math.floor((this.table.element.clientWidth/100) * parseInt(width)); - } - - width = Math.max(this.minWidth, width); - - if(this.maxWidth){ - width = Math.min(this.maxWidth, width); - } - - this.width = width; - this.widthStyled = width ? width + "px" : ""; - - this.element.style.width = this.widthStyled; - - if(!this.isGroup){ - this.cells.forEach(function(cell){ - cell.setWidth(); - }); - } - - if(this.parent.isGroup){ - this.parent.matchChildWidths(); - } - - this.dispatch("column-width", this); - } - - checkCellHeights(){ - var rows = []; - - this.cells.forEach(function(cell){ - if(cell.row.heightInitialized){ - if(cell.row.getElement().offsetParent !== null){ - rows.push(cell.row); - cell.row.clearCellHeight(); - }else{ - cell.row.heightInitialized = false; - } - } - }); - - rows.forEach(function(row){ - row.calcHeight(); - }); - - rows.forEach(function(row){ - row.setCellHeight(); - }); - } - - getWidth(){ - var width = 0; - - if(this.isGroup){ - this.columns.forEach(function(column){ - if(column.visible){ - width += column.getWidth(); - } - }); - }else{ - width = this.width; - } - - return width; - } - - getLeftOffset(){ - var offset = this.element.offsetLeft; - - if(this.parent.isGroup){ - offset += this.parent.getLeftOffset(); - } - - return offset; - } - - getHeight(){ - return Math.ceil(this.element.getBoundingClientRect().height); - } - - setMinWidth(minWidth){ - if(this.maxWidth && minWidth > this.maxWidth){ - minWidth = this.maxWidth; - - console.warn("the minWidth ("+ minWidth + "px) for column '" + this.field + "' cannot be bigger that its maxWidth ("+ this.maxWidthStyled + ")"); - } - - this.minWidth = minWidth; - this.minWidthStyled = minWidth ? minWidth + "px" : ""; - - this.element.style.minWidth = this.minWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMinWidth(); - }); - } - - setMaxWidth(maxWidth){ - if(this.minWidth && maxWidth < this.minWidth){ - maxWidth = this.minWidth; - - console.warn("the maxWidth ("+ maxWidth + "px) for column '" + this.field + "' cannot be smaller that its minWidth ("+ this.minWidthStyled + ")"); - } - - this.maxWidth = maxWidth; - this.maxWidthStyled = maxWidth ? maxWidth + "px" : ""; - - this.element.style.maxWidth = this.maxWidthStyled; - - this.cells.forEach(function(cell){ - cell.setMaxWidth(); - }); - } - - delete(){ - return new Promise((resolve, reject) => { - if(this.isGroup){ - this.columns.forEach(function(column){ - column.delete(); - }); - } - - this.dispatch("column-delete", this); - - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.element = false; - this.contentElement = false; - this.titleElement = false; - this.groupElement = false; - - if(this.parent.isGroup){ - this.parent.removeChild(this); - } - - this.table.columnManager.deregisterColumn(this); - - this.table.columnManager.rerenderColumns(true); - - this.dispatch("column-deleted", this); - - resolve(); - }); - } - - columnRendered(){ - if(this.titleFormatterRendered){ - this.titleFormatterRendered(); - } - - this.dispatch("column-rendered", this); - } - - //////////////// Cell Management ///////////////// - //generate cell for this column - generateCell(row){ - var cell = new Cell(this, row); - - this.cells.push(cell); - - return cell; - } - - nextColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._nextVisibleColumn(index + 1) : false; - } - - _nextVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._nextVisibleColumn(index + 1); - } - - prevColumn(){ - var index = this.table.columnManager.findColumnIndex(this); - return index > -1 ? this._prevVisibleColumn(index - 1) : false; - } - - _prevVisibleColumn(index){ - var column = this.table.columnManager.getColumnByIndex(index); - return !column || column.visible ? column : this._prevVisibleColumn(index - 1); - } - - reinitializeWidth(force){ - this.widthFixed = false; - - //set width if present - if(typeof this.definition.width !== "undefined" && !force){ - // maxInitialWidth ignored here as width specified - this.setWidth(this.definition.width); - } - - this.dispatch("column-width-fit-before", this); - - this.fitToData(force); - - this.dispatch("column-width-fit-after", this); - } - - //set column width to maximum cell width for non group columns - fitToData(force){ - if(this.isGroup){ - return; - } - - if(!this.widthFixed){ - this.element.style.width = ""; - - this.cells.forEach((cell) => { - cell.clearWidth(); - }); - } - - var maxWidth = this.element.offsetWidth; - - if(!this.width || !this.widthFixed){ - this.cells.forEach((cell) => { - var width = cell.getWidth(); - - if(width > maxWidth){ - maxWidth = width; - } - }); - - if(maxWidth){ - var setTo = maxWidth + 1; - if (this.maxInitialWidth && !force) { - setTo = Math.min(setTo, this.maxInitialWidth); - } - this.setWidthActual(setTo); - } - } - } - - updateDefinition(updates){ - var definition; - - if(!this.isGroup){ - if(!this.parent.isGroup){ - definition = Object.assign({}, this.getDefinition()); - definition = Object.assign(definition, updates); - - return this.table.columnManager.addColumn(definition, false, this) - .then((column) => { - - if(definition.field == this.field){ - this.field = false; //clear field name to prevent deletion of duplicate column from arrays - } - - return this.delete() - .then(() => { - return column.getComponent(); - }); - - }); - }else{ - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - }else{ - console.error("Column Update Error - The updateDefinition function is only available on ungrouped columns"); - return Promise.reject("Column Update Error - The updateDefinition function is only available on columns, not column groups"); - } - } - - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new ColumnComponent(this); - } - - return this.component; - } - - getPosition(){ - return this.table.columnManager.getVisibleColumnsByIndex().indexOf(this) + 1; - } -} - -Column.defaultOptionList = defaultOptions; - -export default Column; diff --git a/tmp/tabulator-5.6.1/src/js/core/column/ColumnComponent.js b/tmp/tabulator-5.6.1/src/js/core/column/ColumnComponent.js deleted file mode 100644 index 1c76eb2..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/column/ColumnComponent.js +++ /dev/null @@ -1,153 +0,0 @@ -import Column from './Column.js'; - -//public column object -export default class ColumnComponent { - constructor (column){ - this._column = column; - this.type = "ColumnComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else{ - return target._column.table.componentFunctionBinder.handle("column", target._column, name); - } - } - }); - } - - getElement(){ - return this._column.getElement(); - } - - getDefinition(){ - return this._column.getDefinition(); - } - - getField(){ - return this._column.getField(); - } - - getTitleDownload() { - return this._column.getTitleDownload(); - } - - getCells(){ - var cells = []; - - this._column.cells.forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - isVisible(){ - return this._column.visible; - } - - show(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.show(); - }); - }else{ - this._column.show(); - } - } - - hide(){ - if(this._column.isGroup){ - this._column.columns.forEach(function(column){ - column.hide(); - }); - }else{ - this._column.hide(); - } - } - - toggle(){ - if(this._column.visible){ - this.hide(); - }else{ - this.show(); - } - } - - delete(){ - return this._column.delete(); - } - - getSubColumns(){ - var output = []; - - if(this._column.columns.length){ - this._column.columns.forEach(function(column){ - output.push(column.getComponent()); - }); - } - - return output; - } - - getParentColumn(){ - return this._column.parent instanceof Column ? this._column.parent.getComponent() : false; - } - - _getSelf(){ - return this._column; - } - - scrollTo(position, ifVisible){ - return this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible); - } - - getTable(){ - return this._column.table; - } - - move(to, after){ - var toColumn = this._column.table.columnManager.findColumn(to); - - if(toColumn){ - this._column.table.columnManager.moveColumn(this._column, toColumn, after); - }else{ - console.warn("Move Error - No matching column found:", toColumn); - } - } - - getNextColumn(){ - var nextCol = this._column.nextColumn(); - - return nextCol ? nextCol.getComponent() : false; - } - - getPrevColumn(){ - var prevCol = this._column.prevColumn(); - - return prevCol ? prevCol.getComponent() : false; - } - - updateDefinition(updates){ - return this._column.updateDefinition(updates); - } - - getWidth(){ - return this._column.getWidth(); - } - - setWidth(width){ - var result; - - if(width === true){ - result = this._column.reinitializeWidth(true); - }else{ - result = this._column.setWidth(width); - } - - this._column.table.columnManager.rerenderColumns(true); - - return result; - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/column/defaults/options.js b/tmp/tabulator-5.6.1/src/js/core/column/defaults/options.js deleted file mode 100644 index 1046463..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/column/defaults/options.js +++ /dev/null @@ -1,18 +0,0 @@ -export default { - "title": undefined, - "field": undefined, - "columns": undefined, - "visible": undefined, - "hozAlign": undefined, - "vertAlign": undefined, - "width": undefined, - "minWidth": 40, - "maxWidth": undefined, - "maxInitialWidth": undefined, - "cssClass": undefined, - "variableHeight": undefined, - "headerVertical": undefined, - "headerHozAlign": undefined, - "headerWordWrap": false, - "editableTitle": undefined, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/defaults/options.js b/tmp/tabulator-5.6.1/src/js/core/defaults/options.js deleted file mode 100644 index 230f6b4..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/defaults/options.js +++ /dev/null @@ -1,65 +0,0 @@ -export default { - - debugEventsExternal:false, //flag to console log events - debugEventsInternal:false, //flag to console log events - debugInvalidOptions:true, //allow toggling of invalid option warnings - debugInvalidComponentFuncs:true, //allow toggling of invalid component warnings - debugInitialization:true, //allow toggling of pre initialization function call warnings - debugDeprecation:true, //allow toggling of deprecation warnings - - height:false, //height of tabulator - minHeight:false, //minimum height of tabulator - maxHeight:false, //maximum height of tabulator - - columnHeaderVertAlign:"top", //vertical alignment of column headers - - popupContainer:false, - - columns:[],//store for colum header info - columnDefaults:{}, //store column default props - - data:false, //default starting data - - autoColumns:false, //build columns from data row structure - autoColumnsDefinitions:false, - - nestedFieldSeparator:".", //separator for nested data - - footerElement:false, //hold footer element - - index:"id", //filed for row index - - textDirection:"auto", - - addRowPos:"bottom", //position to insert blank rows, top|bottom - - headerVisible:true, //hide header - - renderVertical:"virtual", - renderHorizontal:"basic", - renderVerticalBuffer:0, // set virtual DOM buffer size - - scrollToRowPosition:"top", - scrollToRowIfVisible:true, - - scrollToColumnPosition:"left", - scrollToColumnIfVisible:true, - - rowFormatter:false, - rowFormatterPrint:null, - rowFormatterClipboard:null, - rowFormatterHtmlOutput:null, - - rowHeight:null, - - placeholder:false, - - dataLoader:true, - dataLoaderLoading:false, - dataLoaderError:false, - dataLoaderErrorTimeout:3000, - - dataSendParams:{}, - - dataReceiveParams:{}, -}; diff --git a/tmp/tabulator-5.6.1/src/js/core/modules/core.js b/tmp/tabulator-5.6.1/src/js/core/modules/core.js deleted file mode 100644 index 2755a07..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/modules/core.js +++ /dev/null @@ -1,3 +0,0 @@ -export {default as LayoutModule} from '../../modules/Layout/Layout.js'; -export {default as LocalizeModule} from '../../modules/Localize/Localize.js'; -export {default as CommsModule} from '../../modules/Comms/Comms.js'; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/modules/optional.js b/tmp/tabulator-5.6.1/src/js/core/modules/optional.js deleted file mode 100644 index 3f7f153..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/modules/optional.js +++ /dev/null @@ -1,36 +0,0 @@ -export {default as AccessorModule} from '../../modules/Accessor/Accessor.js'; -export {default as AjaxModule} from '../../modules/Ajax/Ajax.js'; -export {default as ClipboardModule} from '../../modules/Clipboard/Clipboard.js'; -export {default as ColumnCalcsModule} from '../../modules/ColumnCalcs/ColumnCalcs.js'; -export {default as DataTreeModule} from '../../modules/DataTree/DataTree.js'; -export {default as DownloadModule} from '../../modules/Download/Download.js'; -export {default as EditModule} from '../../modules/Edit/Edit.js'; -export {default as ExportModule} from '../../modules/Export/Export.js'; -export {default as FilterModule} from '../../modules/Filter/Filter.js'; -export {default as FormatModule} from '../../modules/Format/Format.js'; -export {default as FrozenColumnsModule} from '../../modules/FrozenColumns/FrozenColumns.js'; -export {default as FrozenRowsModule} from '../../modules/FrozenRows/FrozenRows.js'; -export {default as GroupRowsModule} from '../../modules/GroupRows/GroupRows.js'; -export {default as HistoryModule} from '../../modules/History/History.js'; -export {default as HtmlTableImportModule} from '../../modules/HtmlTableImport/HtmlTableImport.js'; -export {default as ImportModule} from '../../modules/Import/Import.js'; -export {default as InteractionModule} from '../../modules/Interaction/Interaction.js'; -export {default as KeybindingsModule} from '../../modules/Keybindings/Keybindings.js'; -export {default as MenuModule} from '../../modules/Menu/Menu.js'; -export {default as MoveColumnsModule} from '../../modules/MoveColumns/MoveColumns.js'; -export {default as MoveRowsModule} from '../../modules/MoveRows/MoveRows.js'; -export {default as MutatorModule} from '../../modules/Mutator/Mutator.js'; -export {default as PageModule} from '../../modules/Page/Page.js'; -export {default as PersistenceModule} from '../../modules/Persistence/Persistence.js'; -export {default as PopupModule} from '../../modules/Popup/Popup.js'; -export {default as PrintModule} from '../../modules/Print/Print.js'; -export {default as ReactiveDataModule} from '../../modules/ReactiveData/ReactiveData.js'; -export {default as ResizeColumnsModule} from '../../modules/ResizeColumns/ResizeColumns.js'; -export {default as ResizeRowsModule} from '../../modules/ResizeRows/ResizeRows.js'; -export {default as ResizeTableModule} from '../../modules/ResizeTable/ResizeTable.js'; -export {default as ResponsiveLayoutModule} from '../../modules/ResponsiveLayout/ResponsiveLayout.js'; -export {default as SelectRowModule} from '../../modules/SelectRow/SelectRow.js'; -export {default as SortModule} from '../../modules/Sort/Sort.js'; -export {default as SelectRangeModule} from '../../modules/SelectRange/SelectRange.js'; -export {default as TooltipModule} from '../../modules/Tooltip/Tooltip.js'; -export {default as ValidateModule} from '../../modules/Validate/Validate.js'; diff --git a/tmp/tabulator-5.6.1/src/js/core/rendering/Renderer.js b/tmp/tabulator-5.6.1/src/js/core/rendering/Renderer.js deleted file mode 100644 index 5f58249..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/rendering/Renderer.js +++ /dev/null @@ -1,204 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; -import Helpers from '../tools/Helpers.js'; - -export default class Renderer extends CoreFeature{ - constructor(table){ - super(table); - - this.elementVertical = table.rowManager.element; - this.elementHorizontal = table.columnManager.element; - this.tableElement = table.rowManager.tableElement; - - this.verticalFillMode = "fit"; // used by row manager to determine how to size the render area ("fit" - fits container to the contents, "fill" - fills the container without resizing it) - } - - - /////////////////////////////////// - /////// Internal Bindings ///////// - /////////////////////////////////// - - initialize(){ - //initialize core functionality - } - - clearRows(){ - //clear down existing rows layout - } - - clearColumns(){ - //clear down existing columns layout - } - - - reinitializeColumnWidths(columns){ - //resize columns to fit data - } - - - renderRows(){ - //render rows from a clean slate - } - - renderColumns(){ - //render columns from a clean slate - } - - rerenderRows(callback){ - // rerender rows and keep position - if(callback){ - callback(); - } - } - - rerenderColumns(update, blockRedraw){ - //rerender columns - } - - renderRowCells(row){ - //render the cells in a row - } - - rerenderRowCells(row, force){ - //rerender the cells in a row - } - - scrollColumns(left, dir){ - //handle horizontal scrolling - } - - scrollRows(top, dir){ - //handle vertical scrolling - } - - resize(){ - //container has resized, carry out any needed recalculations (DO NOT RERENDER IN THIS FUNCTION) - } - - scrollToRow(row){ - //scroll to a specific row - } - - scrollToRowNearestTop(row){ - //determine weather the row is nearest the top or bottom of the table, return true for top or false for bottom - } - - visibleRows(includingBuffer){ - //return the visible rows - return []; - } - - /////////////////////////////////// - //////// Helper Functions ///////// - /////////////////////////////////// - - rows(){ - return this.table.rowManager.getDisplayRows(); - } - - styleRow(row, index){ - var rowEl = row.getElement(); - - if(index % 2){ - rowEl.classList.add("tabulator-row-even"); - rowEl.classList.remove("tabulator-row-odd"); - }else{ - rowEl.classList.add("tabulator-row-odd"); - rowEl.classList.remove("tabulator-row-even"); - } - } - - /////////////////////////////////// - /////// External Triggers ///////// - /////// (DO NOT OVERRIDE) ///////// - /////////////////////////////////// - - clear(){ - //clear down existing layout - this.clearRows(); - this.clearColumns(); - } - - render(){ - //render from a clean slate - this.renderRows(); - this.renderColumns(); - } - - rerender(callback){ - // rerender and keep position - this.rerenderRows(); - this.rerenderColumns(); - } - - scrollToRowPosition(row, position, ifVisible){ - var rowIndex = this.rows().indexOf(row), - rowEl = row.getElement(), - offset = 0; - - return new Promise((resolve, reject) => { - if(rowIndex > -1){ - - if(typeof ifVisible === "undefined"){ - ifVisible = this.table.options.scrollToRowIfVisible; - } - - //check row visibility - if(!ifVisible){ - if(Helpers.elVisible(rowEl)){ - offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top; - - if(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){ - resolve(); - return false; - } - } - } - - if(typeof position === "undefined"){ - position = this.table.options.scrollToRowPosition; - } - - if(position === "nearest"){ - position = this.scrollToRowNearestTop(row) ? "top" : "bottom"; - } - - //scroll to row - this.scrollToRow(row); - - //align to correct position - switch(position){ - case "middle": - case "center": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop + (rowEl.offsetTop - this.elementVertical.scrollTop) - ((this.elementVertical.scrollHeight - rowEl.offsetTop) / 2); - }else{ - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.clientHeight / 2); - } - - break; - - case "bottom": - - if(this.elementVertical.scrollHeight - this.elementVertical.scrollTop == this.elementVertical.clientHeight){ - this.elementVertical.scrollTop = this.elementVertical.scrollTop - (this.elementVertical.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight; - }else{ - this.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight; - } - - break; - - case "top": - this.elementVertical.scrollTop = rowEl.offsetTop; - break; - } - - resolve(); - - }else{ - console.warn("Scroll Error - Row not visible"); - reject("Scroll Error - Row not visible"); - } - }); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/BasicHorizontal.js b/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/BasicHorizontal.js deleted file mode 100644 index 747903f..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/BasicHorizontal.js +++ /dev/null @@ -1,27 +0,0 @@ -import Renderer from '../Renderer.js'; - -export default class BasicHorizontal extends Renderer{ - constructor(table){ - super(table); - } - - renderRowCells(row, inFragment) { - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - if(!inFragment){ - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - reinitializeColumnWidths(columns){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/BasicVertical.js b/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/BasicVertical.js deleted file mode 100644 index 8af834d..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/BasicVertical.js +++ /dev/null @@ -1,103 +0,0 @@ -import Renderer from '../Renderer.js'; -import Helpers from '../../tools/Helpers.js'; - -export default class BasicVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - } - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.scrollTop = 0; - element.scrollLeft = 0; - - element.style.minWidth = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - } - - renderRows() { - var element = this.tableElement, - onlyGroupHeaders = true, - tableFrag = document.createDocumentFragment(), - rows = this.rows(); - - rows.forEach((row, index) => { - this.styleRow(row, index); - row.initialize(false, true); - - if (row.type !== "group") { - onlyGroupHeaders = false; - } - - tableFrag.appendChild(row.getElement()); - }); - - element.appendChild(tableFrag); - - rows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - rows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else{ - element.style.minWidth = ""; - } - } - - - rerenderRows(callback){ - this.clearRows(); - - if(callback){ - callback(); - } - - this.renderRows(); - - if(!this.rows().length){ - this.table.rowManager.tableEmpty(); - } - } - - scrollToRowNearestTop(row){ - var rowTop = Helpers.elOffset(row.getElement()).top; - - return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop)); - } - - scrollToRow(row){ - var rowEl = row.getElement(); - - this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop; - } - - visibleRows(includingBuffer){ - return this.rows(); - } - -} diff --git a/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/VirtualDomHorizontal.js b/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/VirtualDomHorizontal.js deleted file mode 100644 index 9044f4e..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/VirtualDomHorizontal.js +++ /dev/null @@ -1,583 +0,0 @@ -import Renderer from '../Renderer.js'; - -export default class VirtualDomHorizontal extends Renderer{ - constructor(table){ - super(table); - - this.leftCol = 0; - this.rightCol = 0; - this.scrollLeft = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - - this.fitDataColAvg = 0; - - this.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen - - this.visibleRows = null; - - this.initialized = false; - this.isFitData = false; - - this.columns = []; - } - - initialize(){ - this.compatibilityCheck(); - this.layoutCheck(); - this.vertScrollListen(); - } - - compatibilityCheck(){ - if(this.options("layout") == "fitDataTable"){ - console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode"); - } - - if(this.options("responsiveLayout")){ - console.warn("Horizontal Virtual DOM is not compatible with responsive columns"); - } - - if(this.options("rtl")){ - console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction"); - } - } - - layoutCheck(){ - this.isFitData = this.options("layout").startsWith('fitData'); - } - - vertScrollListen(){ - this.subscribe("scroll-vertical", this.clearVisRowCache.bind(this)); - this.subscribe("data-refreshed", this.clearVisRowCache.bind(this)); - } - - clearVisRowCache(){ - this.visibleRows = null; - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - renderColumns(row, force){ - this.dataChange(); - } - - - scrollColumns(left, dir){ - if(this.scrollLeft != left){ - this.scrollLeft = left; - - this.scroll(left - (this.vDomScrollPosLeft + this.windowBuffer)); - } - } - - calcWindowBuffer(){ - var buffer = this.elementVertical.clientWidth; - - this.table.columnManager.columnsByIndex.forEach((column) => { - if(column.visible){ - var width = column.getWidth(); - - if(width > buffer){ - buffer = width; - } - } - }); - - this.windowBuffer = buffer * 2; - } - - rerenderColumns(update, blockRedraw){ - var old = { - cols:this.columns, - leftCol:this.leftCol, - rightCol:this.rightCol, - }, - colPos = 0; - - if(update && !this.initialized){ - return; - } - - this.clear(); - - this.calcWindowBuffer(); - - this.scrollLeft = this.elementVertical.scrollLeft; - - this.vDomScrollPosLeft = this.scrollLeft - this.windowBuffer; - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - this.table.columnManager.columnsByIndex.forEach((column) => { - var config = {}, - width; - - if(column.visible){ - if(!column.modules.frozen){ - width = column.getWidth(); - - config.leftPos = colPos; - config.rightPos = colPos + width; - - config.width = width; - - if (this.isFitData) { - config.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true; - } - - if((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){ - //column is visible - - if(this.leftCol == -1){ - this.leftCol = this.columns.length; - this.vDomPadLeft = colPos; - } - - this.rightCol = this.columns.length; - }else{ - // column is hidden - if(this.leftCol !== -1){ - this.vDomPadRight += width; - } - } - - this.columns.push(column); - - column.modules.vdomHoz = config; - - colPos += width; - } - } - }); - - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - - this.initialized = true; - - if(!blockRedraw){ - if(!update || this.reinitChanged(old)){ - this.reinitializeRows(); - } - } - - this.elementVertical.scrollLeft = this.scrollLeft; - } - - renderRowCells(row){ - if(this.initialized){ - this.initializeRow(row); - }else{ - const rowFrag = document.createDocumentFragment(); - row.cells.forEach((cell) => { - rowFrag.appendChild(cell.getElement()); - }); - row.element.appendChild(rowFrag); - - row.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - } - - rerenderRowCells(row, force){ - this.reinitializeRow(row, force); - } - - reinitializeColumnWidths(columns){ - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.columns[i].reinitializeWidth(); - } - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - deinitialize(){ - this.initialized = false; - } - - clear(){ - this.columns = []; - - this.leftCol = -1; - this.rightCol = 0; - - this.vDomScrollPosLeft = 0; - this.vDomScrollPosRight = 0; - this.vDomPadLeft = 0; - this.vDomPadRight = 0; - } - - dataChange(){ - var change = false, - row, rowEl; - - if(this.isFitData){ - this.table.columnManager.columnsByIndex.forEach((column) => { - if(!column.definition.width && column.visible){ - change = true; - } - }); - - if(change && this.table.rowManager.getDisplayRows().length){ - this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer; - - row = this.chain("rows-sample", [1], [], () => { - return this.table.rowManager.getDisplayRows(); - })[0]; - - if(row){ - rowEl = row.getElement(); - - row.generateCells(); - - this.tableElement.appendChild(rowEl); - - for(let colEnd = 0; colEnd < row.cells.length; colEnd++){ - let cell = row.cells[colEnd]; - rowEl.appendChild(cell.getElement()); - - cell.column.reinitializeWidth(); - } - - rowEl.parentNode.removeChild(rowEl); - - this.rerenderColumns(false, true); - } - } - }else{ - if(this.options("layout") === "fitColumns"){ - this.layoutRefresh(); - this.rerenderColumns(false, true); - } - } - } - - reinitChanged(old){ - var match = true; - - if(old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol){ - return true; - } - - old.cols.forEach((col, i) => { - if(col !== this.columns[i]){ - match = false; - } - }); - - return !match; - } - - reinitializeRows(){ - var visibleRows = this.getVisibleRows(), - otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - visibleRows.forEach((row) => { - this.reinitializeRow(row, true); - }); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - } - - getVisibleRows(){ - if (!this.visibleRows){ - this.visibleRows = this.table.rowManager.getVisibleRows(); - } - - return this.visibleRows; - } - - scroll(diff){ - this.vDomScrollPosLeft += diff; - this.vDomScrollPosRight += diff; - - if(Math.abs(diff) > (this.windowBuffer / 2)){ - this.rerenderColumns(); - }else{ - if(diff > 0){ - //scroll right - this.addColRight(); - this.removeColLeft(); - }else{ - //scroll left - this.addColLeft(); - this.removeColRight(); - } - } - } - - colPositionAdjust (start, end, diff){ - for(let i = start; i < end; i++){ - let column = this.columns[i]; - - column.modules.vdomHoz.leftPos += diff; - column.modules.vdomHoz.rightPos += diff; - } - } - - addColRight(){ - var changes = false, - working = true; - - while(working){ - - let column = this.columns[this.rightCol + 1]; - - if(column){ - if(column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling); - cell.cellRendered(); - } - }); - - this.fitDataColActualWidthCheck(column); - - this.rightCol++; // Don't move this below the >= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - - if(this.rightCol >= (this.columns.length - 1)){ - this.vDomPadRight = 0; - }else{ - this.vDomPadRight -= column.getWidth(); - } - }else{ - working = false; - } - }else{ - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - addColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol - 1]; - - if(column){ - if(column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement()); - cell.cellRendered(); - } - }); - - this.leftCol--; // don't move this below the <= check below - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - - if(this.leftCol <= 0){ // replicating logic in addColRight - this.vDomPadLeft = 0; - }else{ - this.vDomPadLeft -= column.getWidth(); - } - - let diff = this.fitDataColActualWidthCheck(column); - - if(diff){ - this.scrollLeft = this.elementVertical.scrollLeft = this.elementVertical.scrollLeft + diff; - this.vDomPadRight -= diff; - } - - }else{ - working = false; - } - }else{ - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - removeColRight(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.rightCol]; - - if(column){ - if(column.modules.vdomHoz.leftPos > this.vDomScrollPosRight){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColRight", ex.message); - } - } - }); - - this.vDomPadRight += column.getWidth(); - this.rightCol --; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.rightCol = this.rightCol; - } - }); - }else{ - working = false; - } - }else{ - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingRight = this.vDomPadRight + "px"; - } - } - - removeColLeft(){ - var changes = false, - working = true; - - while(working){ - let column = this.columns[this.leftCol]; - - if(column){ - if(column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft){ - changes = true; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - var cell = row.getCell(column); - - try { - row.getElement().removeChild(cell.getElement()); - } catch (ex) { - console.warn("Could not removeColLeft", ex.message); - } - } - }); - - this.vDomPadLeft += column.getWidth(); - this.leftCol ++; - - this.getVisibleRows().forEach((row) => { - if(row.type !== "group"){ - row.modules.vdomHoz.leftCol = this.leftCol; - } - }); - }else{ - working = false; - } - }else{ - working = false; - } - } - - if(changes){ - this.tableElement.style.paddingLeft = this.vDomPadLeft + "px"; - } - } - - fitDataColActualWidthCheck(column){ - var newWidth, widthDiff; - - if(column.modules.vdomHoz.fitDataCheck){ - column.reinitializeWidth(); - - newWidth = column.getWidth(); - widthDiff = newWidth - column.modules.vdomHoz.width; - - if(widthDiff){ - column.modules.vdomHoz.rightPos += widthDiff; - column.modules.vdomHoz.width = newWidth; - this.colPositionAdjust(this.columns.indexOf(column) + 1, this.columns.length, widthDiff); - } - - column.modules.vdomHoz.fitDataCheck = false; - } - - return widthDiff; - } - - initializeRow(row){ - if(row.type !== "group"){ - row.modules.vdomHoz = { - leftCol:this.leftCol, - rightCol:this.rightCol, - }; - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.leftColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - - for(let i = this.leftCol; i <= this.rightCol; i++){ - this.appendCell(row, this.columns[i]); - } - - if(this.table.modules.frozenColumns){ - this.table.modules.frozenColumns.rightColumns.forEach((column) => { - this.appendCell(row, column); - }); - } - } - } - - appendCell(row, column){ - if(column && column.visible){ - let cell = row.getCell(column); - - row.getElement().appendChild(cell.getElement()); - cell.cellRendered(); - } - } - - reinitializeRow(row, force){ - if(row.type !== "group"){ - if(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){ - - var rowEl = row.getElement(); - while(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild); - - this.initializeRow(row); - } - } - } -} diff --git a/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/VirtualDomVertical.js b/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/VirtualDomVertical.js deleted file mode 100644 index c4b775b..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/rendering/renderers/VirtualDomVertical.js +++ /dev/null @@ -1,637 +0,0 @@ -import Renderer from '../Renderer.js'; -import Helpers from '../../tools/Helpers.js'; - -export default class VirtualDomVertical extends Renderer{ - constructor(table){ - super(table); - - this.verticalFillMode = "fill"; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomRowHeight = 20; //approximation of row heights for padding - - this.vDomTop = 0; //hold position for first rendered row in the virtual DOM - this.vDomBottom = 0; //hold position for last rendered row in the virtual DOM - - this.vDomScrollPosTop = 0; //last scroll position of the vDom top; - this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom; - - this.vDomTopPad = 0; //hold value of padding for top of virtual DOM - this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM - - this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go - - this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling - - this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows) - this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin - - this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed - this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed - } - - ////////////////////////////////////// - ///////// Public Functions /////////// - ////////////////////////////////////// - - clearRows(){ - var element = this.tableElement; - - // element.children.detach(); - while(element.firstChild) element.removeChild(element.firstChild); - - element.style.paddingTop = ""; - element.style.paddingBottom = ""; - element.style.minHeight = ""; - element.style.display = ""; - element.style.visibility = ""; - - this.elementVertical.scrollTop = 0; - this.elementVertical.scrollLeft = 0; - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.vDomTop = 0; - this.vDomBottom = 0; - this.vDomTopPad = 0; - this.vDomBottomPad = 0; - this.vDomScrollPosTop = 0; - this.vDomScrollPosBottom = 0; - } - - renderRows(){ - this._virtualRenderFill(); - } - - rerenderRows(callback){ - var scrollTop = this.elementVertical.scrollTop; - var topRow = false; - var topOffset = false; - - var left = this.table.rowManager.scrollLeft; - - var rows = this.rows(); - - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - - if(rows[i]){ - var diff = scrollTop - rows[i].getElement().offsetTop; - - if(topOffset === false || Math.abs(diff) < topOffset){ - topOffset = diff; - topRow = i; - }else{ - break; - } - } - } - - rows.forEach((row) => { - row.deinitializeHeight(); - }); - - if(callback){ - callback(); - } - - if(this.rows().length){ - this._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0); - }else{ - this.clear(); - this.table.rowManager.tableEmpty(); - } - - this.scrollColumns(left); - } - - scrollColumns(left){ - this.table.rowManager.scrollHorizontal(left); - } - - scrollRows(top, dir){ - var topDiff = top - this.vDomScrollPosTop; - var bottomDiff = top - this.vDomScrollPosBottom; - var margin = this.vDomWindowBuffer * 2; - var rows = this.rows(); - - this.scrollTop = top; - - if(-topDiff > margin || bottomDiff > margin){ - //if big scroll redraw table; - var left = this.table.rowManager.scrollLeft; - this._virtualRenderFill(Math.floor((this.elementVertical.scrollTop / this.elementVertical.scrollHeight) * rows.length)); - this.scrollColumns(left); - }else{ - - if(dir){ - //scrolling up - if(topDiff < 0){ - this._addTopRow(rows, -topDiff); - } - - if(bottomDiff < 0){ - //hide bottom row if needed - if(this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer){ - this._removeBottomRow(rows, -bottomDiff); - }else{ - this.vDomScrollPosBottom = this.scrollTop; - } - } - }else{ - - if(bottomDiff >= 0){ - this._addBottomRow(rows, bottomDiff); - } - - //scrolling down - if(topDiff >= 0){ - //hide top row if needed - if(this.scrollTop > this.vDomWindowBuffer){ - this._removeTopRow(rows, topDiff); - }else{ - this.vDomScrollPosTop = this.scrollTop; - } - } - } - } - } - - resize(){ - this.vDomWindowBuffer = this.table.options.renderVerticalBuffer || this.elementVertical.clientHeight; - } - - scrollToRowNearestTop(row){ - var rowIndex = this.rows().indexOf(row); - - return !(Math.abs(this.vDomTop - rowIndex) > Math.abs(this.vDomBottom - rowIndex)); - } - - scrollToRow(row){ - var index = this.rows().indexOf(row); - - if(index > -1){ - this._virtualRenderFill(index, true); - } - } - - visibleRows(includingBuffer){ - var topEdge = this.elementVertical.scrollTop, - bottomEdge = this.elementVertical.clientHeight + topEdge, - topFound = false, - topRow = 0, - bottomRow = 0, - rows = this.rows(); - - if(includingBuffer){ - topRow = this.vDomTop; - bottomRow = this.vDomBottom; - }else{ - for(var i = this.vDomTop; i <= this.vDomBottom; i++){ - if(rows[i]){ - if(!topFound){ - if((topEdge - rows[i].getElement().offsetTop) >= 0){ - topRow = i; - }else{ - topFound = true; - - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else{ - break; - } - } - }else{ - if(bottomEdge - rows[i].getElement().offsetTop >= 0){ - bottomRow = i; - }else{ - break; - } - } - } - } - } - - return rows.slice(topRow, bottomRow + 1); - } - - ////////////////////////////////////// - //////// Internal Rendering ////////// - ////////////////////////////////////// - - //full virtual render - _virtualRenderFill(position, forceMove, offset) { - var element = this.tableElement, - holder = this.elementVertical, - topPad = 0, - rowsHeight = 0, - rowHeight = 0, - heightOccupied = 0, - topPadHeight = 0, - i = 0, - rows = this.rows(), - rowsCount = rows.length, - index = 0, - row, - rowFragment, - renderedRows = [], - totalRowsRendered = 0, - rowsToRender = 0, - fixedHeight = this.table.rowManager.fixedHeight, - containerHeight = this.elementVertical.clientHeight, - avgRowHeight = this.table.options.rowHeight, - resized = true; - - position = position || 0; - - offset = offset || 0; - - if(!position){ - this.clear(); - }else { - while(element.firstChild) element.removeChild(element.firstChild); - - //check if position is too close to bottom of table - heightOccupied = (rowsCount - position + 1) * this.vDomRowHeight; - - if(heightOccupied < containerHeight){ - position -= Math.ceil((containerHeight - heightOccupied) / this.vDomRowHeight); - if(position < 0){ - position = 0; - } - } - - //calculate initial pad - topPad = Math.min(Math.max(Math.floor(this.vDomWindowBuffer / this.vDomRowHeight), this.vDomWindowMinMarginRows), position); - position -= topPad; - } - - if(rowsCount && Helpers.elVisible(this.elementVertical)){ - this.vDomTop = position; - this.vDomBottom = position -1; - - if(fixedHeight || this.table.options.maxHeight) { - if(avgRowHeight) { - rowsToRender = (containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight); - } - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil(rowsToRender)); - } - else { - rowsToRender = rowsCount; - } - - while(((rowsToRender == rowsCount || rowsHeight <= containerHeight + this.vDomWindowBuffer) || totalRowsRendered < this.vDomWindowMinTotalRows) && this.vDomBottom < rowsCount -1) { - renderedRows = []; - rowFragment = document.createDocumentFragment(); - - i = 0; - - while ((i < rowsToRender) && this.vDomBottom < rowsCount -1) { - index = this.vDomBottom + 1, - row = rows[index]; - - this.styleRow(row, index); - - row.initialize(false, true); - if(!row.heightInitialized && !this.table.options.rowHeight){ - row.clearCellHeight(); - } - - rowFragment.appendChild(row.getElement()); - renderedRows.push(row); - this.vDomBottom ++; - i++; - } - - if(!renderedRows.length){ - break; - } - - element.appendChild(rowFragment); - - // NOTE: The next 3 loops are separate on purpose - // This is to batch up the dom writes and reads which drastically improves performance - - renderedRows.forEach((row) => { - row.rendered(); - - if(!row.heightInitialized) { - row.calcHeight(true); - } - }); - - renderedRows.forEach((row) => { - if(!row.heightInitialized) { - row.setCellHeight(); - } - }); - - renderedRows.forEach((row) => { - rowHeight = row.getHeight(); - - if(totalRowsRendered < topPad){ - topPadHeight += rowHeight; - }else { - rowsHeight += rowHeight; - } - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - totalRowsRendered++; - }); - - resized = this.table.rowManager.adjustTableSize(); - containerHeight = this.elementVertical.clientHeight; - if(resized && (fixedHeight || this.table.options.maxHeight)) - { - avgRowHeight = rowsHeight / totalRowsRendered; - rowsToRender = Math.max(this.vDomWindowMinTotalRows, Math.ceil((containerHeight / avgRowHeight) + (this.vDomWindowBuffer / avgRowHeight))); - } - } - - if(!position){ - this.vDomTopPad = 0; - //adjust row height to match average of rendered elements - this.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / totalRowsRendered); - this.vDomBottomPad = this.vDomRowHeight * (rowsCount - this.vDomBottom -1); - - this.vDomScrollHeight = topPadHeight + rowsHeight + this.vDomBottomPad - containerHeight; - }else { - this.vDomTopPad = !forceMove ? this.scrollTop - topPadHeight : (this.vDomRowHeight * this.vDomTop) + offset; - this.vDomBottomPad = this.vDomBottom == rowsCount-1 ? 0 : Math.max(this.vDomScrollHeight - this.vDomTopPad - rowsHeight - topPadHeight, 0); - } - - element.style.paddingTop = this.vDomTopPad+"px"; - element.style.paddingBottom = this.vDomBottomPad+"px"; - - if(forceMove){ - this.scrollTop = this.vDomTopPad + (topPadHeight) + offset - (this.elementVertical.scrollWidth > this.elementVertical.clientWidth ? this.elementVertical.offsetHeight - containerHeight : 0); - } - - this.scrollTop = Math.min(this.scrollTop, this.elementVertical.scrollHeight - containerHeight); - - //adjust for horizontal scrollbar if present (and not at top of table) - if(this.elementVertical.scrollWidth > this.elementVertical.clientWidth && forceMove){ - this.scrollTop += this.elementVertical.offsetHeight - containerHeight; - } - - this.vDomScrollPosTop = this.scrollTop; - this.vDomScrollPosBottom = this.scrollTop; - - holder.scrollTop = this.scrollTop; - - this.dispatch("render-virtual-fill"); - } - } - - _addTopRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomTop -1, - i = 0, - working = true; - - while(working){ - if(this.vDomTop){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.insertBefore(row.getElement(), table.firstChild); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomTop--; - index--; - i++; - - }else{ - working = false; - } - - }else{ - working = false; - } - - }else{ - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomTopPad -= paddingAdjust; - - if(this.vDomTopPad < 0){ - this.vDomTopPad = index * this.vDomRowHeight; - } - - if(index < 1){ - this.vDomTopPad = 0; - } - - table.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop -= paddingAdjust; - } - } - - _removeTopRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomTop], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomTop++; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else{ - working = false; - } - }else{ - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomTopPad += paddingAdjust; - this.tableElement.style.paddingTop = this.vDomTopPad + "px"; - this.vDomScrollPosTop += this.vDomTop ? paddingAdjust : paddingAdjust + this.vDomWindowBuffer; - } - } - - _addBottomRow(rows, fillableSpace){ - var table = this.tableElement, - addedRows = [], - paddingAdjust = 0, - index = this.vDomBottom + 1, - i = 0, - working = true; - - while(working){ - let row = rows[index], - rowHeight, initialized; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - initialized = row.initialized; - - if(fillableSpace >= rowHeight){ - - this.styleRow(row, index); - table.appendChild(row.getElement()); - - if(!row.initialized || !row.heightInitialized){ - addedRows.push(row); - } - - row.initialize(); - - if(!initialized){ - rowHeight = row.getElement().offsetHeight; - - if(rowHeight > this.vDomWindowBuffer){ - this.vDomWindowBuffer = rowHeight * 2; - } - } - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - this.vDomBottom++; - index++; - i++; - }else{ - working = false; - } - }else{ - working = false; - } - } - - for (let row of addedRows){ - row.clearCellHeight(); - } - - this._quickNormalizeRowHeight(addedRows); - - if(paddingAdjust){ - this.vDomBottomPad -= paddingAdjust; - - if(this.vDomBottomPad < 0 || index == rows.length -1){ - this.vDomBottomPad = 0; - } - - table.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom += paddingAdjust; - } - } - - _removeBottomRow(rows, fillableSpace){ - var removableRows = [], - paddingAdjust = 0, - i = 0, - working = true; - - while(working){ - let row = rows[this.vDomBottom], - rowHeight; - - if(row && i < this.vDomMaxRenderChain){ - rowHeight = row.getHeight() || this.vDomRowHeight; - - if(fillableSpace >= rowHeight){ - this.vDomBottom --; - - fillableSpace -= rowHeight; - paddingAdjust += rowHeight; - - removableRows.push(row); - i++; - }else{ - working = false; - } - }else{ - working = false; - } - } - - for (let row of removableRows){ - let rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - } - - if(paddingAdjust){ - this.vDomBottomPad += paddingAdjust; - - if(this.vDomBottomPad < 0){ - this.vDomBottomPad = 0; - } - - this.tableElement.style.paddingBottom = this.vDomBottomPad + "px"; - this.vDomScrollPosBottom -= paddingAdjust; - } - } - - _quickNormalizeRowHeight(rows){ - for(let row of rows){ - row.calcHeight(); - } - - for(let row of rows){ - row.setCellHeight(); - } - } -} diff --git a/tmp/tabulator-5.6.1/src/js/core/row/PseudoRow.js b/tmp/tabulator-5.6.1/src/js/core/row/PseudoRow.js deleted file mode 100644 index a36ac7b..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/row/PseudoRow.js +++ /dev/null @@ -1,47 +0,0 @@ -export default class PseudoRow { - - constructor (type){ - this.type = type; - this.element = this._createElement(); - } - - _createElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-row"); - return el; - } - - getElement(){ - return this.element; - } - - getComponent(){ - return false; - } - - getData(){ - return {}; - } - - getHeight(){ - return this.element.outerHeight; - } - - initialize(){} - - reinitialize(){} - - normalizeHeight(){} - - generateCells(){} - - reinitializeHeight(){} - - calcHeight(){} - - setCellHeight(){} - - clearCellHeight(){} - - rendered(){} -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/row/Row.js b/tmp/tabulator-5.6.1/src/js/core/row/Row.js deleted file mode 100644 index 8782359..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/row/Row.js +++ /dev/null @@ -1,463 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; -import RowComponent from './RowComponent.js'; -import Helpers from '../tools/Helpers.js'; - -export default class Row extends CoreFeature{ - constructor (data, parent, type = "row"){ - super(parent.table); - - this.parent = parent; - this.data = {}; - this.type = type; //type of element - this.element = false; - this.modules = {}; //hold module variables; - this.cells = []; - this.height = 0; //hold element height - this.heightStyled = ""; //hold element height pre-styled to improve render efficiency - this.manualHeight = false; //user has manually set row height - this.outerHeight = 0; //hold elements outer height - this.initialized = false; //element has been rendered - this.heightInitialized = false; //element has resized cells to fit - this.position = 0; //store position of element in row list - this.positionWatchers = []; - - this.component = null; - - this.created = false; - - this.setData(data); - } - - create(){ - if(!this.created){ - this.created = true; - this.generateElement(); - } - } - - createElement (){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.setAttribute("role", "row"); - - this.element = el; - } - - getElement(){ - this.create(); - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - generateElement(){ - this.createElement(); - this.dispatch("row-init", this); - } - - generateCells(){ - this.cells = this.table.columnManager.generateCells(this); - } - - //functions to setup on first render - initialize(force, inFragment){ - this.create(); - - if(!this.initialized || force){ - - this.deleteCells(); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - this.dispatch("row-layout-before", this); - - this.generateCells(); - - this.initialized = true; - - this.table.columnManager.renderer.renderRowCells(this, inFragment); - - if(force){ - this.normalizeHeight(); - } - - this.dispatch("row-layout", this); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - - this.dispatch("row-layout-after", this); - }else{ - this.table.columnManager.renderer.rerenderRowCells(this, inFragment); - } - } - - rendered(){ - this.cells.forEach((cell) => { - cell.cellRendered(); - }); - } - - reinitializeHeight(){ - this.heightInitialized = false; - - if(this.element && this.element.offsetParent !== null){ - this.normalizeHeight(true); - } - } - - deinitialize(){ - this.initialized = false; - } - - deinitializeHeight(){ - this.heightInitialized = false; - } - - reinitialize(children){ - this.initialized = false; - this.heightInitialized = false; - - if(!this.manualHeight){ - this.height = 0; - this.heightStyled = ""; - } - - if(this.element && this.element.offsetParent !== null){ - this.initialize(true); - } - - this.dispatch("row-relayout", this); - } - - //get heights when doing bulk row style calcs in virtual DOM - calcHeight(force){ - var maxHeight = 0, - minHeight; - - if(this.table.options.rowHeight){ - this.height = this.table.options.rowHeight; - }else{ - minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0; - - this.cells.forEach(function(cell){ - var height = cell.getHeight(); - if(height > maxHeight){ - maxHeight = height; - } - }); - - if(force){ - this.height = Math.max(maxHeight, minHeight); - }else{ - this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight); - } - } - - this.heightStyled = this.height ? this.height + "px" : ""; - this.outerHeight = this.element.offsetHeight; - } - - //set of cells - setCellHeight(){ - this.cells.forEach(function(cell){ - cell.setHeight(); - }); - - this.heightInitialized = true; - } - - clearCellHeight(){ - this.cells.forEach(function(cell){ - cell.clearHeight(); - }); - } - - //normalize the height of elements in the row - normalizeHeight(force){ - if(force && !this.table.options.rowHeight){ - this.clearCellHeight(); - } - - this.calcHeight(force); - - this.setCellHeight(); - } - - //set height of rows - setHeight(height, force){ - if(this.height != height || force){ - - this.manualHeight = true; - - this.height = height; - this.heightStyled = height ? height + "px" : ""; - - this.setCellHeight(); - - // this.outerHeight = this.element.outerHeight(); - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - //return rows outer Width - getWidth(){ - return this.element.offsetWidth; - } - - //////////////// Cell Management ///////////////// - deleteCell(cell){ - var index = this.cells.indexOf(cell); - - if(index > -1){ - this.cells.splice(index, 1); - } - } - - //////////////// Data Management ///////////////// - setData(data){ - this.data = this.chain("row-data-init-before", [this, data], undefined, data); - - this.dispatch("row-data-init-after", this); - } - - //update the rows data - updateData(updatedData){ - var visible = this.element && Helpers.elVisible(this.element), - tempData = {}, - newRowData; - - return new Promise((resolve, reject) => { - - if(typeof updatedData === "string"){ - updatedData = JSON.parse(updatedData); - } - - this.dispatch("row-data-save-before", this); - - if(this.subscribed("row-data-changing")){ - tempData = Object.assign(tempData, this.data); - tempData = Object.assign(tempData, updatedData); - } - - newRowData = this.chain("row-data-changing", [this, tempData, updatedData], null, updatedData); - - //set data - for (let attrname in newRowData) { - this.data[attrname] = newRowData[attrname]; - } - - this.dispatch("row-data-save-after", this); - - //update affected cells only - for (let attrname in updatedData) { - - let columns = this.table.columnManager.getColumnsByFieldRoot(attrname); - - columns.forEach((column) => { - let cell = this.getCell(column.getField()); - - if(cell){ - let value = column.getFieldValue(newRowData); - if(cell.getValue() !== value){ - cell.setValueProcessData(value); - - if(visible){ - cell.cellRendered(); - } - } - } - }); - } - - //Partial reinitialization if visible - if(visible){ - this.normalizeHeight(true); - - if(this.table.options.rowFormatter){ - this.table.options.rowFormatter(this.getComponent()); - } - }else{ - this.initialized = false; - this.height = 0; - this.heightStyled = ""; - } - - this.dispatch("row-data-changed", this, visible, updatedData); - - //this.reinitialize(); - - this.dispatchExternal("rowUpdated", this.getComponent()); - - if(this.subscribedExternal("dataChanged")){ - this.dispatchExternal("dataChanged", this.table.rowManager.getData()); - } - - resolve(); - }); - } - - getData(transform){ - if(transform){ - return this.chain("row-data-retrieve", [this, transform], null, this.data); - } - - return this.data; - } - - getCell(column){ - var match = false; - - column = this.table.columnManager.findColumn(column); - - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - match = this.cells.find(function(cell){ - return cell.column === column; - }); - - return match; - } - - getCellIndex(findCell){ - return this.cells.findIndex(function(cell){ - return cell === findCell; - }); - } - - findCell(subject){ - return this.cells.find((cell) => { - return cell.element === subject; - }); - } - - getCells(){ - if(!this.initialized && this.cells.length === 0){ - this.generateCells(); - } - - return this.cells; - } - - nextRow(){ - var row = this.table.rowManager.nextDisplayRow(this, true); - return row || false; - } - - prevRow(){ - var row = this.table.rowManager.prevDisplayRow(this, true); - return row || false; - } - - moveToRow(to, before){ - var toRow = this.table.rowManager.findRow(to); - - if(toRow){ - this.table.rowManager.moveRowActual(this, toRow, !before); - this.table.rowManager.refreshActiveData("display", false, true); - }else{ - console.warn("Move Error - No matching row found:", to); - } - } - - ///////////////////// Actions ///////////////////// - delete(){ - this.dispatch("row-delete", this); - - this.deleteActual(); - - return Promise.resolve(); - } - - deleteActual(blockRedraw){ - this.detachModules(); - - this.table.rowManager.deleteRow(this, blockRedraw); - - this.deleteCells(); - - this.initialized = false; - this.heightInitialized = false; - this.element = false; - - this.dispatch("row-deleted", this); - } - - detachModules(){ - this.dispatch("row-deleting", this); - } - - deleteCells(){ - var cellCount = this.cells.length; - - for(let i = 0; i < cellCount; i++){ - this.cells[0].delete(); - } - } - - wipe(){ - this.detachModules(); - this.deleteCells(); - - if(this.element){ - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - this.element = false; - this.modules = {}; - } - - isDisplayed(){ - return this.table.rowManager.getDisplayRows().includes(this); - } - - getPosition(){ - return this.isDisplayed() ? this.position : false; - } - - setPosition(position){ - if(position != this.position){ - this.position = position; - - this.positionWatchers.forEach((callback) => { - callback(this.position); - }); - } - } - - watchPosition(callback){ - this.positionWatchers.push(callback); - - callback(this.position); - } - - getGroup(){ - return this.modules.group || false; - } - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new RowComponent(this); - } - - return this.component; - } -} diff --git a/tmp/tabulator-5.6.1/src/js/core/row/RowComponent.js b/tmp/tabulator-5.6.1/src/js/core/row/RowComponent.js deleted file mode 100644 index e9868ef..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/row/RowComponent.js +++ /dev/null @@ -1,94 +0,0 @@ -//public row object -export default class RowComponent { - - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else{ - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - getIndex(){ - return this._row.getData("data")[this._row.table.options.index]; - } - - getPosition(){ - return this._row.getPosition(); - } - - watchPosition(callback){ - return this._row.watchPosition(callback); - } - - delete(){ - return this._row.delete(); - } - - scrollTo(position, ifVisible){ - return this._row.table.rowManager.scrollToRow(this._row, position, ifVisible); - } - - move(to, after){ - this._row.moveToRow(to, after); - } - - update(data){ - return this._row.updateData(data); - } - - normalizeHeight(){ - this._row.normalizeHeight(true); - } - - _getSelf(){ - return this._row; - } - - reformat(){ - return this._row.reinitialize(); - } - - getTable(){ - return this._row.table; - } - - getNextRow(){ - var row = this._row.nextRow(); - return row ? row.getComponent() : row; - } - - getPrevRow(){ - var row = this._row.prevRow(); - return row ? row.getComponent() : row; - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/Alert.js b/tmp/tabulator-5.6.1/src/js/core/tools/Alert.js deleted file mode 100644 index 5df03f7..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/Alert.js +++ /dev/null @@ -1,66 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; - -export default class Alert extends CoreFeature{ - constructor(table){ - super(table); - - this.element = this._createAlertElement(); - this.msgElement = this._createMsgElement(); - this.type = null; - - this.element.appendChild(this.msgElement); - } - - _createAlertElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert"); - return el; - } - - _createMsgElement(){ - var el = document.createElement("div"); - el.classList.add("tabulator-alert-msg"); - el.setAttribute("role", "alert"); - return el; - } - - _typeClass(){ - return "tabulator-alert-state-" + this.type; - } - - alert(content, type = "msg"){ - if(content){ - this.clear(); - - this.dispatch("alert-show", type); - - this.type = type; - - while(this.msgElement.firstChild) this.msgElement.removeChild(this.msgElement.firstChild); - - this.msgElement.classList.add(this._typeClass()); - - if(typeof content === "function"){ - content = content(); - } - - if(content instanceof HTMLElement){ - this.msgElement.appendChild(content); - }else{ - this.msgElement.innerHTML = content; - } - - this.table.element.appendChild(this.element); - } - } - - clear(){ - this.dispatch("alert-hide", this.type); - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.msgElement.classList.remove(this._typeClass()); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/ComponentFunctionBinder.js b/tmp/tabulator-5.6.1/src/js/core/tools/ComponentFunctionBinder.js deleted file mode 100644 index e922629..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/ComponentFunctionBinder.js +++ /dev/null @@ -1,32 +0,0 @@ -export default class ComponentFunctionBinder{ - - constructor(table){ - this.table = table; - - this.bindings = {}; - } - - bind(type, funcName, handler){ - if(!this.bindings[type]){ - this.bindings[type] = {}; - } - - if(this.bindings[type][funcName]){ - console.warn("Unable to bind component handler, a matching function name is already bound", type, funcName, handler); - }else{ - this.bindings[type][funcName] = handler; - } - } - - handle(type, component, name){ - if(this.bindings[type] && this.bindings[type][name] && typeof this.bindings[type][name].bind === 'function'){ - return this.bindings[type][name].bind(null, component); - }else{ - if(name !== "then" && typeof name === "string" && !name.startsWith("_")){ - if(this.table.options.debugInvalidComponentFuncs){ - console.error("The " + type + " component does not have a " + name + " function, have you checked that you have the correct Tabulator module installed?"); - } - } - } - } -} diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/DataLoader.js b/tmp/tabulator-5.6.1/src/js/core/tools/DataLoader.js deleted file mode 100644 index 34856f7..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/DataLoader.js +++ /dev/null @@ -1,128 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; - -export default class DataLoader extends CoreFeature{ - constructor(table){ - super(table); - - this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request - this.loading = false; - } - - initialize(){} - - load(data, params, config, replace, silent, columnsChanged){ - var requestNo = ++this.requestOrder; - - if(this.table.destroyed){ - return Promise.resolve(); - } - - this.dispatchExternal("dataLoading", data); - - //parse json data to array - if (data && (data.indexOf("{") == 0 || data.indexOf("[") == 0)){ - data = JSON.parse(data); - } - - if(this.confirm("data-loading", [data, params, config, silent])){ - this.loading = true; - - if(!silent){ - this.alertLoader(); - } - - //get params for request - params = this.chain("data-params", [data, config, silent], params || {}, params || {}); - - params = this.mapParams(params, this.table.options.dataSendParams); - - var result = this.chain("data-load", [data, params, config, silent], false, Promise.resolve([])); - - return result.then((response) => { - if(!this.table.destroyed){ - if(!Array.isArray(response) && typeof response == "object"){ - response = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams)); - } - - var rowData = this.chain("data-loaded", response, null, response); - - if(requestNo == this.requestOrder){ - this.clearAlert(); - - if(rowData !== false){ - this.dispatchExternal("dataLoaded", rowData); - this.table.rowManager.setData(rowData, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - } - }else{ - console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made"); - } - }else{ - console.warn("Data Load Response Blocked - Table has been destroyed"); - } - }).catch((error) => { - console.error("Data Load Error: ", error); - this.dispatchExternal("dataLoadError", error); - - if(!silent){ - this.alertError(); - } - - setTimeout(() => { - this.clearAlert(); - }, this.table.options.dataLoaderErrorTimeout); - }) - .finally(() => { - this.loading = false; - }); - }else{ - this.dispatchExternal("dataLoaded", data); - - if(!data){ - data = []; - } - - this.table.rowManager.setData(data, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged); - return Promise.resolve(); - } - } - - mapParams(params, map){ - var output = {}; - - for(let key in params){ - output[map.hasOwnProperty(key) ? map[key] : key] = params[key]; - } - - return output; - } - - objectInvert(obj){ - var output = {}; - - for(let key in obj){ - output[obj[key]] = key; - } - - return output; - } - - blockActiveLoad(){ - this.requestOrder++; - } - - alertLoader(){ - var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader; - - if(shouldLoad){ - this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading")); - } - } - - alertError(){ - this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error"); - } - - clearAlert(){ - this.table.alertManager.clear(); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/DeprecationAdvisor.js b/tmp/tabulator-5.6.1/src/js/core/tools/DeprecationAdvisor.js deleted file mode 100644 index 86ff8eb..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/DeprecationAdvisor.js +++ /dev/null @@ -1,51 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; - -export default class DeprecationAdvisor extends CoreFeature{ - - constructor(table){ - super(table); - } - - _warnUser(){ - if(this.options("debugDeprecation")){ - console.warn(...arguments); - } - } - - check(oldOption, newOption, convert){ - var msg = ""; - - if(typeof this.options(oldOption) !== "undefined"){ - msg = "Deprecated Setup Option - Use of the %c" + oldOption + "%c option is now deprecated"; - - if(newOption){ - msg = msg + ", Please use the %c" + newOption + "%c option instead"; - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - - if(convert){ - this.table.options[newOption] = this.table.options[oldOption]; - } - }else{ - this._warnUser(msg, 'font-weight: bold;', 'font-weight: normal;'); - } - - return false; - }else{ - return true; - } - } - - checkMsg(oldOption, msg){ - if(typeof this.options(oldOption) !== "undefined"){ - this._warnUser("%cDeprecated Setup Option - Use of the %c" + oldOption + " %c option is now deprecated, " + msg, 'font-weight: normal;', 'font-weight: bold;', 'font-weight: normal;'); - - return false; - }else{ - return true; - } - } - - msg(msg){ - this._warnUser(msg); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/ExternalEventBus.js b/tmp/tabulator-5.6.1/src/js/core/tools/ExternalEventBus.js deleted file mode 100644 index 1bc7235..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/ExternalEventBus.js +++ /dev/null @@ -1,105 +0,0 @@ -export default class ExternalEventBus { - - constructor(table, optionsList, debug){ - this.table = table; - this.events = {}; - this.optionsList = optionsList || {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push(callback); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else{ - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - }else{ - delete this.events[key]; - } - }else{ - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(), - result; - - if(this.events[key]){ - this.events[key].forEach((callback, i) => { - let callResult = callback.apply(this.table, args); - - if(!i){ - result = callResult; - } - }); - } - - return result; - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "ExternalEvent:" + args[0]; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/Helpers.js b/tmp/tabulator-5.6.1/src/js/core/tools/Helpers.js deleted file mode 100644 index 078e175..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/Helpers.js +++ /dev/null @@ -1,66 +0,0 @@ -export default class Helpers{ - - static elVisible(el){ - return !(el.offsetWidth <= 0 && el.offsetHeight <= 0); - } - - static elOffset(el){ - var box = el.getBoundingClientRect(); - - return { - top: box.top + window.pageYOffset - document.documentElement.clientTop, - left: box.left + window.pageXOffset - document.documentElement.clientLeft - }; - } - - static retrieveNestedData(separator, field, data){ - var structure = separator ? field.split(separator) : [field], - length = structure.length, - output; - - for(let i = 0; i < length; i++){ - - data = data[structure[i]]; - - output = data; - - if(!data){ - break; - } - } - - return output; - } - - static deepClone(obj, clone, list = []){ - var objectProto = {}.__proto__, - arrayProto = [].__proto__; - - if (!clone){ - clone = Object.assign(Array.isArray(obj) ? [] : {}, obj); - } - - for(var i in obj) { - let subject = obj[i], - match, copy; - - if(subject != null && typeof subject === "object" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)){ - match = list.findIndex((item) => { - return item.subject === subject; - }); - - if(match > -1){ - clone[i] = list[match].copy; - }else{ - copy = Object.assign(Array.isArray(subject) ? [] : {}, subject); - - list.unshift({subject, copy}); - - clone[i] = this.deepClone(subject, copy, list); - } - } - } - - return clone; - } -} diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/InteractionMonitor.js b/tmp/tabulator-5.6.1/src/js/core/tools/InteractionMonitor.js deleted file mode 100644 index 6ecbd05..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/InteractionMonitor.js +++ /dev/null @@ -1,322 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; -import Row from '../row/Row.js'; - -export default class InteractionManager extends CoreFeature { - - constructor (table){ - super(table); - - this.el = null; - - this.abortClasses = ["tabulator-headers", "tabulator-table"]; - - this.previousTargets = {}; - - this.listeners = [ - "click", - "dblclick", - "contextmenu", - "mouseenter", - "mouseleave", - "mouseover", - "mouseout", - "mousemove", - "mouseup", - "mousedown", - "touchstart", - "touchend", - ]; - - this.componentMap = { - "tabulator-cell":"cell", - "tabulator-row":"row", - "tabulator-group":"group", - "tabulator-col":"column", - }; - - this.pseudoTrackers = { - "row":{ - subscriber:null, - target:null, - }, - "cell":{ - subscriber:null, - target:null, - }, - "group":{ - subscriber:null, - target:null, - }, - "column":{ - subscriber:null, - target:null, - }, - }; - - this.pseudoTracking = false; - } - - initialize(){ - this.el = this.table.element; - - this.buildListenerMap(); - this.bindSubscriptionWatchers(); - } - - buildListenerMap(){ - var listenerMap = {}; - - this.listeners.forEach((listener) => { - listenerMap[listener] = { - handler:null, - components:[], - }; - }); - - this.listeners = listenerMap; - } - - bindPseudoEvents(){ - Object.keys(this.pseudoTrackers).forEach((key) => { - this.pseudoTrackers[key].subscriber = this.pseudoMouseEnter.bind(this, key); - this.subscribe(key + "-mouseover", this.pseudoTrackers[key].subscriber); - }); - - this.pseudoTracking = true; - } - - pseudoMouseEnter(key, e, target){ - if(this.pseudoTrackers[key].target !== target){ - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, this.pseudoTrackers[key].target); - } - - this.pseudoMouseLeave(key, e); - - this.pseudoTrackers[key].target = target; - - this.dispatch(key + "-mouseenter", e, target); - } - } - - pseudoMouseLeave(key, e){ - var leaveList = Object.keys(this.pseudoTrackers), - linkedKeys = { - "row":["cell"], - "cell":["row"], - }; - - leaveList = leaveList.filter((item) => { - var links = linkedKeys[key]; - return item !== key && (!links || (links && !links.includes(item))); - }); - - - leaveList.forEach((key) => { - var target = this.pseudoTrackers[key].target; - - if(this.pseudoTrackers[key].target){ - this.dispatch(key + "-mouseleave", e, target); - - this.pseudoTrackers[key].target = null; - } - }); - } - - - bindSubscriptionWatchers(){ - var listeners = Object.keys(this.listeners), - components = Object.values(this.componentMap); - - for(let comp of components){ - for(let listener of listeners){ - let key = comp + "-" + listener; - - this.subscriptionChange(key, this.subscriptionChanged.bind(this, comp, listener)); - } - } - - this.subscribe("table-destroy", this.clearWatchers.bind(this)); - } - - subscriptionChanged(component, key, added){ - var listener = this.listeners[key].components, - index = listener.indexOf(component), - changed = false; - - if(added){ - if(index === -1){ - listener.push(component); - changed = true; - } - }else{ - if(!this.subscribed(component + "-" + key)){ - if(index > -1){ - listener.splice(index, 1); - changed = true; - } - } - } - - if((key === "mouseenter" || key === "mouseleave") && !this.pseudoTracking){ - this.bindPseudoEvents(); - } - - if(changed){ - this.updateEventListeners(); - } - } - - updateEventListeners(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.components.length){ - if(!listener.handler){ - listener.handler = this.track.bind(this, key); - this.el.addEventListener(key, listener.handler); - // this.el.addEventListener(key, listener.handler, {passive: true}) - } - }else{ - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } - } - - track(type, e){ - var path = (e.composedPath && e.composedPath()) || e.path; - - var targets = this.findTargets(path); - targets = this.bindComponents(type, targets); - - this.triggerEvents(type, e, targets); - - if(this.pseudoTracking && (type == "mouseover" || type == "mouseleave") && !Object.keys(targets).length){ - this.pseudoMouseLeave("none", e); - } - } - - findTargets(path){ - var targets = {}; - - let componentMap = Object.keys(this.componentMap); - - for (let el of path) { - let classList = el.classList ? [...el.classList] : []; - - let abort = classList.filter((item) => { - return this.abortClasses.includes(item); - }); - - if(abort.length){ - break; - } - - let elTargets = classList.filter((item) => { - return componentMap.includes(item); - }); - - for (let target of elTargets) { - if(!targets[this.componentMap[target]]){ - targets[this.componentMap[target]] = el; - } - } - } - - if(targets.group && targets.group === targets.row){ - delete targets.row; - } - - return targets; - } - - bindComponents(type, targets){ - //ensure row component is looked up before cell - var keys = Object.keys(targets).reverse(), - listener = this.listeners[type], - matches = {}, - targetMatches = {}; - - for(let key of keys){ - let component, - target = targets[key], - previousTarget = this.previousTargets[key]; - - if(previousTarget && previousTarget.target === target){ - component = previousTarget.component; - }else{ - switch(key){ - case "row": - case "group": - if(listener.components.includes("row") || listener.components.includes("cell") || listener.components.includes("group")){ - let rows = this.table.rowManager.getVisibleRows(true); - - component = rows.find((row) => { - return row.getElement() === target; - }); - - if(targets["row"] && targets["row"].parentNode && targets["row"].parentNode.closest(".tabulator-row")){ - targets[key] = false; - } - } - break; - - case "column": - if(listener.components.includes("column")){ - component = this.table.columnManager.findColumn(target); - } - break; - - case "cell": - if(listener.components.includes("cell")){ - if(matches["row"] instanceof Row){ - component = matches["row"].findCell(target); - }else{ - if(targets["row"]){ - console.warn("Event Target Lookup Error - The row this cell is attached to cannot be found, has the table been reinitialized without being destroyed first?"); - } - } - } - break; - } - } - - if(component){ - matches[key] = component; - targetMatches[key] = { - target:target, - component:component, - }; - } - } - - this.previousTargets = targetMatches; - - return matches; - } - - triggerEvents(type, e, targets){ - var listener = this.listeners[type]; - - for(let key in targets){ - if(targets[key] && listener.components.includes(key)){ - this.dispatch(key + "-" + type, e, targets[key]); - } - } - } - - clearWatchers(){ - for(let key in this.listeners){ - let listener = this.listeners[key]; - - if(listener.handler){ - this.el.removeEventListener(key, listener.handler); - listener.handler = null; - } - } - } -} diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/InternalEventBus.js b/tmp/tabulator-5.6.1/src/js/core/tools/InternalEventBus.js deleted file mode 100644 index 7d7e4d9..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/InternalEventBus.js +++ /dev/null @@ -1,162 +0,0 @@ -export default class InternalEventBus { - - constructor(debug){ - this.events = {}; - this.subscriptionNotifiers = {}; - - this.dispatch = debug ? this._debugDispatch.bind(this) : this._dispatch.bind(this); - this.chain = debug ? this._debugChain.bind(this) : this._chain.bind(this); - this.confirm = debug ? this._debugConfirm.bind(this) : this._confirm.bind(this); - this.debug = debug; - } - - subscriptionChange(key, callback){ - if(!this.subscriptionNotifiers[key]){ - this.subscriptionNotifiers[key] = []; - } - - this.subscriptionNotifiers[key].push(callback); - - if(this.subscribed(key)){ - this._notifySubscriptionChange(key, true); - } - } - - subscribe(key, callback, priority = 10000){ - if(!this.events[key]){ - this.events[key] = []; - } - - this.events[key].push({callback, priority}); - - this.events[key].sort((a, b) => { - return a.priority - b.priority; - }); - - this._notifySubscriptionChange(key, true); - } - - unsubscribe(key, callback){ - var index; - - if(this.events[key]){ - if(callback){ - index = this.events[key].findIndex((item) => { - return item.callback === callback; - }); - - if(index > -1){ - this.events[key].splice(index, 1); - }else{ - console.warn("Cannot remove event, no matching event found:", key, callback); - return; - } - } - }else{ - console.warn("Cannot remove event, no events set on:", key); - return; - } - - this._notifySubscriptionChange(key, false); - } - - subscribed(key){ - return this.events[key] && this.events[key].length; - } - - _chain(key, args, initialValue, fallback){ - var value = initialValue; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - value = subscriber.callback.apply(this, args.concat([value])); - }); - - return value; - }else{ - return typeof fallback === "function" ? fallback() : fallback; - } - } - - _confirm(key, args){ - var confirmed = false; - - if(!Array.isArray(args)){ - args = [args]; - } - - if(this.subscribed(key)){ - this.events[key].forEach((subscriber, i) => { - if(subscriber.callback.apply(this, args)){ - confirmed = true; - } - }); - } - - return confirmed; - } - - _notifySubscriptionChange(key, subscribed){ - var notifiers = this.subscriptionNotifiers[key]; - - if(notifiers){ - notifiers.forEach((callback)=>{ - callback(subscribed); - }); - } - } - - _dispatch(){ - var args = Array.from(arguments), - key = args.shift(); - - if(this.events[key]){ - this.events[key].forEach((subscriber) => { - subscriber.callback.apply(this, args); - }); - } - } - - _debugDispatch(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._dispatch(...arguments); - } - - _debugChain(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._chain(...arguments); - } - - _debugConfirm(){ - var args = Array.from(arguments), - key = args[0]; - - args[0] = "InternalEvent:" + key; - - if(this.debug === true || this.debug.includes(key)){ - console.log(...args); - } - - return this._confirm(...arguments); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/ModuleBinder.js b/tmp/tabulator-5.6.1/src/js/core/tools/ModuleBinder.js deleted file mode 100644 index ca5c22c..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/ModuleBinder.js +++ /dev/null @@ -1,105 +0,0 @@ -import * as coreModules from '../modules/core.js'; -import TableRegistry from './TableRegistry.js'; - -export default class ModuleBinder { - - constructor(tabulator, modules){ - this.bindStaticFunctionality(tabulator); - this.bindModules(tabulator, coreModules, true); - - if(modules){ - this.bindModules(tabulator, modules); - } - } - - bindStaticFunctionality(tabulator){ - tabulator.moduleBindings = {}; - - tabulator.extendModule = function(name, property, values){ - if(tabulator.moduleBindings[name]){ - var source = tabulator.moduleBindings[name][property]; - - if(source){ - if(typeof values == "object"){ - for(let key in values){ - source[key] = values[key]; - } - }else{ - console.warn("Module Error - Invalid value type, it must be an object"); - } - }else{ - console.warn("Module Error - property does not exist:", property); - } - }else{ - console.warn("Module Error - module does not exist:", name); - } - }; - - tabulator.registerModule = function(modules){ - if(!Array.isArray(modules)){ - modules = [modules]; - } - - modules.forEach((mod) => { - tabulator.registerModuleBinding(mod); - }); - }; - - tabulator.registerModuleBinding = function(mod){ - tabulator.moduleBindings[mod.moduleName] = mod; - }; - - tabulator.findTable = function(query){ - var results = TableRegistry.lookupTable(query, true); - return Array.isArray(results) && !results.length ? false : results; - }; - - //ensure that module are bound to instantiated function - tabulator.prototype.bindModules = function(){ - var orderedStartMods = [], - orderedEndMods = [], - unOrderedMods = []; - - this.modules = {}; - - for(var name in tabulator.moduleBindings){ - let mod = tabulator.moduleBindings[name]; - let module = new mod(this); - - this.modules[name] = module; - - if(mod.prototype.moduleCore){ - this.modulesCore.push(module); - }else{ - if(mod.moduleInitOrder){ - if(mod.moduleInitOrder < 0){ - orderedStartMods.push(module); - }else{ - orderedEndMods.push(module); - } - - }else{ - unOrderedMods.push(module); - } - } - } - - orderedStartMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - orderedEndMods.sort((a, b) => a.moduleInitOrder > b.moduleInitOrder ? 1 : -1); - - this.modulesRegular = orderedStartMods.concat(unOrderedMods.concat(orderedEndMods)); - }; - } - - bindModules(tabulator, modules, core){ - var mods = Object.values(modules); - - if(core){ - mods.forEach((mod) => { - mod.prototype.moduleCore = true; - }); - } - - tabulator.registerModule(mods); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/OptionsList.js b/tmp/tabulator-5.6.1/src/js/core/tools/OptionsList.js deleted file mode 100644 index 1fd9b1e..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/OptionsList.js +++ /dev/null @@ -1,45 +0,0 @@ -export default class OptionsList { - constructor(table, msgType, defaults = {}){ - this.table = table; - this.msgType = msgType; - this.registeredDefaults = Object.assign({}, defaults); - } - - register(option, value){ - this.registeredDefaults[option] = value; - } - - generate(defaultOptions, userOptions = {}){ - var output = Object.assign({}, this.registeredDefaults), - warn = this.table.options.debugInvalidOptions || userOptions.debugInvalidOptions === true; - - Object.assign(output, defaultOptions); - - for (let key in userOptions){ - if(!output.hasOwnProperty(key)){ - if(warn){ - console.warn("Invalid " + this.msgType + " option:", key); - } - - output[key] = userOptions.key; - } - } - - - for (let key in output){ - if(key in userOptions){ - output[key] = userOptions[key]; - }else{ - if(Array.isArray(output[key])){ - output[key] = Object.assign([], output[key]); - }else if(typeof output[key] === "object" && output[key] !== null){ - output[key] = Object.assign({}, output[key]); - }else if (typeof output[key] === "undefined"){ - delete output[key]; - } - } - } - - return output; - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/Popup.js b/tmp/tabulator-5.6.1/src/js/core/tools/Popup.js deleted file mode 100644 index 644838c..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/Popup.js +++ /dev/null @@ -1,305 +0,0 @@ -import CoreFeature from '../CoreFeature.js'; -import Helpers from './Helpers.js'; - -export default class Popup extends CoreFeature{ - constructor(table, element, parent){ - super(table); - - this.element = element; - this.container = this._lookupContainer(); - - this.parent = parent; - - this.reversedX = false; - this.childPopup = null; - this.blurable = false; - this.blurCallback = null; - this.blurEventsBound = false; - this.renderedCallback = null; - - this.visible = false; - this.hideable = true; - - this.element.classList.add("tabulator-popup-container"); - - this.blurEvent = this.hide.bind(this, false); - this.escEvent = this._escapeCheck.bind(this); - - this.destroyBinding = this.tableDestroyed.bind(this); - this.destroyed = false; - } - - tableDestroyed(){ - this.destroyed = true; - this.hide(true); - } - - _lookupContainer(){ - var container = this.table.options.popupContainer; - - if(typeof container === "string"){ - container = document.querySelector(container); - - if(!container){ - console.warn("Menu Error - no container element found matching selector:", this.table.options.popupContainer , "(defaulting to document body)"); - } - }else if (container === true){ - container = this.table.element; - } - - if(container && !this._checkContainerIsParent(container)){ - container = false; - console.warn("Menu Error - container element does not contain this table:", this.table.options.popupContainer , "(defaulting to document body)"); - } - - if(!container){ - container = document.body; - } - - return container; - } - - _checkContainerIsParent(container, element = this.table.element){ - if(container === element){ - return true; - }else{ - return element.parentNode ? this._checkContainerIsParent(container, element.parentNode) : false; - } - } - - renderCallback(callback){ - this.renderedCallback = callback; - } - - containerEventCoords(e){ - var touch = !(e instanceof MouseEvent); - - var x = touch ? e.touches[0].pageX : e.pageX; - var y = touch ? e.touches[0].pageY : e.pageY; - - if(this.container !== document.body){ - let parentOffset = Helpers.elOffset(this.container); - - x -= parentOffset.left; - y -= parentOffset.top; - } - - return {x, y}; - } - - elementPositionCoords(element, position = "right"){ - var offset = Helpers.elOffset(element), - containerOffset, x, y; - - if(this.container !== document.body){ - containerOffset = Helpers.elOffset(this.container); - - offset.left -= containerOffset.left; - offset.top -= containerOffset.top; - } - - switch(position){ - case "right": - x = offset.left + element.offsetWidth; - y = offset.top - 1; - break; - - case "bottom": - x = offset.left; - y = offset.top + element.offsetHeight; - break; - - case "left": - x = offset.left; - y = offset.top - 1; - break; - - case "top": - x = offset.left; - y = offset.top; - break; - - case "center": - x = offset.left + (element.offsetWidth / 2); - y = offset.top + (element.offsetHeight / 2); - break; - - } - - return {x, y, offset}; - } - - show(origin, position){ - var x, y, parentEl, parentOffset, coords; - - if(this.destroyed || this.table.destroyed){ - return this; - } - - if(origin instanceof HTMLElement){ - parentEl = origin; - coords = this.elementPositionCoords(origin, position); - - parentOffset = coords.offset; - x = coords.x; - y = coords.y; - - }else if(typeof origin === "number"){ - parentOffset = {top:0, left:0}; - x = origin; - y = position; - }else{ - coords = this.containerEventCoords(origin); - - x = coords.x; - y = coords.y; - - this.reversedX = false; - } - - this.element.style.top = y + "px"; - this.element.style.left = x + "px"; - - this.container.appendChild(this.element); - - if(typeof this.renderedCallback === "function"){ - this.renderedCallback(); - } - - this._fitToScreen(x, y, parentEl, parentOffset, position); - - this.visible = true; - - this.subscribe("table-destroy", this.destroyBinding); - - this.element.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - return this; - } - - _fitToScreen(x, y, parentEl, parentOffset, position){ - var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop; - - //move menu to start on right edge if it is too close to the edge of the screen - if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){ - this.element.style.left = ""; - - if(parentEl){ - this.element.style.right = (this.container.offsetWidth - parentOffset.left) + "px"; - }else{ - this.element.style.right = (this.container.offsetWidth - x) + "px"; - } - - this.reversedX = true; - } - - //move menu to start on bottom edge if it is too close to the edge of the screen - if((y + this.element.offsetHeight) > Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0)) { - if(parentEl){ - switch(position){ - case "bottom": - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + "px"; - break; - - default: - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + "px"; - } - - }else{ - this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight) + "px"; - } - } - } - - isVisible(){ - return this.visible; - } - - hideOnBlur(callback){ - this.blurable = true; - - if(this.visible){ - setTimeout(() => { - if(this.visible){ - this.table.rowManager.element.addEventListener("scroll", this.blurEvent); - this.subscribe("cell-editing", this.blurEvent); - document.body.addEventListener("click", this.blurEvent); - document.body.addEventListener("contextmenu", this.blurEvent); - document.body.addEventListener("mousedown", this.blurEvent); - window.addEventListener("resize", this.blurEvent); - document.body.addEventListener("keydown", this.escEvent); - - this.blurEventsBound = true; - } - }, 100); - - this.blurCallback = callback; - } - - return this; - } - - _escapeCheck(e){ - if(e.keyCode == 27){ - this.hide(); - } - } - - blockHide(){ - this.hideable = false; - } - - restoreHide(){ - this.hideable = true; - } - - hide(silent = false){ - if(this.visible && this.hideable){ - if(this.blurable && this.blurEventsBound){ - document.body.removeEventListener("keydown", this.escEvent); - document.body.removeEventListener("click", this.blurEvent); - document.body.removeEventListener("contextmenu", this.blurEvent); - document.body.removeEventListener("mousedown", this.blurEvent); - window.removeEventListener("resize", this.blurEvent); - this.table.rowManager.element.removeEventListener("scroll", this.blurEvent); - this.unsubscribe("cell-editing", this.blurEvent); - - this.blurEventsBound = false; - } - - if(this.childPopup){ - this.childPopup.hide(); - } - - if(this.parent){ - this.parent.childPopup = null; - } - - if(this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - - this.visible = false; - - if(this.blurCallback && !silent){ - this.blurCallback(); - } - - this.unsubscribe("table-destroy", this.destroyBinding); - } - - return this; - } - - child(element){ - if(this.childPopup){ - this.childPopup.hide(); - } - - this.childPopup = new Popup(this.table, element, this); - - return this.childPopup; - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/core/tools/TableRegistry.js b/tmp/tabulator-5.6.1/src/js/core/tools/TableRegistry.js deleted file mode 100644 index c25b5ac..0000000 --- a/tmp/tabulator-5.6.1/src/js/core/tools/TableRegistry.js +++ /dev/null @@ -1,62 +0,0 @@ -import Tabulator from '../Tabulator.js'; - -class TableRegistry { - - static register(table){ - TableRegistry.tables.push(table); - } - - static deregister(table){ - var index = TableRegistry.tables.indexOf(table); - - if(index > -1){ - TableRegistry.tables.splice(index, 1); - } - } - - static lookupTable(query, silent){ - var results = [], - matches, match; - - if(typeof query === "string"){ - matches = document.querySelectorAll(query); - - if(matches.length){ - for(var i = 0; i < matches.length; i++){ - match = TableRegistry.matchElement(matches[i]); - - if(match){ - results.push(match); - } - } - } - - }else if((typeof HTMLElement !== "undefined" && query instanceof HTMLElement) || query instanceof Tabulator){ - match = TableRegistry.matchElement(query); - - if(match){ - results.push(match); - } - }else if(Array.isArray(query)){ - query.forEach(function(item){ - results = results.concat(TableRegistry.lookupTable(item)); - }); - }else{ - if(!silent){ - console.warn("Table Connection Error - Invalid Selector", query); - } - } - - return results; - } - - static matchElement(element){ - return TableRegistry.tables.find(function(table){ - return element instanceof Tabulator ? table === element : table.element === element; - }); - } -} - -TableRegistry.tables = []; - -export default TableRegistry; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Accessor/Accessor.js b/tmp/tabulator-5.6.1/src/js/modules/Accessor/Accessor.js deleted file mode 100644 index 669de14..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Accessor/Accessor.js +++ /dev/null @@ -1,116 +0,0 @@ -import Module from '../../core/Module.js'; -import Helpers from '../../core/tools/Helpers.js'; - -import defaultAccessors from './defaults/accessors.js'; - -class Accessor extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types - - this.registerColumnOption("accessor"); - this.registerColumnOption("accessorParams"); - this.registerColumnOption("accessorData"); - this.registerColumnOption("accessorDataParams"); - this.registerColumnOption("accessorDownload"); - this.registerColumnOption("accessorDownloadParams"); - this.registerColumnOption("accessorClipboard"); - this.registerColumnOption("accessorClipboardParams"); - this.registerColumnOption("accessorPrint"); - this.registerColumnOption("accessorPrintParams"); - this.registerColumnOption("accessorHtmlOutput"); - this.registerColumnOption("accessorHtmlOutputParams"); - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-retrieve", this.transformRow.bind(this)); - } - - //initialize column accessor - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - accessor; - - if(column.definition[key]){ - accessor = this.lookupAccessor(column.definition[key]); - - if(accessor){ - match = true; - - config[key] = { - accessor:accessor, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.accessor = config; - } - } - - lookupAccessor(value){ - var accessor = false; - - //set column accessor - switch(typeof value){ - case "string": - if(Accessor.accessors[value]){ - accessor = Accessor.accessors[value]; - }else{ - console.warn("Accessor Error - No such accessor found, ignoring: ", value); - } - break; - - case "function": - accessor = value; - break; - } - - return accessor; - } - - //apply accessor to row - transformRow(row, type){ - var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)), - rowComponent = row.getComponent(); - - //clone data object with deep copy to isolate internal data from returned result - var data = Helpers.deepClone(row.data || {}); - - this.table.columnManager.traverse(function(column){ - var value, accessor, params, colComponent; - - if(column.modules.accessor){ - - accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false; - - if(accessor){ - value = column.getFieldValue(data); - - if(value != "undefined"){ - colComponent = column.getComponent(); - params = typeof accessor.params === "function" ? accessor.params(value, data, type, colComponent, rowComponent) : accessor.params; - column.setFieldValue(data, accessor.accessor(value, data, type, params, colComponent, rowComponent)); - } - } - } - }); - - return data; - } -} - -//load defaults -Accessor.moduleName = "accessor"; -Accessor.accessors = defaultAccessors; - -export default Accessor; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Accessor/defaults/accessors.js b/tmp/tabulator-5.6.1/src/js/modules/Accessor/defaults/accessors.js deleted file mode 100644 index 7c645e4..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Accessor/defaults/accessors.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Ajax/Ajax.js b/tmp/tabulator-5.6.1/src/js/modules/Ajax/Ajax.js deleted file mode 100644 index cd41d5b..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Ajax/Ajax.js +++ /dev/null @@ -1,144 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultConfig from './defaults/config.js'; -import defaultURLGenerator from './defaults/urlGenerator.js'; -import defaultLoaderPromise from './defaults/loaderPromise.js'; -import defaultContentTypeFormatters from './defaults/contentTypeFormatters.js'; - -class Ajax extends Module{ - - constructor(table){ - super(table); - - this.config = {}; //hold config object for ajax request - this.url = ""; //request URL - this.urlGenerator = false; - this.params = false; //request parameters - - this.loaderPromise = false; - - this.registerTableOption("ajaxURL", false); //url for ajax loading - this.registerTableOption("ajaxURLGenerator", false); - this.registerTableOption("ajaxParams", {}); //params for ajax loading - this.registerTableOption("ajaxConfig", "get"); //ajax request type - this.registerTableOption("ajaxContentType", "form"); //ajax request type - this.registerTableOption("ajaxRequestFunc", false); //promise function - - this.registerTableOption("ajaxRequesting", function(){}); - this.registerTableOption("ajaxResponse", false); - - this.contentTypeFormatters = Ajax.contentTypeFormatters; - } - - //initialize setup options - initialize(){ - this.loaderPromise = this.table.options.ajaxRequestFunc || Ajax.defaultLoaderPromise; - this.urlGenerator = this.table.options.ajaxURLGenerator || Ajax.defaultURLGenerator; - - if(this.table.options.ajaxURL){ - this.setUrl(this.table.options.ajaxURL); - } - - - this.setDefaultConfig(this.table.options.ajaxConfig); - - this.registerTableFunction("getAjaxUrl", this.getUrl.bind(this)); - - this.subscribe("data-loading", this.requestDataCheck.bind(this)); - this.subscribe("data-params", this.requestParams.bind(this)); - this.subscribe("data-load", this.requestData.bind(this)); - } - - requestParams(data, config, silent, params){ - var ajaxParams = this.table.options.ajaxParams; - - if(ajaxParams){ - if(typeof ajaxParams === "function"){ - ajaxParams = ajaxParams.call(this.table); - } - - params = Object.assign(Object.assign({}, ajaxParams), params); - } - - return params; - } - - requestDataCheck(data, params, config, silent){ - return !!((!data && this.url) || typeof data === "string"); - } - - requestData(url, params, config, silent, previousData){ - var ajaxConfig; - - if(!previousData && this.requestDataCheck(url)){ - if(url){ - this.setUrl(url); - } - - ajaxConfig = this.generateConfig(config); - - return this.sendRequest(this.url, params, ajaxConfig); - }else{ - return previousData; - } - } - - setDefaultConfig(config = {}){ - this.config = Object.assign({}, Ajax.defaultConfig); - - if(typeof config == "string"){ - this.config.method = config; - }else{ - Object.assign(this.config, config); - } - } - - //load config object - generateConfig(config = {}){ - var ajaxConfig = Object.assign({}, this.config); - - if(typeof config == "string"){ - ajaxConfig.method = config; - }else{ - Object.assign(ajaxConfig, config); - } - - return ajaxConfig; - } - - //set request url - setUrl(url){ - this.url = url; - } - - //get request url - getUrl(){ - return this.url; - } - - //send ajax request - sendRequest(url, params, config){ - if(this.table.options.ajaxRequesting.call(this.table, url, params) !== false){ - return this.loaderPromise(url, config, params) - .then((data)=>{ - if(this.table.options.ajaxResponse){ - data = this.table.options.ajaxResponse.call(this.table, url, params, data); - } - - return data; - }); - }else{ - return Promise.reject(); - } - } -} - -Ajax.moduleName = "ajax"; - -//load defaults -Ajax.defaultConfig = defaultConfig; -Ajax.defaultURLGenerator = defaultURLGenerator; -Ajax.defaultLoaderPromise = defaultLoaderPromise; -Ajax.contentTypeFormatters = defaultContentTypeFormatters; - -export default Ajax; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/config.js b/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/config.js deleted file mode 100644 index 174ee36..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/config.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - method: "GET", -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/contentTypeFormatters.js b/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/contentTypeFormatters.js deleted file mode 100644 index f38d81e..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/contentTypeFormatters.js +++ /dev/null @@ -1,45 +0,0 @@ -function generateParamsList(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else{ - output.push({key:prefix, value:data}); - } - - return output; -} - -export default { - "json":{ - headers:{ - 'Content-Type': 'application/json', - }, - body:function(url, config, params){ - return JSON.stringify(params); - }, - }, - "form":{ - headers:{ - }, - body:function(url, config, params){ - - var output = generateParamsList(params), - form = new FormData(); - - output.forEach(function(item){ - form.append(item.key, item.value); - }); - - return form; - }, - }, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/loaderPromise.js b/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/loaderPromise.js deleted file mode 100644 index 0ba69bc..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/loaderPromise.js +++ /dev/null @@ -1,87 +0,0 @@ -export default function(url, config, params){ - var contentType; - - return new Promise((resolve, reject) => { - //set url - url = this.urlGenerator.call(this.table, url, config, params); - - //set body content if not GET request - if(config.method.toUpperCase() != "GET"){ - contentType = typeof this.table.options.ajaxContentType === "object" ? this.table.options.ajaxContentType : this.contentTypeFormatters[this.table.options.ajaxContentType]; - if(contentType){ - - for(var key in contentType.headers){ - if(!config.headers){ - config.headers = {}; - } - - if(typeof config.headers[key] === "undefined"){ - config.headers[key] = contentType.headers[key]; - } - } - - config.body = contentType.body.call(this, url, config, params); - - }else{ - console.warn("Ajax Error - Invalid ajaxContentType value:", this.table.options.ajaxContentType); - } - } - - if(url){ - //configure headers - if(typeof config.headers === "undefined"){ - config.headers = {}; - } - - if(typeof config.headers.Accept === "undefined"){ - config.headers.Accept = "application/json"; - } - - if(typeof config.headers["X-Requested-With"] === "undefined"){ - config.headers["X-Requested-With"] = "XMLHttpRequest"; - } - - if(typeof config.mode === "undefined"){ - config.mode = "cors"; - } - - if(config.mode == "cors"){ - if(typeof config.headers["Origin"] === "undefined"){ - config.headers["Origin"] = window.location.origin; - } - - if(typeof config.credentials === "undefined"){ - config.credentials = 'same-origin'; - } - }else{ - if(typeof config.credentials === "undefined"){ - config.credentials = 'include'; - } - } - - //send request - fetch(url, config) - .then((response)=>{ - if(response.ok) { - response.json() - .then((data)=>{ - resolve(data); - }).catch((error)=>{ - reject(error); - console.warn("Ajax Load Error - Invalid JSON returned", error); - }); - }else{ - console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText); - reject(response); - } - }) - .catch((error)=>{ - console.error("Ajax Load Error - Connection Error: ", error); - reject(error); - }); - }else{ - console.warn("Ajax Load Error - No URL Set"); - resolve([]); - } - }); -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/urlGenerator.js b/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/urlGenerator.js deleted file mode 100644 index 26506de..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Ajax/defaults/urlGenerator.js +++ /dev/null @@ -1,44 +0,0 @@ -function generateParamsList(data, prefix){ - var output = []; - - prefix = prefix || ""; - - if(Array.isArray(data)){ - data.forEach((item, i) => { - output = output.concat(generateParamsList(item, prefix ? prefix + "[" + i + "]" : i)); - }); - }else if (typeof data === "object"){ - for (var key in data){ - output = output.concat(generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key)); - } - }else{ - output.push({key:prefix, value:data}); - } - - return output; -} - -function serializeParams(params){ - var output = generateParamsList(params), - encoded = []; - - output.forEach(function(item){ - encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value)); - }); - - return encoded.join("&"); -} - -export default function(url, config, params){ - if(url){ - if(params && Object.keys(params).length){ - if(!config.method || config.method.toLowerCase() == "get"){ - config.method = "get"; - - url += (url.includes("?") ? "&" : "?") + serializeParams(params); - } - } - } - - return url; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Clipboard/Clipboard.js b/tmp/tabulator-5.6.1/src/js/modules/Clipboard/Clipboard.js deleted file mode 100644 index 99ab674..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Clipboard/Clipboard.js +++ /dev/null @@ -1,282 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultPasteActions from './defaults/pasteActions.js'; -import defaultPasteParsers from './defaults/pasteParsers.js'; - -class Clipboard extends Module{ - - constructor(table){ - super(table); - - this.mode = true; - this.pasteParser = function(){}; - this.pasteAction = function(){}; - this.customSelection = false; - this.rowRange = false; - this.blocked = true; //block copy actions not originating from this command - - this.registerTableOption("clipboard", false); //enable clipboard - this.registerTableOption("clipboardCopyStyled", true); //formatted table data - this.registerTableOption("clipboardCopyConfig", false); //clipboard config - this.registerTableOption("clipboardCopyFormatter", false); //DEPRECATED - REMOVE in 5.0 - this.registerTableOption("clipboardCopyRowRange", "active"); //restrict clipboard to visible rows only - this.registerTableOption("clipboardPasteParser", "table"); //convert pasted clipboard data to rows - this.registerTableOption("clipboardPasteAction", "insert"); //how to insert pasted data into the table - - this.registerColumnOption("clipboard"); - this.registerColumnOption("titleClipboard"); - } - - initialize(){ - this.mode = this.table.options.clipboard; - - this.rowRange = this.table.options.clipboardCopyRowRange; - - if(this.mode === true || this.mode === "copy"){ - this.table.element.addEventListener("copy", (e) => { - var plain, html, list; - - if(!this.blocked){ - e.preventDefault(); - - if(this.customSelection){ - plain = this.customSelection; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - } - }else{ - - list = this.table.modules.export.generateExportList(this.table.options.clipboardCopyConfig, this.table.options.clipboardCopyStyled, this.rowRange, "clipboard"); - - html = this.table.modules.export.generateHTMLTable(list); - plain = html ? this.generatePlainContent(list) : ""; - - if(this.table.options.clipboardCopyFormatter){ - plain = this.table.options.clipboardCopyFormatter("plain", plain); - html = this.table.options.clipboardCopyFormatter("html", html); - } - } - - if (window.clipboardData && window.clipboardData.setData) { - window.clipboardData.setData('Text', plain); - } else if (e.clipboardData && e.clipboardData.setData) { - e.clipboardData.setData('text/plain', plain); - if(html){ - e.clipboardData.setData('text/html', html); - } - } else if (e.originalEvent && e.originalEvent.clipboardData.setData) { - e.originalEvent.clipboardData.setData('text/plain', plain); - if(html){ - e.originalEvent.clipboardData.setData('text/html', html); - } - } - - this.dispatchExternal("clipboardCopied", plain, html); - - this.reset(); - } - }); - } - - if(this.mode === true || this.mode === "paste"){ - this.table.element.addEventListener("paste", (e) => { - this.paste(e); - }); - } - - this.setPasteParser(this.table.options.clipboardPasteParser); - this.setPasteAction(this.table.options.clipboardPasteAction); - - this.registerTableFunction("copyToClipboard", this.copy.bind(this)); - } - - reset(){ - this.blocked = true; - this.customSelection = false; - } - - generatePlainContent (list) { - var output = []; - - list.forEach((row) => { - var rowData = []; - - row.columns.forEach((col) => { - var value = ""; - - if(col){ - - if(row.type === "group"){ - col.value = col.component.getKey(); - } - - if(col.value === null){ - value = ""; - }else{ - switch(typeof col.value){ - case "object": - value = JSON.stringify(col.value); - break; - - case "undefined": - value = ""; - break; - - default: - value = col.value; - } - } - } - - rowData.push(value); - }); - - output.push(rowData.join("\t")); - }); - - return output.join("\n"); - } - - copy (range, internal) { - var sel, textRange; - this.blocked = false; - this.customSelection = false; - - - if (this.mode === true || this.mode === "copy") { - - this.rowRange = range || this.table.options.clipboardCopyRowRange; - - if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { - range = document.createRange(); - range.selectNodeContents(this.table.element); - sel = window.getSelection(); - - if (sel.toString() && internal) { - this.customSelection = sel.toString(); - } - - sel.removeAllRanges(); - sel.addRange(range); - } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") { - textRange = document.body.createTextRange(); - textRange.moveToElementText(this.table.element); - textRange.select(); - } - - document.execCommand('copy'); - - if (sel) { - sel.removeAllRanges(); - } - } - } - - //PASTE EVENT HANDLING - setPasteAction(action){ - - switch(typeof action){ - case "string": - this.pasteAction = Clipboard.pasteActions[action]; - - if(!this.pasteAction){ - console.warn("Clipboard Error - No such paste action found:", action); - } - break; - - case "function": - this.pasteAction = action; - break; - } - } - - setPasteParser(parser){ - switch(typeof parser){ - case "string": - this.pasteParser = Clipboard.pasteParsers[parser]; - - if(!this.pasteParser){ - console.warn("Clipboard Error - No such paste parser found:", parser); - } - break; - - case "function": - this.pasteParser = parser; - break; - } - } - - paste(e){ - var data, rowData, rows; - - if(this.checkPasteOrigin(e)){ - - data = this.getPasteData(e); - - rowData = this.pasteParser.call(this, data); - - if(rowData){ - e.preventDefault(); - - if(this.table.modExists("mutator")){ - rowData = this.mutateData(rowData); - } - - rows = this.pasteAction.call(this, rowData); - - this.dispatchExternal("clipboardPasted", data, rowData, rows); - }else{ - this.dispatchExternal("clipboardPasteError", data); - } - } - } - - mutateData(data){ - var output = []; - - if(Array.isArray(data)){ - data.forEach((row) => { - output.push(this.table.modules.mutator.transformRow(row, "clipboard")); - }); - }else{ - output = data; - } - - return output; - } - - - checkPasteOrigin(e){ - var valid = true; - var blocked = this.confirm("clipboard-paste", [e]); - - if(blocked || !["DIV", "SPAN"].includes(e.target.tagName)){ - valid = false; - } - - return valid; - } - - getPasteData(e){ - var data; - - if (window.clipboardData && window.clipboardData.getData) { - data = window.clipboardData.getData('Text'); - } else if (e.clipboardData && e.clipboardData.getData) { - data = e.clipboardData.getData('text/plain'); - } else if (e.originalEvent && e.originalEvent.clipboardData.getData) { - data = e.originalEvent.clipboardData.getData('text/plain'); - } - - return data; - } -} - -Clipboard.moduleName = "clipboard"; - -//load defaults -Clipboard.pasteActions = defaultPasteActions; -Clipboard.pasteParsers = defaultPasteParsers; - -export default Clipboard; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Clipboard/defaults/pasteActions.js b/tmp/tabulator-5.6.1/src/js/modules/Clipboard/defaults/pasteActions.js deleted file mode 100644 index 48a3b4c..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Clipboard/defaults/pasteActions.js +++ /dev/null @@ -1,54 +0,0 @@ -export default { - replace:function(data){ - return this.table.setData(data); - }, - update:function(data){ - return this.table.updateOrAddData(data); - }, - insert:function(data){ - return this.table.addData(data); - }, - range:function(data){ - var rows = [], - range = this.table.modules.selectRange.activeRange, - singleCell = false, - bounds, startCell, startRow, rowWidth, dataLength; - - dataLength = data.length; - - if(range){ - bounds = range.getBounds(); - startCell = bounds.start; - - if(bounds.start === bounds.end){ - singleCell = true; - } - - if(startCell){ - rows = this.table.rowManager.activeRows.slice(); - startRow = rows.indexOf(startCell.row); - - if(singleCell){ - rowWidth = data.length; - }else{ - rowWidth = (rows.indexOf(bounds.end.row) - startRow) + 1; - } - - - if(startRow >-1){ - this.table.blockRedraw(); - - rows = rows.slice(startRow, startRow + rowWidth); - - rows.forEach((row, i) => { - row.updateData(data[i % dataLength]); - }); - - this.table.restoreRedraw(); - } - } - } - - return rows; - } -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Clipboard/defaults/pasteParsers.js b/tmp/tabulator-5.6.1/src/js/modules/Clipboard/defaults/pasteParsers.js deleted file mode 100644 index 5587d2b..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Clipboard/defaults/pasteParsers.js +++ /dev/null @@ -1,130 +0,0 @@ -export default { - table:function(clipboard){ - var data = [], - headerFindSuccess = true, - columns = this.table.columnManager.columns, - columnMap = [], - rows = []; - - //get data from clipboard into array of columns and rows. - clipboard = clipboard.split("\n"); - - clipboard.forEach(function(row){ - data.push(row.split("\t")); - }); - - if(data.length && !(data.length === 1 && data[0].length < 2)){ - - //check if headers are present by title - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else{ - headerFindSuccess = false; - } - }); - - //check if column headers are present by field - if(!headerFindSuccess){ - headerFindSuccess = true; - columnMap = []; - - data[0].forEach(function(value){ - var column = columns.find(function(column){ - return value && column.field && value.trim() && column.field.trim() === value.trim(); - }); - - if(column){ - columnMap.push(column); - }else{ - headerFindSuccess = false; - } - }); - - if(!headerFindSuccess){ - columnMap = this.table.columnManager.columnsByIndex; - } - } - - //remove header row if found - if(headerFindSuccess){ - data.shift(); - } - - data.forEach(function(item){ - var row = {}; - - item.forEach(function(value, i){ - if(columnMap[i]){ - row[columnMap[i].field] = value; - } - }); - - rows.push(row); - }); - - return rows; - }else{ - return false; - } - }, - range:function(clipboard){ - var data = [], - rows = [], - range = this.table.modules.selectRange.activeRange, - singleCell = false, - bounds, startCell, colWidth, columnMap, startCol; - - if(range){ - bounds = range.getBounds(); - startCell = bounds.start; - - if(bounds.start === bounds.end){ - singleCell = true; - } - - if(startCell){ - //get data from clipboard into array of columns and rows. - clipboard = clipboard.split("\n"); - - clipboard.forEach(function(row){ - data.push(row.split("\t")); - }); - - if(data.length){ - columnMap = this.table.columnManager.getVisibleColumnsByIndex(); - startCol = columnMap.indexOf(startCell.column); - - if(startCol > -1){ - if(singleCell){ - colWidth = data[0].length; - }else{ - colWidth = (columnMap.indexOf(bounds.end.column) - startCol) + 1; - } - - columnMap = columnMap.slice(startCol, startCol + colWidth); - - data.forEach((item) => { - var row = {}; - var itemLength = item.length; - - columnMap.forEach(function(col, i){ - row[col.field] = item[i % itemLength]; - }); - - rows.push(row); - }); - - return rows; - } - } - } - } - - return false; - } -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/CalcComponent.js b/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/CalcComponent.js deleted file mode 100644 index 3b6822d..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/CalcComponent.js +++ /dev/null @@ -1,48 +0,0 @@ -class CalcComponent{ - constructor (row){ - this._row = row; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else{ - return target._row.table.componentFunctionBinder.handle("row", target._row, name); - } - } - }); - } - - getData(transform){ - return this._row.getData(transform); - } - - getElement(){ - return this._row.getElement(); - } - - getTable(){ - return this._row.table; - } - - getCells(){ - var cells = []; - - this._row.getCells().forEach(function(cell){ - cells.push(cell.getComponent()); - }); - - return cells; - } - - getCell(column){ - var cell = this._row.getCell(column); - return cell ? cell.getComponent() : false; - } - - _getSelf(){ - return this._row; - } -} - -export default CalcComponent; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/ColumnCalcs.js b/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/ColumnCalcs.js deleted file mode 100644 index 5ecf772..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/ColumnCalcs.js +++ /dev/null @@ -1,588 +0,0 @@ -import Module from '../../core/Module.js'; - -import CalcComponent from './CalcComponent.js'; - -import Cell from '../../core/cell/Cell.js'; -import Column from '../../core/column/Column.js'; -import Row from '../../core/row/Row.js'; - -import defaultCalculations from './defaults/calculations.js'; - -class ColumnCalcs extends Module{ - - constructor(table){ - super(table); - - this.topCalcs = []; - this.botCalcs = []; - this.genColumn = false; - this.topElement = this.createElement(); - this.botElement = this.createElement(); - this.topRow = false; - this.botRow = false; - this.topInitialized = false; - this.botInitialized = false; - - this.blocked = false; - this.recalcAfterBlock = false; - - this.registerTableOption("columnCalcs", true); - - this.registerColumnOption("topCalc"); - this.registerColumnOption("topCalcParams"); - this.registerColumnOption("topCalcFormatter"); - this.registerColumnOption("topCalcFormatterParams"); - this.registerColumnOption("bottomCalc"); - this.registerColumnOption("bottomCalcParams"); - this.registerColumnOption("bottomCalcFormatter"); - this.registerColumnOption("bottomCalcFormatterParams"); - } - - createElement (){ - var el = document.createElement("div"); - el.classList.add("tabulator-calcs-holder"); - return el; - } - - initialize(){ - this.genColumn = new Column({field:"value"}, this); - - this.subscribe("cell-value-changed", this.cellValueChanged.bind(this)); - this.subscribe("column-init", this.initializeColumnCheck.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("column-moved", this.recalcActiveRows.bind(this)); - this.subscribe("column-add", this.recalcActiveRows.bind(this)); - this.subscribe("data-refreshed", this.recalcActiveRowsRefresh.bind(this)); - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - - this.subscribe("redraw-blocked", this.blockRedraw.bind(this)); - this.subscribe("redraw-restored", this.restoreRedraw.bind(this)); - - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - - this.registerTableFunction("getCalcResults", this.getResults.bind(this)); - this.registerTableFunction("recalc", this.userRecalc.bind(this)); - - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - - tableRedraw(force){ - this.recalc(this.table.rowManager.activeRows); - - if(force){ - this.redraw(); - } - } - - blockRedraw(){ - this.blocked = true; - this.recalcAfterBlock = false; - } - - - restoreRedraw(){ - this.blocked = false; - - if(this.recalcAfterBlock){ - this.recalcAfterBlock = false; - this.recalcActiveRowsRefresh(); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - userRecalc(){ - this.recalc(this.table.rowManager.activeRows); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - blockCheck(){ - if(this.blocked){ - this.recalcAfterBlock = true; - } - - return this.blocked; - } - - visibleRows(viewable, rows){ - if(this.topRow){ - rows.unshift(this.topRow); - } - - if(this.botRow){ - rows.push(this.botRow); - } - - return rows; - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.recalcRowGroup(row); - }else{ - this.recalcActiveRows(); - } - } - - recalcActiveRowsRefresh(){ - if(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){ - this.recalcAll(); - }else{ - this.recalcActiveRows(); - } - } - - recalcActiveRows(){ - this.recalc(this.table.rowManager.activeRows); - } - - cellValueChanged(cell){ - if(cell.column.definition.topCalc || cell.column.definition.bottomCalc){ - if(this.table.options.groupBy){ - if(this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both"){ - this.recalcActiveRows(); - } - - if(this.table.options.columnCalcs != "table"){ - this.recalcRowGroup(cell.row); - } - }else{ - this.recalcActiveRows(); - } - } - } - - initializeColumnCheck(column){ - if(column.definition.topCalc || column.definition.bottomCalc){ - this.initializeColumn(column); - } - } - - //initialize column calcs - initializeColumn(column){ - var def = column.definition; - - var config = { - topCalcParams:def.topCalcParams || {}, - botCalcParams:def.bottomCalcParams || {}, - }; - - if(def.topCalc){ - - switch(typeof def.topCalc){ - case "string": - if(ColumnCalcs.calculations[def.topCalc]){ - config.topCalc = ColumnCalcs.calculations[def.topCalc]; - }else{ - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc); - } - break; - - case "function": - config.topCalc = def.topCalc; - break; - - } - - if(config.topCalc){ - column.modules.columnCalcs = config; - this.topCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeTopRow(); - } - } - - } - - if(def.bottomCalc){ - switch(typeof def.bottomCalc){ - case "string": - if(ColumnCalcs.calculations[def.bottomCalc]){ - config.botCalc = ColumnCalcs.calculations[def.bottomCalc]; - }else{ - console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc); - } - break; - - case "function": - config.botCalc = def.bottomCalc; - break; - - } - - if(config.botCalc){ - column.modules.columnCalcs = config; - this.botCalcs.push(column); - - if(this.table.options.columnCalcs != "group"){ - this.initializeBottomRow(); - } - } - } - - } - - //dummy functions to handle being mock column manager - registerColumnField(){} - - removeCalcs(){ - var changed = false; - - if(this.topInitialized){ - this.topInitialized = false; - this.topElement.parentNode.removeChild(this.topElement); - changed = true; - } - - if(this.botInitialized){ - this.botInitialized = false; - this.footerRemove(this.botElement); - changed = true; - } - - if(changed){ - this.table.rowManager.adjustTableSize(); - } - } - - reinitializeCalcs(){ - if(this.topCalcs.length){ - this.initializeTopRow(); - } - - if(this.botCalcs.length){ - this.initializeBottomRow(); - } - } - - initializeTopRow(){ - var fragment = document.createDocumentFragment(); - - if(!this.topInitialized){ - - fragment.appendChild(document.createElement("br")); - fragment.appendChild(this.topElement); - - this.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling); - this.topInitialized = true; - } - } - - initializeBottomRow(){ - if(!this.botInitialized){ - this.footerPrepend(this.botElement); - this.botInitialized = true; - } - } - - scrollHorizontal(left){ - if(this.botInitialized && this.botRow){ - this.botElement.scrollLeft = left; - } - } - - recalc(rows){ - var data, row; - - if(!this.blockCheck()){ - if(this.topInitialized || this.botInitialized){ - data = this.rowsToData(rows); - - if(this.topInitialized){ - if(this.topRow){ - this.topRow.deleteCells(); - } - - row = this.generateRow("top", data); - this.topRow = row; - while(this.topElement.firstChild) this.topElement.removeChild(this.topElement.firstChild); - this.topElement.appendChild(row.getElement()); - row.initialize(true); - } - - if(this.botInitialized){ - if(this.botRow){ - this.botRow.deleteCells(); - } - - row = this.generateRow("bottom", data); - this.botRow = row; - while(this.botElement.firstChild) this.botElement.removeChild(this.botElement.firstChild); - this.botElement.appendChild(row.getElement()); - row.initialize(true); - } - - this.table.rowManager.adjustTableSize(); - - //set resizable handles - if(this.table.modExists("frozenColumns")){ - this.table.modules.frozenColumns.layout(); - } - } - } - } - - recalcRowGroup(row){ - this.recalcGroup(this.table.modules.groupRows.getRowGroup(row)); - } - - recalcAll(){ - if(this.topCalcs.length || this.botCalcs.length){ - if(this.table.options.columnCalcs !== "group"){ - this.recalcActiveRows(); - } - - if(this.table.options.groupBy && this.table.options.columnCalcs !== "table"){ - - var groups = this.table.modules.groupRows.getChildGroups(); - - groups.forEach((group) => { - this.recalcGroup(group); - }); - } - } - } - - recalcGroup(group){ - var data, rowData; - - if(!this.blockCheck()){ - if(group){ - if(group.calcs){ - if(group.calcs.bottom){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("bottom", data); - - group.calcs.bottom.updateData(rowData); - group.calcs.bottom.reinitialize(); - } - - if(group.calcs.top){ - data = this.rowsToData(group.rows); - rowData = this.generateRowData("top", data); - - group.calcs.top.updateData(rowData); - group.calcs.top.reinitialize(); - } - } - } - } - } - - //generate top stats row - generateTopRow(rows){ - return this.generateRow("top", this.rowsToData(rows)); - } - //generate bottom stats row - generateBottomRow(rows){ - return this.generateRow("bottom", this.rowsToData(rows)); - } - - rowsToData(rows){ - var data = []; - - rows.forEach((row) => { - data.push(row.getData()); - - if(this.table.options.dataTree && this.table.options.dataTreeChildColumnCalcs){ - if(row.modules.dataTree && row.modules.dataTree.open){ - var children = this.rowsToData(this.table.modules.dataTree.getFilteredTreeChildren(row)); - data = data.concat(children); - } - } - }); - - return data; - } - - //generate stats row - generateRow(pos, data){ - var rowData = this.generateRowData(pos, data), - row; - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.disable(); - } - - row = new Row(rowData, this, "calc"); - - if(this.table.modExists("mutator")){ - this.table.modules.mutator.enable(); - } - - row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos); - - row.component = false; - - row.getComponent = () => { - if(!row.component){ - row.component = new CalcComponent(row); - } - - return row.component; - }; - - row.generateCells = () => { - - var cells = []; - - this.table.columnManager.columnsByIndex.forEach((column) => { - - //set field name of mock column - this.genColumn.setField(column.getField()); - this.genColumn.hozAlign = column.hozAlign; - - if(column.definition[pos + "CalcFormatter"] && this.table.modExists("format")){ - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]), - params: column.definition[pos + "CalcFormatterParams"] || {}, - }; - }else{ - this.genColumn.modules.format = { - formatter: this.table.modules.format.getFormatter("plaintext"), - params:{} - }; - } - - //ensure css class definition is replicated to calculation cell - this.genColumn.definition.cssClass = column.definition.cssClass; - - //generate cell and assign to correct column - var cell = new Cell(this.genColumn, row); - cell.getElement(); - cell.column = column; - cell.setWidth(); - - column.cells.push(cell); - cells.push(cell); - - if(!column.visible){ - cell.hide(); - } - }); - - row.cells = cells; - }; - - return row; - } - - //generate stats row - generateRowData(pos, data){ - var rowData = {}, - calcs = pos == "top" ? this.topCalcs : this.botCalcs, - type = pos == "top" ? "topCalc" : "botCalc", - params, paramKey; - - calcs.forEach(function(column){ - var values = []; - - if(column.modules.columnCalcs && column.modules.columnCalcs[type]){ - data.forEach(function(item){ - values.push(column.getFieldValue(item)); - }); - - paramKey = type + "Params"; - params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey]; - - column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params)); - } - }); - - return rowData; - } - - hasTopCalcs(){ - return !!(this.topCalcs.length); - } - - hasBottomCalcs(){ - return !!(this.botCalcs.length); - } - - //handle table redraw - redraw(){ - if(this.topRow){ - this.topRow.normalizeHeight(true); - } - if(this.botRow){ - this.botRow.normalizeHeight(true); - } - } - - //return the calculated - getResults(){ - var results = {}, - groups; - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - groups = this.table.modules.groupRows.getGroups(true); - - groups.forEach((group) => { - results[group.getKey()] = this.getGroupResults(group); - }); - }else{ - results = { - top: this.topRow ? this.topRow.getData() : {}, - bottom: this.botRow ? this.botRow.getData() : {}, - }; - } - - return results; - } - - //get results from a group - getGroupResults(group){ - var groupObj = group._getSelf(), - subGroups = group.getSubGroups(), - subGroupResults = {}, - results = {}; - - subGroups.forEach((subgroup) => { - subGroupResults[subgroup.getKey()] = this.getGroupResults(subgroup); - }); - - results = { - top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {}, - bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {}, - groups: subGroupResults, - }; - - return results; - } - - adjustForScrollbar(width){ - if(this.botRow){ - if(this.table.rtl){ - this.botElement.style.paddingLeft = width + "px"; - }else{ - this.botElement.style.paddingRight = width + "px"; - } - } - } -} - -ColumnCalcs.moduleName = "columnCalcs"; - -//load defaults -ColumnCalcs.calculations = defaultCalculations; - -export default ColumnCalcs; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/defaults/calculations.js b/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/defaults/calculations.js deleted file mode 100644 index c79ab24..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/ColumnCalcs/defaults/calculations.js +++ /dev/null @@ -1,93 +0,0 @@ -export default { - "avg":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2; - - if(values.length){ - output = values.reduce(function(sum, value){ - return Number(sum) + Number(value); - }); - - output = output / values.length; - - output = precision !== false ? output.toFixed(precision) : output; - } - - return parseFloat(output).toString(); - }, - "max":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value > output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "min":function(values, data, calcParams){ - var output = null, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - values.forEach(function(value){ - - value = Number(value); - - if(value < output || output === null){ - output = value; - } - }); - - return output !== null ? (precision !== false ? output.toFixed(precision) : output) : ""; - }, - "sum":function(values, data, calcParams){ - var output = 0, - precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false; - - if(values.length){ - values.forEach(function(value){ - value = Number(value); - - output += !isNaN(value) ? Number(value) : 0; - }); - } - - return precision !== false ? output.toFixed(precision) : output; - }, - "concat":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - output = values.reduce(function(sum, value){ - return String(sum) + String(value); - }); - } - - return output; - }, - "count":function(values, data, calcParams){ - var output = 0; - - if(values.length){ - values.forEach(function(value){ - if(value){ - output ++; - } - }); - } - - return output; - }, - "unique":function(values, data, calcParams){ - var unique = values.filter((value, index) => { - return (values || value === 0) && values.indexOf(value) === index; - }); - - return unique.length; - }, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Comms/Comms.js b/tmp/tabulator-5.6.1/src/js/modules/Comms/Comms.js deleted file mode 100644 index aaba386..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Comms/Comms.js +++ /dev/null @@ -1,52 +0,0 @@ -import Module from '../../core/Module.js'; -import TableRegistry from '../../core/tools/TableRegistry.js'; - -class Comms extends Module{ - - constructor(table){ - super(table); - } - - initialize(){ - this.registerTableFunction("tableComms", this.receive.bind(this)); - } - - getConnections(selectors){ - var connections = [], - connection; - - connection = TableRegistry.lookupTable(selectors); - - connection.forEach((con) =>{ - if(this.table !== con){ - connections.push(con); - } - }); - - return connections; - } - - send(selectors, module, action, data){ - var connections = this.getConnections(selectors); - - connections.forEach((connection) => { - connection.tableComms(this.table.element, module, action, data); - }); - - if(!connections.length && selectors){ - console.warn("Table Connection Error - No tables matching selector found", selectors); - } - } - - receive(table, module, action, data){ - if(this.table.modExists(module)){ - return this.table.modules[module].commsReceived(table, action, data); - }else{ - console.warn("Inter-table Comms Error - no such module:", module); - } - } -} - -Comms.moduleName = "comms"; - -export default Comms; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/DataTree/DataTree.js b/tmp/tabulator-5.6.1/src/js/modules/DataTree/DataTree.js deleted file mode 100644 index e494363..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/DataTree/DataTree.js +++ /dev/null @@ -1,607 +0,0 @@ -import Module from '../../core/Module.js'; - -import Row from '../../core/row/Row.js'; - -import RowComponent from '../../core/row/RowComponent.js'; - -class DataTree extends Module{ - - constructor(table){ - super(table); - - this.indent = 10; - this.field = ""; - this.collapseEl = null; - this.expandEl = null; - this.branchEl = null; - this.elementField = false; - - this.startOpen = function(){}; - - this.registerTableOption("dataTree", false); //enable data tree - this.registerTableOption("dataTreeFilter", true); //filter child rows - this.registerTableOption("dataTreeSort", true); //sort child rows - this.registerTableOption("dataTreeElementColumn", false); - this.registerTableOption("dataTreeBranchElement", true);//show data tree branch element - this.registerTableOption("dataTreeChildIndent", 9); //data tree child indent in px - this.registerTableOption("dataTreeChildField", "_children");//data tre column field to look for child rows - this.registerTableOption("dataTreeCollapseElement", false);//data tree row collapse element - this.registerTableOption("dataTreeExpandElement", false);//data tree row expand element - this.registerTableOption("dataTreeStartExpanded", false); - this.registerTableOption("dataTreeChildColumnCalcs", false);//include visible data tree rows in column calculations - this.registerTableOption("dataTreeSelectPropagate", false);//selecting a parent row selects its children - - //register component functions - this.registerComponentFunction("row", "treeCollapse", this.collapseRow.bind(this)); - this.registerComponentFunction("row", "treeExpand", this.expandRow.bind(this)); - this.registerComponentFunction("row", "treeToggle", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "getTreeParent", this.getTreeParent.bind(this)); - this.registerComponentFunction("row", "getTreeChildren", this.getRowChildren.bind(this)); - this.registerComponentFunction("row", "addTreeChild", this.addTreeChildRow.bind(this)); - this.registerComponentFunction("row", "isTreeExpanded", this.isRowExpanded.bind(this)); - } - - initialize(){ - if(this.table.options.dataTree){ - var dummyEl = null, - options = this.table.options; - - this.field = options.dataTreeChildField; - this.indent = options.dataTreeChildIndent; - - if(this.options("movableRows")){ - console.warn("The movableRows option is not available with dataTree enabled, moving of child rows could result in unpredictable behavior"); - } - - if(options.dataTreeBranchElement){ - - if(options.dataTreeBranchElement === true){ - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch"); - }else{ - if(typeof options.dataTreeBranchElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeBranchElement; - this.branchEl = dummyEl.firstChild; - }else{ - this.branchEl = options.dataTreeBranchElement; - } - } - }else{ - this.branchEl = document.createElement("div"); - this.branchEl.classList.add("tabulator-data-tree-branch-empty"); - } - - if(options.dataTreeCollapseElement){ - if(typeof options.dataTreeCollapseElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeCollapseElement; - this.collapseEl = dummyEl.firstChild; - }else{ - this.collapseEl = options.dataTreeCollapseElement; - } - }else{ - this.collapseEl = document.createElement("div"); - this.collapseEl.classList.add("tabulator-data-tree-control"); - this.collapseEl.tabIndex = 0; - this.collapseEl.innerHTML = "
        "; - } - - if(options.dataTreeExpandElement){ - if(typeof options.dataTreeExpandElement === "string"){ - dummyEl = document.createElement("div"); - dummyEl.innerHTML = options.dataTreeExpandElement; - this.expandEl = dummyEl.firstChild; - }else{ - this.expandEl = options.dataTreeExpandElement; - } - }else{ - this.expandEl = document.createElement("div"); - this.expandEl.classList.add("tabulator-data-tree-control"); - this.expandEl.tabIndex = 0; - this.expandEl.innerHTML = "
        "; - } - - - switch(typeof options.dataTreeStartExpanded){ - case "boolean": - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded; - }; - break; - - case "function": - this.startOpen = options.dataTreeStartExpanded; - break; - - default: - this.startOpen = function(row, index){ - return options.dataTreeStartExpanded[index]; - }; - break; - } - - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("row-deleted", this.rowDelete.bind(this),0); - this.subscribe("row-data-changed", this.rowDataChanged.bind(this), 10); - this.subscribe("cell-value-updated", this.cellValueChanged.bind(this)); - this.subscribe("edit-cancelled", this.cellValueChanged.bind(this)); - this.subscribe("column-moving-rows", this.columnMoving.bind(this)); - this.subscribe("table-built", this.initializeElementField.bind(this)); - this.subscribe("table-redrawing", this.tableRedrawing.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 30); - } - } - - tableRedrawing(force){ - var rows; - - if(force){ - rows = this.table.rowManager.getRows(); - - rows.forEach((row) => { - this.reinitializeRowChildren(row); - }); - } - } - - initializeElementField(){ - var firstCol = this.table.columnManager.getFirstVisibleColumn(); - - this.elementField = this.table.options.dataTreeElementColumn || (firstCol ? firstCol.field : false); - } - - getRowChildren(row){ - return this.getTreeChildren(row, true); - } - - columnMoving(){ - var rows = []; - - this.table.rowManager.rows.forEach((row) => { - rows = rows.concat(this.getTreeChildren(row, false, true)); - }); - - return rows; - } - - rowDataChanged(row, visible, updatedData){ - if(this.redrawNeeded(updatedData)){ - this.initializeRow(row); - - if(visible){ - this.layoutRow(row); - this.refreshData(true); - } - } - } - - cellValueChanged(cell){ - var field = cell.column.getField(); - - if(field === this.elementField){ - this.layoutRow(cell.row); - } - } - - initializeRow(row){ - var childArray = row.getData()[this.field]; - var isArray = Array.isArray(childArray); - - var children = isArray || (!isArray && typeof childArray === "object" && childArray !== null); - - if(!children && row.modules.dataTree && row.modules.dataTree.branchEl){ - row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl); - } - - if(!children && row.modules.dataTree && row.modules.dataTree.controlEl){ - row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl); - } - - row.modules.dataTree = { - index: row.modules.dataTree ? row.modules.dataTree.index : 0, - open: children ? (row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0)) : false, - controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false, - branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false, - parent: row.modules.dataTree ? row.modules.dataTree.parent : false, - children:children, - }; - } - - reinitializeRowChildren(row){ - var children = this.getTreeChildren(row, false, true); - - children.forEach(function(child){ - child.reinitialize(true); - }); - } - - layoutRow(row){ - var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0], - el = cell.getElement(), - config = row.modules.dataTree; - - if(config.branchEl){ - if(config.branchEl.parentNode){ - config.branchEl.parentNode.removeChild(config.branchEl); - } - config.branchEl = false; - } - - if(config.controlEl){ - if(config.controlEl.parentNode){ - config.controlEl.parentNode.removeChild(config.controlEl); - } - config.controlEl = false; - } - - this.generateControlElement(row, el); - - row.getElement().classList.add("tabulator-tree-level-" + config.index); - - if(config.index){ - if(this.branchEl){ - config.branchEl = this.branchEl.cloneNode(true); - el.insertBefore(config.branchEl, el.firstChild); - - if(this.table.rtl){ - config.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + "px"; - }else{ - config.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + "px"; - } - }else{ - - if(this.table.rtl){ - el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + "px"; - }else{ - el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + "px"; - } - } - } - } - - generateControlElement(row, el){ - var config = row.modules.dataTree, - oldControl = config.controlEl; - - el = el || row.getCells()[0].getElement(); - - if(config.children !== false){ - - if(config.open){ - config.controlEl = this.collapseEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.collapseRow(row); - }); - }else{ - config.controlEl = this.expandEl.cloneNode(true); - config.controlEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.expandRow(row); - }); - } - - config.controlEl.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - - if(oldControl && oldControl.parentNode === el){ - oldControl.parentNode.replaceChild(config.controlEl,oldControl); - }else{ - el.insertBefore(config.controlEl, el.firstChild); - } - } - } - - getRows(rows){ - var output = []; - - rows.forEach((row, i) => { - var config, children; - - output.push(row); - - if(row instanceof Row){ - - row.create(); - - config = row.modules.dataTree; - - if(!config.index && config.children !== false){ - children = this.getChildren(row); - - children.forEach((child) => { - child.create(); - output.push(child); - }); - } - } - }); - - return output; - } - - getChildren(row, allChildren){ - var config = row.modules.dataTree, - children = [], - output = []; - - if(config.children !== false && (config.open || allChildren)){ - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else{ - children = config.children; - } - - if(this.table.modExists("sort") && this.table.options.dataTreeSort){ - this.table.modules.sort.sort(children); - } - - children.forEach((child) => { - output.push(child); - - var subChildren = this.getChildren(child); - - subChildren.forEach((sub) => { - output.push(sub); - }); - }); - } - - return output; - } - - generateChildren(row){ - var children = []; - - var childArray = row.getData()[this.field]; - - if(!Array.isArray(childArray)){ - childArray = [childArray]; - } - - childArray.forEach((childData) => { - var childRow = new Row(childData || {}, this.table.rowManager); - - childRow.create(); - - childRow.modules.dataTree.index = row.modules.dataTree.index + 1; - childRow.modules.dataTree.parent = row; - - if(childRow.modules.dataTree.children){ - childRow.modules.dataTree.open = this.startOpen(childRow.getComponent(), childRow.modules.dataTree.index); - } - children.push(childRow); - }); - - return children; - } - - expandRow(row, silent){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = true; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowExpanded", row.getComponent(), row.modules.dataTree.index); - } - } - - collapseRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - config.open = false; - - row.reinitialize(); - - this.refreshData(true); - - this.dispatchExternal("dataTreeRowCollapsed", row.getComponent(), row.modules.dataTree.index); - } - } - - toggleRow(row){ - var config = row.modules.dataTree; - - if(config.children !== false){ - if(config.open){ - this.collapseRow(row); - }else{ - this.expandRow(row); - } - } - } - - isRowExpanded(row){ - return row.modules.dataTree.open; - } - - getTreeParent(row){ - return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false; - } - - getTreeParentRoot(row){ - return row.modules.dataTree && row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row; - } - - getFilteredTreeChildren(row){ - var config = row.modules.dataTree, - output = [], children; - - if(config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - if(this.table.modExists("filter") && this.table.options.dataTreeFilter){ - children = this.table.modules.filter.filter(config.children); - }else{ - children = config.children; - } - - children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(childRow); - } - }); - } - - return output; - } - - rowDelete(row){ - var parent = row.modules.dataTree.parent, - childIndex; - - if(parent){ - childIndex = this.findChildIndex(row, parent); - - if(childIndex !== false){ - parent.data[this.field].splice(childIndex, 1); - } - - if(!parent.data[this.field].length){ - delete parent.data[this.field]; - } - - this.initializeRow(parent); - this.layoutRow(parent); - } - - this.refreshData(true); - } - - addTreeChildRow(row, data, top, index){ - var childIndex = false; - - if(typeof data === "string"){ - data = JSON.parse(data); - } - - if(!Array.isArray(row.data[this.field])){ - row.data[this.field] = []; - - row.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index); - } - - if(typeof index !== "undefined"){ - childIndex = this.findChildIndex(index, row); - - if(childIndex !== false){ - row.data[this.field].splice((top ? childIndex : childIndex + 1), 0, data); - } - } - - if(childIndex === false){ - if(top){ - row.data[this.field].unshift(data); - }else{ - row.data[this.field].push(data); - } - } - - this.initializeRow(row); - this.layoutRow(row); - - this.refreshData(true); - } - - findChildIndex(subject, parent){ - var match = false; - - if(typeof subject == "object"){ - - if(subject instanceof Row){ - //subject is row element - match = subject.data; - }else if(subject instanceof RowComponent){ - //subject is public row component - match = subject._getSelf().data; - }else if(typeof HTMLElement !== "undefined" && subject instanceof HTMLElement){ - if(parent.modules.dataTree){ - match = parent.modules.dataTree.children.find((childRow) => { - return childRow instanceof Row ? childRow.element === subject : false; - }); - - if(match){ - match = match.data; - } - } - }else if(subject === null){ - match = false; - } - - }else if(typeof subject == "undefined"){ - match = false; - }else{ - //subject should be treated as the index of the row - match = parent.data[this.field].find((row) => { - return row.data[this.table.options.index] == subject; - }); - } - - if(match){ - - if(Array.isArray(parent.data[this.field])){ - match = parent.data[this.field].indexOf(match); - } - - if(match == -1){ - match = false; - } - } - - //catch all for any other type of input - - return match; - } - - getTreeChildren(row, component, recurse){ - var config = row.modules.dataTree, - output = []; - - if(config && config.children){ - - if(!Array.isArray(config.children)){ - config.children = this.generateChildren(row); - } - - config.children.forEach((childRow) => { - if(childRow instanceof Row){ - output.push(component ? childRow.getComponent() : childRow); - - if(recurse){ - output = output.concat(this.getTreeChildren(childRow, component, recurse)); - } - } - }); - } - - return output; - } - - getChildField(){ - return this.field; - } - - redrawNeeded(data){ - return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false); - } -} - -DataTree.moduleName = "dataTree"; - -export default DataTree; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Download/Download.js b/tmp/tabulator-5.6.1/src/js/modules/Download/Download.js deleted file mode 100644 index 0dcf1b2..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Download/Download.js +++ /dev/null @@ -1,149 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultDownloaders from './defaults/downloaders.js'; - -class Download extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("downloadEncoder", function(data, mimeType){ - return new Blob([data],{type:mimeType}); - }); //function to manipulate download data - this.registerTableOption("downloadReady", undefined); //warn of function deprecation - this.registerTableOption("downloadConfig", {}); //download config - this.registerTableOption("downloadRowRange", "active"); //restrict download to active rows only - - this.registerColumnOption("download"); - this.registerColumnOption("titleDownload"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.registerTableFunction("download", this.download.bind(this)); - this.registerTableFunction("downloadToTab", this.downloadToTab.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheck("downloadReady", "downloadEncoder"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - downloadToTab(type, filename, options, active){ - this.download(type, filename, options, active, true); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //trigger file download - download(type, filename, options, range, interceptCallback){ - var downloadFunc = false; - - function buildLink(data, mime){ - if(interceptCallback){ - if(interceptCallback === true){ - this.triggerDownload(data, mime, type, filename, true); - }else{ - interceptCallback(data); - } - - }else{ - this.triggerDownload(data, mime, type, filename); - } - } - - if(typeof type == "function"){ - downloadFunc = type; - }else{ - if(Download.downloaders[type]){ - downloadFunc = Download.downloaders[type]; - }else{ - console.warn("Download Error - No such download type found: ", type); - } - } - - if(downloadFunc){ - var list = this.generateExportList(range); - - downloadFunc.call(this.table, list , options || {}, buildLink.bind(this)); - } - } - - generateExportList(range){ - var list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, "download"); - - //assign group header formatter - var groupHeader = this.table.options.groupHeaderDownload; - - if(groupHeader && !Array.isArray(groupHeader)){ - groupHeader = [groupHeader]; - } - - list.forEach((row) => { - var group; - - if(row.type === "group"){ - group = row.columns[0]; - - if(groupHeader && groupHeader[row.indent]){ - group.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - }); - - return list; - } - - triggerDownload(data, mime, type, filename, newTab){ - var element = document.createElement('a'), - blob = this.table.options.downloadEncoder(data, mime); - - if(blob){ - if(newTab){ - window.open(window.URL.createObjectURL(blob)); - }else{ - filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type); - - if(navigator.msSaveOrOpenBlob){ - navigator.msSaveOrOpenBlob(blob, filename); - }else{ - element.setAttribute('href', window.URL.createObjectURL(blob)); - - //set file title - element.setAttribute('download', filename); - - //trigger download - element.style.display = 'none'; - document.body.appendChild(element); - element.click(); - - //remove temporary link element - document.body.removeChild(element); - } - } - - this.dispatchExternal("downloadComplete"); - } - } - - commsReceived(table, action, data){ - switch(action){ - case "intercept": - this.download(data.type, "", data.options, data.active, data.intercept); - break; - } - } -} - -Download.moduleName = "download"; - -//load defaults -Download.downloaders = defaultDownloaders; - -export default Download; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders.js b/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders.js deleted file mode 100644 index b1136f3..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders.js +++ /dev/null @@ -1,15 +0,0 @@ -import csv from './downloaders/csv.js'; -import json from './downloaders/json.js'; -import pdf from './downloaders/pdf.js'; -import xlsx from './downloaders/xlsx.js'; -import html from './downloaders/html.js'; -import jsonLines from './downloaders/jsonLines.js'; - -export default { - csv:csv, - json:json, - jsonLines:jsonLines, - pdf:pdf, - xlsx:xlsx, - html:html, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/csv.js b/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/csv.js deleted file mode 100644 index 3745d0e..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/csv.js +++ /dev/null @@ -1,61 +0,0 @@ -export default function(list, options = {}, setFileContents){ - var delimiter = options.delimiter ? options.delimiter : ",", - fileContents = [], - headers = []; - - list.forEach((row) => { - var item = []; - - switch(row.type){ - case "group": - console.warn("Download Warning - CSV downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - CSV downloader cannot process column calculations"); - break; - - case "header": - row.columns.forEach((col, i) => { - if(col && col.depth === 1){ - headers[i] = typeof col.value == "undefined" || col.value === null ? "" : ('"' + String(col.value).split('"').join('""') + '"'); - } - }); - break; - - case "row": - row.columns.forEach((col) => { - - if(col){ - - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - item.push('"' + String(col.value).split('"').join('""') + '"'); - } - }); - - fileContents.push(item.join(delimiter)); - break; - } - }); - - if(headers.length){ - fileContents.unshift(headers.join(delimiter)); - } - - fileContents = fileContents.join("\n"); - - if(options.bom){ - fileContents = "\ufeff" + fileContents; - } - - setFileContents(fileContents, "text/csv"); -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/html.js b/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/html.js deleted file mode 100644 index bfb0801..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/html.js +++ /dev/null @@ -1,5 +0,0 @@ -export default function(list, options, setFileContents){ - if(this.modExists("export", true)){ - setFileContents(this.modules.export.generateHTMLTable(list), "text/html"); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/json.js b/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/json.js deleted file mode 100644 index de1e54d..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/json.js +++ /dev/null @@ -1,34 +0,0 @@ -export default function(list, options, setFileContents){ - var fileContents = []; - - list.forEach((row) => { - var item = {}; - - switch(row.type){ - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if(col){ - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(item); - break; - } - }); - - fileContents = JSON.stringify(fileContents, null, '\t'); - - setFileContents(fileContents, "application/json"); -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/jsonLines.js b/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/jsonLines.js deleted file mode 100644 index 18fc791..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/jsonLines.js +++ /dev/null @@ -1,32 +0,0 @@ -export default function (list, options, setFileContents) { - const fileContents = []; - - list.forEach((row) => { - const item = {}; - - switch (row.type) { - case "header": - break; - - case "group": - console.warn("Download Warning - JSON downloader cannot process row groups"); - break; - - case "calc": - console.warn("Download Warning - JSON downloader cannot process column calculations"); - break; - - case "row": - row.columns.forEach((col) => { - if (col) { - item[col.component.getTitleDownload() || col.component.getField()] = col.value; - } - }); - - fileContents.push(JSON.stringify(item)); - break; - } - }); - - setFileContents(fileContents.join("\n"), "application/x-ndjson"); -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/pdf.js b/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/pdf.js deleted file mode 100644 index 03b74c1..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/pdf.js +++ /dev/null @@ -1,111 +0,0 @@ -export default function(list, options = {}, setFileContents){ - var header = [], - body = [], - autoTableParams = {}, - rowGroupStyles = options.rowGroupStyles || { - fontStyle: "bold", - fontSize: 12, - cellPadding: 6, - fillColor: 220, - }, - rowCalcStyles = options.rowCalcStyles || { - fontStyle: "bold", - fontSize: 10, - cellPadding: 4, - fillColor: 232, - }, - jsPDFParams = options.jsPDF || {}, - title = options.title ? options.title : ""; - - if(!jsPDFParams.orientation){ - jsPDFParams.orientation = options.orientation || "landscape"; - } - - if(!jsPDFParams.unit){ - jsPDFParams.unit = "pt"; - } - - //parse row list - list.forEach((row) => { - switch(row.type){ - case "header": - header.push(parseRow(row)); - break; - - case "group": - body.push(parseRow(row, rowGroupStyles)); - break; - - case "calc": - body.push(parseRow(row, rowCalcStyles)); - break; - - case "row": - body.push(parseRow(row)); - break; - } - }); - - function parseRow(row, styles){ - var rowData = []; - - row.columns.forEach((col) =>{ - var cell; - - if(col){ - switch(typeof col.value){ - case "object": - col.value = col.value !== null ? JSON.stringify(col.value) : ""; - break; - - case "undefined": - col.value = ""; - break; - } - - cell = { - content:col.value, - colSpan:col.width, - rowSpan:col.height, - }; - - if(styles){ - cell.styles = styles; - } - - rowData.push(cell); - } - }); - - return rowData; - } - - - //configure PDF - var doc = new jspdf.jsPDF(jsPDFParams); //set document to landscape, better for most tables - - if(options.autoTable){ - if(typeof options.autoTable === "function"){ - autoTableParams = options.autoTable(doc) || {}; - }else{ - autoTableParams = options.autoTable; - } - } - - if(title){ - autoTableParams.didDrawPage = function(data) { - doc.text(title, 40, 30); - }; - } - - autoTableParams.head = header; - autoTableParams.body = body; - - doc.autoTable(autoTableParams); - - if(options.documentProcessing){ - options.documentProcessing(doc); - } - - setFileContents(doc.output("arraybuffer"), "application/pdf"); -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/xlsx.js b/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/xlsx.js deleted file mode 100644 index b9c933e..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Download/defaults/downloaders/xlsx.js +++ /dev/null @@ -1,102 +0,0 @@ -import CoreFeature from '../../../../core/CoreFeature.js'; - -export default function(list, options, setFileContents){ - var self = this, - sheetName = options.sheetName || "Sheet1", - workbook = XLSX.utils.book_new(), - tableFeatures = new CoreFeature(this), - compression = 'compress' in options ? options.compress : true, - writeOptions = options.writeOptions || {bookType:'xlsx', bookSST:true, compression}, - output; - - writeOptions.type = 'binary'; - - workbook.SheetNames = []; - workbook.Sheets = {}; - - function generateSheet(){ - var rows = [], - merges = [], - worksheet = {}, - range = {s: {c:0, r:0}, e: {c:(list[0] ? list[0].columns.reduce((a, b) => a + (b && b.width ? b.width : 1), 0) : 0), r:list.length }}; - - //parse row list - list.forEach((row, i) => { - var rowData = []; - - row.columns.forEach(function(col, j){ - - if(col){ - rowData.push(!(col.value instanceof Date) && typeof col.value === "object" ? JSON.stringify(col.value) : col.value); - - if(col.width > 1 || col.height > -1){ - if(col.height > 1 || col.width > 1){ - merges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}}); - } - } - }else{ - rowData.push(""); - } - }); - - rows.push(rowData); - }); - - //convert rows to worksheet - XLSX.utils.sheet_add_aoa(worksheet, rows); - - worksheet['!ref'] = XLSX.utils.encode_range(range); - - if(merges.length){ - worksheet["!merges"] = merges; - } - - return worksheet; - } - - if(options.sheetOnly){ - setFileContents(generateSheet()); - return; - } - - if(options.sheets){ - for(var sheet in options.sheets){ - - if(options.sheets[sheet] === true){ - workbook.SheetNames.push(sheet); - workbook.Sheets[sheet] = generateSheet(); - }else{ - - workbook.SheetNames.push(sheet); - - tableFeatures.commsSend(options.sheets[sheet], "download", "intercept",{ - type:"xlsx", - options:{sheetOnly:true}, - active:self.active, - intercept:function(data){ - workbook.Sheets[sheet] = data; - } - }); - } - } - }else{ - workbook.SheetNames.push(sheetName); - workbook.Sheets[sheetName] = generateSheet(); - } - - if(options.documentProcessing){ - workbook = options.documentProcessing(workbook); - } - - //convert workbook to binary array - function s2ab(s) { - var buf = new ArrayBuffer(s.length); - var view = new Uint8Array(buf); - for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; - return buf; - } - - output = XLSX.write(workbook, writeOptions); - - setFileContents(s2ab(output), "application/octet-stream"); -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/Edit.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/Edit.js deleted file mode 100644 index 53938d7..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/Edit.js +++ /dev/null @@ -1,783 +0,0 @@ -import Module from '../../core/Module.js'; -import Helpers from '../../core/tools/Helpers.js'; - -import defaultEditors from './defaults/editors.js'; - -class Edit extends Module{ - - constructor(table){ - super(table); - - this.currentCell = false; //hold currently editing cell - this.mouseClick = false; //hold mousedown state to prevent click binding being overridden by editor opening - this.recursionBlock = false; //prevent focus recursion - this.invalidEdit = false; - this.editedCells = []; - - this.editors = Edit.editors; - - this.registerColumnOption("editable"); - this.registerColumnOption("editor"); - this.registerColumnOption("editorParams"); - - this.registerColumnOption("cellEditing"); - this.registerColumnOption("cellEdited"); - this.registerColumnOption("cellEditCancelled"); - - this.registerTableOption("editTriggerEvent", "focus"); - - this.registerTableFunction("getEditedCells", this.getEditedCells.bind(this)); - this.registerTableFunction("clearCellEdited", this.clearCellEdited.bind(this)); - this.registerTableFunction("navigatePrev", this.navigatePrev.bind(this)); - this.registerTableFunction("navigateNext", this.navigateNext.bind(this)); - this.registerTableFunction("navigateLeft", this.navigateLeft.bind(this)); - this.registerTableFunction("navigateRight", this.navigateRight.bind(this)); - this.registerTableFunction("navigateUp", this.navigateUp.bind(this)); - this.registerTableFunction("navigateDown", this.navigateDown.bind(this)); - - this.registerComponentFunction("cell", "isEdited", this.cellIsEdited.bind(this)); - this.registerComponentFunction("cell", "clearEdited", this.clearEdited.bind(this)); - this.registerComponentFunction("cell", "edit", this.editCell.bind(this)); - this.registerComponentFunction("cell", "cancelEdit", this.cellCancelEdit.bind(this)); - - this.registerComponentFunction("cell", "navigatePrev", this.navigatePrev.bind(this)); - this.registerComponentFunction("cell", "navigateNext", this.navigateNext.bind(this)); - this.registerComponentFunction("cell", "navigateLeft", this.navigateLeft.bind(this)); - this.registerComponentFunction("cell", "navigateRight", this.navigateRight.bind(this)); - this.registerComponentFunction("cell", "navigateUp", this.navigateUp.bind(this)); - this.registerComponentFunction("cell", "navigateDown", this.navigateDown.bind(this)); - } - - initialize(){ - this.subscribe("cell-init", this.bindEditor.bind(this)); - this.subscribe("cell-delete", this.clearEdited.bind(this)); - this.subscribe("cell-value-changed", this.updateCellClass.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - this.subscribe("column-delete", this.columnDeleteCheck.bind(this)); - this.subscribe("row-deleting", this.rowDeleteCheck.bind(this)); - this.subscribe("row-layout", this.rowEditableCheck.bind(this)); - this.subscribe("data-refreshing", this.cancelEdit.bind(this)); - this.subscribe("clipboard-paste", this.pasteBlocker.bind(this)); - - this.subscribe("keybinding-nav-prev", this.navigatePrev.bind(this, undefined)); - this.subscribe("keybinding-nav-next", this.keybindingNavigateNext.bind(this)); - - - // this.subscribe("keybinding-nav-left", this.navigateLeft.bind(this, undefined)); - // this.subscribe("keybinding-nav-right", this.navigateRight.bind(this, undefined)); - this.subscribe("keybinding-nav-up", this.navigateUp.bind(this, undefined)); - this.subscribe("keybinding-nav-down", this.navigateDown.bind(this, undefined)); - } - - - /////////////////////////////////// - ///////// Paste Negation ////////// - /////////////////////////////////// - - pasteBlocker(e){ - if(this.currentCell){ - return true; - } - } - - - /////////////////////////////////// - ////// Keybinding Functions /////// - /////////////////////////////////// - - keybindingNavigateNext(e){ - var cell = this.currentCell, - newRow = this.options("tabEndNewRow"); - - if(cell){ - if(!this.navigateNext(cell, e)){ - if(newRow){ - cell.getElement().firstChild.blur(); - - if(!this.invalidEdit){ - - if(newRow === true){ - newRow = this.table.addRow({}); - }else{ - if(typeof newRow == "function"){ - newRow = this.table.addRow(newRow(cell.row.getComponent())); - }else{ - newRow = this.table.addRow(Object.assign({}, newRow)); - } - } - - newRow.then(() => { - setTimeout(() => { - cell.getComponent().navigateNext(); - }); - }); - } - } - } - } - } - - /////////////////////////////////// - ///////// Cell Functions ////////// - /////////////////////////////////// - - cellIsEdited(cell){ - return !! cell.modules.edit && cell.modules.edit.edited; - } - - cellCancelEdit(cell){ - if(cell === this.currentCell){ - this.table.modules.edit.cancelEdit(); - }else{ - console.warn("Cancel Editor Error - This cell is not currently being edited "); - } - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - updateCellClass(cell){ - if(this.allowEdit(cell)) { - cell.getElement().classList.add("tabulator-editable"); - } - else { - cell.getElement().classList.remove("tabulator-editable"); - } - } - - clearCellEdited(cells){ - if(!cells){ - cells = this.table.modules.edit.getEditedCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.table.modules.edit.clearEdited(cell._getSelf()); - }); - } - - navigatePrev(cell = this.currentCell, e){ - var nextCell, prevRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateLeft(); - - if(nextCell){ - return true; - }else{ - prevRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(prevRow){ - nextCell = this.findPrevEditableCell(prevRow, prevRow.cells.length); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateNext(cell = this.currentCell, e){ - var nextCell, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - nextCell = this.navigateRight(); - - if(nextCell){ - return true; - }else{ - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextCell = this.findNextEditableCell(nextRow, -1); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - } - } - - return false; - } - - navigateLeft(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findPrevEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateRight(cell = this.currentCell, e){ - var index, nextCell; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextCell = this.findNextEditableCell(cell.row, index); - - if(nextCell){ - nextCell.getComponent().edit(); - return true; - } - } - - return false; - } - - navigateUp(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.prevDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - navigateDown(cell = this.currentCell, e){ - var index, nextRow; - - if(cell){ - - if(e){ - e.preventDefault(); - } - - index = cell.getIndex(); - nextRow = this.table.rowManager.nextDisplayRow(cell.row, true); - - if(nextRow){ - nextRow.cells[index].getComponent().edit(); - return true; - } - } - - return false; - } - - findNextEditableCell(row, index){ - var nextCell = false; - - if(index < row.cells.length-1){ - for(var i = index+1; i < row.cells.length; i++){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - nextCell = cell; - break; - } - } - } - } - - return nextCell; - } - - findPrevEditableCell(row, index){ - var prevCell = false; - - if(index > 0){ - for(var i = index-1; i >= 0; i--){ - let cell = row.cells[i]; - - if(cell.column.modules.edit && Helpers.elVisible(cell.getElement())){ - let allowEdit = this.allowEdit(cell); - - if(allowEdit){ - prevCell = cell; - break; - } - } - } - } - - return prevCell; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.editor !== "undefined"){ - this.initializeColumn(column); - } - } - - columnDeleteCheck(column){ - if(this.currentCell && this.currentCell.column === column){ - this.cancelEdit(); - } - } - - rowDeleteCheck(row){ - if(this.currentCell && this.currentCell.row === row){ - this.cancelEdit(); - } - } - - rowEditableCheck(row){ - row.getCells().forEach((cell) => { - if(cell.column.modules.edit && typeof cell.column.modules.edit.check === "function"){ - this.updateCellClass(cell); - } - }); - } - - //initialize column editor - initializeColumn(column){ - var config = { - editor:false, - blocked:false, - check:column.definition.editable, - params:column.definition.editorParams || {} - }; - - //set column editor - switch(typeof column.definition.editor){ - case "string": - if(this.editors[column.definition.editor]){ - config.editor = this.editors[column.definition.editor]; - }else{ - console.warn("Editor Error - No such editor found: ", column.definition.editor); - } - break; - - case "function": - config.editor = column.definition.editor; - break; - - case "boolean": - if(column.definition.editor === true){ - if(typeof column.definition.formatter !== "function"){ - if(this.editors[column.definition.formatter]){ - config.editor = this.editors[column.definition.formatter]; - }else{ - config.editor = this.editors["input"]; - } - }else{ - console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter); - } - } - break; - } - - if(config.editor){ - column.modules.edit = config; - } - } - - getCurrentCell(){ - return this.currentCell ? this.currentCell.getComponent() : false; - } - - clearEditor(cancel){ - var cell = this.currentCell, - cellEl; - - this.invalidEdit = false; - - if(cell){ - this.currentCell = false; - - cellEl = cell.getElement(); - - this.dispatch("edit-editor-clear", cell, cancel); - - cellEl.classList.remove("tabulator-editing"); - - while(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild); - - cell.row.getElement().classList.remove("tabulator-editing"); - - cell.table.element.classList.remove("tabulator-editing"); - } - } - - cancelEdit(){ - if(this.currentCell){ - var cell = this.currentCell; - var component = this.currentCell.getComponent(); - - this.clearEditor(true); - cell.setValueActual(cell.getValue()); - cell.cellRendered(); - - if(cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight){ - cell.row.normalizeHeight(true); - } - - if(cell.column.definition.cellEditCancelled){ - cell.column.definition.cellEditCancelled.call(this.table, component); - } - - this.dispatch("edit-cancelled", cell); - this.dispatchExternal("cellEditCancelled", component); - } - } - - //return a formatted value for a cell - bindEditor(cell){ - if(cell.column.modules.edit){ - var self = this, - element = cell.getElement(true); - - this.updateCellClass(cell); - element.setAttribute("tabindex", 0); - - element.addEventListener("mousedown", function(e){ - if (e.button === 2) { - e.preventDefault(); - }else{ - self.mouseClick = true; - } - }); - - if(this.options("editTriggerEvent") === "dblclick"){ - element.addEventListener("dblclick", function(e){ - if(!element.classList.contains("tabulator-editing")){ - element.focus({preventScroll: true}); - self.edit(cell, e, false); - } - }); - } - - - if(this.options("editTriggerEvent") === "focus" || this.options("editTriggerEvent") === "click"){ - element.addEventListener("click", function(e){ - if(!element.classList.contains("tabulator-editing")){ - element.focus({preventScroll: true}); - self.edit(cell, e, false); - } - }); - } - - if(this.options("editTriggerEvent") === "focus"){ - element.addEventListener("focus", function(e){ - if(!self.recursionBlock){ - self.edit(cell, e, false); - } - }); - } - } - } - - focusCellNoEvent(cell, block){ - this.recursionBlock = true; - - if(!(block && this.table.browser === "ie")){ - cell.getElement().focus({preventScroll: true}); - } - - this.recursionBlock = false; - } - - editCell(cell, forceEdit){ - this.focusCellNoEvent(cell); - this.edit(cell, false, forceEdit); - } - - focusScrollAdjust(cell){ - if(this.table.rowManager.getRenderMode() == "virtual"){ - var topEdge = this.table.rowManager.element.scrollTop, - bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop, - rowEl = cell.row.getElement(); - - if(rowEl.offsetTop < topEdge){ - this.table.rowManager.element.scrollTop -= (topEdge - rowEl.offsetTop); - }else{ - if(rowEl.offsetTop + rowEl.offsetHeight > bottomEdge){ - this.table.rowManager.element.scrollTop += (rowEl.offsetTop + rowEl.offsetHeight - bottomEdge); - } - } - - var leftEdge = this.table.rowManager.element.scrollLeft, - rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft, - cellEl = cell.getElement(); - - if(this.table.modExists("frozenColumns")){ - leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin || 0); - rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin || 0); - } - - if(this.table.options.renderHorizontal === "virtual"){ - leftEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - rightEdge -= parseInt(this.table.columnManager.renderer.vDomPadLeft); - } - - if(cellEl.offsetLeft < leftEdge){ - this.table.rowManager.element.scrollLeft -= (leftEdge - cellEl.offsetLeft); - }else{ - if(cellEl.offsetLeft + cellEl.offsetWidth > rightEdge){ - this.table.rowManager.element.scrollLeft += (cellEl.offsetLeft + cellEl.offsetWidth - rightEdge); - } - } - } - } - - allowEdit(cell) { - var check = cell.column.modules.edit ? true : false; - - if(cell.column.modules.edit){ - switch(typeof cell.column.modules.edit.check){ - case "function": - if(cell.row.initialized){ - check = cell.column.modules.edit.check(cell.getComponent()); - } - break; - - case "string": - check = !!cell.row.data[cell.column.modules.edit.check]; - break; - - case "boolean": - check = cell.column.modules.edit.check; - break; - } - } - - return check; - } - - edit(cell, e, forceEdit){ - var self = this, - allowEdit = true, - rendered = function(){}, - element = cell.getElement(), - editFinished = false, - cellEditor, component, params; - - //prevent editing if another cell is refusing to leave focus (eg. validation fail) - - if(this.currentCell){ - if(!this.invalidEdit && this.currentCell !== cell){ - this.cancelEdit(); - } - return; - } - - //handle successful value change - function success(value){ - if(self.currentCell === cell && !editFinished){ - var valid = self.chain("edit-success", [cell, value], true, true); - - if(valid === true || self.table.options.validationMode === "highlight"){ - - editFinished = true; - - self.clearEditor(); - - if(!cell.modules.edit){ - cell.modules.edit = {}; - } - - cell.modules.edit.edited = true; - - if(self.editedCells.indexOf(cell) == -1){ - self.editedCells.push(cell); - } - - cell.setValue(value, true); - - return valid === true; - }else{ - editFinished = true; - self.invalidEdit = true; - self.focusCellNoEvent(cell, true); - rendered(); - - setTimeout(() => { - editFinished = false; - }, 10); - return false; - } - }else{ - // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited"); - } - } - - //handle aborted edit - function cancel(){ - // editFinished = true; - - if(self.currentCell === cell && !editFinished){ - self.cancelEdit(); - }else{ - // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited"); - } - } - - function onRendered(callback){ - rendered = callback; - } - - if(!cell.column.modules.edit.blocked){ - if(e){ - e.stopPropagation(); - } - - allowEdit = this.allowEdit(cell); - - if(allowEdit || forceEdit){ - self.cancelEdit(); - - self.currentCell = cell; - - this.focusScrollAdjust(cell); - - component = cell.getComponent(); - - if(this.mouseClick){ - this.mouseClick = false; - - if(cell.column.definition.cellClick){ - cell.column.definition.cellClick.call(this.table, e, component); - } - } - - if(cell.column.definition.cellEditing){ - cell.column.definition.cellEditing.call(this.table, component); - } - - this.dispatch("cell-editing", cell); - this.dispatchExternal("cellEditing", component); - - params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params; - - cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params); - - //if editor returned, add to DOM, if false, abort edit - if(this.currentCell && cellEditor !== false){ - if(cellEditor instanceof Node){ - element.classList.add("tabulator-editing"); - cell.row.getElement().classList.add("tabulator-editing"); - cell.table.element.classList.add("tabulator-editing"); - while(element.firstChild) element.removeChild(element.firstChild); - element.appendChild(cellEditor); - - //trigger onRendered Callback - rendered(); - - //prevent editing from triggering rowClick event - var children = element.children; - - for (var i = 0; i < children.length; i++) { - children[i].addEventListener("click", function(e){ - e.stopPropagation(); - }); - } - }else{ - console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor); - this.blur(element); - return false; - } - }else{ - this.blur(element); - return false; - } - - return true; - }else{ - this.mouseClick = false; - this.blur(element); - return false; - } - }else{ - this.mouseClick = false; - this.blur(element); - return false; - } - } - - blur(element){ - if(!this.confirm("edit-blur", [element]) ){ - element.blur(); - } - } - - getEditedCells(){ - var output = []; - - this.editedCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearEdited(cell){ - var editIndex; - - if(cell.modules.edit && cell.modules.edit.edited){ - cell.modules.edit.edited = false; - - this.dispatch("edit-edited-clear", cell); - } - - editIndex = this.editedCells.indexOf(cell); - - if(editIndex > -1){ - this.editedCells.splice(editIndex, 1); - } - } -} - -Edit.moduleName = "edit"; - -//load defaults -Edit.editors = defaultEditors; - - -export default Edit; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/List.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/List.js deleted file mode 100644 index c3f6070..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/List.js +++ /dev/null @@ -1,1048 +0,0 @@ -import maskInput from './inputMask.js'; -import urlBuilder from '../Ajax/defaults/urlGenerator.js'; - -export default class Edit{ - constructor(editor, cell, onRendered, success, cancel, editorParams){ - this.edit = editor; - this.table = editor.table; - this.cell = cell; - this.params = this._initializeParams(editorParams); - - this.data = []; - this.displayItems = []; - this.currentItems = []; - this.focusedItem = null; - - this.input = this._createInputElement(); - this.listEl = this._createListElement(); - - this.initialValues = null; - - this.isFilter = cell.getType() === "header"; - - this.filterTimeout = null; - this.filtered = false; - this.typing = false; - - this.values = []; - this.popup = null; - - this.listIteration = 0; - - this.lastAction=""; - this.filterTerm=""; - - this.blurable = true; - - this.actions = { - success:success, - cancel:cancel - }; - - this._deprecatedOptionsCheck(); - this._initializeValue(); - - onRendered(this._onRendered.bind(this)); - } - - _deprecatedOptionsCheck(){ - if(this.params.listItemFormatter){ - this.cell.getTable().deprecationAdvisor.msg("The listItemFormatter editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.sortValuesList){ - this.cell.getTable().deprecationAdvisor.msg("The sortValuesList editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchFunc){ - this.cell.getTable().deprecationAdvisor.msg("The searchFunc editor param has been deprecated, please see the latest editor documentation for updated options"); - } - - if(this.params.searchingPlaceholder){ - this.cell.getTable().deprecationAdvisor.msg("The searchingPlaceholder editor param has been deprecated, please see the latest editor documentation for updated options"); - } - } - - _initializeValue(){ - var initialValue = this.cell.getValue(); - - if(typeof initialValue === "undefined" && typeof this.params.defaultValue !== "undefined"){ - initialValue = this.params.defaultValue; - } - - this.initialValues = this.params.multiselect ? initialValue : [initialValue]; - - if(this.isFilter){ - this.input.value = this.initialValues ? this.initialValues.join(",") : ""; - this.headerFilterInitialListGen(); - } - } - - _onRendered(){ - var cellEl = this.cell.getElement(); - - function clickStop(e){ - e.stopPropagation(); - } - - if(!this.isFilter){ - this.input.style.height = "100%"; - this.input.focus({preventScroll: true}); - } - - - cellEl.addEventListener("click", clickStop); - - setTimeout(() => { - cellEl.removeEventListener("click", clickStop); - }, 1000); - - this.input.addEventListener("mousedown", this._preventPopupBlur.bind(this)); - } - - _createListElement(){ - var listEl = document.createElement("div"); - listEl.classList.add("tabulator-edit-list"); - - listEl.addEventListener("mousedown", this._preventBlur.bind(this)); - listEl.addEventListener("keydown", this._inputKeyDown.bind(this)); - - return listEl; - } - - _setListWidth(){ - var element = this.isFilter ? this.input : this.cell.getElement(); - - this.listEl.style.minWidth = element.offsetWidth + "px"; - - if(this.params.maxWidth){ - if(this.params.maxWidth === true){ - this.listEl.style.maxWidth = element.offsetWidth + "px"; - }else if(typeof this.params.maxWidth === "number"){ - this.listEl.style.maxWidth = this.params.maxWidth + "px"; - }else{ - this.listEl.style.maxWidth = this.params.maxWidth; - } - } - - } - - _createInputElement(){ - var attribs = this.params.elementAttributes; - var input = document.createElement("input"); - - input.setAttribute("type", this.params.clearable ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(!this.params.autocomplete){ - input.style.cursor = "default"; - input.style.caretColor = "transparent"; - // input.readOnly = (this.edit.currentCell != false); - } - - if(attribs && typeof attribs == "object"){ - for (let key in attribs){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + attribs["+" + key]); - }else{ - input.setAttribute(key, attribs[key]); - } - } - } - - if(this.params.mask){ - maskInput(input, this.params); - } - - this._bindInputEvents(input); - - return input; - } - - _initializeParams(params){ - var valueKeys = ["values", "valuesURL", "valuesLookup"], - valueCheck; - - params = Object.assign({}, params); - - params.verticalNavigation = params.verticalNavigation || "editor"; - params.placeholderLoading = typeof params.placeholderLoading === "undefined" ? "Searching ..." : params.placeholderLoading; - params.placeholderEmpty = typeof params.placeholderEmpty === "undefined" ? "No Results Found" : params.placeholderEmpty; - params.filterDelay = typeof params.filterDelay === "undefined" ? 300 : params.filterDelay; - - params.emptyValue = Object.keys(params).includes("emptyValue") ? params.emptyValue : ""; - - valueCheck = Object.keys(params).filter(key => valueKeys.includes(key)).length; - - if(!valueCheck){ - console.warn("list editor config error - either the values, valuesURL, or valuesLookup option must be set"); - }else if(valueCheck > 1){ - console.warn("list editor config error - only one of the values, valuesURL, or valuesLookup options can be set on the same editor"); - } - - if(params.autocomplete){ - if(params.multiselect){ - params.multiselect = false; - console.warn("list editor config error - multiselect option is not available when autocomplete is enabled"); - } - }else{ - if(params.freetext){ - params.freetext = false; - console.warn("list editor config error - freetext option is only available when autocomplete is enabled"); - } - - if(params.filterFunc){ - params.filterFunc = false; - console.warn("list editor config error - filterFunc option is only available when autocomplete is enabled"); - } - - if(params.filterRemote){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option is only available when autocomplete is enabled"); - } - - if(params.mask){ - params.mask = false; - console.warn("list editor config error - mask option is only available when autocomplete is enabled"); - } - - if(params.allowEmpty){ - params.allowEmpty = false; - console.warn("list editor config error - allowEmpty option is only available when autocomplete is enabled"); - } - - if(params.listOnEmpty){ - params.listOnEmpty = false; - console.warn("list editor config error - listOnEmpty option is only available when autocomplete is enabled"); - } - } - - if(params.filterRemote && !(typeof params.valuesLookup === "function" || params.valuesURL)){ - params.filterRemote = false; - console.warn("list editor config error - filterRemote option should only be used when values list is populated from a remote source"); - } - return params; - } - ////////////////////////////////////// - ////////// Event Handling //////////// - ////////////////////////////////////// - - _bindInputEvents(input){ - input.addEventListener("focus", this._inputFocus.bind(this)); - input.addEventListener("click", this._inputClick.bind(this)); - input.addEventListener("blur", this._inputBlur.bind(this)); - input.addEventListener("keydown", this._inputKeyDown.bind(this)); - input.addEventListener("search", this._inputSearch.bind(this)); - - if(this.params.autocomplete){ - input.addEventListener("keyup", this._inputKeyUp.bind(this)); - } - } - - - _inputFocus(e){ - this.rebuildOptionsList(); - } - - _filter(){ - if(this.params.filterRemote){ - clearTimeout(this.filterTimeout); - - this.filterTimeout = setTimeout(() => { - this.rebuildOptionsList(); - }, this.params.filterDelay); - }else{ - this._filterList(); - } - } - - _inputClick(e){ - e.stopPropagation(); - } - - _inputBlur(e){ - if(this.blurable){ - if(this.popup){ - this.popup.hide(); - }else{ - this._resolveValue(true); - } - } - } - - _inputSearch(){ - this._clearChoices(); - } - - _inputKeyDown(e){ - switch(e.keyCode){ - - case 38: //up arrow - this._keyUp(e); - break; - - case 40: //down arrow - this._keyDown(e); - break; - - case 37: //left arrow - case 39: //right arrow - this._keySide(e); - break; - - case 13: //enter - this._keyEnter(); - break; - - case 27: //escape - this._keyEsc(); - break; - - case 36: //home - case 35: //end - this._keyHomeEnd(e); - break; - - case 9: //tab - this._keyTab(e); - break; - - default: - this._keySelectLetter(e); - } - } - - _inputKeyUp(e){ - switch(e.keyCode){ - case 38: //up arrow - case 37: //left arrow - case 39: //up arrow - case 40: //right arrow - case 13: //enter - case 27: //escape - break; - - default: - this._keyAutoCompLetter(e); - } - } - - _preventPopupBlur(){ - if(this.popup){ - this.popup.blockHide(); - } - - setTimeout(() =>{ - if(this.popup){ - this.popup.restoreHide(); - } - }, 10); - } - - _preventBlur(){ - this.blurable = false; - - setTimeout(() =>{ - this.blurable = true; - }, 10); - } - - ////////////////////////////////////// - //////// Keyboard Navigation ///////// - ////////////////////////////////////// - - _keyTab(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else{ - if(this.focusedItem){ - this._chooseItem(this.focusedItem, true); - } - } - } - - _keyUp(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index > 0){ - this._focusItem(this.displayItems[index - 1]); - } - } - } - - _keyDown(e){ - var index = this.displayItems.indexOf(this.focusedItem); - - if(this.params.verticalNavigation == "editor" || (this.params.verticalNavigation == "hybrid" && index < this.displayItems.length - 1)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - - if(index < this.displayItems.length - 1){ - if(index == -1){ - this._focusItem(this.displayItems[0]); - }else{ - this._focusItem(this.displayItems[index + 1]); - } - } - } - } - - _keySide(e){ - if(!this.params.autocomplete){ - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - } - } - - _keyEnter(e){ - if(this.params.autocomplete && this.lastAction === "typing"){ - this._resolveValue(true); - }else{ - if(this.focusedItem){ - this._chooseItem(this.focusedItem); - } - } - } - - _keyEsc(e){ - this._cancel(); - } - - _keyHomeEnd(e){ - if(this.params.autocomplete){ - //prevent table navigation while using input element - e.stopImmediatePropagation(); - } - } - - _keySelectLetter(e){ - if(!this.params.autocomplete){ - // if(this.edit.currentCell === false){ - e.preventDefault(); - // } - - if(e.keyCode >= 38 && e.keyCode <= 90){ - this._scrollToValue(e.keyCode); - } - } - } - - _keyAutoCompLetter(e){ - this._filter(); - this.lastAction = "typing"; - this.typing = true; - } - - - _scrollToValue(char){ - clearTimeout(this.filterTimeout); - - var character = String.fromCharCode(char).toLowerCase(); - this.filterTerm += character.toLowerCase(); - - var match = this.displayItems.find((item) => { - return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(this.filterTerm); - }); - - if(match){ - this._focusItem(match); - } - - this.filterTimeout = setTimeout(() => { - this.filterTerm = ""; - }, 800); - } - - _focusItem(item){ - this.lastAction = "focus"; - - if(this.focusedItem && this.focusedItem.element){ - this.focusedItem.element.classList.remove("focused"); - } - - this.focusedItem = item; - - if(item && item.element){ - item.element.classList.add("focused"); - item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'}); - } - } - - - ////////////////////////////////////// - /////// Data List Generation ///////// - ////////////////////////////////////// - headerFilterInitialListGen(){ - this._generateOptions(true); - } - - rebuildOptionsList(){ - this._generateOptions() - .then(this._sortOptions.bind(this)) - .then(this._buildList.bind(this)) - .then(this._showList.bind(this)) - .catch((e) => { - if(!Number.isInteger(e)){ - console.error("List generation error", e); - } - }); - } - - _filterList(){ - this._buildList(this._filterOptions()); - this._showList(); - } - - _generateOptions(silent){ - var values = []; - var iteration = ++ this.listIteration; - - this.filtered = false; - - if(this.params.values){ - values = this.params.values; - }else if (this.params.valuesURL){ - values = this._ajaxRequest(this.params.valuesURL, this.input.value); - }else{ - if(typeof this.params.valuesLookup === "function"){ - values = this.params.valuesLookup(this.cell, this.input.value); - }else if(this.params.valuesLookup){ - values = this._uniqueColumnValues(this.params.valuesLookupField); - } - } - - if(values instanceof Promise){ - if(!silent){ - this._addPlaceholder(this.params.placeholderLoading); - } - - return values.then() - .then((responseValues) => { - if(this.listIteration === iteration){ - return this._parseList(responseValues); - }else{ - return Promise.reject(iteration); - } - }); - }else{ - return Promise.resolve(this._parseList(values)); - } - } - - _addPlaceholder(contents){ - var placeholder = document.createElement("div"); - - if(typeof contents === "function"){ - contents = contents(this.cell.getComponent(), this.listEl); - } - - if(contents){ - this._clearList(); - - if(contents instanceof HTMLElement){ - placeholder = contents; - }else{ - placeholder.classList.add("tabulator-edit-list-placeholder"); - placeholder.innerHTML = contents; - } - - this.listEl.appendChild(placeholder); - - this._showList(); - } - } - - _ajaxRequest(url, term){ - var params = this.params.filterRemote ? {term:term} : {}; - url = urlBuilder(url, {}, params); - - return fetch(url) - .then((response)=>{ - if(response.ok) { - return response.json() - .catch((error)=>{ - console.warn("List Ajax Load Error - Invalid JSON returned", error); - return Promise.reject(error); - }); - }else{ - console.error("List Ajax Load Error - Connection Error: " + response.status, response.statusText); - return Promise.reject(response); - } - }) - .catch((error)=>{ - console.error("List Ajax Load Error - Connection Error: ", error); - return Promise.reject(error); - }); - } - - _uniqueColumnValues(field){ - var output = {}, - data = this.table.getData(this.params.valuesLookup), - column; - - if(field){ - column = this.table.columnManager.getColumnByField(field); - }else{ - column = this.cell.getColumn()._getSelf(); - } - - if(column){ - data.forEach((row) => { - var val = column.getFieldValue(row); - - if(val !== null && typeof val !== "undefined" && val !== ""){ - output[val] = true; - } - }); - }else{ - console.warn("unable to find matching column to create select lookup list:", field); - output = []; - } - - return Object.keys(output); - } - - - _parseList(inputValues){ - var data = []; - - if(!Array.isArray(inputValues)){ - inputValues = Object.entries(inputValues).map(([key, value]) => { - return { - label:value, - value:key, - }; - }); - } - - inputValues.forEach((value) => { - if(typeof value !== "object"){ - value = { - label:value, - value:value, - }; - } - - this._parseListItem(value, data, 0); - }); - - if(!this.currentItems.length && this.params.freetext){ - this.input.value = this.initialValues; - this.typing = true; - this.lastAction = "typing"; - } - - this.data = data; - - return data; - } - - _parseListItem(option, data, level){ - var item = {}; - - if(option.options){ - item = this._parseListGroup(option, level + 1); - }else{ - item = { - label:option.label, - value:option.value, - itemParams:option.itemParams, - elementAttributes: option.elementAttributes, - element:false, - selected:false, - visible:true, - level:level, - original:option, - }; - - if(this.initialValues && this.initialValues.indexOf(option.value) > -1){ - this._chooseItem(item, true); - } - } - - data.push(item); - } - - _parseListGroup(option, level){ - var item = { - label:option.label, - group:true, - itemParams:option.itemParams, - elementAttributes:option.elementAttributes, - element:false, - visible:true, - level:level, - options:[], - original:option, - }; - - option.options.forEach((child) => { - this._parseListItem(child, item.options, level); - }); - - return item; - } - - _sortOptions(options){ - var sorter; - - if(this.params.sort){ - sorter = typeof this.params.sort === "function" ? this.params.sort : this._defaultSortFunction.bind(this); - - this._sortGroup(sorter, options); - } - - return options; - } - - _sortGroup(sorter, options){ - options.sort((a,b) => { - return sorter(a.label, b.label, a.value, b.value, a.original, b.original); - }); - - options.forEach((option) => { - if(option.group){ - this._sortGroup(sorter, option.options); - } - }); - } - - _defaultSortFunction(as, bs){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var emptyAlign = 0; - - if(this.params.sort === "desc"){ - [as, bs] = [bs, as]; - } - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else{ - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - return emptyAlign; - } - - _filterOptions(){ - var filterFunc = this.params.filterFunc || this._defaultFilterFunc, - term = this.input.value; - - if(term){ - this.filtered = true; - - this.data.forEach((item) => { - this._filterItem(filterFunc, term, item); - }); - }else{ - this.filtered = false; - } - - return this.data; - } - - _filterItem(func, term, item){ - var matches = false; - - if(!item.group){ - item.visible = func(term, item.label, item.value, item.original); - }else{ - item.options.forEach((option) => { - if(this._filterItem(func, term, option)){ - matches = true; - } - }); - - item.visible = matches; - } - - return item.visible; - } - - _defaultFilterFunc(term, label, value, item){ - term = String(term).toLowerCase(); - - if(label !== null && typeof label !== "undefined"){ - if(String(label).toLowerCase().indexOf(term) > -1 || String(value).toLowerCase().indexOf(term) > -1){ - return true; - } - } - - return false; - } - - ////////////////////////////////////// - /////////// Display List ///////////// - ////////////////////////////////////// - - _clearList(){ - while(this.listEl.firstChild) this.listEl.removeChild(this.listEl.firstChild); - - this.displayItems = []; - } - - _buildList(data){ - this._clearList(); - - data.forEach((option) => { - this._buildItem(option); - }); - - if(!this.displayItems.length){ - this._addPlaceholder(this.params.placeholderEmpty); - } - } - - _buildItem(item){ - var el = item.element, - contents; - - if(!this.filtered || item.visible){ - - if(!el){ - el = document.createElement("div"); - el.tabIndex = 0; - - contents = this.params.itemFormatter ? this.params.itemFormatter(item.label, item.value, item.original, el) : item.label; - - if(contents instanceof HTMLElement){ - el.appendChild(contents); - }else{ - el.innerHTML = contents; - } - - if(item.group){ - el.classList.add("tabulator-edit-list-group"); - }else{ - el.classList.add("tabulator-edit-list-item"); - } - - el.classList.add("tabulator-edit-list-group-level-" + item.level); - - if(item.elementAttributes && typeof item.elementAttributes == "object"){ - for (let key in item.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - el.setAttribute(key, this.input.getAttribute(key) + item.elementAttributes["+" + key]); - }else{ - el.setAttribute(key, item.elementAttributes[key]); - } - } - } - - if(item.group){ - el.addEventListener("click", this._groupClick.bind(this, item)); - }else{ - el.addEventListener("click", this._itemClick.bind(this, item)); - } - - el.addEventListener("mousedown", this._preventBlur.bind(this)); - - item.element = el; - } - - this._styleItem(item); - - this.listEl.appendChild(el); - - if(item.group){ - item.options.forEach((option) => { - this._buildItem(option); - }); - }else{ - this.displayItems.push(item); - } - } - } - - _showList(){ - var startVis = this.popup && this.popup.isVisible(); - - if(this.input.parentNode){ - if(this.params.autocomplete && this.input.value === "" && !this.params.listOnEmpty){ - if(this.popup){ - this.popup.hide(true); - } - return; - } - - this._setListWidth(); - - if(!this.popup){ - this.popup = this.edit.popup(this.listEl); - } - - this.popup.show(this.cell.getElement(), "bottom"); - - if(!startVis){ - setTimeout(() => { - this.popup.hideOnBlur(this._resolveValue.bind(this, true)); - }, 10); - } - } - } - - _styleItem(item){ - if(item && item.element){ - if(item.selected){ - item.element.classList.add("active"); - }else{ - item.element.classList.remove("active"); - } - } - } - - ////////////////////////////////////// - ///////// User Interaction /////////// - ////////////////////////////////////// - - _itemClick(item, e){ - e.stopPropagation(); - - this._chooseItem(item); - } - - _groupClick(item, e){ - e.stopPropagation(); - } - - - ////////////////////////////////////// - ////// Current Item Management /////// - ////////////////////////////////////// - - _cancel(){ - this.popup.hide(true); - this.actions.cancel(); - } - - _clearChoices(){ - this.typing = true; - - this.currentItems.forEach((item) => { - item.selected = false; - this._styleItem(item); - }); - - this.currentItems = []; - - this.focusedItem = null; - } - - _chooseItem(item, silent){ - var index; - - this.typing = false; - - if(this.params.multiselect){ - index = this.currentItems.indexOf(item); - - if(index > -1){ - this.currentItems.splice(index, 1); - item.selected = false; - }else{ - this.currentItems.push(item); - item.selected = true; - } - - this.input.value = this.currentItems.map(item => item.label).join(","); - - this._styleItem(item); - - }else{ - this.currentItems = [item]; - item.selected = true; - - this.input.value = item.label; - - this._styleItem(item); - - if(!silent){ - this._resolveValue(); - } - } - - this._focusItem(item); - } - - _resolveValue(blur){ - var output, initialValue; - - if(this.popup){ - this.popup.hide(true); - } - - if(this.params.multiselect){ - output = this.currentItems.map(item => item.value); - }else{ - if(blur && this.params.autocomplete && this.typing){ - if(this.params.freetext || (this.params.allowEmpty && this.input.value === "")){ - output = this.input.value; - }else{ - this.actions.cancel(); - return; - } - }else{ - if(this.currentItems[0]){ - output = this.currentItems[0].value; - }else{ - initialValue = Array.isArray(this.initialValues) ? this.initialValues[0] : this.initialValues; - - if(initialValue === null || typeof initialValue === "undefined" || initialValue === ""){ - output = initialValue; - }else{ - output = this.params.emptyValue; - } - } - - } - } - - if(output === ""){ - output = this.params.emptyValue; - } - - this.actions.success(output); - - if(this.isFilter){ - this.initialValues = output && !Array.isArray(output) ? [output] : output; - this.currentItems = []; - } - } - -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors.js deleted file mode 100644 index 47ff54d..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors.js +++ /dev/null @@ -1,29 +0,0 @@ -import input from './editors/input.js'; -import textarea from './editors/textarea.js'; -import number from './editors/number.js'; -import range from './editors/range.js'; -import date from './editors/date.js'; -import time from './editors/time.js'; -import datetime from './editors/datetime.js'; -import select from './editors/select.js'; -import list from './editors/list.js'; -import autocomplete from './editors/autocomplete.js'; -import star from './editors/star.js'; -import progress from './editors/progress.js'; -import tickCross from './editors/tickCross.js'; - -export default { - input:input, - textarea:textarea, - number:number, - range:range, - date:date, - time:time, - datetime:datetime, - select:select, - list:list, - autocomplete:autocomplete, - star:star, - progress:progress, - tickCross:tickCross, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/autocomplete.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/autocomplete.js deleted file mode 100644 index 568a82e..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/autocomplete.js +++ /dev/null @@ -1,12 +0,0 @@ -import List from '../../List.js'; - -export default function(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The autocomplete editor has been deprecated, please use the new list editor with the 'autocomplete' editorParam"); - - editorParams.autocomplete = true; - - var list = new List(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/date.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/date.js deleted file mode 100644 index c1a3584..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/date.js +++ /dev/null @@ -1,138 +0,0 @@ -//input element -export default function(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - function convertDate(value){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else{ - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - return newDatetime.toFormat("yyyy-MM-dd"); - } - - input.type = "date"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.max){ - input.setAttribute("max", inputFormat ? convertDate(editorParams.max) : editorParams.max); - } - - if(editorParams.min){ - input.setAttribute("min", inputFormat ? convertDate(editorParams.min) : editorParams.min); - } - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - cellValue = convertDate(cellValue); - }else{ - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDate; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDate = DT.fromFormat(String(value), "yyyy-MM-dd"); - - switch(inputFormat){ - case true: - value = luxDate; - break; - - case "iso": - value = luxDate.toISO(); - break; - - default: - value = luxDate.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else{ - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/datetime.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/datetime.js deleted file mode 100644 index a708ccc..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/datetime.js +++ /dev/null @@ -1,125 +0,0 @@ -//input element -export default function(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "datetime-local"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else{ - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("yyyy-MM-dd") + "T" + newDatetime.toFormat("HH:mm"); - }else{ - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxDateTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxDateTime = DT.fromISO(String(value)); - - switch(inputFormat){ - case true: - value = luxDateTime; - break; - - case "iso": - value = luxDateTime.toISO(); - break; - - default: - value = luxDateTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else{ - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/input.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/input.js deleted file mode 100644 index 58efe26..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/input.js +++ /dev/null @@ -1,77 +0,0 @@ -import maskInput from '../../inputMask.js'; - -//input element -export default function(cell, onRendered, success, cancel, editorParams){ - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", editorParams.search ? "search" : "text"); - - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = typeof cellValue !== "undefined" ? cellValue : ""; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else{ - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(e); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/list.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/list.js deleted file mode 100644 index bc58032..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/list.js +++ /dev/null @@ -1,7 +0,0 @@ -import List from '../../List.js'; - -export default function(cell, onRendered, success, cancel, editorParams){ - var list = new List(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/number.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/number.js deleted file mode 100644 index 41e3934..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/number.js +++ /dev/null @@ -1,110 +0,0 @@ -import maskInput from '../../inputMask.js'; - -//input element with type of number -export default function(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "editor", - input = document.createElement("input"); - - input.setAttribute("type", "number"); - - if(typeof editorParams.max != "undefined"){ - input.setAttribute("max", editorParams.max); - } - - if(typeof editorParams.min != "undefined"){ - input.setAttribute("min", editorParams.min); - } - - if(typeof editorParams.step != "undefined"){ - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - var blurFunc = function(e){ - onChange(); - }; - - onRendered(function () { - if(cell.getType() === "cell"){ - //submit new value on blur - input.removeEventListener("blur", blurFunc); - - input.focus({preventScroll: true}); - input.style.height = "100%"; - - //submit new value on blur - input.addEventListener("blur", blurFunc); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value !== cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else{ - cancel(); - } - } - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/progress.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/progress.js deleted file mode 100644 index 32f224e..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/progress.js +++ /dev/null @@ -1,127 +0,0 @@ -//draggable progress bar -export default function(cell, onRendered, success, cancel, editorParams){ - var element = cell.getElement(), - max = typeof editorParams.max === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("max")) || 100) : editorParams.max, - min = typeof editorParams.min === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("min")) || 0) : editorParams.min, - percent = (max - min) / 100, - value = cell.getValue() || 0, - handle = document.createElement("div"), - bar = document.createElement("div"), - mouseDrag, mouseDragWidth; - - //set new value - function updateValue(){ - var style = window.getComputedStyle(element, null); - - var calcVal = (percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue("padding-left")) - parseInt(style.getPropertyValue("padding-right")))/100))) + min; - success(calcVal); - element.setAttribute("aria-valuenow", calcVal); - element.setAttribute("aria-label", value); - } - - //style handle - handle.style.position = "absolute"; - handle.style.right = "0"; - handle.style.top = "0"; - handle.style.bottom = "0"; - handle.style.width = "5px"; - handle.classList.add("tabulator-progress-handle"); - - //style bar - bar.style.display = "inline-block"; - bar.style.position = "relative"; - // bar.style.top = "8px"; - // bar.style.bottom = "8px"; - // bar.style.left = "4px"; - // bar.style.marginRight = "4px"; - bar.style.height = "100%"; - bar.style.backgroundColor = "#488CE9"; - bar.style.maxWidth = "100%"; - bar.style.minWidth = "0%"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - bar.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //style cell - element.style.padding = "4px 4px"; - - //make sure value is in range - value = Math.min(parseFloat(value), max); - value = Math.max(parseFloat(value), min); - - //workout percentage - value = Math.round((value - min) / percent); - // bar.style.right = value + "%"; - bar.style.width = value + "%"; - - element.setAttribute("aria-valuemin", min); - element.setAttribute("aria-valuemax", max); - - bar.appendChild(handle); - - handle.addEventListener("mousedown", function(e){ - mouseDrag = e.screenX; - mouseDragWidth = bar.offsetWidth; - }); - - handle.addEventListener("mouseover", function(){ - handle.style.cursor = "ew-resize"; - }); - - element.addEventListener("mousemove", function(e){ - if(mouseDrag){ - bar.style.width = (mouseDragWidth + e.screenX - mouseDrag) + "px"; - } - }); - - element.addEventListener("mouseup", function(e){ - if(mouseDrag){ - e.stopPropagation(); - e.stopImmediatePropagation(); - - mouseDrag = false; - mouseDragWidth = false; - - updateValue(); - } - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth + element.clientWidth/100) + "px"; - break; - - case 37: //left arrow - e.preventDefault(); - bar.style.width = (bar.clientWidth - element.clientWidth/100) + "px"; - break; - - case 9: //tab - case 13: //enter - updateValue(); - break; - - case 27: //escape - cancel(); - break; - - } - }); - - element.addEventListener("blur", function(){ - cancel(); - }); - - return bar; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/range.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/range.js deleted file mode 100644 index de7bec8..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/range.js +++ /dev/null @@ -1,81 +0,0 @@ -//input element with type of number -export default function(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.setAttribute("type", "range"); - - if (typeof editorParams.max != "undefined") { - input.setAttribute("max", editorParams.max); - } - - if (typeof editorParams.min != "undefined") { - input.setAttribute("min", editorParams.min); - } - - if (typeof editorParams.step != "undefined") { - input.setAttribute("step", editorParams.step); - } - - //create and style input - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = cellValue; - - onRendered(function () { - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - } - }); - - function onChange(){ - var value = input.value; - - if(!isNaN(value) && value !==""){ - value = Number(value); - } - - if(value != cellValue){ - if(success(value)){ - cellValue = value; //persist value if successfully validated incase editor is used as header filter - } - }else{ - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e){ - onChange(); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 13: - // case 9: - onChange(); - break; - - case 27: - cancel(); - break; - } - }); - - return input; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/select.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/select.js deleted file mode 100644 index 49df977..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/select.js +++ /dev/null @@ -1,10 +0,0 @@ -import List from '../../List.js'; - -export default function(cell, onRendered, success, cancel, editorParams){ - - this.deprecationMsg("The select editor has been deprecated, please use the new list editor"); - - var list = new List(this, cell, onRendered, success, cancel, editorParams); - - return list.input; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/star.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/star.js deleted file mode 100644 index ecd8741..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/star.js +++ /dev/null @@ -1,146 +0,0 @@ -//star rating -export default function(cell, onRendered, success, cancel, editorParams){ - var self = this, - element = cell.getElement(), - value = cell.getValue(), - maxStars = element.getElementsByTagName("svg").length || 5, - size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14, - stars = [], - starsHolder = document.createElement("div"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"); - - - //change star type - function starChange(val){ - stars.forEach(function(star, i){ - if(i < val){ - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-active"); - }else{ - star.classList.replace("tabulator-star-inactive", "tabulator-star-active"); - } - - star.innerHTML = ''; - }else{ - if(self.table.browser == "ie"){ - star.setAttribute("class", "tabulator-star-inactive"); - }else{ - star.classList.replace("tabulator-star-active", "tabulator-star-inactive"); - } - - star.innerHTML = ''; - } - }); - } - - //build stars - function buildStar(i){ - - var starHolder = document.createElement("span"); - var nextStar = star.cloneNode(true); - - stars.push(nextStar); - - starHolder.addEventListener("mouseenter", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - starChange(i); - }); - - starHolder.addEventListener("mousemove", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - }); - - starHolder.addEventListener("click", function(e){ - e.stopPropagation(); - e.stopImmediatePropagation(); - success(i); - element.blur(); - }); - - starHolder.appendChild(nextStar); - starsHolder.appendChild(starHolder); - - } - - //handle keyboard navigation value change - function changeValue(val){ - value = val; - starChange(val); - } - - //style cell - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - //style holding element - starsHolder.style.verticalAlign = "middle"; - starsHolder.style.display = "inline-block"; - starsHolder.style.padding = "4px"; - - //style star - star.setAttribute("width", size); - star.setAttribute("height", size); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - starsHolder.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - //create correct number of stars - for(var i=1;i<= maxStars;i++){ - buildStar(i); - } - - //ensure value does not exceed number of stars - value = Math.min(parseInt(value), maxStars); - - // set initial styling of stars - starChange(value); - - starsHolder.addEventListener("mousemove", function(e){ - starChange(0); - }); - - starsHolder.addEventListener("click", function(e){ - success(0); - }); - - element.addEventListener("blur", function(e){ - cancel(); - }); - - //allow key based navigation - element.addEventListener("keydown", function(e){ - switch(e.keyCode){ - case 39: //right arrow - changeValue(value + 1); - break; - - case 37: //left arrow - changeValue(value - 1); - break; - - case 13: //enter - success(value); - break; - - case 27: //escape - cancel(); - break; - } - }); - - return starsHolder; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/textarea.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/textarea.js deleted file mode 100644 index 58b6662..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/textarea.js +++ /dev/null @@ -1,123 +0,0 @@ -import maskInput from '../../inputMask.js'; - -//resizable text area element -export default function(cell, onRendered, success, cancel, editorParams){ - var cellValue = cell.getValue(), - vertNav = editorParams.verticalNavigation || "hybrid", - value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""), - input = document.createElement("textarea"), - scrollHeight = 0; - - //create and style input - input.style.display = "block"; - input.style.padding = "2px"; - input.style.height = "100%"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - input.style.whiteSpace = "pre-wrap"; - input.style.resize = "none"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - input.scrollHeight; - input.style.height = input.scrollHeight + "px"; - cell.getRow().normalizeHeight(); - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(e){ - - if(((cellValue === null || typeof cellValue === "undefined") && input.value !== "") || input.value !== cellValue){ - - if(success(input.value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - - setTimeout(function(){ - cell.getRow().normalizeHeight(); - },300); - }else{ - cancel(); - } - } - - //submit new value on blur or change - input.addEventListener("change", onChange); - input.addEventListener("blur", onChange); - - input.addEventListener("keyup", function(){ - - input.style.height = ""; - - var heightNow = input.scrollHeight; - - input.style.height = heightNow + "px"; - - if(heightNow != scrollHeight){ - scrollHeight = heightNow; - cell.getRow().normalizeHeight(); - } - }); - - input.addEventListener("keydown", function(e){ - - switch(e.keyCode){ - - case 13: - if(e.shiftKey && editorParams.shiftEnterSubmit){ - onChange(e); - } - break; - - case 27: - cancel(); - break; - - case 38: //up arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - - break; - - case 40: //down arrow - if(vertNav == "editor" || (vertNav == "hybrid" && input.selectionStart !== input.value.length)){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - - case 35: - case 36: - e.stopPropagation(); - break; - } - }); - - if(editorParams.mask){ - maskInput(input, editorParams); - } - - return input; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/tickCross.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/tickCross.js deleted file mode 100644 index 4ee31e3..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/tickCross.js +++ /dev/null @@ -1,95 +0,0 @@ -//checkbox -export default function(cell, onRendered, success, cancel, editorParams){ - var value = cell.getValue(), - input = document.createElement("input"), - tristate = editorParams.tristate, - indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue, - indetermState = false, - trueValueSet = Object.keys(editorParams).includes("trueValue"), - falseValueSet = Object.keys(editorParams).includes("falseValue"); - - input.setAttribute("type", "checkbox"); - input.style.marginTop = "5px"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - input.value = value; - - if(tristate && (typeof value === "undefined" || value === indetermValue || value === "")){ - indetermState = true; - input.indeterminate = true; - } - - if(this.table.browser != "firefox" && this.table.browser != "safari"){ //prevent blur issue on mac firefox - onRendered(function(){ - if(cell.getType() === "cell"){ - input.focus({preventScroll: true}); - } - }); - } - - input.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === "true" || value === "True" || value === 1); - - function setValue(blur){ - var checkedValue = input.checked; - - if(trueValueSet && checkedValue){ - checkedValue = editorParams.trueValue; - }else if(falseValueSet && !checkedValue){ - checkedValue = editorParams.falseValue; - } - - if(tristate){ - if(!blur){ - if(input.checked && !indetermState){ - input.checked = false; - input.indeterminate = true; - indetermState = true; - return indetermValue; - }else{ - indetermState = false; - return checkedValue; - } - }else{ - if(indetermState){ - return indetermValue; - }else{ - return checkedValue; - } - } - }else{ - return checkedValue; - } - } - - //submit new value on blur - input.addEventListener("change", function(e){ - success(setValue()); - }); - - input.addEventListener("blur", function(e){ - success(setValue(true)); - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - if(e.keyCode == 13){ - success(setValue()); - } - if(e.keyCode == 27){ - cancel(); - } - }); - - return input; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/time.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/time.js deleted file mode 100644 index acdd6b7..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/defaults/editors/time.js +++ /dev/null @@ -1,128 +0,0 @@ -//input element -export default function(cell, onRendered, success, cancel, editorParams){ - var inputFormat = editorParams.format, - vertNav = editorParams.verticalNavigation || "editor", - DT = inputFormat ? (window.DateTime || luxon.DateTime) : null, - newDatetime; - - //create and style input - var cellValue = cell.getValue(), - input = document.createElement("input"); - - input.type = "time"; - input.style.padding = "4px"; - input.style.width = "100%"; - input.style.boxSizing = "border-box"; - - if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){ - for (let key in editorParams.elementAttributes){ - if(key.charAt(0) == "+"){ - key = key.slice(1); - input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]); - }else{ - input.setAttribute(key, editorParams.elementAttributes[key]); - } - } - } - - cellValue = typeof cellValue !== "undefined" ? cellValue : ""; - - if(inputFormat){ - if(DT){ - if(DT.isDateTime(cellValue)){ - newDatetime = cellValue; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(cellValue)); - }else{ - newDatetime = DT.fromFormat(String(cellValue), inputFormat); - } - - cellValue = newDatetime.toFormat("HH:mm"); - - }else{ - console.error("Editor Error - 'date' editor 'format' param is dependant on luxon.js"); - } - } - - console.log("val", cellValue); - - input.value = cellValue; - - onRendered(function(){ - if(cell.getType() == "cell"){ - input.focus({preventScroll: true}); - input.style.height = "100%"; - - if(editorParams.selectContents){ - input.select(); - } - } - }); - - function onChange(){ - var value = input.value, - luxTime; - - if(((cellValue === null || typeof cellValue === "undefined") && value !== "") || value !== cellValue){ - - if(value && inputFormat){ - luxTime = DT.fromFormat(String(value), "hh:mm"); - - switch(inputFormat){ - case true: - value = luxTime; - break; - - case "iso": - value = luxTime.toISO(); - break; - - default: - value = luxTime.toFormat(inputFormat); - } - } - - if(success(value)){ - cellValue = input.value; //persist value if successfully validated incase editor is used as header filter - } - }else{ - cancel(); - } - } - - //submit new value on blur - input.addEventListener("blur", function(e) { - if (e.relatedTarget || e.rangeParent || e.explicitOriginalTarget !== input) { - onChange(); // only on a "true" blur; not when focusing browser's date/time picker - } - }); - - //submit new value on enter - input.addEventListener("keydown", function(e){ - switch(e.keyCode){ - // case 9: - case 13: - onChange(); - break; - - case 27: - cancel(); - break; - - case 35: - case 36: - e.stopPropagation(); - break; - - case 38: //up arrow - case 40: //down arrow - if(vertNav == "editor"){ - e.stopImmediatePropagation(); - e.stopPropagation(); - } - break; - } - }); - - return input; -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Edit/inputMask.js b/tmp/tabulator-5.6.1/src/js/modules/Edit/inputMask.js deleted file mode 100644 index 75df342..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Edit/inputMask.js +++ /dev/null @@ -1,74 +0,0 @@ -export default function maskInput(el, options){ - var mask = options.mask, - maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A", - maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9", - maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*"; - - function fillSymbols(index){ - var symbol = mask[index]; - if(typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber){ - el.value = el.value + "" + symbol; - fillSymbols(index+1); - } - } - - el.addEventListener("keydown", (e) => { - var index = el.value.length, - char = e.key; - - if(e.keyCode > 46 && !e.ctrlKey && !e.metaKey){ - if(index >= mask.length){ - e.preventDefault(); - e.stopPropagation(); - return false; - }else{ - switch(mask[index]){ - case maskLetter: - if(char.toUpperCase() == char.toLowerCase()){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskNumber: - if(isNaN(char)){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - break; - - case maskWildcard: - break; - - default: - if(char !== mask[index]){ - e.preventDefault(); - e.stopPropagation(); - return false; - } - } - } - } - - return; - }); - - el.addEventListener("keyup", (e) => { - if(e.keyCode > 46){ - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } - } - }); - - - if(!el.placeholder){ - el.placeholder = mask; - } - - if(options.maskAutoFill){ - fillSymbols(el.value.length); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Export/Export.js b/tmp/tabulator-5.6.1/src/js/modules/Export/Export.js deleted file mode 100644 index b1851d3..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Export/Export.js +++ /dev/null @@ -1,646 +0,0 @@ -import Module from '../../core/Module.js'; - -import ExportRow from './ExportRow.js'; -import ExportColumn from './ExportColumn.js'; - -class Export extends Module{ - - constructor(table){ - super(table); - - this.config = {}; - this.cloneTableStyle = true; - this.colVisProp = ""; - - this.registerTableOption("htmlOutputConfig", false); //html output config - - this.registerColumnOption("htmlOutput"); - this.registerColumnOption("titleHtmlOutput"); - } - - initialize(){ - this.registerTableFunction("getHtml", this.getHtml.bind(this)); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - generateExportList(config, style, range, colVisProp){ - this.cloneTableStyle = style; - this.config = config || {}; - this.colVisProp = colVisProp; - - var headers, body; - - if (range === 'range') { - var columns = this.table.modules.selectRange.selectedColumns(); - headers = this.config.columnHeaders !== false - ? this.headersToExportRows(this.generateColumnGroupHeaders(columns)) - : []; - body = this.bodyToExportRows(this.rowLookup(range), this.table.modules.selectRange.selectedColumns(true)); - } else { - headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : []; - body = this.bodyToExportRows(this.rowLookup(range)); - } - - return headers.concat(body); - } - - generateTable(config, style, range, colVisProp){ - var list = this.generateExportList(config, style, range, colVisProp); - - return this.generateTableElement(list); - } - - rowLookup(range){ - var rows = []; - - if(typeof range == "function"){ - range.call(this.table).forEach((row) =>{ - row = this.table.rowManager.findRow(row); - - if(row){ - rows.push(row); - } - }); - }else{ - switch(range){ - case true: - case "visible": - rows = this.table.rowManager.getVisibleRows(false, true); - break; - - case "all": - rows = this.table.rowManager.rows; - break; - - case "selected": - rows = this.table.modules.selectRow.selectedRows; - break; - - case "range": - rows = this.table.modules.selectRange.selectedRows(); - break; - - case "active": - default: - if(this.table.options.pagination){ - rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2); - }else{ - rows = this.table.rowManager.getDisplayRows(); - } - } - } - - return Object.assign([], rows); - } - - generateColumnGroupHeaders(columns){ - var output = []; - - if (!columns) { - columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex; - } - - columns.forEach((column) => { - var colData = this.processColumnGroup(column); - - if(colData){ - output.push(colData); - } - }); - - return output; - } - - processColumnGroup(column){ - var subGroups = column.columns, - maxDepth = 0, - title = column.definition["title" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title; - - var groupData = { - title:title, - column:column, - depth:1, - }; - - if(subGroups.length){ - groupData.subGroups = []; - groupData.width = 0; - - subGroups.forEach((subGroup) => { - var subGroupData = this.processColumnGroup(subGroup); - - if(subGroupData){ - groupData.width += subGroupData.width; - groupData.subGroups.push(subGroupData); - - if(subGroupData.depth > maxDepth){ - maxDepth = subGroupData.depth; - } - } - }); - - groupData.depth += maxDepth; - - if(!groupData.width){ - return false; - } - }else{ - if(this.columnVisCheck(column)){ - groupData.width = 1; - }else{ - return false; - } - } - - return groupData; - } - - columnVisCheck(column){ - var visProp = column.definition[this.colVisProp]; - - if(typeof visProp === "function"){ - visProp = visProp.call(this.table, column.getComponent()); - } - - return visProp !== false && (column.visible || (!column.visible && visProp)); - } - - headersToExportRows(columns){ - var headers = [], - headerDepth = 0, - exportRows = []; - - function parseColumnGroup(column, level){ - - var depth = headerDepth - level; - - if(typeof headers[level] === "undefined"){ - headers[level] = []; - } - - column.height = column.subGroups ? 1 : (depth - column.depth) + 1; - - headers[level].push(column); - - if(column.height > 1){ - for(let i = 1; i < column.height; i ++){ - - if(typeof headers[level + i] === "undefined"){ - headers[level + i] = []; - } - - headers[level + i].push(false); - } - } - - if(column.width > 1){ - for(let i = 1; i < column.width; i ++){ - headers[level].push(false); - } - } - - if(column.subGroups){ - column.subGroups.forEach(function(subGroup){ - parseColumnGroup(subGroup, level+1); - }); - } - } - - //calculate maximum header depth - columns.forEach(function(column){ - if(column.depth > headerDepth){ - headerDepth = column.depth; - } - }); - - columns.forEach(function(column){ - parseColumnGroup(column,0); - }); - - headers.forEach((header) => { - var columns = []; - - header.forEach((col) => { - if(col){ - let title = typeof col.title === "undefined" ? "" : col.title; - columns.push(new ExportColumn(title, col.column.getComponent(), col.width, col.height, col.depth)); - }else{ - columns.push(null); - } - }); - - exportRows.push(new ExportRow("header", columns)); - }); - - return exportRows; - } - - bodyToExportRows(rows, columns = []){ - var exportRows = []; - - if (columns.length === 0) { - this.table.columnManager.columnsByIndex.forEach((column) => { - if (this.columnVisCheck(column)) { - columns.push(column.getComponent()); - } - }); - } - - if(this.config.columnCalcs !== false && this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized){ - rows.unshift(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized){ - rows.push(this.table.modules.columnCalcs.botRow); - } - } - - rows = rows.filter((row) => { - switch(row.type){ - case "group": - return this.config.rowGroups !== false; - - case "calc": - return this.config.columnCalcs !== false; - - case "row": - return !(this.table.options.dataTree && this.config.dataTree === false && row.modules.dataTree.parent); - } - - return true; - }); - - rows.forEach((row, i) => { - var rowData = row.getData(this.colVisProp); - var exportCols = []; - var indent = 0; - - switch(row.type){ - case "group": - indent = row.level; - exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1)); - break; - - case "calc" : - case "row" : - columns.forEach((col) => { - exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1)); - }); - - if(this.table.options.dataTree && this.config.dataTree !== false){ - indent = row.modules.dataTree.index; - } - break; - } - - exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent)); - }); - - return exportRows; - } - - generateTableElement(list){ - var table = document.createElement("table"), - headerEl = document.createElement("thead"), - bodyEl = document.createElement("tbody"), - styles = this.lookupTableStyles(), - rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))], - setup = {}; - - setup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter; - - if(this.table.options.dataTree &&this.config.dataTree !== false && this.table.modExists("columnCalcs")){ - setup.treeElementField = this.table.modules.dataTree.elementField; - } - - //assign group header formatter - setup.groupHeader = this.table.options["groupHeader" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))]; - - if(setup.groupHeader && !Array.isArray(setup.groupHeader)){ - setup.groupHeader = [setup.groupHeader]; - } - - table.classList.add("tabulator-print-table"); - - this.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - - - if(list.length > 1000){ - console.warn("It may take a long time to render an HTML table with more than 1000 rows"); - } - - list.forEach((row, i) => { - let rowEl; - - switch(row.type){ - case "header": - headerEl.appendChild(this.generateHeaderElement(row, setup, styles)); - break; - - case "group": - bodyEl.appendChild(this.generateGroupElement(row, setup, styles)); - break; - - case "calc": - bodyEl.appendChild(this.generateCalcElement(row, setup, styles)); - break; - - case "row": - rowEl = this.generateRowElement(row, setup, styles); - - this.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"]); - bodyEl.appendChild(rowEl); - break; - } - }); - - if(headerEl.innerHTML){ - table.appendChild(headerEl); - } - - table.appendChild(bodyEl); - - - this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]); - return table; - } - - lookupTableStyles(){ - var styles = {}; - - //lookup row styles - if(this.cloneTableStyle && window.getComputedStyle){ - styles.oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"); - styles.evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"); - styles.calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs"); - styles.firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"); - styles.firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0]; - - if(styles.firstRow){ - styles.styleCells = styles.firstRow.getElementsByClassName("tabulator-cell"); - styles.firstCell = styles.styleCells[0]; - styles.lastCell = styles.styleCells[styles.styleCells.length - 1]; - } - } - - return styles; - } - - generateHeaderElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - row.columns.forEach((column) => { - if(column){ - var cellEl = document.createElement("th"); - var classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(" ") : []; - - cellEl.colSpan = column.width; - cellEl.rowSpan = column.height; - - cellEl.innerHTML = column.value; - - if(this.cloneTableStyle){ - cellEl.style.boxSizing = "border-box"; - } - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - this.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]); - this.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - if(column.component._column.visible){ - this.mapElementStyles(column.component.getElement(), cellEl, ["width"]); - }else{ - if(column.component._column.definition.width){ - cellEl.style.width = column.component._column.definition.width + "px"; - } - } - - if(column.component._column.parent){ - this.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]); - } - - rowEl.appendChild(cellEl); - } - }); - - return rowEl; - } - - generateGroupElement(row, setup, styles){ - - var rowEl = document.createElement("tr"), - cellEl = document.createElement("td"), - group = row.columns[0]; - - rowEl.classList.add("tabulator-print-table-row"); - - if(setup.groupHeader && setup.groupHeader[row.indent]){ - group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - }else{ - if(setup.groupHeader !== false){ - group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component); - } - } - - cellEl.colSpan = group.width; - cellEl.innerHTML = group.value; - - rowEl.classList.add("tabulator-print-table-group"); - rowEl.classList.add("tabulator-group-level-" + row.indent); - - if(group.component.isVisible()){ - rowEl.classList.add("tabulator-group-visible"); - } - - this.mapElementStyles(styles.firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - this.mapElementStyles(styles.firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]); - - rowEl.appendChild(cellEl); - - return rowEl; - } - - generateCalcElement(row, setup, styles){ - var rowEl = this.generateRowElement(row, setup, styles); - - rowEl.classList.add("tabulator-print-table-calcs"); - this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]); - - return rowEl; - } - - generateRowElement(row, setup, styles){ - var rowEl = document.createElement("tr"); - - rowEl.classList.add("tabulator-print-table-row"); - - row.columns.forEach((col, i) => { - if(col){ - var cellEl = document.createElement("td"), - column = col.component._column, - table = this.table, - index = table.columnManager.findColumnIndex(column), - value = col.value, - cellStyle; - - var cellWrapper = { - modules:{}, - getValue:function(){ - return value; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return cellEl; - }, - getType:function(){ - return "cell"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getData:function(){ - return row.component.getData(); - }, - getRow:function(){ - return row.component; - }, - getTable:function(){ - return table; - }, - getComponent:function(){ - return cellWrapper; - }, - column:column, - }; - - var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : []; - - classNames.forEach(function(className) { - cellEl.classList.add(className); - }); - - if(this.table.modExists("format") && this.config.formatCells !== false){ - value = this.table.modules.format.formatExportValue(cellWrapper, this.colVisProp); - }else{ - switch(typeof value){ - case "object": - value = value !== null ? JSON.stringify(value) : ""; - break; - - case "undefined": - value = ""; - break; - } - } - - if(value instanceof Node){ - cellEl.appendChild(value); - }else{ - cellEl.innerHTML = value; - } - - cellStyle = styles.styleCells && styles.styleCells[index] ? styles.styleCells[index] : styles.firstCell; - - if(cellStyle){ - this.mapElementStyles(cellStyle, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "text-align"]); - - if(column.definition.align){ - cellEl.style.textAlign = column.definition.align; - } - } - - if(this.table.options.dataTree && this.config.dataTree !== false){ - if((setup.treeElementField && setup.treeElementField == column.field) || (!setup.treeElementField && i == 0)){ - if(row.component._row.modules.dataTree.controlEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild); - } - if(row.component._row.modules.dataTree.branchEl){ - cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild); - } - } - } - - rowEl.appendChild(cellEl); - - if(cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback){ - cellWrapper.modules.format.renderedCallback(); - } - } - }); - - if(setup.rowFormatter && row.type === "row" && this.config.formatCells !== false){ - let formatComponent = Object.assign(row.component); - - formatComponent.getElement = function(){return rowEl;}; - - setup.rowFormatter(row.component); - } - - return rowEl; - } - - generateHTMLTable(list){ - var holder = document.createElement("div"); - - holder.appendChild(this.generateTableElement(list)); - - return holder.innerHTML; - } - - getHtml(visible, style, config, colVisProp){ - var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput"); - - return this.generateHTMLTable(list); - } - - mapElementStyles(from, to, props){ - if(this.cloneTableStyle && from && to){ - - var lookup = { - "background-color" : "backgroundColor", - "color" : "fontColor", - "width" : "width", - "font-weight" : "fontWeight", - "font-family" : "fontFamily", - "font-size" : "fontSize", - "text-align" : "textAlign", - "border-top" : "borderTop", - "border-left" : "borderLeft", - "border-right" : "borderRight", - "border-bottom" : "borderBottom", - "padding-top" : "paddingTop", - "padding-left" : "paddingLeft", - "padding-right" : "paddingRight", - "padding-bottom" : "paddingBottom", - }; - - if(window.getComputedStyle){ - var fromStyle = window.getComputedStyle(from); - - props.forEach(function(prop){ - if(!to.style[lookup[prop]]){ - to.style[lookup[prop]] = fromStyle.getPropertyValue(prop); - } - }); - } - } - } -} - -Export.moduleName = "export"; - -export default Export; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Export/ExportColumn.js b/tmp/tabulator-5.6.1/src/js/modules/Export/ExportColumn.js deleted file mode 100644 index 1970b46..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Export/ExportColumn.js +++ /dev/null @@ -1,11 +0,0 @@ -class ExportColumn{ - constructor(value, component, width, height, depth){ - this.value = value; - this.component = component || false; - this.width = width; - this.height = height; - this.depth = depth; - } -} - -export default ExportColumn; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Export/ExportRow.js b/tmp/tabulator-5.6.1/src/js/modules/Export/ExportRow.js deleted file mode 100644 index 7aa090d..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Export/ExportRow.js +++ /dev/null @@ -1,10 +0,0 @@ -class ExportRow{ - constructor(type, columns, component, indent){ - this.type = type; - this.columns = columns; - this.component = component || false; - this.indent = indent || 0; - } -} - -export default ExportRow; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Filter/Filter.js b/tmp/tabulator-5.6.1/src/js/modules/Filter/Filter.js deleted file mode 100644 index e1feaec..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Filter/Filter.js +++ /dev/null @@ -1,904 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultFilters from './defaults/filters.js'; - -class Filter extends Module{ - - constructor(table){ - super(table); - - this.filterList = []; //hold filter list - this.headerFilters = {}; //hold column filters - this.headerFilterColumns = []; //hold columns that use header filters - - this.prevHeaderFilterChangeCheck = ""; - this.prevHeaderFilterChangeCheck = "{}"; - - this.changed = false; //has filtering changed since last render - this.tableInitialized = false; - - this.registerTableOption("filterMode", "local"); //local or remote filtering - - this.registerTableOption("initialFilter", false); //initial filtering criteria - this.registerTableOption("initialHeaderFilter", false); //initial header filtering criteria - this.registerTableOption("headerFilterLiveFilterDelay", 300); //delay before updating column after user types in header filter - this.registerTableOption("placeholderHeaderFilter", false); //placeholder when header filter is empty - - this.registerColumnOption("headerFilter"); - this.registerColumnOption("headerFilterPlaceholder"); - this.registerColumnOption("headerFilterParams"); - this.registerColumnOption("headerFilterEmptyCheck"); - this.registerColumnOption("headerFilterFunc"); - this.registerColumnOption("headerFilterFuncParams"); - this.registerColumnOption("headerFilterLiveFilter"); - - this.registerTableFunction("searchRows", this.searchRows.bind(this)); - this.registerTableFunction("searchData", this.searchData.bind(this)); - - this.registerTableFunction("setFilter", this.userSetFilter.bind(this)); - this.registerTableFunction("refreshFilter", this.userRefreshFilter.bind(this)); - this.registerTableFunction("addFilter", this.userAddFilter.bind(this)); - this.registerTableFunction("getFilters", this.getFilters.bind(this)); - this.registerTableFunction("setHeaderFilterFocus", this.userSetHeaderFilterFocus.bind(this)); - this.registerTableFunction("getHeaderFilterValue", this.userGetHeaderFilterValue.bind(this)); - this.registerTableFunction("setHeaderFilterValue", this.userSetHeaderFilterValue.bind(this)); - this.registerTableFunction("getHeaderFilters", this.getHeaderFilters.bind(this)); - this.registerTableFunction("removeFilter", this.userRemoveFilter.bind(this)); - this.registerTableFunction("clearFilter", this.userClearFilter.bind(this)); - this.registerTableFunction("clearHeaderFilter", this.userClearHeaderFilter.bind(this)); - - this.registerComponentFunction("column", "headerFilterFocus", this.setHeaderFilterFocus.bind(this)); - this.registerComponentFunction("column", "reloadHeaderFilter", this.reloadHeaderFilter.bind(this)); - this.registerComponentFunction("column", "getHeaderFilterValue", this.getHeaderFilterValue.bind(this)); - this.registerComponentFunction("column", "setHeaderFilterValue", this.setHeaderFilterValue.bind(this)); - } - - initialize(){ - this.subscribe("column-init", this.initializeColumnHeaderFilter.bind(this)); - this.subscribe("column-width-fit-before", this.hideHeaderFilterElements.bind(this)); - this.subscribe("column-width-fit-after", this.showHeaderFilterElements.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.subscribe("placeholder", this.generatePlaceholder.bind(this)); - - if(this.table.options.filterMode === "remote"){ - this.subscribe("data-params", this.remoteFilterParams.bind(this)); - } - - this.registerDataHandler(this.filter.bind(this), 10); - } - - tableBuilt(){ - if(this.table.options.initialFilter){ - this.setFilter(this.table.options.initialFilter); - } - - if(this.table.options.initialHeaderFilter){ - this.table.options.initialHeaderFilter.forEach((item) => { - - var column = this.table.columnManager.findColumn(item.field); - - if(column){ - this.setHeaderFilterValue(column, item.value); - }else{ - console.warn("Column Filter Error - No matching column found:", item.field); - return false; - } - }); - } - - this.tableInitialized = true; - } - - remoteFilterParams(data, config, silent, params){ - params.filter = this.getFilters(true, true); - return params; - } - - generatePlaceholder(text){ - if(this.table.options.placeholderHeaderFilter && Object.keys(this.headerFilters).length){ - return this.table.options.placeholderHeaderFilter; - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - //set standard filters - userSetFilter(field, type, value, params){ - this.setFilter(field, type, value, params); - this.refreshFilter(); - } - - //set standard filters - userRefreshFilter(){ - this.refreshFilter(); - } - - //add filter to array - userAddFilter(field, type, value, params){ - this.addFilter(field, type, value, params); - this.refreshFilter(); - } - - userSetHeaderFilterFocus(field){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterFocus(column); - }else{ - console.warn("Column Filter Focus Error - No matching column found:", field); - return false; - } - } - - userGetHeaderFilterValue(field) { - var column = this.table.columnManager.findColumn(field); - - if(column){ - return this.getHeaderFilterValue(column); - }else{ - console.warn("Column Filter Error - No matching column found:", field); - } - } - - userSetHeaderFilterValue(field, value){ - var column = this.table.columnManager.findColumn(field); - - if(column){ - this.setHeaderFilterValue(column, value); - }else{ - console.warn("Column Filter Error - No matching column found:", field); - return false; - } - } - - //remove filter from array - userRemoveFilter(field, type, value){ - this.removeFilter(field, type, value); - this.refreshFilter(); - } - - //clear filters - userClearFilter(all){ - this.clearFilter(all); - this.refreshFilter(); - } - - //clear header filters - userClearHeaderFilter(){ - this.clearHeaderFilter(); - this.refreshFilter(); - } - - - //search for specific row components - searchRows(field, type, value){ - return this.search("rows", field, type, value); - } - - //search for specific data - searchData(field, type, value){ - return this.search("data", field, type, value); - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnHeaderFilter(column){ - var def = column.definition; - - if(def.headerFilter){ - this.initializeColumn(column); - } - } - - //initialize column header filter - initializeColumn(column, value){ - var self = this, - field = column.getField(); - - //handle successfully value change - function success(value){ - var filterType = (column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text") || column.modules.filter.tagType == "textarea" ? "partial" : "match", - type = "", - filterChangeCheck = "", - filterFunc; - - if(typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value){ - - column.modules.filter.prevSuccess = value; - - if(!column.modules.filter.emptyFunc(value)){ - column.modules.filter.value = value; - - switch(typeof column.definition.headerFilterFunc){ - case "string": - if(Filter.filters[column.definition.headerFilterFunc]){ - type = column.definition.headerFilterFunc; - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return Filter.filters[column.definition.headerFilterFunc](value, fieldVal, data, params); - }; - }else{ - console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc); - } - break; - - case "function": - filterFunc = function(data){ - var params = column.definition.headerFilterFuncParams || {}; - var fieldVal = column.getFieldValue(data); - - params = typeof params === "function" ? params(value, fieldVal, data) : params; - - return column.definition.headerFilterFunc(value, fieldVal, data, params); - }; - - type = filterFunc; - break; - } - - if(!filterFunc){ - switch(filterType){ - case "partial": - filterFunc = function(data){ - var colVal = column.getFieldValue(data); - - if(typeof colVal !== 'undefined' && colVal !== null){ - return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1; - }else{ - return false; - } - }; - type = "like"; - break; - - default: - filterFunc = function(data){ - return column.getFieldValue(data) == value; - }; - type = "="; - } - } - - self.headerFilters[field] = {value:value, func:filterFunc, type:type}; - }else{ - delete self.headerFilters[field]; - } - - column.modules.filter.value = value; - - filterChangeCheck = JSON.stringify(self.headerFilters); - - if(self.prevHeaderFilterChangeCheck !== filterChangeCheck){ - self.prevHeaderFilterChangeCheck = filterChangeCheck; - - self.trackChanges(); - self.refreshFilter(); - } - } - - return true; - } - - column.modules.filter = { - success:success, - attrType:false, - tagType:false, - emptyFunc:false, - }; - - this.generateHeaderFilterElement(column); - } - - generateHeaderFilterElement(column, initialValue, reinitialize){ - var self = this, - success = column.modules.filter.success, - field = column.getField(), - filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback; - - column.modules.filter.value = initialValue; - - //handle aborted edit - function cancel(){} - - function onRendered(callback){ - onRenderedCallback = callback; - } - - if(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){ - column.contentElement.removeChild(column.modules.filter.headerElement.parentNode); - } - - if(field){ - - //set empty value function - column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function(value){ - return !value && value !== 0; - }; - - filterElement = document.createElement("div"); - filterElement.classList.add("tabulator-header-filter"); - - //set column editor - switch(typeof column.definition.headerFilter){ - case "string": - if(self.table.modules.edit.editors[column.definition.headerFilter]){ - editor = self.table.modules.edit.editors[column.definition.headerFilter]; - - if((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else{ - console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor); - } - break; - - case "function": - editor = column.definition.headerFilter; - break; - - case "boolean": - if(column.modules.edit && column.modules.edit.editor){ - editor = column.modules.edit.editor; - }else{ - if(column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]){ - editor = self.table.modules.edit.editors[column.definition.formatter]; - - if((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck){ - column.modules.filter.emptyFunc = function(value){ - return value !== true && value !== false; - }; - } - }else{ - editor = self.table.modules.edit.editors["input"]; - } - } - break; - } - - if(editor){ - - cellWrapper = { - getValue:function(){ - return typeof initialValue !== "undefined" ? initialValue : ""; - }, - getField:function(){ - return column.definition.field; - }, - getElement:function(){ - return filterElement; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - getType:() => { - return "header"; - }, - getRow:function(){ - return { - normalizeHeight:function(){ - - } - }; - } - }; - - params = column.definition.headerFilterParams || {}; - - params = typeof params === "function" ? params.call(self.table, cellWrapper) : params; - - editorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params); - - if(!editorElement){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false"); - return; - } - - if(!(editorElement instanceof Node)){ - console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement); - return; - } - - //set Placeholder Text - self.langBind("headerFilters|columns|" + column.definition.field, function(value){ - editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : (column.definition.headerFilterPlaceholder || self.langText("headerFilters|default"))); - }); - - //focus on element on click - editorElement.addEventListener("click", function(e){ - e.stopPropagation(); - editorElement.focus(); - }); - - editorElement.addEventListener("focus", (e) => { - var left = this.table.columnManager.contentsElement.scrollLeft; - - var headerPos = this.table.rowManager.element.scrollLeft; - - if(left !== headerPos){ - this.table.rowManager.scrollHorizontal(left); - this.table.columnManager.scrollHorizontal(left); - } - }); - - //live update filters as user types - typingTimer = false; - - searchTrigger = function(e){ - if(typingTimer){ - clearTimeout(typingTimer); - } - - typingTimer = setTimeout(function(){ - success(editorElement.value); - },self.table.options.headerFilterLiveFilterDelay); - }; - - column.modules.filter.headerElement = editorElement; - column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "" ; - column.modules.filter.tagType = editorElement.tagName.toLowerCase(); - - if(column.definition.headerFilterLiveFilter !== false){ - - if ( - !( - column.definition.headerFilter === 'autocomplete' || - column.definition.headerFilter === 'tickCross' || - ((column.definition.editor === 'autocomplete' || - column.definition.editor === 'tickCross') && - column.definition.headerFilter === true) - ) - ) { - editorElement.addEventListener("keyup", searchTrigger); - editorElement.addEventListener("search", searchTrigger); - - - //update number filtered columns on change - if(column.modules.filter.attrType == "number"){ - editorElement.addEventListener("change", function(e){ - success(editorElement.value); - }); - } - - //change text inputs to search inputs to allow for clearing of field - if(column.modules.filter.attrType == "text" && this.table.browser !== "ie"){ - editorElement.setAttribute("type", "search"); - // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click - } - - } - - //prevent input and select elements from propagating click to column sorters etc - if(column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea"){ - editorElement.addEventListener("mousedown",function(e){ - e.stopPropagation(); - }); - } - } - - filterElement.appendChild(editorElement); - - column.contentElement.appendChild(filterElement); - - if(!reinitialize){ - self.headerFilterColumns.push(column); - } - - if(onRenderedCallback){ - onRenderedCallback(); - } - } - }else{ - console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title); - } - } - - //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode) - hideHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = 'none'; - } - }); - } - - //show all header filter elements (used to ensure correct column widths in "fitData" layout mode) - showHeaderFilterElements(){ - this.headerFilterColumns.forEach(function(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.style.display = ''; - } - }); - } - - //programmatically set focus of header filter - setHeaderFilterFocus(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - column.modules.filter.headerElement.focus(); - }else{ - console.warn("Column Filter Focus Error - No header filter set on column:", column.getField()); - } - } - - //programmatically get value of header filter - getHeaderFilterValue(column){ - if(column.modules.filter && column.modules.filter.headerElement){ - return column.modules.filter.value; - } else { - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - - //programmatically set value of header filter - setHeaderFilterValue(column, value){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, value, true); - column.modules.filter.success(value); - }else{ - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - reloadHeaderFilter(column){ - if (column){ - if(column.modules.filter && column.modules.filter.headerElement){ - this.generateHeaderFilterElement(column, column.modules.filter.value, true); - }else{ - console.warn("Column Filter Error - No header filter set on column:", column.getField()); - } - } - } - - refreshFilter(){ - if(this.tableInitialized){ - if(this.table.options.filterMode === "remote"){ - this.reloadData(null, false, false); - }else{ - this.refreshData(true); - } - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the filters has changed since last use - trackChanges(){ - this.changed = true; - this.dispatch("filter-changed"); - } - - //check if the filters has changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //set standard filters - setFilter(field, type, value, params){ - this.filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - this.addFilter(field); - } - - //add filter to array - addFilter(field, type, value, params){ - var changed = false; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value, params:params}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - this.filterList.push(filter); - changed = true; - } - }); - - if(changed){ - this.trackChanges(); - } - } - - findFilter(filter){ - var column; - - if(Array.isArray(filter)){ - return this.findSubFilters(filter); - } - - var filterFunc = false; - - if(typeof filter.field == "function"){ - filterFunc = function(data){ - return filter.field(data, filter.type || {});// pass params to custom filter function - }; - }else{ - - if(Filter.filters[filter.type]){ - - column = this.table.columnManager.getColumnByField(filter.field); - - if(column){ - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {}); - }; - }else{ - filterFunc = function(data){ - return Filter.filters[filter.type](filter.value, data[filter.field], data, filter.params || {}); - }; - } - - - }else{ - console.warn("Filter Error - No such filter type found, ignoring: ", filter.type); - } - } - - filter.func = filterFunc; - - return filter.func ? filter : false; - } - - findSubFilters(filters){ - var output = []; - - filters.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - output.push(filter); - } - }); - - return output.length ? output : false; - } - - //get all filters - getFilters(all, ajax){ - var output = []; - - if(all){ - output = this.getHeaderFilters(); - } - - if(ajax){ - output.forEach(function(item){ - if(typeof item.type == "function"){ - item.type = "function"; - } - }); - } - - output = output.concat(this.filtersToArray(this.filterList, ajax)); - - return output; - } - - //filter to Object - filtersToArray(filterList, ajax){ - var output = []; - - filterList.forEach((filter) => { - var item; - - if(Array.isArray(filter)){ - output.push(this.filtersToArray(filter, ajax)); - }else{ - item = {field:filter.field, type:filter.type, value:filter.value}; - - if(ajax){ - if(typeof item.type == "function"){ - item.type = "function"; - } - } - - output.push(item); - } - }); - - return output; - } - - //get all filters - getHeaderFilters(){ - var output = []; - - for(var key in this.headerFilters){ - output.push({field:key, type:this.headerFilters[key].type, value:this.headerFilters[key].value}); - } - - return output; - } - - //remove filter from array - removeFilter(field, type, value){ - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - var index = -1; - - if(typeof filter.field == "object"){ - index = this.filterList.findIndex((element) => { - return filter === element; - }); - }else{ - index = this.filterList.findIndex((element) => { - return filter.field === element.field && filter.type === element.type && filter.value === element.value; - }); - } - - if(index > -1){ - this.filterList.splice(index, 1); - }else{ - console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type); - } - }); - - this.trackChanges(); - } - - //clear filters - clearFilter(all){ - this.filterList = []; - - if(all){ - this.clearHeaderFilter(); - } - - this.trackChanges(); - } - - //clear header filters - clearHeaderFilter(){ - this.headerFilters = {}; - this.prevHeaderFilterChangeCheck = "{}"; - - this.headerFilterColumns.forEach((column) => { - if(typeof column.modules.filter.value !== "undefined"){ - delete column.modules.filter.value; - } - column.modules.filter.prevSuccess = undefined; - this.reloadHeaderFilter(column); - }); - - this.trackChanges(); - } - - //search data and return matching rows - search (searchType, field, type, value){ - var activeRows = [], - filterList = []; - - if(!Array.isArray(field)){ - field = [{field:field, type:type, value:value}]; - } - - field.forEach((filter) => { - filter = this.findFilter(filter); - - if(filter){ - filterList.push(filter); - } - }); - - this.table.rowManager.rows.forEach((row) => { - var match = true; - - filterList.forEach((filter) => { - if(!this.filterRecurse(filter, row.getData())){ - match = false; - } - }); - - if(match){ - activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent()); - } - - }); - - return activeRows; - } - - //filter row array - filter(rowList, filters){ - var activeRows = [], - activeRowComponents = []; - - if(this.subscribedExternal("dataFiltering")){ - this.dispatchExternal("dataFiltering", this.getFilters(true)); - } - - if(this.table.options.filterMode !== "remote" && (this.filterList.length || Object.keys(this.headerFilters).length)){ - - rowList.forEach((row) => { - if(this.filterRow(row)){ - activeRows.push(row); - } - }); - - }else{ - activeRows = rowList.slice(0); - } - - if(this.subscribedExternal("dataFiltered")){ - - activeRows.forEach((row) => { - activeRowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataFiltered", this.getFilters(true), activeRowComponents); - } - - return activeRows; - } - - //filter individual row - filterRow(row, filters){ - var match = true, - data = row.getData(); - - this.filterList.forEach((filter) => { - if(!this.filterRecurse(filter, data)){ - match = false; - } - }); - - - for(var field in this.headerFilters){ - if(!this.headerFilters[field].func(data)){ - match = false; - } - } - - return match; - } - - filterRecurse(filter, data){ - var match = false; - - if(Array.isArray(filter)){ - filter.forEach((subFilter) => { - if(this.filterRecurse(subFilter, data)){ - match = true; - } - }); - }else{ - match = filter.func(data); - } - - return match; - } -} - -Filter.moduleName = "filter"; - -//load defaults -Filter.filters = defaultFilters; - -export default Filter; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Filter/defaults/filters.js b/tmp/tabulator-5.6.1/src/js/modules/Filter/defaults/filters.js deleted file mode 100644 index 4c8bc44..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Filter/defaults/filters.js +++ /dev/null @@ -1,108 +0,0 @@ -export default { - - //equal to - "=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal == filterVal ? true : false; - }, - - //less than - "<":function(filterVal, rowVal, rowData, filterParams){ - return rowVal < filterVal ? true : false; - }, - - //less than or equal to - "<=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal <= filterVal ? true : false; - }, - - //greater than - ">":function(filterVal, rowVal, rowData, filterParams){ - return rowVal > filterVal ? true : false; - }, - - //greater than or equal to - ">=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal >= filterVal ? true : false; - }, - - //not equal to - "!=":function(filterVal, rowVal, rowData, filterParams){ - return rowVal != filterVal ? true : false; - }, - - "regex":function(filterVal, rowVal, rowData, filterParams){ - - if(typeof filterVal == "string"){ - filterVal = new RegExp(filterVal); - } - - return filterVal.test(rowVal); - }, - - //contains the string - "like":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else{ - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1; - } - else{ - return false; - } - } - }, - - //contains the keywords - "keywords":function(filterVal, rowVal, rowData, filterParams){ - var keywords = filterVal.toLowerCase().split(typeof filterParams.separator === "undefined" ? " " : filterParams.separator), - value = String(rowVal === null || typeof rowVal === "undefined" ? "" : rowVal).toLowerCase(), - matches = []; - - keywords.forEach((keyword) =>{ - if(value.includes(keyword)){ - matches.push(true); - } - }); - - return filterParams.matchAll ? matches.length === keywords.length : !!matches.length; - }, - - //starts with the string - "starts":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else{ - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase()); - } - else{ - return false; - } - } - }, - - //ends with the string - "ends":function(filterVal, rowVal, rowData, filterParams){ - if(filterVal === null || typeof filterVal === "undefined"){ - return rowVal === filterVal ? true : false; - }else{ - if(typeof rowVal !== 'undefined' && rowVal !== null){ - return String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase()); - } - else{ - return false; - } - } - }, - - //in array - "in":function(filterVal, rowVal, rowData, filterParams){ - if(Array.isArray(filterVal)){ - return filterVal.length ? filterVal.indexOf(rowVal) > -1 : true; - }else{ - console.warn("Filter Error - filter value is not an array:", filterVal); - return false; - } - }, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/Format.js b/tmp/tabulator-5.6.1/src/js/modules/Format/Format.js deleted file mode 100644 index d95f4f5..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/Format.js +++ /dev/null @@ -1,216 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultFormatters from './defaults/formatters.js'; - -class Format extends Module{ - - constructor(table){ - super(table); - - this.registerColumnOption("formatter"); - this.registerColumnOption("formatterParams"); - - this.registerColumnOption("formatterPrint"); - this.registerColumnOption("formatterPrintParams"); - this.registerColumnOption("formatterClipboard"); - this.registerColumnOption("formatterClipboardParams"); - this.registerColumnOption("formatterHtmlOutput"); - this.registerColumnOption("formatterHtmlOutputParams"); - this.registerColumnOption("titleFormatter"); - this.registerColumnOption("titleFormatterParams"); - } - - initialize(){ - this.subscribe("cell-format", this.formatValue.bind(this)); - this.subscribe("cell-rendered", this.cellRendered.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-format", this.formatHeader.bind(this)); - } - - //initialize column formatter - initializeColumn(column){ - column.modules.format = this.lookupFormatter(column, ""); - - if(typeof column.definition.formatterPrint !== "undefined"){ - column.modules.format.print = this.lookupFormatter(column, "Print"); - } - - if(typeof column.definition.formatterClipboard !== "undefined"){ - column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard"); - } - - if(typeof column.definition.formatterHtmlOutput !== "undefined"){ - column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput"); - } - } - - lookupFormatter(column, type){ - var config = {params:column.definition["formatter" + type + "Params"] || {}}, - formatter = column.definition["formatter" + type]; - - //set column formatter - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - config.formatter = Format.formatters[formatter]; - }else{ - console.warn("Formatter Error - No such formatter found: ", formatter); - config.formatter = Format.formatters.plaintext; - } - break; - - case "function": - config.formatter = formatter; - break; - - default: - config.formatter = Format.formatters.plaintext; - break; - } - - return config; - } - - cellRendered(cell){ - if(cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered){ - cell.modules.format.renderedCallback(); - cell.modules.format.rendered = true; - } - } - - //return a formatted value for a column header - formatHeader(column, title, el){ - var formatter, params, onRendered, mockCell; - - if(column.definition.titleFormatter){ - formatter = this.getFormatter(column.definition.titleFormatter); - - onRendered = (callback) => { - column.titleFormatterRendered = callback; - }; - - mockCell = { - getValue:function(){ - return title; - }, - getElement:function(){ - return el; - }, - getType:function(){ - return "header"; - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - } - }; - - params = column.definition.titleFormatterParams || {}; - - params = typeof params === "function" ? params() : params; - - return formatter.call(this, mockCell, params, onRendered); - }else{ - return title; - } - } - - - //return a formatted value for a cell - formatValue(cell){ - var component = cell.getComponent(), - params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return cell.column.modules.format.formatter.call(this, component, params, onRendered); - } - - formatExportValue(cell, type){ - var formatter = cell.column.modules.format[type], - params; - - if(formatter){ - params = typeof formatter.params === "function" ? formatter.params(cell.getComponent()) : formatter.params; - - function onRendered(callback){ - if(!cell.modules.format){ - cell.modules.format = {}; - } - - cell.modules.format.renderedCallback = callback; - cell.modules.format.rendered = false; - } - - return formatter.formatter.call(this, cell.getComponent(), params, onRendered); - - }else{ - return this.formatValue(cell); - } - } - - sanitizeHTML(value){ - if(value){ - var entityMap = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/', - '`': '`', - '=': '=' - }; - - return String(value).replace(/[&<>"'`=/]/g, function (s) { - return entityMap[s]; - }); - }else{ - return value; - } - } - - emptyToSpace(value){ - return value === null || typeof value === "undefined" || value === "" ? " " : value; - } - - //get formatter for cell - getFormatter(formatter){ - switch(typeof formatter){ - case "string": - if(Format.formatters[formatter]){ - formatter = Format.formatters[formatter]; - }else{ - console.warn("Formatter Error - No such formatter found: ", formatter); - formatter = Format.formatters.plaintext; - } - break; - - case "function": - //Custom formatter Function, do nothing - break; - - default: - formatter = Format.formatters.plaintext; - break; - } - - return formatter; - } -} - -Format.moduleName = "format"; - -//load defaults -Format.formatters = defaultFormatters; - -export default Format; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters.js deleted file mode 100644 index c063e08..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters.js +++ /dev/null @@ -1,43 +0,0 @@ -import plaintext from './formatters/plaintext.js'; -import html from './formatters/html.js'; -import textarea from './formatters/textarea.js'; -import money from './formatters/money.js'; -import link from './formatters/link.js'; -import image from './formatters/image.js'; -import tickCross from './formatters/tickCross.js'; -import datetime from './formatters/datetime.js'; -import datetimediff from './formatters/datetimediff.js'; -import lookup from './formatters/lookup.js'; -import star from './formatters/star.js'; -import traffic from './formatters/traffic.js'; -import progress from './formatters/progress.js'; -import color from './formatters/color.js'; -import buttonTick from './formatters/buttonTick.js'; -import buttonCross from './formatters/buttonCross.js'; -import rownum from './formatters/rownum.js'; -import handle from './formatters/handle.js'; -import responsiveCollapse from './formatters/responsiveCollapse.js'; -import rowSelection from './formatters/rowSelection.js'; - -export default { - plaintext:plaintext, - html:html, - textarea:textarea, - money:money, - link:link, - image:image, - tickCross:tickCross, - datetime:datetime, - datetimediff:datetimediff, - lookup:lookup, - star:star, - traffic:traffic, - progress:progress, - color:color, - buttonTick:buttonTick, - buttonCross:buttonCross, - rownum:rownum, - handle:handle, - responsiveCollapse:responsiveCollapse, - rowSelection:rowSelection, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/buttonCross.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/buttonCross.js deleted file mode 100644 index df86e60..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/buttonCross.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - return ''; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/buttonTick.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/buttonTick.js deleted file mode 100644 index d0980d7..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/buttonTick.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - return ''; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/color.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/color.js deleted file mode 100644 index 12d3460..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/color.js +++ /dev/null @@ -1,4 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue()); - return ""; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/datetime.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/datetime.js deleted file mode 100644 index 523f649..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/datetime.js +++ /dev/null @@ -1,37 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var outputFormat = formatterParams.outputFormat || "dd/MM/yyyy HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else{ - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if(newDatetime.isValid){ - if(formatterParams.timezone){ - newDatetime = newDatetime.setZone(formatterParams.timezone); - } - - return newDatetime.toFormat(outputFormat); - }else{ - if(invalid === true || !value){ - return value; - }else if(typeof invalid === "function"){ - return invalid(value); - }else{ - return invalid; - } - } - }else{ - console.error("Format Error - 'datetime' formatter is dependant on luxon.js"); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/datetimediff.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/datetimediff.js deleted file mode 100644 index aa14a61..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/datetimediff.js +++ /dev/null @@ -1,41 +0,0 @@ -export default function (cell, formatterParams, onRendered) { - var DT = window.DateTime || luxon.DateTime; - var inputFormat = formatterParams.inputFormat || "yyyy-MM-dd HH:mm:ss"; - var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : ""; - var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false; - var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : "days"; - var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false; - var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : DT.now(); - var value = cell.getValue(); - - if(typeof DT != "undefined"){ - var newDatetime; - - if(DT.isDateTime(value)){ - newDatetime = value; - }else if(inputFormat === "iso"){ - newDatetime = DT.fromISO(String(value)); - }else{ - newDatetime = DT.fromFormat(String(value), inputFormat); - } - - if (newDatetime.isValid){ - if(humanize){ - return newDatetime.diff(date, unit).toHuman() + (suffix ? " " + suffix : ""); - }else{ - return parseInt(newDatetime.diff(date, unit)[unit]) + (suffix ? " " + suffix : ""); - } - } else { - - if (invalid === true) { - return value; - } else if (typeof invalid === "function") { - return invalid(value); - } else { - return invalid; - } - } - }else{ - console.error("Format Error - 'datetimediff' formatter is dependant on luxon.js"); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/handle.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/handle.js deleted file mode 100644 index 27dbb0b..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/handle.js +++ /dev/null @@ -1,4 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - cell.getElement().classList.add("tabulator-row-handle"); - return "
        "; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/html.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/html.js deleted file mode 100644 index 51a2ba4..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/html.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - return cell.getValue(); -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/image.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/image.js deleted file mode 100644 index a6e396d..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/image.js +++ /dev/null @@ -1,40 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - var el = document.createElement("img"), - src = cell.getValue(); - - if(formatterParams.urlPrefix){ - src = formatterParams.urlPrefix + cell.getValue(); - } - - if(formatterParams.urlSuffix){ - src = src + formatterParams.urlSuffix; - } - - el.setAttribute("src", src); - - switch(typeof formatterParams.height){ - case "number": - el.style.height = formatterParams.height + "px"; - break; - - case "string": - el.style.height = formatterParams.height; - break; - } - - switch(typeof formatterParams.width){ - case "number": - el.style.width = formatterParams.width + "px"; - break; - - case "string": - el.style.width = formatterParams.width; - break; - } - - el.addEventListener("load", function(){ - cell.getRow().normalizeHeight(); - }); - - return el; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/link.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/link.js deleted file mode 100644 index b9f31b1..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/link.js +++ /dev/null @@ -1,82 +0,0 @@ -import Helpers from '../../../../core/tools/Helpers.js'; - - -export default function(cell, formatterParams, onRendered){ - var value = cell.getValue(), - urlPrefix = formatterParams.urlPrefix || "", - download = formatterParams.download, - label = value, - el = document.createElement("a"), - data; - - function labelTraverse(path, data){ - var item = path.shift(), - value = data[item]; - - if(path.length && typeof value === "object"){ - return labelTraverse(path, value); - } - - return value; - } - - if(formatterParams.labelField){ - data = cell.getData(); - label = labelTraverse(formatterParams.labelField.split(this.table.options.nestedFieldSeparator), data); - } - - if(formatterParams.label){ - switch(typeof formatterParams.label){ - case "string": - label = formatterParams.label; - break; - - case "function": - label = formatterParams.label(cell); - break; - } - } - - if(label){ - if(formatterParams.urlField){ - data = cell.getData(); - - value = Helpers.retrieveNestedData(this.table.options.nestedFieldSeparator, formatterParams.urlField, data); - } - - if(formatterParams.url){ - switch(typeof formatterParams.url){ - case "string": - value = formatterParams.url; - break; - - case "function": - value = formatterParams.url(cell); - break; - } - } - - el.setAttribute("href", urlPrefix + value); - - if(formatterParams.target){ - el.setAttribute("target", formatterParams.target); - } - - if(formatterParams.download){ - - if(typeof download == "function"){ - download = download(cell); - }else{ - download = download === true ? "" : download; - } - - el.setAttribute("download", download); - } - - el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label)); - - return el; - }else{ - return " "; - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/lookup.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/lookup.js deleted file mode 100644 index f7e4894..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/lookup.js +++ /dev/null @@ -1,10 +0,0 @@ -export default function (cell, formatterParams, onRendered) { - var value = cell.getValue(); - - if (typeof formatterParams[value] === "undefined") { - console.warn('Missing display value for ' + value); - return value; - } - - return formatterParams[value]; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/money.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/money.js deleted file mode 100644 index 79cf765..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/money.js +++ /dev/null @@ -1,44 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - var floatVal = parseFloat(cell.getValue()), - sign = "", - number, integer, decimal, rgx, value; - - var decimalSym = formatterParams.decimal || "."; - var thousandSym = formatterParams.thousand || ","; - var negativeSign = formatterParams.negativeSign || "-"; - var symbol = formatterParams.symbol || ""; - var after = !!formatterParams.symbolAfter; - var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2; - - if(isNaN(floatVal)){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); - } - - if(floatVal < 0){ - floatVal = Math.abs(floatVal); - sign = negativeSign; - } - - number = precision !== false ? floatVal.toFixed(precision) : floatVal; - number = String(number).split("."); - - integer = number[0]; - decimal = number.length > 1 ? decimalSym + number[1] : ""; - - if (formatterParams.thousand !== false) { - rgx = /(\d+)(\d{3})/; - - while (rgx.test(integer)){ - integer = integer.replace(rgx, "$1" + thousandSym + "$2"); - } - } - - value = integer + decimal; - - if(sign === true){ - value = "(" + value + ")"; - return after ? value + symbol : symbol + value; - }else{ - return after ? sign + value + symbol : sign + symbol + value; - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/plaintext.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/plaintext.js deleted file mode 100644 index ade5336..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/plaintext.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/progress.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/progress.js deleted file mode 100644 index 892708c..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/progress.js +++ /dev/null @@ -1,133 +0,0 @@ -import CellComponent from '../../../../core/cell/CellComponent.js'; - -export default function(cell, formatterParams = {}, onRendered){ //progress bar - var value = this.sanitizeHTML(cell.getValue()) || 0, - element = cell.getElement(), - max = formatterParams.max ? formatterParams.max : 100, - min = formatterParams.min ? formatterParams.min : 0, - legendAlign = formatterParams.legendAlign ? formatterParams.legendAlign : "center", - percent, percentValue, color, legend, legendColor; - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set bar color - switch(typeof formatterParams.color){ - case "string": - color = formatterParams.color; - break; - case "function": - color = formatterParams.color(value); - break; - case "object": - if(Array.isArray(formatterParams.color)){ - let unit = 100 / formatterParams.color.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.color.length - 1); - index = Math.max(index, 0); - color = formatterParams.color[index]; - break; - } - default: - color = "#2DC214"; - } - - //generate legend - switch(typeof formatterParams.legend){ - case "string": - legend = formatterParams.legend; - break; - case "function": - legend = formatterParams.legend(value); - break; - case "boolean": - legend = value; - break; - default: - legend = false; - } - - //set legend color - switch(typeof formatterParams.legendColor){ - case "string": - legendColor = formatterParams.legendColor; - break; - case "function": - legendColor = formatterParams.legendColor(value); - break; - case "object": - if(Array.isArray(formatterParams.legendColor)){ - let unit = 100 / formatterParams.legendColor.length; - let index = Math.floor(percentValue / unit); - - index = Math.min(index, formatterParams.legendColor.length - 1); - index = Math.max(index, 0); - legendColor = formatterParams.legendColor[index]; - } - break; - default: - legendColor = "#000"; - } - - element.style.minWidth = "30px"; - element.style.position = "relative"; - - element.setAttribute("aria-label", percentValue); - - var barEl = document.createElement("div"); - barEl.style.display = "inline-block"; - barEl.style.width = percentValue + "%"; - barEl.style.backgroundColor = color; - barEl.style.height = "100%"; - - barEl.setAttribute('data-max', max); - barEl.setAttribute('data-min', min); - - var barContainer = document.createElement("div"); - barContainer.style.position = "relative"; - barContainer.style.width = "100%"; - barContainer.style.height = "100%"; - - if(legend){ - var legendEl = document.createElement("div"); - legendEl.style.position = "absolute"; - legendEl.style.top = 0; - legendEl.style.left = 0; - legendEl.style.textAlign = legendAlign; - legendEl.style.width = "100%"; - legendEl.style.color = legendColor; - legendEl.innerHTML = legend; - } - - onRendered(function(){ - - //handle custom element needed if formatter is to be included in printed/downloaded output - if(!(cell instanceof CellComponent)){ - var holderEl = document.createElement("div"); - holderEl.style.position = "absolute"; - holderEl.style.top = "4px"; - holderEl.style.bottom = "4px"; - holderEl.style.left = "4px"; - holderEl.style.right = "4px"; - - element.appendChild(holderEl); - - element = holderEl; - } - - element.appendChild(barContainer); - barContainer.appendChild(barEl); - - if(legend){ - barContainer.appendChild(legendEl); - } - }); - - return ""; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/responsiveCollapse.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/responsiveCollapse.js deleted file mode 100644 index 6e480a7..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +++ /dev/null @@ -1,44 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - var el = document.createElement("div"), - config = cell.getRow()._row.modules.responsiveLayout; - - el.classList.add("tabulator-responsive-collapse-toggle"); - - el.innerHTML = ` - - - - - - -`; - - cell.getElement().classList.add("tabulator-row-handle"); - - function toggleList(isOpen){ - var collapseEl = config.element; - - config.open = isOpen; - - if(collapseEl){ - - if(config.open){ - el.classList.add("open"); - collapseEl.style.display = ''; - }else{ - el.classList.remove("open"); - collapseEl.style.display = 'none'; - } - } - } - - el.addEventListener("click", function(e){ - e.stopImmediatePropagation(); - toggleList(!config.open); - cell.getTable().rowManager.adjustTableSize(); - }); - - toggleList(config.open); - - return el; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/rowSelection.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/rowSelection.js deleted file mode 100644 index 91cdfeb..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/rowSelection.js +++ /dev/null @@ -1,60 +0,0 @@ -import RowComponent from '../../../../core/row/RowComponent.js'; - -export default function(cell, formatterParams, onRendered){ - var checkbox = document.createElement("input"); - var blocked = false; - - checkbox.type = 'checkbox'; - - checkbox.setAttribute("aria-label", "Select Row"); - - if(this.table.modExists("selectRow", true)){ - - checkbox.addEventListener("click", (e) => { - e.stopPropagation(); - }); - - if(typeof cell.getRow == 'function'){ - var row = cell.getRow(); - - if(row instanceof RowComponent){ - - checkbox.addEventListener("change", (e) => { - if(this.table.options.selectableRowsRangeMode === "click"){ - if(!blocked){ - row.toggleSelect(); - }else{ - blocked = false; - } - }else{ - row.toggleSelect(); - } - }); - - if(this.table.options.selectableRowsRangeMode === "click"){ - checkbox.addEventListener("click", (e) => { - blocked = true; - this.table.modules.selectRow.handleComplexRowClick(row._row, e); - }); - } - - checkbox.checked = row.isSelected && row.isSelected(); - this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox); - }else{ - checkbox = ""; - } - }else { - checkbox.addEventListener("change", (e) => { - if(this.table.modules.selectRow.selectedRows.length){ - this.table.deselectRow(); - }else { - this.table.selectRow(formatterParams.rowRange); - } - }); - - this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox); - } - } - - return checkbox; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/rownum.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/rownum.js deleted file mode 100644 index 6dfbd79..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/rownum.js +++ /dev/null @@ -1,14 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - var content = document.createElement("span"); - var row = cell.getRow(); - var table = cell.getTable(); - - row.watchPosition((position) => { - if (formatterParams.relativeToPage) { - position += table.modules.page.getPageSize() * (table.modules.page.getPage() - 1); - } - content.innerText = position; - }); - - return content; -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/star.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/star.js deleted file mode 100644 index 484fc54..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/star.js +++ /dev/null @@ -1,38 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5, - stars = document.createElement("span"), - star = document.createElementNS('http://www.w3.org/2000/svg', "svg"), - starActive = '', - starInactive = ''; - - //style stars holder - stars.style.verticalAlign = "middle"; - - //style star - star.setAttribute("width", "14"); - star.setAttribute("height", "14"); - star.setAttribute("viewBox", "0 0 512 512"); - star.setAttribute("xml:space", "preserve"); - star.style.padding = "0 1px"; - - value = value && !isNaN(value) ? parseInt(value) : 0; - - value = Math.max(0, Math.min(value, maxStars)); - - for(var i=1;i<= maxStars;i++){ - var nextStar = star.cloneNode(true); - nextStar.innerHTML = i <= value ? starActive : starInactive; - - stars.appendChild(nextStar); - } - - element.style.whiteSpace = "nowrap"; - element.style.overflow = "hidden"; - element.style.textOverflow = "ellipsis"; - - element.setAttribute("aria-label", value); - - return stars; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/textarea.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/textarea.js deleted file mode 100644 index 1a521b0..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/textarea.js +++ /dev/null @@ -1,4 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - cell.getElement().style.whiteSpace = "pre-wrap"; - return this.emptyToSpace(this.sanitizeHTML(cell.getValue())); -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/tickCross.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/tickCross.js deleted file mode 100644 index 6b6fc41..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/tickCross.js +++ /dev/null @@ -1,22 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - var value = cell.getValue(), - element = cell.getElement(), - empty = formatterParams.allowEmpty, - truthy = formatterParams.allowTruthy, - trueValueSet = Object.keys(formatterParams).includes("trueValue"), - tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '', - cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : ''; - - if((trueValueSet && value === formatterParams.trueValue) || (!trueValueSet && ((truthy && value) || (value === true || value === "true" || value === "True" || value === 1 || value === "1")))){ - element.setAttribute("aria-checked", true); - return tick || ""; - }else{ - if(empty && (value === "null" || value === "" || value === null || typeof value === "undefined")){ - element.setAttribute("aria-checked", "mixed"); - return ""; - }else{ - element.setAttribute("aria-checked", false); - return cross || ""; - } - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/traffic.js b/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/traffic.js deleted file mode 100644 index 9e52ac6..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Format/defaults/formatters/traffic.js +++ /dev/null @@ -1,47 +0,0 @@ -export default function(cell, formatterParams, onRendered){ - var value = this.sanitizeHTML(cell.getValue()) || 0, - el = document.createElement("span"), - max = formatterParams && formatterParams.max ? formatterParams.max : 100, - min = formatterParams && formatterParams.min ? formatterParams.min : 0, - colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"], - color = "#666666", - percent, percentValue; - - if(isNaN(value) || typeof cell.getValue() === "undefined"){ - return; - } - - el.classList.add("tabulator-traffic-light"); - - //make sure value is in range - percentValue = parseFloat(value) <= max ? parseFloat(value) : max; - percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min; - - //workout percentage - percent = (max - min) / 100; - percentValue = Math.round((percentValue - min) / percent); - - //set color - switch(typeof colors){ - case "string": - color = colors; - break; - case "function": - color = colors(value); - break; - case "object": - if(Array.isArray(colors)){ - var unit = 100 / colors.length; - var index = Math.floor(percentValue / unit); - - index = Math.min(index, colors.length - 1); - index = Math.max(index, 0); - color = colors[index]; - break; - } - } - - el.style.backgroundColor = color; - - return el; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/FrozenColumns/FrozenColumns.js b/tmp/tabulator-5.6.1/src/js/modules/FrozenColumns/FrozenColumns.js deleted file mode 100644 index 8eb5339..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/FrozenColumns/FrozenColumns.js +++ /dev/null @@ -1,300 +0,0 @@ -import Module from '../../core/Module.js'; - -class FrozenColumns extends Module{ - - constructor(table){ - super(table); - - this.leftColumns = []; - this.rightColumns = []; - this.initializationMode = "left"; - this.active = false; - this.blocked = true; - - this.registerColumnOption("frozen"); - } - - //reset initial state - reset(){ - this.initializationMode = "left"; - this.leftColumns = []; - this.rightColumns = []; - this.active = false; - } - - initialize(){ - this.subscribe("cell-layout", this.layoutCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-width", this.layout.bind(this)); - this.subscribe("row-layout-after", this.layoutRow.bind(this)); - this.subscribe("table-layout", this.layout.bind(this)); - this.subscribe("columns-loading", this.reset.bind(this)); - - this.subscribe("column-add", this.reinitializeColumns.bind(this)); - this.subscribe("column-deleted", this.reinitializeColumns.bind(this)); - this.subscribe("column-hide", this.reinitializeColumns.bind(this)); - this.subscribe("column-show", this.reinitializeColumns.bind(this)); - this.subscribe("columns-loaded", this.reinitializeColumns.bind(this)); - - this.subscribe("table-redraw", this.layout.bind(this)); - this.subscribe("layout-refreshing", this.blockLayout.bind(this)); - this.subscribe("layout-refreshed", this.unblockLayout.bind(this)); - this.subscribe("scrollbar-vertical", this.adjustForScrollbar.bind(this)); - } - - blockLayout(){ - this.blocked = true; - } - - unblockLayout(){ - this.blocked = false; - } - - layoutCell(cell){ - this.layoutElement(cell.element, cell.column); - } - - reinitializeColumns(){ - this.reset(); - - this.table.columnManager.columnsByIndex.forEach((column) => { - this.initializeColumn(column); - }); - - this.layout(); - } - - //initialize specific column - initializeColumn(column){ - var config = {margin:0, edge:false}; - - if(!column.isGroup){ - if(this.frozenCheck(column)){ - config.position = this.initializationMode; - - if(this.initializationMode == "left"){ - this.leftColumns.push(column); - }else{ - this.rightColumns.unshift(column); - } - - this.active = true; - - column.modules.frozen = config; - }else{ - this.initializationMode = "right"; - } - } - } - - frozenCheck(column){ - if(column.parent.isGroup && column.definition.frozen){ - console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"); - } - - if(column.parent.isGroup){ - return this.frozenCheck(column.parent); - }else{ - return column.definition.frozen; - } - } - - //layout calculation rows - layoutCalcRows(){ - if(this.table.modExists("columnCalcs")){ - if(this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow){ - this.layoutRow(this.table.modules.columnCalcs.topRow); - } - - if(this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow){ - this.layoutRow(this.table.modules.columnCalcs.botRow); - } - - if(this.table.modExists("groupRows")){ - this.layoutGroupCalcs(this.table.modules.groupRows.getGroups()); - } - } - } - - layoutGroupCalcs(groups){ - groups.forEach((group) => { - if(group.calcs.top){ - this.layoutRow(group.calcs.top); - } - - if(group.calcs.bottom){ - this.layoutRow(group.calcs.bottom); - } - - if(group.groupList && group.groupList.length){ - this.layoutGroupCalcs(group.groupList); - } - }); - } - - //calculate column positions and layout headers - layoutColumnPosition(allCells){ - var leftParents = []; - - var leftMargin = 0; - var rightMargin = 0; - - this.leftColumns.forEach((column, i) => { - column.modules.frozen.marginValue = leftMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - leftMargin += column.getWidth(); - } - - if(i == this.leftColumns.length - 1){ - column.modules.frozen.edge = true; - }else{ - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - var parentEl = this.getColGroupParentElement(column); - if(!leftParents.includes(parentEl)){ - this.layoutElement(parentEl, column); - leftParents.push(parentEl); - } - - parentEl.classList.toggle("tabulator-frozen-left", column.modules.frozen.edge && column.modules.frozen.position === "left"); - parentEl.classList.toggle("tabulator-frozen-right", column.modules.frozen.edge && column.modules.frozen.position === "right"); - }else{ - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - - this.rightColumns.forEach((column, i) => { - - column.modules.frozen.marginValue = rightMargin; - column.modules.frozen.margin = column.modules.frozen.marginValue + "px"; - - if(column.visible){ - rightMargin += column.getWidth(); - } - - if(i == this.rightColumns.length - 1){ - column.modules.frozen.edge = true; - }else{ - column.modules.frozen.edge = false; - } - - if(column.parent.isGroup){ - this.layoutElement(this.getColGroupParentElement(column), column); - }else{ - this.layoutElement(column.getElement(), column); - } - - if(allCells){ - column.cells.forEach((cell) => { - this.layoutElement(cell.getElement(true), column); - }); - } - }); - } - - getColGroupParentElement(column){ - return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement(); - } - - //layout columns appropriately - layout(){ - if(this.active && !this.blocked){ - //calculate left columns - this.layoutColumnPosition(); - - this.reinitializeRows(); - - this.layoutCalcRows(); - } - } - - reinitializeRows(){ - var visibleRows = this.table.rowManager.getVisibleRows(true); - var otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row)); - - otherRows.forEach((row) =>{ - row.deinitialize(); - }); - - visibleRows.forEach((row) =>{ - if(row.type === "row"){ - this.layoutRow(row); - } - }); - } - - layoutRow(row){ - if(this.table.options.layout === "fitDataFill" && this.rightColumns.length){ - this.table.rowManager.getTableElement().style.minWidth = "calc(100% - " + this.rightMargin + ")"; - } - - this.leftColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - - this.rightColumns.forEach((column) => { - var cell = row.getCell(column); - - if(cell){ - this.layoutElement(cell.getElement(true), column); - } - }); - } - - layoutElement(element, column){ - var position; - - if(column.modules.frozen && element){ - element.style.position = "sticky"; - - if(this.table.rtl){ - position = column.modules.frozen.position === "left" ? "right" : "left"; - }else{ - position = column.modules.frozen.position; - } - - element.style[position] = column.modules.frozen.margin; - - element.classList.add("tabulator-frozen"); - - element.classList.toggle("tabulator-frozen-left", column.modules.frozen.edge && column.modules.frozen.position === "left"); - element.classList.toggle("tabulator-frozen-right", column.modules.frozen.edge && column.modules.frozen.position === "right"); - } - } - - adjustForScrollbar(width){ - if(this.rightColumns.length){ - this.table.columnManager.getContentsElement().style.width = "calc(100% - " + width + "px)"; - } - } - - _calcSpace(columns, index){ - var width = 0; - - for (let i = 0; i < index; i++){ - if(columns[i].visible){ - width += columns[i].getWidth(); - } - } - - return width; - } -} - -FrozenColumns.moduleName = "frozenColumns"; - -export default FrozenColumns; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/FrozenRows/FrozenRows.js b/tmp/tabulator-5.6.1/src/js/modules/FrozenRows/FrozenRows.js deleted file mode 100644 index e306590..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/FrozenRows/FrozenRows.js +++ /dev/null @@ -1,175 +0,0 @@ -import Module from '../../core/Module.js'; - -class FrozenRows extends Module{ - - constructor(table){ - super(table); - - this.topElement = document.createElement("div"); - this.rows = []; - - //register component functions - this.registerComponentFunction("row", "freeze", this.freezeRow.bind(this)); - this.registerComponentFunction("row", "unfreeze", this.unfreezeRow.bind(this)); - this.registerComponentFunction("row", "isFrozen", this.isRowFrozen.bind(this)); - - //register table options - this.registerTableOption("frozenRowsField", "id"); //field to choose frozen rows by - this.registerTableOption("frozenRows", false); //holder for frozen row identifiers - } - - initialize(){ - var fragment = document.createDocumentFragment(); - - this.rows = []; - - this.topElement.classList.add("tabulator-frozen-rows-holder"); - - fragment.appendChild(document.createElement("br")); - fragment.appendChild(this.topElement); - - // this.table.columnManager.element.append(this.topElement); - this.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling); - - this.subscribe("row-deleting", this.detachRow.bind(this)); - this.subscribe("rows-visible", this.visibleRows.bind(this)); - - this.registerDisplayHandler(this.getRows.bind(this), 10); - - if(this.table.options.frozenRows){ - this.subscribe("data-processed", this.initializeRows.bind(this)); - this.subscribe("row-added", this.initializeRow.bind(this)); - this.subscribe("table-redrawing", this.resizeHolderWidth.bind(this)); - this.subscribe("column-resized", this.resizeHolderWidth.bind(this)); - this.subscribe("column-show", this.resizeHolderWidth.bind(this)); - this.subscribe("column-hide", this.resizeHolderWidth.bind(this)); - } - - this.resizeHolderWidth(); - } - - resizeHolderWidth(){ - this.topElement.style.minWidth = this.table.columnManager.headersElement.offsetWidth + "px"; - } - - initializeRows(){ - this.table.rowManager.getRows().forEach((row) => { - this.initializeRow(row); - }); - } - - initializeRow(row){ - var frozenRows = this.table.options.frozenRows, - rowType = typeof frozenRows; - - if(rowType === "number"){ - if(row.getPosition() && (row.getPosition() + this.rows.length) <= frozenRows){ - this.freezeRow(row); - } - }else if(rowType === "function"){ - if(frozenRows.call(this.table, row.getComponent())){ - this.freezeRow(row); - } - }else if(Array.isArray(frozenRows)){ - if(frozenRows.includes(row.data[this.options("frozenRowsField")])){ - this.freezeRow(row); - } - } - } - - isRowFrozen(row){ - var index = this.rows.indexOf(row); - return index > -1; - } - - isFrozen(){ - return !!this.rows.length; - } - - visibleRows(viewable, rows){ - this.rows.forEach((row) => { - rows.push(row); - }); - - return rows; - } - - //filter frozen rows out of display data - getRows(rows){ - var output = rows.slice(0); - - this.rows.forEach(function(row){ - var index = output.indexOf(row); - - if(index > -1){ - output.splice(index, 1); - } - }); - - return output; - } - - freezeRow(row){ - if(!row.modules.frozen){ - row.modules.frozen = true; - this.topElement.appendChild(row.getElement()); - row.initialize(); - row.normalizeHeight(); - - this.rows.push(row); - - this.refreshData(false, "display"); - - this.table.rowManager.adjustTableSize(); - - this.styleRows(); - - }else{ - console.warn("Freeze Error - Row is already frozen"); - } - } - - unfreezeRow(row){ - if(row.modules.frozen){ - - row.modules.frozen = false; - - this.detachRow(row); - - this.table.rowManager.adjustTableSize(); - - this.refreshData(false, "display"); - - if(this.rows.length){ - this.styleRows(); - } - - }else{ - console.warn("Freeze Error - Row is already unfrozen"); - } - } - - detachRow(row){ - var index = this.rows.indexOf(row); - - if(index > -1){ - var rowEl = row.getElement(); - - if(rowEl.parentNode){ - rowEl.parentNode.removeChild(rowEl); - } - - this.rows.splice(index, 1); - } - } - - styleRows(row){ - this.rows.forEach((row, i) => { - this.table.rowManager.styleRow(row, i); - }); - } -} - -FrozenRows.moduleName = "frozenRows"; - -export default FrozenRows; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/GroupRows/Group.js b/tmp/tabulator-5.6.1/src/js/modules/GroupRows/Group.js deleted file mode 100644 index 301871d..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/GroupRows/Group.js +++ /dev/null @@ -1,615 +0,0 @@ -import Helpers from '../../core/tools/Helpers.js'; -import GroupComponent from './GroupComponent.js'; - -//Group functions -class Group{ - - constructor(groupManager, parent, level, key, field, generator, oldGroup){ - this.groupManager = groupManager; - this.parent = parent; - this.key = key; - this.level = level; - this.field = field; - this.hasSubGroups = level < (groupManager.groupIDLookups.length - 1); - this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow; - this.type = "group"; //type of element - this.old = oldGroup; - this.rows = []; - this.groups = []; - this.groupList = []; - this.generator = generator; - this.element = false; - this.elementContents = false; - this.height = 0; - this.outerHeight = 0; - this.initialized = false; - this.calcs = {}; - this.initialized = false; - this.modules = {}; - this.arrowElement = false; - - this.visible = oldGroup ? oldGroup.visible : (typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0]); - - this.component = null; - - this.createElements(); - this.addBindings(); - - this.createValueGroups(); - } - - wipe(elementsOnly){ - if(!elementsOnly){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - }else{ - this.rows.forEach((row) => { - if(row.modules){ - delete row.modules.group; - } - }); - } - } - - this.element = false; - this.arrowElement = false; - this.elementContents = false; - } - - createElements(){ - var arrow = document.createElement("div"); - arrow.classList.add("tabulator-arrow"); - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-row"); - this.element.classList.add("tabulator-group"); - this.element.classList.add("tabulator-group-level-" + this.level); - this.element.setAttribute("role", "rowgroup"); - - this.arrowElement = document.createElement("div"); - this.arrowElement.classList.add("tabulator-group-toggle"); - this.arrowElement.appendChild(arrow); - - //setup movable rows - if(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")){ - this.groupManager.table.modules.moveRow.initializeGroupHeader(this); - } - } - - createValueGroups(){ - var level = this.level + 1; - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - this.groupManager.allowedValues[level].forEach((value) => { - this._createGroup(value, level); - }); - } - } - - addBindings(){ - var toggleElement; - - if(this.groupManager.table.options.groupToggleElement){ - toggleElement = this.groupManager.table.options.groupToggleElement == "arrow" ? this.arrowElement : this.element; - - toggleElement.addEventListener("click", (e) => { - if(this.groupManager.table.options.groupToggleElement === "arrow"){ - e.stopPropagation(); - e.stopImmediatePropagation(); - } - - //allow click event to propagate before toggling visibility - setTimeout(() => { - this.toggleVisibility(); - }); - }); - } - } - - _createGroup(groupID, level){ - var groupKey = level + "_" + groupID; - var 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); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - _addRowToGroup(row){ - - var level = this.level + 1; - - if(this.hasSubGroups){ - var groupID = this.groupManager.groupIDLookups[level].func(row.getData()), - groupKey = level + "_" + groupID; - - if(this.groupManager.allowedValues && this.groupManager.allowedValues[level]){ - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - }else{ - if(!this.groups[groupKey]){ - this._createGroup(groupID, level); - } - - this.groups[groupKey].addRow(row); - } - } - } - - _addRow(row){ - this.rows.push(row); - row.modules.group = this; - } - - insertRow(row, to, after){ - var data = this.conformRowData({}); - - row.updateData(data); - - var toIndex = this.rows.indexOf(to); - - if(toIndex > -1){ - if(after){ - this.rows.splice(toIndex+1, 0, row); - }else{ - this.rows.splice(toIndex, 0, row); - } - }else{ - if(after){ - this.rows.push(row); - }else{ - this.rows.unshift(row); - } - } - - row.modules.group = this; - - // this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - - this.groupManager.updateGroupRows(true); - } - - scrollHeader(left){ - if(this.arrowElement){ - this.arrowElement.style.marginLeft = left; - - this.groupList.forEach(function(child){ - child.scrollHeader(left); - }); - } - } - - getRowIndex(row){} - - //update row data to match grouping constraints - conformRowData(data){ - if(this.field){ - data[this.field] = this.key; - }else{ - console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"); - } - - if(this.parent){ - data = this.parent.conformRowData(data); - } - - return data; - } - - removeRow(row){ - var index = this.rows.indexOf(row); - var el = row.getElement(); - - if(index > -1){ - this.rows.splice(index, 1); - } - - if(!this.groupManager.table.options.groupValues && !this.rows.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else{ - this.groupManager.removeGroup(this); - } - - this.groupManager.updateGroupRows(true); - - }else{ - - if(el.parentNode){ - el.parentNode.removeChild(el); - } - - if(!this.groupManager.blockRedraw){ - this.generateGroupHeaderContents(); - - if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){ - this.groupManager.table.modules.columnCalcs.recalcGroup(this); - } - } - - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - - if(!this.groupList.length){ - if(this.parent){ - this.parent.removeGroup(this); - }else{ - this.groupManager.removeGroup(this); - } - } - } - } - - getHeadersAndRows(){ - var output = []; - - output.push(this); - - this._visSet(); - - - if(this.calcs.top){ - this.calcs.top.detachElement(); - this.calcs.top.deleteCells(); - } - - if(this.calcs.bottom){ - this.calcs.bottom.detachElement(); - this.calcs.bottom.deleteCells(); - } - - - - if(this.visible){ - if(this.groupList.length){ - this.groupList.forEach(function(group){ - output = output.concat(group.getHeadersAndRows()); - }); - - }else{ - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - - output = output.concat(this.rows); - - if(this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - }else{ - if(!this.groupList.length && this.groupManager.table.options.columnCalcs != "table"){ - - if(this.groupManager.table.modExists("columnCalcs")){ - if(this.groupManager.table.modules.columnCalcs.hasTopCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows); - output.push(this.calcs.top); - } - } - - if(this.groupManager.table.modules.columnCalcs.hasBottomCalcs()){ - if(this.groupManager.table.options.groupClosedShowCalcs){ - this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows); - output.push(this.calcs.bottom); - } - } - } - } - - } - - return output; - } - - getData(visible, transform){ - var output = []; - - this._visSet(); - - if(!visible || (visible && this.visible)){ - this.rows.forEach((row) => { - output.push(row.getData(transform || "data")); - }); - } - - return output; - } - - getRowCount(){ - var count = 0; - - if(this.groupList.length){ - this.groupList.forEach((group) => { - count += group.getRowCount(); - }); - }else{ - count = this.rows.length; - } - return count; - } - - - toggleVisibility(){ - if(this.visible){ - this.hide(); - }else{ - this.show(); - } - } - - hide(){ - this.visible = false; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.remove("tabulator-group-visible"); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - row.detachElement(); - }); - }); - - }else{ - this.rows.forEach((row) => { - var rowEl = row.getElement(); - rowEl.parentNode.removeChild(rowEl); - }); - } - - this.groupManager.updateGroupRows(true); - - }else{ - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), false); - } - - show(){ - this.visible = true; - - if(this.groupManager.table.rowManager.getRenderMode() == "basic" && !this.groupManager.table.options.pagination){ - - this.element.classList.add("tabulator-group-visible"); - - var prev = this.generateElement(); - - if(this.groupList.length){ - this.groupList.forEach((group) => { - var rows = group.getHeadersAndRows(); - - rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - }); - - }else{ - this.rows.forEach((row) => { - var rowEl = row.getElement(); - prev.parentNode.insertBefore(rowEl, prev.nextSibling); - row.initialize(); - prev = rowEl; - }); - } - - this.groupManager.updateGroupRows(true); - }else{ - this.groupManager.updateGroupRows(true); - } - - this.groupManager.table.externalEvents.dispatch("groupVisibilityChanged", this.getComponent(), true); - } - - _visSet(){ - var data = []; - - if(typeof this.visible == "function"){ - - this.rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent()); - } - } - - getRowGroup(row){ - var match = false; - if(this.groupList.length){ - this.groupList.forEach(function(group){ - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - }else{ - if(this.rows.find(function(item){ - return item === row; - })){ - match = this; - } - } - - return match; - } - - getSubGroups(component){ - var output = []; - - this.groupList.forEach(function(child){ - output.push(component ? child.getComponent() : child); - }); - - return output; - } - - getRows(component, includeChildren){ - var output = []; - - if(includeChildren && this.groupList.length){ - this.groupList.forEach((group) => { - output = output.concat(group.getRows(component, includeChildren)); - }); - }else{ - this.rows.forEach(function(row){ - output.push(component ? row.getComponent() : row); - }); - } - - return output; - } - - generateGroupHeaderContents(){ - var data = []; - - var rows = this.getRows(false, true); - - rows.forEach(function(row){ - data.push(row.getData()); - }); - - this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent()); - - while(this.element.firstChild) this.element.removeChild(this.element.firstChild); - - if(typeof this.elementContents === "string"){ - this.element.innerHTML = this.elementContents; - }else{ - this.element.appendChild(this.elementContents); - } - - this.element.insertBefore(this.arrowElement, this.element.firstChild); - } - - getPath(path = []) { - path.unshift(this.key); - if(this.parent) { - this.parent.getPath(path); - } - return path; - } - - ////////////// Standard Row Functions ////////////// - - getElement(){ - return this.elementContents ? this.element : this.generateElement(); - } - - generateElement(){ - this.addBindings = false; - - this._visSet(); - - if(this.visible){ - this.element.classList.add("tabulator-group-visible"); - }else{ - this.element.classList.remove("tabulator-group-visible"); - } - - for(var i = 0; i < this.element.childNodes.length; ++i){ - this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]); - } - - this.generateGroupHeaderContents(); - - // this.addBindings(); - - return this.element; - } - - detachElement(){ - if (this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - } - } - - //normalize the height of elements in the row - normalizeHeight(){ - this.setHeight(this.element.clientHeight); - } - - initialize(force){ - if(!this.initialized || force){ - this.normalizeHeight(); - this.initialized = true; - } - } - - reinitialize(){ - this.initialized = false; - this.height = 0; - - if(Helpers.elVisible(this.element)){ - this.initialize(true); - } - } - - setHeight(height){ - if(this.height != height){ - this.height = height; - this.outerHeight = this.element.offsetHeight; - } - } - - //return rows outer height - getHeight(){ - return this.outerHeight; - } - - getGroup(){ - return this; - } - - reinitializeHeight(){} - - calcHeight(){} - - setCellHeight(){} - - clearCellHeight(){} - - deinitializeHeight(){} - - rendered(){} - - //////////////// Object Generation ///////////////// - getComponent(){ - if(!this.component){ - this.component = new GroupComponent(this); - } - - return this.component; - } -} - -export default Group; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/GroupRows/GroupComponent.js b/tmp/tabulator-5.6.1/src/js/modules/GroupRows/GroupComponent.js deleted file mode 100644 index 1920aed..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/GroupRows/GroupComponent.js +++ /dev/null @@ -1,71 +0,0 @@ -//public group object -class GroupComponent { - constructor (group){ - this._group = group; - this.type = "GroupComponent"; - - return new Proxy(this, { - get: function(target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - }else{ - return target._group.groupManager.table.componentFunctionBinder.handle("group", target._group, name); - } - } - }); - } - - getKey(){ - return this._group.key; - } - - getField(){ - return this._group.field; - } - - getElement(){ - return this._group.element; - } - - getRows(){ - return this._group.getRows(true); - } - - getSubGroups(){ - return this._group.getSubGroups(true); - } - - getParentGroup(){ - return this._group.parent ? this._group.parent.getComponent() : false; - } - - isVisible(){ - return this._group.visible; - } - - show(){ - this._group.show(); - } - - hide(){ - this._group.hide(); - } - - toggle(){ - this._group.toggleVisibility(); - } - - scrollTo(position, ifVisible){ - return this._group.groupManager.table.rowManager.scrollToRow(this._group, position, ifVisible); - } - - _getSelf(){ - return this._group; - } - - getTable(){ - return this._group.groupManager.table; - } -} - -export default GroupComponent; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/GroupRows/GroupRows.js b/tmp/tabulator-5.6.1/src/js/modules/GroupRows/GroupRows.js deleted file mode 100644 index b413cbb..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/GroupRows/GroupRows.js +++ /dev/null @@ -1,640 +0,0 @@ -import Module from '../../core/Module.js'; - -import Group from './Group.js'; - -class GroupRows extends Module{ - - constructor(table){ - super(table); - - this.groupIDLookups = false; //enable table grouping and set field to group by - this.startOpen = [function(){return false;}]; //starting state of group - this.headerGenerator = [function(){return "";}]; - this.groupList = []; //ordered list of groups - this.allowedValues = false; - this.groups = {}; //hold row groups - - this.displayHandler = this.getRows.bind(this); - - this.blockRedraw = false; - - //register table options - this.registerTableOption("groupBy", false); //enable table grouping and set field to group by - this.registerTableOption("groupStartOpen", true); //starting state of group - this.registerTableOption("groupValues", false); - this.registerTableOption("groupUpdateOnCellEdit", false); - this.registerTableOption("groupHeader", false); //header generation function - this.registerTableOption("groupHeaderPrint", null); - this.registerTableOption("groupHeaderClipboard", null); - this.registerTableOption("groupHeaderHtmlOutput", null); - this.registerTableOption("groupHeaderDownload", null); - this.registerTableOption("groupToggleElement", "arrow"); - this.registerTableOption("groupClosedShowCalcs", false); - - //register table functions - this.registerTableFunction("setGroupBy", this.setGroupBy.bind(this)); - this.registerTableFunction("setGroupValues", this.setGroupValues.bind(this)); - this.registerTableFunction("setGroupStartOpen", this.setGroupStartOpen.bind(this)); - this.registerTableFunction("setGroupHeader", this.setGroupHeader.bind(this)); - this.registerTableFunction("getGroups", this.userGetGroups.bind(this)); - this.registerTableFunction("getGroupedData", this.userGetGroupedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "getGroup", this.rowGetGroup.bind(this)); - } - - //initialize group configuration - initialize(){ - this.subscribe("table-destroy", this._blockRedrawing.bind(this)); - this.subscribe("rows-wipe", this._blockRedrawing.bind(this)); - this.subscribe("rows-wiped", this._restore_redrawing.bind(this)); - - if(this.table.options.groupBy){ - if(this.table.options.groupUpdateOnCellEdit){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0); - } - - this.subscribe("table-built", this.configureGroupSetup.bind(this)); - - this.subscribe("row-deleting", this.rowDeleting.bind(this)); - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this)); - this.subscribe("rows-wipe", this.wipe.bind(this)); - this.subscribe("rows-added", this.rowsUpdated.bind(this)); - this.subscribe("row-moving", this.rowMoving.bind(this)); - this.subscribe("row-adding-index", this.rowAddingIndex.bind(this)); - - this.subscribe("rows-sample", this.rowSample.bind(this)); - - this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this)); - - this.registerDisplayHandler(this.displayHandler, 20); - - this.initialized = true; - } - } - - _blockRedrawing(){ - this.blockRedraw = true; - } - - _restore_redrawing(){ - this.blockRedraw = false; - } - - configureGroupSetup(){ - if(this.table.options.groupBy){ - var groupBy = this.table.options.groupBy, - startOpen = this.table.options.groupStartOpen, - groupHeader = this.table.options.groupHeader; - - this.allowedValues = this.table.options.groupValues; - - if(Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length){ - console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"); - } - - this.headerGenerator = [function(){return "";}]; - this.startOpen = [function(){return false;}]; //starting state of group - - this.langBind("groups|item", (langValue, lang) => { - this.headerGenerator[0] = (value, count, data) => { //header layout function - return (typeof value === "undefined" ? "" : value) + "(" + count + " " + ((count === 1) ? langValue : lang.groups.items) + ")"; - }; - }); - - this.groupIDLookups = []; - - if(groupBy){ - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both"){ - this.table.modules.columnCalcs.removeCalcs(); - } - }else{ - if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group"){ - - var cols = this.table.columnManager.getRealColumns(); - - cols.forEach((col) => { - if(col.definition.topCalc){ - this.table.modules.columnCalcs.initializeTopRow(); - } - - if(col.definition.bottomCalc){ - this.table.modules.columnCalcs.initializeBottomRow(); - } - }); - } - } - - if(!Array.isArray(groupBy)){ - groupBy = [groupBy]; - } - - groupBy.forEach((group, i) => { - var lookupFunc, column; - - if(typeof group == "function"){ - lookupFunc = group; - }else{ - column = this.table.columnManager.getColumnByField(group); - - if(column){ - lookupFunc = function(data){ - return column.getFieldValue(data); - }; - }else{ - lookupFunc = function(data){ - return data[group]; - }; - } - } - - this.groupIDLookups.push({ - field: typeof group === "function" ? false : group, - func:lookupFunc, - values:this.allowedValues ? this.allowedValues[i] : false, - }); - }); - - if(startOpen){ - if(!Array.isArray(startOpen)){ - startOpen = [startOpen]; - } - - startOpen.forEach((level) => { - level = typeof level == "function" ? level : function(){return true;}; - }); - - this.startOpen = startOpen; - } - - if(groupHeader){ - this.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader]; - } - }else{ - this.groupList = []; - this.groups = {}; - } - } - - rowSample(rows, prevValue){ - if(this.table.options.groupBy){ - var group = this.getGroups(false)[0]; - - prevValue.push(group.getRows(false)[0]); - } - - return prevValue; - } - - virtualRenderFill(){ - var el = this.table.rowManager.tableElement; - var rows = this.table.rowManager.getVisibleRows(); - - if(this.table.options.groupBy){ - rows = rows.filter((row) => { - return row.type !== "group"; - }); - - el.style.minWidth = !rows.length ? this.table.columnManager.getWidth() + "px" : ""; - }else{ - return rows; - } - } - - rowAddingIndex(row, index, top){ - if(this.table.options.groupBy){ - this.assignRowToGroup(row); - - var groupRows = row.modules.group.rows; - - if(groupRows.length > 1){ - if(!index || (index && groupRows.indexOf(index) == -1)){ - if(top){ - if(groupRows[0] !== row){ - index = groupRows[0]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - }else{ - if(groupRows[groupRows.length -1] !== row){ - index = groupRows[groupRows.length -1]; - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - }else{ - this.table.rowManager.moveRowInArray(row.modules.group.rows, row, index, !top); - } - } - - return index; - } - } - - trackChanges(){ - this.dispatch("group-changed"); - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - setGroupBy(groups){ - this.table.options.groupBy = groups; - - if(!this.initialized){ - this.initialize(); - } - - this.configureGroupSetup(); - - if(!groups && this.table.modExists("columnCalcs") && this.table.options.columnCalcs === true){ - this.table.modules.columnCalcs.reinitializeCalcs(); - } - - this.refreshData(); - - this.trackChanges(); - } - - setGroupValues(groupValues){ - this.table.options.groupValues = groupValues; - this.configureGroupSetup(); - this.refreshData(); - - this.trackChanges(); - } - - setGroupStartOpen(values){ - this.table.options.groupStartOpen = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else{ - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - setGroupHeader(values){ - this.table.options.groupHeader = values; - this.configureGroupSetup(); - - if(this.table.options.groupBy){ - this.refreshData(); - - this.trackChanges(); - }else{ - console.warn("Grouping Update - cant refresh view, no groups have been set"); - } - } - - userGetGroups(values){ - return this.getGroups(true); - } - - // get grouped table data in the same format as getData() - userGetGroupedData(){ - return this.table.options.groupBy ? this.getGroupedData() : this.getData(); - } - - - /////////////////////////////////////// - ///////// Component Functions ///////// - /////////////////////////////////////// - - rowGetGroup(row){ - return row.modules.group ? row.modules.group.getComponent() : false; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - rowMoving(from, to, after){ - if(this.table.options.groupBy){ - if(!after && to instanceof Group){ - to = this.table.rowManager.prevDisplayRow(from) || to; - } - - var toGroup = to instanceof Group ? to : to.modules.group; - var fromGroup = from instanceof Group ? from : from.modules.group; - - if(toGroup === fromGroup){ - this.table.rowManager.moveRowInArray(toGroup.rows, from, to, after); - }else{ - if(fromGroup){ - fromGroup.removeRow(from); - } - - toGroup.insertRow(from, to, after); - } - } - } - - - rowDeleting(row){ - //remove from group - if(this.table.options.groupBy && row.modules.group){ - row.modules.group.removeRow(row); - } - } - - rowsUpdated(row){ - if(this.table.options.groupBy){ - this.updateGroupRows(true); - } - } - - cellUpdated(cell){ - if(this.table.options.groupBy){ - this.reassignRowToGroup(cell.row); - } - } - - //return appropriate rows with group headers - getRows(rows){ - if(this.table.options.groupBy && this.groupIDLookups.length){ - - this.dispatchExternal("dataGrouping"); - - this.generateGroups(rows); - - if(this.subscribedExternal("dataGrouped")){ - this.dispatchExternal("dataGrouped", this.getGroups(true)); - } - - return this.updateGroupRows(); - - }else{ - return rows.slice(0); - } - } - - getGroups(component){ - var groupComponents = []; - - this.groupList.forEach(function(group){ - groupComponents.push(component ? group.getComponent() : group); - }); - - return groupComponents; - } - - getChildGroups(group){ - var groupComponents = []; - - if(!group){ - group = this; - } - - group.groupList.forEach((child) => { - if(child.groupList.length){ - groupComponents = groupComponents.concat(this.getChildGroups(child)); - }else{ - groupComponents.push(child); - } - }); - - return groupComponents; - } - - wipe(){ - if(this.table.options.groupBy){ - this.groupList.forEach(function(group){ - group.wipe(); - }); - - this.groupList = []; - this.groups = {}; - } - } - - pullGroupListData(groupList) { - var groupListData = []; - - groupList.forEach((group) => { - var groupHeader = {}; - groupHeader.level = 0; - groupHeader.rowCount = 0; - groupHeader.headerContent = ""; - var childData = []; - - if (group.hasSubGroups) { - childData = this.pullGroupListData(group.groupList); - - groupHeader.level = group.level; - groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers - groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group); - - groupListData.push(groupHeader); - groupListData = groupListData.concat(childData); - } - - else { - groupHeader.level = group.level; - groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group); - groupHeader.rowCount = group.getRows().length; - - groupListData.push(groupHeader); - - group.getRows().forEach((row) => { - groupListData.push(row.getData("data")); - }); - } - }); - - return groupListData; - } - - getGroupedData(){ - - return this.pullGroupListData(this.groupList); - } - - getRowGroup(row){ - var match = false; - - if(this.options("dataTree")){ - row = this.table.modules.dataTree.getTreeParentRoot(row); - } - - this.groupList.forEach((group) => { - var result = group.getRowGroup(row); - - if(result){ - match = result; - } - }); - - return match; - } - - countGroups(){ - return this.groupList.length; - } - - generateGroups(rows){ - var oldGroups = this.groups; - - this.groups = {}; - this.groupList = []; - - if(this.allowedValues && this.allowedValues[0]){ - this.allowedValues[0].forEach((value) => { - this.createGroup(value, 0, oldGroups); - }); - - rows.forEach((row) => { - this.assignRowToExistingGroup(row, oldGroups); - }); - }else{ - rows.forEach((row) => { - this.assignRowToGroup(row, oldGroups); - }); - } - - Object.values(oldGroups).forEach((group) => { - group.wipe(true); - }); - } - - - createGroup(groupID, level, oldGroups){ - var groupKey = level + "_" + groupID, - group; - - oldGroups = oldGroups || []; - - group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]); - - this.groups[groupKey] = group; - this.groupList.push(group); - } - - assignRowToExistingGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - groupKey = "0_" + groupID; - - if(this.groups[groupKey]){ - this.groups[groupKey].addRow(row); - } - } - - assignRowToGroup(row, oldGroups){ - var groupID = this.groupIDLookups[0].func(row.getData()), - newGroupNeeded = !this.groups["0_" + groupID]; - - if(newGroupNeeded){ - this.createGroup(groupID, 0, oldGroups); - } - - this.groups["0_" + groupID].addRow(row); - - return !newGroupNeeded; - } - - reassignRowToGroup(row){ - if(row.type === "row"){ - var oldRowGroup = row.modules.group, - oldGroupPath = oldRowGroup.getPath(), - newGroupPath = this.getExpectedPath(row), - samePath; - - // figure out if new group path is the same as old group path - samePath = (oldGroupPath.length == newGroupPath.length) && oldGroupPath.every((element, index) => { - return element === newGroupPath[index]; - }); - - // refresh if they new path and old path aren't the same (aka the row's groupings have changed) - if(!samePath) { - oldRowGroup.removeRow(row); - this.assignRowToGroup(row, this.groups); - this.refreshData(true); - } - } - } - - getExpectedPath(row) { - var groupPath = [], rowData = row.getData(); - - this.groupIDLookups.forEach((groupId) => { - groupPath.push(groupId.func(rowData)); - }); - - return groupPath; - } - - updateGroupRows(force){ - var output = []; - - if(!this.blockRedraw){ - this.groupList.forEach((group) => { - output = output.concat(group.getHeadersAndRows()); - }); - - if(force){ - this.refreshData(true); - } - } - - return output; - } - - scrollHeaders(left){ - if(this.table.options.groupBy){ - if(this.table.options.renderHorizontal === "virtual"){ - left -= this.table.columnManager.renderer.vDomPadLeft; - } - - left = left + "px"; - - this.groupList.forEach((group) => { - group.scrollHeader(left); - }); - } - } - - removeGroup(group){ - var groupKey = group.level + "_" + group.key, - index; - - if(this.groups[groupKey]){ - delete this.groups[groupKey]; - - index = this.groupList.indexOf(group); - - if(index > -1){ - this.groupList.splice(index, 1); - } - } - } - - checkBasicModeGroupHeaderWidth(){ - var element = this.table.rowManager.tableElement, - onlyGroupHeaders = true; - - this.table.rowManager.getDisplayRows().forEach((row, index) =>{ - this.table.rowManager.styleRow(row, index); - element.appendChild(row.getElement()); - row.initialize(true); - - if(row.type !== "group"){ - onlyGroupHeaders = false; - } - }); - - if(onlyGroupHeaders){ - element.style.minWidth = this.table.columnManager.getWidth() + "px"; - }else{ - element.style.minWidth = ""; - } - } - -} - -GroupRows.moduleName = "groupRows"; - -export default GroupRows; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/History/History.js b/tmp/tabulator-5.6.1/src/js/modules/History/History.js deleted file mode 100644 index f1d0bbb..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/History/History.js +++ /dev/null @@ -1,172 +0,0 @@ -import Module from '../../core/Module.js'; -import Row from '../../core/row/Row.js'; -import Cell from '../../core/cell/Cell.js'; - -import defaultUndoers from './defaults/undoers.js'; -import defaultRedoers from './defaults/redoers.js'; - -class History extends Module{ - - constructor(table){ - super(table); - - this.history = []; - this.index = -1; - - this.registerTableOption("history", false); //enable edit history - } - - initialize(){ - if(this.table.options.history){ - this.subscribe("cell-value-updated", this.cellUpdated.bind(this)); - this.subscribe("cell-delete", this.clearComponentHistory.bind(this)); - this.subscribe("row-delete", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clear.bind(this)); - this.subscribe("row-added", this.rowAdded.bind(this)); - this.subscribe("row-move", this.rowMoved.bind(this)); - } - - this.registerTableFunction("undo", this.undo.bind(this)); - this.registerTableFunction("redo", this.redo.bind(this)); - this.registerTableFunction("getHistoryUndoSize", this.getHistoryUndoSize.bind(this)); - this.registerTableFunction("getHistoryRedoSize", this.getHistoryRedoSize.bind(this)); - this.registerTableFunction("clearHistory", this.clear.bind(this)); - } - - rowMoved(from, to, after){ - this.action("rowMove", from, {posFrom:from.getPosition(), posTo:to.getPosition(), to:to, after:after}); - } - - rowAdded(row, data, pos, index){ - this.action("rowAdd", row, {data:data, pos:pos, index:index}); - } - - rowDeleted(row){ - var index, rows; - - if(this.table.options.groupBy){ - - rows = row.getComponent().getGroup()._getSelf().rows; - index = rows.indexOf(row); - - if(index){ - index = rows[index-1]; - } - }else{ - index = row.table.rowManager.getRowIndex(row); - - if(index){ - index = row.table.rowManager.rows[index-1]; - } - } - - this.action("rowDelete", row, {data:row.getData(), pos:!index, index:index}); - } - - cellUpdated(cell){ - this.action("cellEdit", cell, {oldValue:cell.oldValue, newValue:cell.value}); - } - - clear(){ - this.history = []; - this.index = -1; - } - - action(type, component, data){ - this.history = this.history.slice(0, this.index + 1); - - this.history.push({ - type:type, - component:component, - data:data, - }); - - this.index ++; - } - - getHistoryUndoSize(){ - return this.index + 1; - } - - getHistoryRedoSize(){ - return this.history.length - (this.index + 1); - } - - clearComponentHistory(component){ - var index = this.history.findIndex(function(item){ - return item.component === component; - }); - - if(index > -1){ - this.history.splice(index, 1); - if(index <= this.index){ - this.index--; - } - - this.clearComponentHistory(component); - } - } - - undo(){ - if(this.index > -1){ - let action = this.history[this.index]; - - History.undoers[action.type].call(this, action); - - this.index--; - - this.dispatchExternal("historyUndo", action.type, action.component.getComponent(), action.data); - - return true; - }else{ - console.warn(this.options("history") ? "History Undo Error - No more history to undo" : "History module not enabled"); - return false; - } - } - - redo(){ - if(this.history.length-1 > this.index){ - - this.index++; - - let action = this.history[this.index]; - - History.redoers[action.type].call(this, action); - - this.dispatchExternal("historyRedo", action.type, action.component.getComponent(), action.data); - - return true; - }else{ - console.warn(this.options("history") ? "History Redo Error - No more history to redo" : "History module not enabled"); - return false; - } - } - - //rebind rows to new element after deletion - _rebindRow(oldRow, newRow){ - this.history.forEach(function(action){ - if(action.component instanceof Row){ - if(action.component === oldRow){ - action.component = newRow; - } - }else if(action.component instanceof Cell){ - if(action.component.row === oldRow){ - var field = action.component.column.getField(); - - if(field){ - action.component = newRow.getCell(field); - } - - } - } - }); - } -} - -History.moduleName = "history"; - -//load defaults -History.undoers = defaultUndoers; -History.redoers = defaultRedoers; - -export default History; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/History/defaults/redoers.js b/tmp/tabulator-5.6.1/src/js/modules/History/defaults/redoers.js deleted file mode 100644 index 54cb4ae..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/History/defaults/redoers.js +++ /dev/null @@ -1,31 +0,0 @@ -export default { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.newValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - - this.table.rowManager.checkPlaceholder(); - }, - - rowDelete:function(action){ - action.component.deleteActual(); - - this.table.rowManager.checkPlaceholder(); - }, - - rowMove: function(action){ - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/History/defaults/undoers.js b/tmp/tabulator-5.6.1/src/js/modules/History/defaults/undoers.js deleted file mode 100644 index ea47456..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/History/defaults/undoers.js +++ /dev/null @@ -1,33 +0,0 @@ -export default { - cellEdit: function(action){ - action.component.setValueProcessData(action.data.oldValue); - action.component.cellRendered(); - }, - - rowAdd: function(action){ - action.component.deleteActual(); - - this.table.rowManager.checkPlaceholder(); - }, - - rowDelete: function(action){ - var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index); - - if(this.table.options.groupBy && this.table.modExists("groupRows")){ - this.table.modules.groupRows.updateGroupRows(true); - } - - this._rebindRow(action.component, newRow); - - this.table.rowManager.checkPlaceholder(); - }, - - rowMove: function(action){ - var after = (action.data.posFrom - action.data.posTo) > 0; - - this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after); - - this.table.rowManager.regenerateRowPositions(); - this.table.rowManager.reRenderInPosition(); - }, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/HtmlTableImport/HtmlTableImport.js b/tmp/tabulator-5.6.1/src/js/modules/HtmlTableImport/HtmlTableImport.js deleted file mode 100644 index 3df939a..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/HtmlTableImport/HtmlTableImport.js +++ /dev/null @@ -1,182 +0,0 @@ -import Module from '../../core/Module.js'; - -class HtmlTableImport extends Module{ - - constructor(table){ - super(table); - - this.fieldIndex = []; - this.hasIndex = false; - } - - initialize(){ - this.tableElementCheck(); - } - - tableElementCheck(){ - if(this.table.originalElement && this.table.originalElement.tagName === "TABLE"){ - if(this.table.originalElement.childNodes.length){ - this.parseTable(); - }else{ - console.warn("Unable to parse data from empty table tag, Tabulator should be initialized on a div tag unless importing data from a table element."); - } - } - } - - parseTable(){ - var element = this.table.originalElement, - options = this.table.options, - headers = element.getElementsByTagName("th"), - rows = element.getElementsByTagName("tbody")[0], - data = []; - - this.hasIndex = false; - - this.dispatchExternal("htmlImporting"); - - rows = rows ? rows.getElementsByTagName("tr") : []; - - //check for Tabulator inline options - this._extractOptions(element, options); - - if(headers.length){ - this._extractHeaders(headers, rows); - }else{ - this._generateBlankHeaders(headers, rows); - } - - //iterate through table rows and build data set - for(var index = 0; index < rows.length; index++){ - var row = rows[index], - cells = row.getElementsByTagName("td"), - item = {}; - - //create index if the don't exist in table - if(!this.hasIndex){ - item[options.index] = index; - } - - for(var i = 0; i < cells.length; i++){ - var cell = cells[i]; - if(typeof this.fieldIndex[i] !== "undefined"){ - item[this.fieldIndex[i]] = cell.innerHTML; - } - } - - //add row data to item - data.push(item); - } - - options.data = data; - - this.dispatchExternal("htmlImported"); - } - - //extract tabulator attribute options - _extractOptions(element, options, defaultOptions){ - var attributes = element.attributes; - var optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options); - var optionsList = {}; - - optionsArr.forEach((item) => { - optionsList[item.toLowerCase()] = item; - }); - - for(var index in attributes){ - var attrib = attributes[index]; - var name; - - if(attrib && typeof attrib == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0){ - name = attrib.name.replace("tabulator-", ""); - - if(typeof optionsList[name] !== "undefined"){ - options[optionsList[name]] = this._attribValue(attrib.value); - } - } - } - } - - //get value of attribute - _attribValue(value){ - if(value === "true"){ - return true; - } - - if(value === "false"){ - return false; - } - - return value; - } - - //find column if it has already been defined - _findCol(title){ - var match = this.table.options.columns.find((column) => { - return column.title === title; - }); - - return match || false; - } - - //extract column from headers - _extractHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - exists = false, - col = this._findCol(header.textContent), - width; - - if(col){ - exists = true; - }else{ - col = {title:header.textContent.trim()}; - } - - if(!col.field) { - col.field = header.textContent.trim().toLowerCase().replaceAll(" ", "_"); - } - - width = header.getAttribute("width"); - - if(width && !col.width) { - col.width = width; - } - - //check for Tabulator inline options - this._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults); - - this.fieldIndex[index] = col.field; - - if(col.field == this.table.options.index){ - this.hasIndex = true; - } - - if(!exists){ - this.table.options.columns.push(col); - } - - } - } - - //generate blank headers - _generateBlankHeaders(headers, rows){ - for(var index = 0; index < headers.length; index++){ - var header = headers[index], - col = {title:"", field:"col" + index}; - - this.fieldIndex[index] = col.field; - - var width = header.getAttribute("width"); - - if(width){ - col.width = width; - } - - this.table.options.columns.push(col); - } - } -} - -HtmlTableImport.moduleName = "htmlTableImport"; - -export default HtmlTableImport; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Import/Import.js b/tmp/tabulator-5.6.1/src/js/modules/Import/Import.js deleted file mode 100644 index 36deceb..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Import/Import.js +++ /dev/null @@ -1,194 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultImporters from './defaults/importers.js'; - -class Import extends Module{ - - constructor(table){ - super(table); - - this.registerTableOption("importFormat"); - this.registerTableOption("importReader", "text"); - } - - initialize(){ - this.registerTableFunction("import", this.importFromFile.bind(this)); - - if(this.table.options.importFormat){ - this.subscribe("data-loading", this.loadDataCheck.bind(this), 10); - this.subscribe("data-load", this.loadData.bind(this), 10); - } - } - - loadDataCheck(data){ - return this.table.options.importFormat && (typeof data === "string" || (Array.isArray(data) && data.length && Array.isArray(data))); - } - - loadData(data, params, config, silent, previousData){ - return this.importData(this.lookupImporter(), data) - .then(this.structureData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import data"); - return Promise.reject(err); - }); - } - - lookupImporter(importFormat){ - var importer; - - if(!importFormat){ - importFormat = this.table.options.importFormat; - } - - if(typeof importFormat === "string"){ - importer = Import.importers[importFormat]; - }else{ - importer = importFormat; - } - - if(!importer){ - console.error("Import Error - Importer not found:", importFormat); - } - - return importer; - } - - importFromFile(importFormat, extension){ - var importer = this.lookupImporter(importFormat); - - if(importer){ - return this.pickFile(extension) - .then(this.importData.bind(this, importer)) - .then(this.structureData.bind(this)) - .then(this.setData.bind(this)) - .catch((err) => { - console.error("Import Error:", err || "Unable to import file"); - return Promise.reject(err); - }); - } - } - - pickFile(extensions){ - return new Promise((resolve, reject) => { - var input = document.createElement("input"); - input.type = "file"; - input.accept = extensions; - - input.addEventListener("change", (e) => { - var file = input.files[0], - reader = new FileReader(); - - switch(this.table.options.importReader){ - case "buffer": - reader.readAsArrayBuffer(file); - break; - - case "binary": - reader.readAsBinaryString(file); - break; - - case "url": - reader.readAsDataURL(file); - break; - - case "text": - default: - reader.readAsText(file); - } - - reader.onload = (e) => { - resolve(reader.result); - }; - - reader.onerror = (e) => { - console.warn("File Load Error - Unable to read file"); - reject(); - }; - }); - - input.click(); - }); - } - - importData(importer, fileContents){ - var data = importer.call(this.table, fileContents); - - if(data instanceof Promise){ - return data; - }else{ - return data ? Promise.resolve(data) : Promise.reject(); - } - } - - structureData(parsedData){ - var data = []; - - if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){ - if(this.table.options.autoColumns){ - data = this.structureArrayToObject(parsedData); - }else{ - data = this.structureArrayToColumns(parsedData); - } - - return data; - }else{ - return parsedData; - } - } - - structureArrayToObject(parsedData){ - var columns = parsedData.shift(); - - var data = parsedData.map((values) => { - var row = {}; - - columns.forEach((key, i) => { - row[key] = values[i]; - }); - - return row; - }); - - return data; - } - - structureArrayToColumns(parsedData){ - var data = [], - columns = this.table.getColumns(); - - //remove first row if it is the column names - if(columns[0] && parsedData[0][0]){ - if(columns[0].getDefinition().title === parsedData[0][0]){ - parsedData.shift(); - } - } - - //convert row arrays to objects - parsedData.forEach((rowData) => { - var row = {}; - - rowData.forEach((value, index) => { - var column = columns[index]; - - if(column){ - row[column.getField()] = value; - } - }); - - data.push(row); - }); - - return data; - } - - setData(data){ - return this.table.setData(data); - } -} - -Import.moduleName = "import"; - -//load defaults -Import.importers = defaultImporters; - -export default Import; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers.js b/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers.js deleted file mode 100644 index b3e7559..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers.js +++ /dev/null @@ -1,9 +0,0 @@ -import csv from './importers/csv.js'; -import json from './importers/json.js'; -import array from './importers/array.js'; - -export default { - csv:csv, - json:json, - array:array, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/array.js b/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/array.js deleted file mode 100644 index 7a458b9..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/array.js +++ /dev/null @@ -1,5 +0,0 @@ -function arrayImporter(input){ - return input; -} - -export default arrayImporter; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/csv.js b/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/csv.js deleted file mode 100644 index bd8ee0a..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/csv.js +++ /dev/null @@ -1,63 +0,0 @@ -function csvImporter(input){ - var data = [], - row = 0, - col = 0, - inQuote = false; - - //Iterate over each character - for (let index = 0; index < input.length; index++) { - let char = input[index], - nextChar = input[index+1]; - - //Initialize empty row - if(!data[row]){ - data[row] = []; - } - - //Initialize empty column - if(!data[row][col]){ - data[row][col] = ""; - } - - //Handle quotation mark inside string - if (char == '"' && inQuote && nextChar == '"') { - data[row][col] += char; - index++; - continue; - } - - //Begin / End Quote - if (char == '"') { - inQuote = !inQuote; - continue; - } - - //Next column (if not in quote) - if (char == ',' && !inQuote) { - col++; - continue; - } - - //New row if new line and not in quote (CRLF) - if (char == '\r' && nextChar == '\n' && !inQuote) { - col = 0; - row++; - index++; - continue; - } - - //New row if new line and not in quote (CR or LF) - if ((char == '\r' || char == '\n') && !inQuote) { - col = 0; - row++; - continue; - } - - //Normal Character, append to column - data[row][col] += char; - } - - return data; -} - -export default csvImporter; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/json.js b/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/json.js deleted file mode 100644 index 8b3d829..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Import/defaults/importers/json.js +++ /dev/null @@ -1,8 +0,0 @@ -export default function(input){ - try { - return JSON.parse(input); - } catch(e) { - console.warn("JSON Import Error - File contents is invalid JSON", e); - return Promise.reject(); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Interaction/Interaction.js b/tmp/tabulator-5.6.1/src/js/modules/Interaction/Interaction.js deleted file mode 100644 index 19333ec..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Interaction/Interaction.js +++ /dev/null @@ -1,337 +0,0 @@ -import Module from '../../core/Module.js'; - -import Cell from '../../core/cell/Cell.js'; -import Column from '../../core/column/Column.js'; - -class Interaction extends Module{ - - constructor(table){ - super(table); - - this.eventMap = { - //row events - rowClick:"row-click", - rowDblClick:"row-dblclick", - rowContext:"row-contextmenu", - rowMouseEnter:"row-mouseenter", - rowMouseLeave:"row-mouseleave", - rowMouseOver:"row-mouseover", - rowMouseOut:"row-mouseout", - rowMouseMove:"row-mousemove", - rowMouseDown:"row-mousedown", - rowMouseUp:"row-mouseup", - rowTap:"row", - rowDblTap:"row", - rowTapHold:"row", - - //cell events - cellClick:"cell-click", - cellDblClick:"cell-dblclick", - cellContext:"cell-contextmenu", - cellMouseEnter:"cell-mouseenter", - cellMouseLeave:"cell-mouseleave", - cellMouseOver:"cell-mouseover", - cellMouseOut:"cell-mouseout", - cellMouseMove:"cell-mousemove", - cellMouseDown:"cell-mousedown", - cellMouseUp:"cell-mouseup", - cellTap:"cell", - cellDblTap:"cell", - cellTapHold:"cell", - - //column header events - headerClick:"column-click", - headerDblClick:"column-dblclick", - headerContext:"column-contextmenu", - headerMouseEnter:"column-mouseenter", - headerMouseLeave:"column-mouseleave", - headerMouseOver:"column-mouseover", - headerMouseOut:"column-mouseout", - headerMouseMove:"column-mousemove", - headerMouseDown:"column-mousedown", - headerMouseUp:"column-mouseup", - headerTap:"column", - headerDblTap:"column", - headerTapHold:"column", - - //group header - groupClick:"group-click", - groupDblClick:"group-dblclick", - groupContext:"group-contextmenu", - groupMouseEnter:"group-mouseenter", - groupMouseLeave:"group-mouseleave", - groupMouseOver:"group-mouseover", - groupMouseOut:"group-mouseout", - groupMouseMove:"group-mousemove", - groupMouseDown:"group-mousedown", - groupMouseUp:"group-mouseup", - groupTap:"group", - groupDblTap:"group", - groupTapHold:"group", - }; - - this.subscribers = {}; - - this.touchSubscribers = {}; - - this.columnSubscribers = {}; - - this.touchWatchers = { - row:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - cell:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - column:{ - tap:null, - tapDbl:null, - tapHold:null, - }, - group:{ - tap:null, - tapDbl:null, - tapHold:null, - } - }; - - this.registerColumnOption("headerClick"); - this.registerColumnOption("headerDblClick"); - this.registerColumnOption("headerContext"); - this.registerColumnOption("headerMouseEnter"); - this.registerColumnOption("headerMouseLeave"); - this.registerColumnOption("headerMouseOver"); - this.registerColumnOption("headerMouseOut"); - this.registerColumnOption("headerMouseMove"); - this.registerColumnOption("headerMouseDown"); - this.registerColumnOption("headerMouseUp"); - this.registerColumnOption("headerTap"); - this.registerColumnOption("headerDblTap"); - this.registerColumnOption("headerTapHold"); - - this.registerColumnOption("cellClick"); - this.registerColumnOption("cellDblClick"); - this.registerColumnOption("cellContext"); - this.registerColumnOption("cellMouseEnter"); - this.registerColumnOption("cellMouseLeave"); - this.registerColumnOption("cellMouseOver"); - this.registerColumnOption("cellMouseOut"); - this.registerColumnOption("cellMouseMove"); - this.registerColumnOption("cellMouseDown"); - this.registerColumnOption("cellMouseUp"); - this.registerColumnOption("cellTap"); - this.registerColumnOption("cellDblTap"); - this.registerColumnOption("cellTapHold"); - - } - - initialize(){ - this.initializeExternalEvents(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("cell-dblclick", this.cellContentsSelectionFixer.bind(this)); - this.subscribe("scroll-horizontal", this.clearTouchWatchers.bind(this)); - this.subscribe("scroll-vertical", this.clearTouchWatchers.bind(this)); - } - - clearTouchWatchers(){ - var types = Object.values(this.touchWatchers); - - types.forEach((type) => { - for(let key in type){ - type[key] = null; - } - }); - } - - cellContentsSelectionFixer(e, cell){ - var range; - - if(this.table.modExists("edit")){ - if (this.table.modules.edit.currentCell === cell){ - return; //prevent instant selection of editor content - } - } - - e.preventDefault(); - - try{ - if (document.selection) { // IE - range = document.body.createTextRange(); - range.moveToElementText(cell.getElement()); - range.select(); - } else if (window.getSelection) { - range = document.createRange(); - range.selectNode(cell.getElement()); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(range); - } - }catch(e){} - } - - initializeExternalEvents(){ - for(let key in this.eventMap){ - this.subscriptionChangeExternal(key, this.subscriptionChanged.bind(this, key)); - } - } - - subscriptionChanged(key, added){ - if(added){ - if(!this.subscribers[key]){ - if(this.eventMap[key].includes("-")){ - this.subscribers[key] = this.handle.bind(this, key); - this.subscribe(this.eventMap[key], this.subscribers[key]); - }else{ - this.subscribeTouchEvents(key); - } - } - }else{ - if(this.eventMap[key].includes("-")){ - if(this.subscribers[key] && !this.columnSubscribers[key] && !this.subscribedExternal(key)){ - this.unsubscribe(this.eventMap[key], this.subscribers[key]); - delete this.subscribers[key]; - } - }else{ - this.unsubscribeTouchEvents(key); - } - } - } - - - subscribeTouchEvents(key){ - var type = this.eventMap[key]; - - if(!this.touchSubscribers[type + "-touchstart"]){ - this.touchSubscribers[type + "-touchstart"] = this.handleTouch.bind(this, type, "start"); - this.touchSubscribers[type + "-touchend"] = this.handleTouch.bind(this, type, "end"); - - this.subscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.subscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - } - - this.subscribers[key] = true; - } - - unsubscribeTouchEvents(key){ - var noTouch = true, - type = this.eventMap[key]; - - if(this.subscribers[key] && !this.subscribedExternal(key)){ - delete this.subscribers[key]; - - for(let i in this.eventMap){ - if(this.eventMap[i] === type){ - if(this.subscribers[i]){ - noTouch = false; - } - } - } - - if(noTouch){ - this.unsubscribe(type + "-touchstart", this.touchSubscribers[type + "-touchstart"]); - this.unsubscribe(type + "-touchend", this.touchSubscribers[type + "-touchend"]); - - delete this.touchSubscribers[type + "-touchstart"]; - delete this.touchSubscribers[type + "-touchend"]; - } - } - } - - initializeColumn(column){ - var def = column.definition; - - for(let key in this.eventMap){ - if(def[key]){ - this.subscriptionChanged(key, true); - - if(!this.columnSubscribers[key]){ - this.columnSubscribers[key] = []; - } - - this.columnSubscribers[key].push(column); - } - } - } - - handle(action, e, component){ - this.dispatchEvent(action, e, component); - } - - handleTouch(type, action, e, component){ - var watchers = this.touchWatchers[type]; - - if(type === "column"){ - type = "header"; - } - - switch(action){ - case "start": - watchers.tap = true; - - clearTimeout(watchers.tapHold); - - watchers.tapHold = setTimeout(() => { - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - - watchers.tap = null; - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "TapHold", e, component); - }, 1000); - break; - - case "end": - if(watchers.tap){ - - watchers.tap = null; - this.dispatchEvent(type + "Tap", e, component); - } - - if(watchers.tapDbl){ - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - - this.dispatchEvent(type + "DblTap", e, component); - }else{ - watchers.tapDbl = setTimeout(() => { - clearTimeout(watchers.tapDbl); - watchers.tapDbl = null; - }, 300); - } - - clearTimeout(watchers.tapHold); - watchers.tapHold = null; - break; - } - } - - dispatchEvent(action, e, component){ - var componentObj = component.getComponent(), - callback; - - if(this.columnSubscribers[action]){ - - if(component instanceof Cell){ - callback = component.column.definition[action]; - }else if(component instanceof Column){ - callback = component.definition[action]; - } - - if(callback){ - callback(e, componentObj); - } - } - - this.dispatchExternal(action, e, componentObj); - } -} - -Interaction.moduleName = "interaction"; - -export default Interaction; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Keybindings/Keybindings.js b/tmp/tabulator-5.6.1/src/js/modules/Keybindings/Keybindings.js deleted file mode 100644 index 29ce070..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Keybindings/Keybindings.js +++ /dev/null @@ -1,173 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultBindings from './defaults/bindings.js'; -import defaultActions from './defaults/actions.js'; - -class Keybindings extends Module{ - - constructor(table){ - super(table); - - this.watchKeys = null; - this.pressedKeys = null; - this.keyupBinding = false; - this.keydownBinding = false; - - this.registerTableOption("keybindings", {}); //array for keybindings - this.registerTableOption("tabEndNewRow", false); //create new row when tab to end of table - } - - initialize(){ - var bindings = this.table.options.keybindings, - mergedBindings = {}; - - this.watchKeys = {}; - this.pressedKeys = []; - - if(bindings !== false){ - Object.assign(mergedBindings, Keybindings.bindings); - Object.assign(mergedBindings, bindings); - - this.mapBindings(mergedBindings); - this.bindEvents(); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - - mapBindings(bindings){ - for(let key in bindings){ - if(Keybindings.actions[key]){ - if(bindings[key]){ - if(typeof bindings[key] !== "object"){ - bindings[key] = [bindings[key]]; - } - - bindings[key].forEach((binding) => { - var bindingList = Array.isArray(binding) ? binding : [binding]; - - bindingList.forEach((item) => { - this.mapBinding(key, item); - }); - }); - } - }else{ - console.warn("Key Binding Error - no such action:", key); - } - } - } - - mapBinding(action, symbolsList){ - var binding = { - action: Keybindings.actions[action], - keys: [], - ctrl: false, - shift: false, - meta: false, - }; - - var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+"); - - symbols.forEach((symbol) => { - switch(symbol){ - case "ctrl": - binding.ctrl = true; - break; - - case "shift": - binding.shift = true; - break; - - case "meta": - binding.meta = true; - break; - - default: - symbol = isNaN(symbol) ? symbol.toUpperCase().charCodeAt(0) : parseInt(symbol); - binding.keys.push(symbol); - - if(!this.watchKeys[symbol]){ - this.watchKeys[symbol] = []; - } - - this.watchKeys[symbol].push(binding); - } - }); - } - - bindEvents(){ - var self = this; - - this.keyupBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - self.pressedKeys.push(code); - - bindings.forEach(function(binding){ - self.checkBinding(e, binding); - }); - } - }; - - this.keydownBinding = function(e){ - var code = e.keyCode; - var bindings = self.watchKeys[code]; - - if(bindings){ - - var index = self.pressedKeys.indexOf(code); - - if(index > -1){ - self.pressedKeys.splice(index, 1); - } - } - }; - - this.table.element.addEventListener("keydown", this.keyupBinding); - - this.table.element.addEventListener("keyup", this.keydownBinding); - } - - clearBindings(){ - if(this.keyupBinding){ - this.table.element.removeEventListener("keydown", this.keyupBinding); - } - - if(this.keydownBinding){ - this.table.element.removeEventListener("keyup", this.keydownBinding); - } - } - - checkBinding(e, binding){ - var match = true; - - if(e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta){ - binding.keys.forEach((key) => { - var index = this.pressedKeys.indexOf(key); - - if(index == -1){ - match = false; - } - }); - - if(match){ - binding.action.call(this, e); - } - - return true; - } - - return false; - } -} - -Keybindings.moduleName = "keybindings"; - -//load defaults -Keybindings.bindings = defaultBindings; -Keybindings.actions = defaultActions; - -export default Keybindings; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Keybindings/defaults/actions.js b/tmp/tabulator-5.6.1/src/js/modules/Keybindings/defaults/actions.js deleted file mode 100644 index d44dc07..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Keybindings/defaults/actions.js +++ /dev/null @@ -1,156 +0,0 @@ -export default { - keyBlock:function(e){ - e.stopPropagation(); - e.preventDefault(); - }, - scrollPageUp:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop - rowManager.element.clientHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos >= 0){ - rowManager.element.scrollTop = newPos; - }else{ - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - } - - this.table.element.focus(); - }, - scrollPageDown:function(e){ - var rowManager = this.table.rowManager, - newPos = rowManager.scrollTop + rowManager.element.clientHeight, - scrollMax = rowManager.element.scrollHeight; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - if(newPos <= scrollMax){ - rowManager.element.scrollTop = newPos; - }else{ - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - } - - this.table.element.focus(); - - }, - scrollToStart:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[0]); - } - - this.table.element.focus(); - }, - scrollToEnd:function(e){ - var rowManager = this.table.rowManager; - - e.preventDefault(); - - if(rowManager.displayRowsCount){ - rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]); - } - - this.table.element.focus(); - }, - navPrev:function(e){ - this.dispatch("keybinding-nav-prev", e); - }, - - navNext:function(e){ - this.dispatch("keybinding-nav-next", e); - }, - - navLeft:function(e){ - this.dispatch("keybinding-nav-left", e); - }, - - navRight:function(e){ - this.dispatch("keybinding-nav-right", e); - }, - - navUp:function(e){ - this.dispatch("keybinding-nav-up", e); - }, - - navDown:function(e){ - this.dispatch("keybinding-nav-down", e); - }, - - rangeJumpLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", true, false); - }, - rangeJumpRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", true, false); - }, - rangeJumpUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", true, false); - }, - rangeJumpDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", true, false); - }, - rangeExpandLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", false, true); - }, - rangeExpandRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", false, true); - }, - rangeExpandUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", false, true); - }, - rangeExpandDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", false, true); - }, - rangeExpandJumpLeft: function(e){ - this.dispatch("keybinding-nav-range", e, "left", true, true); - }, - rangeExpandJumpRight: function(e){ - this.dispatch("keybinding-nav-range", e, "right", true, true); - }, - rangeExpandJumpUp: function(e){ - this.dispatch("keybinding-nav-range", e, "up", true, true); - }, - rangeExpandJumpDown: function(e){ - this.dispatch("keybinding-nav-range", e, "down", true, true); - }, - - undo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.undo(); - } - } - }, - - redo:function(e){ - var cell = false; - if(this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")){ - - cell = this.table.modules.edit.currentCell; - - if(!cell){ - e.preventDefault(); - this.table.modules.history.redo(); - } - } - }, - - copyToClipboard:function(e){ - if(!this.table.modules.edit.currentCell){ - if(this.table.modExists("clipboard", true)){ - this.table.modules.clipboard.copy(false, true); - } - } - }, -}; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Keybindings/defaults/bindings.js b/tmp/tabulator-5.6.1/src/js/modules/Keybindings/defaults/bindings.js deleted file mode 100644 index 000f73f..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Keybindings/defaults/bindings.js +++ /dev/null @@ -1,28 +0,0 @@ -export default { - navPrev:"shift + 9", - navNext:9, - navUp:38, - navDown:40, - navLeft:37, - navRight:39, - scrollPageUp:33, - scrollPageDown:34, - scrollToStart:36, - scrollToEnd:35, - undo:["ctrl + 90", "meta + 90"], - redo:["ctrl + 89", "meta + 89"], - copyToClipboard:["ctrl + 67", "meta + 67"], - - rangeJumpUp:["ctrl + 38", "meta + 38"], - rangeJumpDown:["ctrl + 40", "meta + 40"], - rangeJumpLeft:["ctrl + 37", "meta + 37"], - rangeJumpRight:["ctrl + 39", "meta + 39"], - rangeExpandUp:"shift + 38", - rangeExpandDown:"shift + 40", - rangeExpandLeft:"shift + 37", - rangeExpandRight:"shift + 39", - rangeExpandJumpUp:["ctrl + shift + 38", "meta + shift + 38"], - rangeExpandJumpDown:["ctrl + shift + 40", "meta + shift + 40"], - rangeExpandJumpLeft:["ctrl + shift + 37", "meta + shift + 37"], - rangeExpandJumpRight:["ctrl + shift + 39", "meta + shift + 39"], -}; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Layout/Layout.js b/tmp/tabulator-5.6.1/src/js/modules/Layout/Layout.js deleted file mode 100644 index fcebf8f..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Layout/Layout.js +++ /dev/null @@ -1,60 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultModes from './defaults/modes.js'; - -class Layout extends Module{ - - constructor(table){ - super(table, "layout"); - - this.mode = null; - - this.registerTableOption("layout", "fitData"); //layout type - this.registerTableOption("layoutColumnsOnNewData", false); //update column widths on setData - - this.registerColumnOption("widthGrow"); - this.registerColumnOption("widthShrink"); - } - - //initialize layout system - initialize(){ - var layout = this.table.options.layout; - - if(Layout.modes[layout]){ - this.mode = layout; - }else{ - console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout); - this.mode = 'fitData'; - } - - this.table.element.setAttribute("tabulator-layout", this.mode); - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - initializeColumn(column){ - if(column.definition.widthGrow){ - column.definition.widthGrow = Number(column.definition.widthGrow); - } - if(column.definition.widthShrink){ - column.definition.widthShrink = Number(column.definition.widthShrink); - } - } - - getMode(){ - return this.mode; - } - - //trigger table layout - layout(dataChanged){ - this.dispatch("layout-refreshing"); - Layout.modes[this.mode].call(this, this.table.columnManager.columnsByIndex, dataChanged); - this.dispatch("layout-refreshed"); - } -} - -Layout.moduleName = "layout"; - -//load defaults -Layout.modes = defaultModes; - -export default Layout; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes.js b/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes.js deleted file mode 100644 index ec0b600..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes.js +++ /dev/null @@ -1,12 +0,0 @@ -import fitData from './modes/fitData.js'; -import fitDataGeneral from './modes/fitDataGeneral.js'; -import fitDataStretch from './modes/fitDataStretch.js'; -import fitColumns from './modes/fitColumns.js'; - -export default { - fitData:fitData, - fitDataFill:fitDataGeneral, - fitDataTable:fitDataGeneral, - fitDataStretch:fitDataStretch, - fitColumns:fitColumns , -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitColumns.js b/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitColumns.js deleted file mode 100644 index ea5c6d9..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitColumns.js +++ /dev/null @@ -1,171 +0,0 @@ -//resize columns to fit -export default function(columns, forced){ - var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width - var fixedWidth = 0; //total width of columns with a defined width - var flexWidth = 0; //total width available to flexible columns - var flexGrowUnits = 0; //total number of widthGrow blocks across all columns - var flexColWidth = 0; //desired width of flexible columns - var flexColumns = []; //array of flexible width columns - var fixedShrinkColumns = []; //array of fixed width columns that can shrink - var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns - var overflowWidth = 0; //horizontal overflow width - var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps - - function calcWidth(width){ - var colWidth; - - if(typeof(width) == "string"){ - if(width.indexOf("%") > -1){ - colWidth = (totalWidth / 100) * parseInt(width); - }else{ - colWidth = parseInt(width); - } - }else{ - colWidth = width; - } - - return colWidth; - } - - //ensure columns resize to take up the correct amount of space - function scaleColumns(columns, freeSpace, colWidth, shrinkCols){ - var oversizeCols = [], - oversizeSpace = 0, - remainingSpace = 0, - nextColWidth = 0, - remainingFlexGrowUnits = flexGrowUnits, - gap = 0, - changeUnits = 0, - undersizeCols = []; - - function calcGrow(col){ - return (colWidth * (col.column.definition.widthGrow || 1)); - } - - function calcShrink(col){ - return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0))); - } - - columns.forEach(function(col, i){ - var width = shrinkCols ? calcShrink(col) : calcGrow(col); - if(col.column.minWidth >= width){ - oversizeCols.push(col); - }else{ - if(col.column.maxWidth && col.column.maxWidth < width){ - col.width = col.column.maxWidth; - freeSpace -= col.column.maxWidth; - - remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - - if(remainingFlexGrowUnits){ - colWidth = Math.floor(freeSpace/remainingFlexGrowUnits); - } - }else{ - undersizeCols.push(col); - changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1); - } - } - }); - - if(oversizeCols.length){ - oversizeCols.forEach(function(col){ - oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth; - col.width = col.column.minWidth; - }); - - remainingSpace = freeSpace - oversizeSpace; - - nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace; - - gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols); - }else{ - gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace; - - undersizeCols.forEach(function(column){ - column.width = shrinkCols ? calcShrink(column) : calcGrow(column); - }); - } - - return gap; - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - - //adjust for vertical scrollbar if present - if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){ - totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth; - } - - columns.forEach(function(column){ - var width, minWidth, colWidth; - - if(column.visible){ - - width = column.definition.width; - minWidth = parseInt(column.minWidth); - - if(width){ - - colWidth = calcWidth(width); - - fixedWidth += colWidth > minWidth ? colWidth : minWidth; - - if(column.definition.widthShrink){ - fixedShrinkColumns.push({ - column:column, - width:colWidth > minWidth ? colWidth : minWidth - }); - flexShrinkUnits += column.definition.widthShrink; - } - - }else{ - flexColumns.push({ - column:column, - width:0, - }); - flexGrowUnits += column.definition.widthGrow || 1; - } - } - }); - - //calculate available space - flexWidth = totalWidth - fixedWidth; - - //calculate correct column size - flexColWidth = Math.floor(flexWidth / flexGrowUnits); - - //generate column widths - gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false); - - //increase width of last column to account for rounding errors - if(flexColumns.length && gapFill > 0){ - flexColumns[flexColumns.length-1].width += gapFill; - } - - //calculate space for columns to be shrunk into - flexColumns.forEach(function(col){ - flexWidth -= col.width; - }); - - overflowWidth = Math.abs(gapFill) + flexWidth; - - //shrink oversize columns if there is no available space - if(overflowWidth > 0 && flexShrinkUnits){ - gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true); - } - - //decrease width of last column to account for rounding errors - if(gapFill && fixedShrinkColumns.length){ - fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill; - } - - flexColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); - - fixedShrinkColumns.forEach(function(col){ - col.column.setWidth(col.width); - }); -} diff --git a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitData.js b/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitData.js deleted file mode 100644 index 6d66117..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitData.js +++ /dev/null @@ -1,10 +0,0 @@ -//resize columns to fit data they contain -export default function(columns, forced){ - if(forced){ - this.table.columnManager.renderer.reinitializeColumnWidths(columns); - } - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitDataGeneral.js b/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitDataGeneral.js deleted file mode 100644 index 95bdbf5..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +++ /dev/null @@ -1,10 +0,0 @@ -//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable -export default function(columns, forced){ - columns.forEach(function(column){ - column.reinitializeWidth(); - }); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitDataStretch.js b/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitDataStretch.js deleted file mode 100644 index 6d8a8ed..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Layout/defaults/modes/fitDataStretch.js +++ /dev/null @@ -1,40 +0,0 @@ -//resize columns to fit data the contain and stretch last column to fill table -export default function(columns, forced){ - var colsWidth = 0, - tableWidth = this.table.rowManager.element.clientWidth, - gap = 0, - lastCol = false; - - columns.forEach((column, i) => { - if(!column.widthFixed){ - column.reinitializeWidth(); - } - - if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){ - lastCol = column; - } - - if(column.visible){ - colsWidth += column.getWidth(); - } - }); - - if(lastCol){ - gap = tableWidth - colsWidth + lastCol.getWidth(); - - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - lastCol.setWidth(0); - this.table.modules.responsiveLayout.update(); - } - - if(gap > 0){ - lastCol.setWidth(gap); - }else{ - lastCol.reinitializeWidth(); - } - }else{ - if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){ - this.table.modules.responsiveLayout.update(); - } - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Localize/Localize.js b/tmp/tabulator-5.6.1/src/js/modules/Localize/Localize.js deleted file mode 100644 index 740ee0d..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Localize/Localize.js +++ /dev/null @@ -1,186 +0,0 @@ -import Module from '../../core/Module.js'; - -import Helpers from '../../core/tools/Helpers.js'; - -import defaultLangs from './defaults/langs.js'; - -class Localize extends Module{ - - constructor(table){ - super(table); - - this.locale = "default"; //current locale - this.lang = false; //current language - this.bindings = {}; //update events to call when locale is changed - this.langList = {}; - - this.registerTableOption("locale", false); //current system language - this.registerTableOption("langs", {}); - } - - initialize(){ - this.langList = Helpers.deepClone(Localize.langs); - - if(this.table.options.columnDefaults.headerFilterPlaceholder !== false){ - this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder); - } - - for(let locale in this.table.options.langs){ - this.installLang(locale, this.table.options.langs[locale]); - } - - this.setLocale(this.table.options.locale); - - this.registerTableFunction("setLocale", this.setLocale.bind(this)); - this.registerTableFunction("getLocale", this.getLocale.bind(this)); - this.registerTableFunction("getLang", this.getLang.bind(this)); - } - - //set header placeholder - setHeaderFilterPlaceholder(placeholder){ - this.langList.default.headerFilters.default = placeholder; - } - - //setup a lang description object - installLang(locale, lang){ - if(this.langList[locale]){ - this._setLangProp(this.langList[locale], lang); - }else{ - this.langList[locale] = lang; - } - } - - _setLangProp(lang, values){ - for(let key in values){ - if(lang[key] && typeof lang[key] == "object"){ - this._setLangProp(lang[key], values[key]); - }else{ - lang[key] = values[key]; - } - } - } - - //set current locale - setLocale(desiredLocale){ - desiredLocale = desiredLocale || "default"; - - //fill in any matching language values - function traverseLang(trans, path){ - for(var prop in trans){ - if(typeof trans[prop] == "object"){ - if(!path[prop]){ - path[prop] = {}; - } - traverseLang(trans[prop], path[prop]); - }else{ - path[prop] = trans[prop]; - } - } - } - - //determining correct locale to load - if(desiredLocale === true && navigator.language){ - //get local from system - desiredLocale = navigator.language.toLowerCase(); - } - - if(desiredLocale){ - //if locale is not set, check for matching top level locale else use default - if(!this.langList[desiredLocale]){ - let prefix = desiredLocale.split("-")[0]; - - if(this.langList[prefix]){ - console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix); - desiredLocale = prefix; - }else{ - console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale); - desiredLocale = "default"; - } - } - } - - this.locale = desiredLocale; - - //load default lang template - this.lang = Helpers.deepClone(this.langList.default || {}); - - if(desiredLocale != "default"){ - traverseLang(this.langList[desiredLocale], this.lang); - } - - this.dispatchExternal("localized", this.locale, this.lang); - - this._executeBindings(); - } - - //get current locale - getLocale(locale){ - return this.locale; - } - - //get lang object for given local or current if none provided - getLang(locale){ - return locale ? this.langList[locale] : this.lang; - } - - //get text for current locale - getText(path, value){ - var fillPath = value ? path + "|" + value : path, - pathArray = fillPath.split("|"), - text = this._getLangElement(pathArray, this.locale); - - // if(text === false){ - // console.warn("Localization Error - Matching localized text not found for given path: ", path); - // } - - return text || ""; - } - - //traverse langs object and find localized copy - _getLangElement(path, locale){ - var root = this.lang; - - path.forEach(function(level){ - var rootPath; - - if(root){ - rootPath = root[level]; - - if(typeof rootPath != "undefined"){ - root = rootPath; - }else{ - root = false; - } - } - }); - - return root; - } - - //set update binding - bind(path, callback){ - if(!this.bindings[path]){ - this.bindings[path] = []; - } - - this.bindings[path].push(callback); - - callback(this.getText(path), this.lang); - } - - //iterate through bindings and trigger updates - _executeBindings(){ - for(let path in this.bindings){ - this.bindings[path].forEach((binding) => { - binding(this.getText(path), this.lang); - }); - } - } -} - -Localize.moduleName = "localize"; - -//load defaults -Localize.langs = defaultLangs; - -export default Localize; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Localize/defaults/langs.js b/tmp/tabulator-5.6.1/src/js/modules/Localize/defaults/langs.js deleted file mode 100644 index 9dca4c4..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Localize/defaults/langs.js +++ /dev/null @@ -1,37 +0,0 @@ -export default { - "default":{ //hold default locale text - "groups":{ - "item":"item", - "items":"items", - }, - "columns":{ - }, - "data":{ - "loading":"Loading", - "error":"Error", - }, - "pagination":{ - "page_size":"Page Size", - "page_title":"Show Page", - "first":"First", - "first_title":"First Page", - "last":"Last", - "last_title":"Last Page", - "prev":"Prev", - "prev_title":"Prev Page", - "next":"Next", - "next_title":"Next Page", - "all":"All", - "counter":{ - "showing": "Showing", - "of": "of", - "rows": "rows", - "pages": "pages", - } - }, - "headerFilters":{ - "default":"filter column...", - "columns":{} - } - }, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Menu/Menu.js b/tmp/tabulator-5.6.1/src/js/modules/Menu/Menu.js deleted file mode 100644 index 8ebfa2f..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Menu/Menu.js +++ /dev/null @@ -1,304 +0,0 @@ -import Module from '../../core/Module.js'; - -class Menu extends Module{ - - constructor(table){ - super(table); - - this.menuContainer = null; - this.nestedMenuBlock = false; - - this.currentComponent = null; - this.rootPopup = null; - - this.columnSubscribers = {}; - - this.registerTableOption("menuContainer", undefined); //deprecated - - this.registerTableOption("rowContextMenu", false); - this.registerTableOption("rowClickMenu", false); - this.registerTableOption("rowDblClickMenu", false); - this.registerTableOption("groupContextMenu", false); - this.registerTableOption("groupClickMenu", false); - this.registerTableOption("groupDblClickMenu", false); - - this.registerColumnOption("headerContextMenu"); - this.registerColumnOption("headerClickMenu"); - this.registerColumnOption("headerDblClickMenu"); - this.registerColumnOption("headerMenu"); - this.registerColumnOption("headerMenuIcon"); - this.registerColumnOption("contextMenu"); - this.registerColumnOption("clickMenu"); - this.registerColumnOption("dblClickMenu"); - - } - - initialize(){ - this.deprecatedOptionsCheck(); - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - if(!this.deprecationCheck("menuContainer", "popupContainer")){ - this.table.options.popupContainer = this.table.options.menuContainer; - } - } - - initializeRowWatchers(){ - if(this.table.options.rowContextMenu){ - this.subscribe("row-contextmenu", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - this.table.on("rowTapHold", this.loadMenuEvent.bind(this, this.table.options.rowContextMenu)); - } - - if(this.table.options.rowClickMenu){ - this.subscribe("row-click", this.loadMenuEvent.bind(this, this.table.options.rowClickMenu)); - } - - if(this.table.options.rowDblClickMenu){ - this.subscribe("row-dblclick", this.loadMenuEvent.bind(this, this.table.options.rowDblClickMenu)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextMenu){ - this.subscribe("group-contextmenu", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - this.table.on("groupTapHold", this.loadMenuEvent.bind(this, this.table.options.groupContextMenu)); - } - - if(this.table.options.groupClickMenu){ - this.subscribe("group-click", this.loadMenuEvent.bind(this, this.table.options.groupClickMenu)); - } - - if(this.table.options.groupDblClickMenu){ - this.subscribe("group-dblclick", this.loadMenuEvent.bind(this, this.table.options.groupDblClickMenu)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextMenu && !this.columnSubscribers.headerContextMenu){ - this.columnSubscribers.headerContextMenu = this.loadMenuTableColumnEvent.bind(this, "headerContextMenu"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextMenu); - this.table.on("headerTapHold", this.loadMenuTableColumnEvent.bind(this, "headerContextMenu")); - } - - if(def.headerClickMenu && !this.columnSubscribers.headerClickMenu){ - this.columnSubscribers.headerClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerClickMenu"); - this.subscribe("column-click", this.columnSubscribers.headerClickMenu); - } - - if(def.headerDblClickMenu && !this.columnSubscribers.headerDblClickMenu){ - this.columnSubscribers.headerDblClickMenu = this.loadMenuTableColumnEvent.bind(this, "headerDblClickMenu"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickMenu); - } - - if(def.headerMenu){ - this.initializeColumnHeaderMenu(column); - } - - //handle cell events - if(def.contextMenu && !this.columnSubscribers.contextMenu){ - this.columnSubscribers.contextMenu = this.loadMenuTableCellEvent.bind(this, "contextMenu"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextMenu); - this.table.on("cellTapHold", this.loadMenuTableCellEvent.bind(this, "contextMenu")); - } - - if(def.clickMenu && !this.columnSubscribers.clickMenu){ - this.columnSubscribers.clickMenu = this.loadMenuTableCellEvent.bind(this, "clickMenu"); - this.subscribe("cell-click", this.columnSubscribers.clickMenu); - } - - if(def.dblClickMenu && !this.columnSubscribers.dblClickMenu){ - this.columnSubscribers.dblClickMenu = this.loadMenuTableCellEvent.bind(this, "dblClickMenu"); - this.subscribe("cell-dblclick", this.columnSubscribers.dblClickMenu); - } - } - - initializeColumnHeaderMenu(column){ - var icon = column.definition.headerMenuIcon, - headerMenuEl; - - headerMenuEl = document.createElement("span"); - headerMenuEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerMenuEl.appendChild(icon); - }else{ - headerMenuEl.innerHTML = icon; - } - }else{ - headerMenuEl.innerHTML = "⋮"; - } - - headerMenuEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadMenuEvent(column.definition.headerMenu, e, column); - }); - - column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild); - } - - loadMenuTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadMenuEvent(cell.column.definition[option], e, cell); - } - } - - loadMenuTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadMenuEvent(column.definition[option], e, column); - } - } - - loadMenuEvent(menu, e, component){ - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - menu = typeof menu == "function" ? menu.call(this.table, e, component.getComponent()) : menu; - - this.loadMenu(e, component, menu); - } - - loadMenu(e, component, menu, parentEl, parentPopup){ - var touch = !(e instanceof MouseEvent), - menuEl = document.createElement("div"), - popup; - - menuEl.classList.add("tabulator-menu"); - - if(!touch){ - e.preventDefault(); - } - - //abort if no menu set - if(!menu || !menu.length){ - return; - } - - if(!parentEl){ - if(this.nestedMenuBlock){ - //abort if child menu already open - if(this.rootPopup){ - return; - } - }else{ - this.nestedMenuBlock = setTimeout(() => { - this.nestedMenuBlock = false; - }, 100); - } - - if(this.rootPopup){ - this.rootPopup.hide(); - } - - this.rootPopup = popup = this.popup(menuEl); - - }else{ - popup = parentPopup.child(menuEl); - } - - menu.forEach((item) => { - var itemEl = document.createElement("div"), - label = item.label, - disabled = item.disabled; - - if(item.separator){ - itemEl.classList.add("tabulator-menu-separator"); - }else{ - itemEl.classList.add("tabulator-menu-item"); - - if(typeof label == "function"){ - label = label.call(this.table, component.getComponent()); - } - - if(label instanceof Node){ - itemEl.appendChild(label); - }else{ - itemEl.innerHTML = label; - } - - if(typeof disabled == "function"){ - disabled = disabled.call(this.table, component.getComponent()); - } - - if(disabled){ - itemEl.classList.add("tabulator-menu-item-disabled"); - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - }); - }else{ - if(item.menu && item.menu.length){ - itemEl.addEventListener("click", (e) => { - e.stopPropagation(); - this.loadMenu(e, component, item.menu, itemEl, popup); - }); - }else{ - if(item.action){ - itemEl.addEventListener("click", (e) => { - item.action(e, component.getComponent()); - }); - } - } - } - - if(item.menu && item.menu.length){ - itemEl.classList.add("tabulator-menu-item-submenu"); - } - } - - menuEl.appendChild(itemEl); - }); - - menuEl.addEventListener("click", (e) => { - if(this.rootPopup){ - this.rootPopup.hide(); - } - }); - - popup.show(parentEl || e); - - if(popup === this.rootPopup){ - this.rootPopup.hideOnBlur(() => { - this.rootPopup = null; - - if(this.currentComponent){ - this.dispatch("menu-closed", menu, popup); - this.dispatchExternal("menuClosed", this.currentComponent.getComponent()); - this.currentComponent = null; - } - }); - - this.currentComponent = component; - - this.dispatch("menu-opened", menu, popup); - this.dispatchExternal("menuOpened", component.getComponent()); - } - } -} - -Menu.moduleName = "menu"; - -export default Menu; diff --git a/tmp/tabulator-5.6.1/src/js/modules/MoveColumns/MoveColumns.js b/tmp/tabulator-5.6.1/src/js/modules/MoveColumns/MoveColumns.js deleted file mode 100644 index d6304b8..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/MoveColumns/MoveColumns.js +++ /dev/null @@ -1,304 +0,0 @@ -import Module from '../../core/Module.js'; -import Helpers from '../../core/tools/Helpers.js'; - -class MoveColumns extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating column header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving column - this.toCol = false; //destination column - this.toColAfter = false; //position of moving column relative to the destination column - this.startX = 0; //starting position within header element - this.autoScrollMargin = 40; //auto scroll on edge when within margin - this.autoScrollStep = 5; //auto scroll distance in pixels - this.autoScrollTimeout = false; //auto scroll timeout - this.touchMove = false; - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - - this.registerTableOption("movableColumns", false); //enable movable columns - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-col"); - el.classList.add("tabulator-col-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableColumns){ - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("alert-show", this.abortMove.bind(this)); - } - } - - abortMove(){ - clearTimeout(this.checkTimeout); - } - - initializeColumn(column){ - var self = this, - config = {}, - colEl; - - if(!column.modules.frozen && !column.isGroup){ - colEl = column.getElement(); - - config.mousemove = function(e){ - if(column.parent === self.moving.parent){ - if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){ - if(self.toCol !== column || !self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling); - self.moveColumn(column, true); - } - }else{ - if(self.toCol !== column || self.toColAfter){ - colEl.parentNode.insertBefore(self.placeholderElement, colEl); - self.moveColumn(column, false); - } - } - } - }.bind(self); - - colEl.addEventListener("mousedown", function(e){ - self.touchMove = false; - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, column); - }, self.checkPeriod); - } - }); - - colEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - self.bindTouchEvents(column); - } - - column.modules.moveColumn = config; - } - - bindTouchEvents(column){ - var colEl = column.getElement(), - startXMove = false, //shifting center position of the cell - nextCol, prevCol, nextColWidth, prevColWidth, nextColWidthLast, prevColWidthLast; - - colEl.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextCol = column.nextColumn(); - nextColWidth = nextCol ? nextCol.getWidth()/2 : 0; - prevCol = column.prevColumn(); - prevColWidth = prevCol ? prevCol.getWidth()/2 : 0; - nextColWidthLast = 0; - prevColWidthLast = 0; - startXMove = false; - - this.startMove(e, column); - }, this.checkPeriod); - }, {passive: true}); - - colEl.addEventListener("touchmove", (e) => { - var diff, moveToCol; - - if(this.moving){ - this.moveHover(e); - - if(!startXMove){ - startXMove = e.touches[0].pageX; - } - - diff = e.touches[0].pageX - startXMove; - - if(diff > 0){ - if(nextCol && diff - nextColWidthLast > nextColWidth){ - moveToCol = nextCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement().nextSibling); - this.moveColumn(moveToCol, true); - } - } - }else{ - if(prevCol && -diff - prevColWidthLast > prevColWidth){ - moveToCol = prevCol; - - if(moveToCol !== column){ - startXMove = e.touches[0].pageX; - moveToCol.getElement().parentNode.insertBefore(this.placeholderElement, moveToCol.getElement()); - this.moveColumn(moveToCol, false); - } - } - } - - if(moveToCol){ - nextCol = moveToCol.nextColumn(); - nextColWidthLast = nextColWidth; - nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0; - prevCol = moveToCol.prevColumn(); - prevColWidthLast = prevColWidth; - prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0; - } - } - }, {passive: true}); - - colEl.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - } - }); - } - - startMove(e, column){ - var element = column.getElement(), - headerElement = this.table.columnManager.getContentsElement(), - headersElement = this.table.columnManager.getHeadersElement(); - - this.moving = column; - this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = column.getWidth() + "px"; - this.placeholderElement.style.height = column.getHeight() + "px"; - - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - headerElement.appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.bottom = (headerElement.clientHeight - headersElement.offsetHeight) + "px"; - - if(!this.touchMove){ - this._bindMouseMove(); - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - } - - this.moveHover(e); - } - - _bindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.columnManager.columnsByIndex.forEach(function(column){ - if(column.modules.moveColumn.mousemove){ - column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove); - } - }); - } - - moveColumn(column, after){ - var movingCells = this.moving.getCells(); - - this.toCol = column; - this.toColAfter = after; - - if(after){ - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling); - } - }); - }else{ - column.getCells().forEach(function(cell, i){ - var cellEl = cell.getElement(true); - - if(cellEl.parentNode && movingCells[i]){ - cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl); - } - }); - } - } - - endMove(e){ - if(e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toCol){ - this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter); - } - - this.moving = false; - this.toCol = false; - this.toColAfter = false; - - if(!this.touchMove){ - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - } - } - } - - moveHover(e){ - var columnHolder = this.table.columnManager.getContentsElement(), - scrollLeft = columnHolder.scrollLeft, - xPos = ((this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left) + scrollLeft, - scrollPos; - - this.hoverElement.style.left = (xPos - this.startX) + "px"; - - if(xPos - scrollLeft < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.max(0,scrollLeft-5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - - if(scrollLeft + columnHolder.clientWidth - xPos < this.autoScrollMargin){ - if(!this.autoScrollTimeout){ - this.autoScrollTimeout = setTimeout(() => { - scrollPos = Math.min(columnHolder.clientWidth, scrollLeft+5); - this.table.rowManager.getElement().scrollLeft = scrollPos; - this.autoScrollTimeout = false; - }, 1); - } - } - } -} - -MoveColumns.moduleName = "moveColumn"; - -export default MoveColumns; diff --git a/tmp/tabulator-5.6.1/src/js/modules/MoveRows/MoveRows.js b/tmp/tabulator-5.6.1/src/js/modules/MoveRows/MoveRows.js deleted file mode 100644 index f266909..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/MoveRows/MoveRows.js +++ /dev/null @@ -1,636 +0,0 @@ -import Module from '../../core/Module.js'; -import Helpers from '../../core/tools/Helpers.js'; - -class MoveRows extends Module{ - - constructor(table){ - super(table); - - this.placeholderElement = this.createPlaceholderElement(); - this.hoverElement = false; //floating row header element - this.checkTimeout = false; //click check timeout holder - this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click - this.moving = false; //currently moving row - this.toRow = false; //destination row - this.toRowAfter = false; //position of moving row relative to the destination row - this.hasHandle = false; //row has handle instead of fully movable row - this.startY = 0; //starting Y position within header element - this.startX = 0; //starting X position within header element - - this.moveHover = this.moveHover.bind(this); - this.endMove = this.endMove.bind(this); - this.tableRowDropEvent = false; - - this.touchMove = false; - - this.connection = false; - this.connectionSelectorsTables = false; - this.connectionSelectorsElements = false; - this.connectionElements = []; - this.connections = []; - - this.connectedTable = false; - this.connectedRow = false; - - this.registerTableOption("movableRows", false); //enable movable rows - this.registerTableOption("movableRowsConnectedTables", false); //tables for movable rows to be connected to - this.registerTableOption("movableRowsConnectedElements", false); //other elements for movable rows to be connected to - this.registerTableOption("movableRowsSender", false); - this.registerTableOption("movableRowsReceiver", "insert"); - - this.registerColumnOption("rowHandle"); - } - - createPlaceholderElement(){ - var el = document.createElement("div"); - - el.classList.add("tabulator-row"); - el.classList.add("tabulator-row-placeholder"); - - return el; - } - - initialize(){ - if(this.table.options.movableRows){ - this.connectionSelectorsTables = this.table.options.movableRowsConnectedTables; - this.connectionSelectorsElements = this.table.options.movableRowsConnectedElements; - - this.connection = this.connectionSelectorsTables || this.connectionSelectorsElements; - - this.subscribe("cell-init", this.initializeCell.bind(this)); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - } - } - - initializeGroupHeader(group){ - var self = this, - config = {}; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, group); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl; - - if(((e.pageY - Helpers.elOffset(group.element).top) + self.table.rowManager.element.scrollTop) > (group.getHeight() / 2)){ - if(self.toRow !== group || !self.toRowAfter){ - rowEl = group.getElement(); - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(group, true); - } - }else{ - if(self.toRow !== group || self.toRowAfter){ - rowEl = group.getElement(); - if(rowEl.previousSibling){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(group, false); - } - } - } - }.bind(self); - - group.modules.moveRow = config; - } - - initializeRow(row){ - var self = this, - config = {}, - rowEl; - - //inter table drag drop - config.mouseup = function(e){ - self.tableRowDrop(e, row); - }.bind(self); - - //same table drag drop - config.mousemove = function(e){ - var rowEl = row.getElement(); - - if(((e.pageY - Helpers.elOffset(rowEl).top) + self.table.rowManager.element.scrollTop) > (row.getHeight() / 2)){ - if(self.toRow !== row || !self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling); - self.moveRow(row, true); - } - }else{ - if(self.toRow !== row || self.toRowAfter){ - rowEl.parentNode.insertBefore(self.placeholderElement, rowEl); - self.moveRow(row, false); - } - } - }.bind(self); - - - if(!this.hasHandle){ - - rowEl = row.getElement(); - - rowEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, row); - }, self.checkPeriod); - } - }); - - rowEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(row, row.getElement()); - } - - row.modules.moveRow = config; - } - - initializeColumn(column){ - if(column.definition.rowHandle && this.table.options.movableRows !== false){ - this.hasHandle = true; - } - } - - initializeCell(cell){ - if(cell.column.definition.rowHandle && this.table.options.movableRows !== false){ - var self = this, - cellEl = cell.getElement(true); - - cellEl.addEventListener("mousedown", function(e){ - if(e.which === 1){ - self.checkTimeout = setTimeout(function(){ - self.startMove(e, cell.row); - }, self.checkPeriod); - } - }); - - cellEl.addEventListener("mouseup", function(e){ - if(e.which === 1){ - if(self.checkTimeout){ - clearTimeout(self.checkTimeout); - } - } - }); - - this.bindTouchEvents(cell.row, cellEl); - } - } - - bindTouchEvents(row, element){ - var startYMove = false, //shifting center position of the cell - nextRow, prevRow, nextRowHeight, prevRowHeight, nextRowHeightLast, prevRowHeightLast; - - element.addEventListener("touchstart", (e) => { - this.checkTimeout = setTimeout(() => { - this.touchMove = true; - nextRow = row.nextRow(); - nextRowHeight = nextRow ? nextRow.getHeight()/2 : 0; - prevRow = row.prevRow(); - prevRowHeight = prevRow ? prevRow.getHeight()/2 : 0; - nextRowHeightLast = 0; - prevRowHeightLast = 0; - startYMove = false; - - this.startMove(e, row); - }, this.checkPeriod); - }, {passive: true}); - this.moving, this.toRow, this.toRowAfter; - element.addEventListener("touchmove", (e) => { - - var diff, moveToRow; - - if(this.moving){ - e.preventDefault(); - - this.moveHover(e); - - if(!startYMove){ - startYMove = e.touches[0].pageY; - } - - diff = e.touches[0].pageY - startYMove; - - if(diff > 0){ - if(nextRow && diff - nextRowHeightLast > nextRowHeight){ - moveToRow = nextRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement().nextSibling); - this.moveRow(moveToRow, true); - } - } - }else{ - if(prevRow && -diff - prevRowHeightLast > prevRowHeight){ - moveToRow = prevRow; - - if(moveToRow !== row){ - startYMove = e.touches[0].pageY; - moveToRow.getElement().parentNode.insertBefore(this.placeholderElement, moveToRow.getElement()); - this.moveRow(moveToRow, false); - } - } - } - - if(moveToRow){ - nextRow = moveToRow.nextRow(); - nextRowHeightLast = nextRowHeight; - nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0; - prevRow = moveToRow.prevRow(); - prevRowHeightLast = prevRowHeight; - prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0; - } - } - }); - - element.addEventListener("touchend", (e) => { - if(this.checkTimeout){ - clearTimeout(this.checkTimeout); - } - if(this.moving){ - this.endMove(e); - this.touchMove = false; - } - }); - } - - _bindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - _unbindMouseMove(){ - this.table.rowManager.getDisplayRows().forEach((row) => { - if((row.type === "row" || row.type === "group") && row.modules.moveRow && row.modules.moveRow.mousemove){ - row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove); - } - }); - } - - startMove(e, row){ - var element = row.getElement(); - - this.setStartPosition(e, row); - - this.moving = row; - - this.table.element.classList.add("tabulator-block-select"); - - //create placeholder - this.placeholderElement.style.width = row.getWidth() + "px"; - this.placeholderElement.style.height = row.getHeight() + "px"; - - if(!this.connection){ - element.parentNode.insertBefore(this.placeholderElement, element); - element.parentNode.removeChild(element); - }else{ - this.table.element.classList.add("tabulator-movingrow-sending"); - this.connectToTables(row); - } - - //create hover element - this.hoverElement = element.cloneNode(true); - this.hoverElement.classList.add("tabulator-moving"); - - if(this.connection){ - document.body.appendChild(this.hoverElement); - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - this.hoverElement.style.width = this.table.element.clientWidth + "px"; - this.hoverElement.style.whiteSpace = "nowrap"; - this.hoverElement.style.overflow = "hidden"; - this.hoverElement.style.pointerEvents = "none"; - }else{ - this.table.rowManager.getTableElement().appendChild(this.hoverElement); - - this.hoverElement.style.left = "0"; - this.hoverElement.style.top = "0"; - - this._bindMouseMove(); - } - - document.body.addEventListener("mousemove", this.moveHover); - document.body.addEventListener("mouseup", this.endMove); - - this.dispatchExternal("rowMoving", row.getComponent()); - - this.moveHover(e); - } - - setStartPosition(e, row){ - var pageX = this.touchMove ? e.touches[0].pageX : e.pageX, - pageY = this.touchMove ? e.touches[0].pageY : e.pageY, - element, position; - - element = row.getElement(); - if(this.connection){ - position = element.getBoundingClientRect(); - - this.startX = position.left - pageX + window.pageXOffset; - this.startY = position.top - pageY + window.pageYOffset; - }else{ - this.startY = (pageY - element.getBoundingClientRect().top); - } - } - - endMove(e){ - if(!e || e.which === 1 || this.touchMove){ - this._unbindMouseMove(); - - if(!this.connection){ - this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling); - this.placeholderElement.parentNode.removeChild(this.placeholderElement); - } - - this.hoverElement.parentNode.removeChild(this.hoverElement); - - this.table.element.classList.remove("tabulator-block-select"); - - if(this.toRow){ - this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter); - }else{ - this.dispatchExternal("rowMoveCancelled", this.moving.getComponent()); - } - - this.moving = false; - this.toRow = false; - this.toRowAfter = false; - - document.body.removeEventListener("mousemove", this.moveHover); - document.body.removeEventListener("mouseup", this.endMove); - - if(this.connection){ - this.table.element.classList.remove("tabulator-movingrow-sending"); - this.disconnectFromTables(); - } - } - } - - moveRow(row, after){ - this.toRow = row; - this.toRowAfter = after; - } - - moveHover(e){ - if(this.connection){ - this.moveHoverConnections.call(this, e); - }else{ - this.moveHoverTable.call(this, e); - } - } - - moveHoverTable(e){ - var rowHolder = this.table.rowManager.getElement(), - scrollTop = rowHolder.scrollTop, - yPos = ((this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top) + scrollTop; - - this.hoverElement.style.top = Math.min(yPos - this.startY, this.table.rowManager.element.scrollHeight - this.hoverElement.offsetHeight) + "px"; - } - - moveHoverConnections(e){ - this.hoverElement.style.left = (this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX)) + "px"; - this.hoverElement.style.top = (this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY)) + "px"; - } - - elementRowDrop(e, element, row){ - this.dispatchExternal("movableRowsElementDrop", e, element, row ? row.getComponent() : false); - } - - //establish connection with other tables - connectToTables(row){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStart", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "connect", { - row:row, - }); - } - - if(this.connectionSelectorsElements){ - - this.connectionElements = []; - - if(!Array.isArray(this.connectionSelectorsElements)){ - this.connectionSelectorsElements = [this.connectionSelectorsElements]; - } - - this.connectionSelectorsElements.forEach((query) => { - if(typeof query === "string"){ - this.connectionElements = this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query))); - }else{ - this.connectionElements.push(query); - } - }); - - this.connectionElements.forEach((element) => { - var dropEvent = (e) => { - this.elementRowDrop(e, element, this.moving); - }; - - element.addEventListener("mouseup", dropEvent); - element.tabulatorElementDropEvent = dropEvent; - - element.classList.add("tabulator-movingrow-receiving"); - }); - } - } - - //disconnect from other tables - disconnectFromTables(){ - var connectionTables; - - if(this.connectionSelectorsTables){ - connectionTables = this.commsConnections(this.connectionSelectorsTables); - - this.dispatchExternal("movableRowsSendingStop", connectionTables); - - this.commsSend(this.connectionSelectorsTables, "moveRow", "disconnect"); - } - - this.connectionElements.forEach((element) => { - element.classList.remove("tabulator-movingrow-receiving"); - element.removeEventListener("mouseup", element.tabulatorElementDropEvent); - delete element.tabulatorElementDropEvent; - }); - } - - //accept incomming connection - connect(table, row){ - if(!this.connectedTable){ - this.connectedTable = table; - this.connectedRow = row; - - this.table.element.classList.add("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) => { - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.tableRowDropEvent = this.tableRowDrop.bind(this); - - this.table.element.addEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStart", row, table); - - return true; - }else{ - console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable); - return false; - } - } - - //close incoming connection - disconnect(table){ - if(table === this.connectedTable){ - this.connectedTable = false; - this.connectedRow = false; - - this.table.element.classList.remove("tabulator-movingrow-receiving"); - - this.table.rowManager.getDisplayRows().forEach((row) =>{ - if(row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup){ - row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup); - } - }); - - this.table.element.removeEventListener("mouseup", this.tableRowDropEvent); - - this.dispatchExternal("movableRowsReceivingStop", table); - }else{ - console.warn("Move Row Error - trying to disconnect from non connected table"); - } - } - - dropComplete(table, row, success){ - var sender = false; - - if(success){ - - switch(typeof this.table.options.movableRowsSender){ - case "string": - sender = this.senders[this.table.options.movableRowsSender]; - break; - - case "function": - sender = this.table.options.movableRowsSender; - break; - } - - if(sender){ - sender.call(this, this.moving ? this.moving.getComponent() : undefined, row ? row.getComponent() : undefined, table); - }else{ - if(this.table.options.movableRowsSender){ - console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender); - } - } - - this.dispatchExternal("movableRowsSent", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - }else{ - this.dispatchExternal("movableRowsSentFailed", this.moving.getComponent(), row ? row.getComponent() : undefined, table); - } - - this.endMove(); - } - - tableRowDrop(e, row){ - var receiver = false, - success = false; - - e.stopImmediatePropagation(); - - switch(typeof this.table.options.movableRowsReceiver){ - case "string": - receiver = this.receivers[this.table.options.movableRowsReceiver]; - break; - - case "function": - receiver = this.table.options.movableRowsReceiver; - break; - } - - if(receiver){ - success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else{ - console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver); - } - - if(success){ - this.dispatchExternal("movableRowsReceived", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - }else{ - this.dispatchExternal("movableRowsReceivedFailed", this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable); - } - - this.commsSend(this.connectedTable, "moveRow", "dropcomplete", { - row:row, - success:success, - }); - } - - commsReceived(table, action, data){ - switch(action){ - case "connect": - return this.connect(table, data.row); - - case "disconnect": - return this.disconnect(table); - - case "dropcomplete": - return this.dropComplete(table, data.row, data.success); - } - } -} - -MoveRows.prototype.receivers = { - insert:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData(), undefined, toRow); - return true; - }, - - add:function(fromRow, toRow, fromTable){ - this.table.addRow(fromRow.getData()); - return true; - }, - - update:function(fromRow, toRow, fromTable){ - if(toRow){ - toRow.update(fromRow.getData()); - return true; - } - - return false; - }, - - replace:function(fromRow, toRow, fromTable){ - if(toRow){ - this.table.addRow(fromRow.getData(), undefined, toRow); - toRow.delete(); - return true; - } - - return false; - }, -}; - -MoveRows.prototype.senders = { - delete:function(fromRow, toRow, toTable){ - fromRow.delete(); - } -}; - -MoveRows.moduleName = "moveRow"; - -export default MoveRows; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Mutator/Mutator.js b/tmp/tabulator-5.6.1/src/js/modules/Mutator/Mutator.js deleted file mode 100644 index 520a7f4..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Mutator/Mutator.js +++ /dev/null @@ -1,162 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultMutators from './defaults/mutators.js'; - -class Mutator extends Module{ - - constructor(table){ - super(table); - - this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of mutation types - this.enabled = true; - - this.registerColumnOption("mutator"); - this.registerColumnOption("mutatorParams"); - this.registerColumnOption("mutatorData"); - this.registerColumnOption("mutatorDataParams"); - this.registerColumnOption("mutatorEdit"); - this.registerColumnOption("mutatorEditParams"); - this.registerColumnOption("mutatorClipboard"); - this.registerColumnOption("mutatorClipboardParams"); - this.registerColumnOption("mutateLink"); - } - - initialize(){ - this.subscribe("cell-value-changing", this.transformCell.bind(this)); - this.subscribe("cell-value-changed", this.mutateLink.bind(this)); - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("row-data-init-before", this.rowDataChanged.bind(this)); - this.subscribe("row-data-changing", this.rowDataChanged.bind(this)); - } - - rowDataChanged(row, tempData, updatedData){ - return this.transformRow(tempData, "data", updatedData); - } - - //initialize column mutator - initializeColumn(column){ - var match = false, - config = {}; - - this.allowedTypes.forEach((type) => { - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - mutator; - - if(column.definition[key]){ - mutator = this.lookupMutator(column.definition[key]); - - if(mutator){ - match = true; - - config[key] = { - mutator:mutator, - params: column.definition[key + "Params"] || {}, - }; - } - } - }); - - if(match){ - column.modules.mutate = config; - } - } - - lookupMutator(value){ - var mutator = false; - - //set column mutator - switch(typeof value){ - case "string": - if(Mutator.mutators[value]){ - mutator = Mutator.mutators[value]; - }else{ - console.warn("Mutator Error - No such mutator found, ignoring: ", value); - } - break; - - case "function": - mutator = value; - break; - } - - return mutator; - } - - //apply mutator to row - transformRow(data, type, updatedData){ - var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)), - value; - - if(this.enabled){ - - this.table.columnManager.traverse((column) => { - var mutator, params, component; - - if(column.modules.mutate){ - mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false; - - if(mutator){ - value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data); - - if((type == "data" && !updatedData)|| typeof value !== "undefined"){ - component = column.getComponent(); - params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params; - column.setFieldValue(data, mutator.mutator(value, data, type, params, component)); - } - } - } - }); - } - - return data; - } - - //apply mutator to new cell value - transformCell(cell, value){ - if(cell.column.modules.mutate){ - var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false, - tempData = {}; - - if(mutator){ - tempData = Object.assign(tempData, cell.row.getData()); - cell.column.setFieldValue(tempData, value); - return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent()); - } - } - - return value; - } - - mutateLink(cell){ - var links = cell.column.definition.mutateLink; - - if(links){ - if(!Array.isArray(links)){ - links = [links]; - } - - links.forEach((link) => { - var linkCell = cell.row.getCell(link); - - if(linkCell){ - linkCell.setValue(linkCell.getValue(), true, true); - } - }); - } - } - - enable(){ - this.enabled = true; - } - - disable(){ - this.enabled = false; - } -} - -Mutator.moduleName = "mutator"; - -//load defaults -Mutator.mutators = defaultMutators; - -export default Mutator; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Mutator/defaults/mutators.js b/tmp/tabulator-5.6.1/src/js/modules/Mutator/defaults/mutators.js deleted file mode 100644 index 7c645e4..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Mutator/defaults/mutators.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Page/Page.js b/tmp/tabulator-5.6.1/src/js/modules/Page/Page.js deleted file mode 100644 index eef8e6b..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Page/Page.js +++ /dev/null @@ -1,881 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultPageCounters from './defaults/pageCounters.js'; - -class Page extends Module{ - - constructor(table){ - super(table); - - this.mode = "local"; - this.progressiveLoad = false; - - this.element = null; - this.pageCounterElement = null; - this.pageCounter = null; - - this.size = 0; - this.page = 1; - this.count = 5; - this.max = 1; - - this.remoteRowCountEstimate = null; - - this.initialLoad = true; - this.dataChanging = false; //flag to check if data is being changed by this module - - this.pageSizes = []; - - this.registerTableOption("pagination", false); //set pagination type - this.registerTableOption("paginationMode", "local"); //local or remote pagination - this.registerTableOption("paginationSize", false); //set number of rows to a page - this.registerTableOption("paginationInitialPage", 1); //initial page to show on load - this.registerTableOption("paginationCounter", false); // set pagination counter - this.registerTableOption("paginationCounterElement", false); // set pagination counter - this.registerTableOption("paginationButtonCount", 5); // set count of page button - this.registerTableOption("paginationSizeSelector", false); //add pagination size selector element - this.registerTableOption("paginationElement", false); //element to hold pagination numbers - // this.registerTableOption("paginationDataSent", {}); //pagination data sent to the server - // this.registerTableOption("paginationDataReceived", {}); //pagination data received from the server - this.registerTableOption("paginationAddRow", "page"); //add rows on table or page - - this.registerTableOption("progressiveLoad", false); //progressive loading - this.registerTableOption("progressiveLoadDelay", 0); //delay between requests - this.registerTableOption("progressiveLoadScrollMargin", 0); //margin before scroll begins - - this.registerTableFunction("setMaxPage", this.setMaxPage.bind(this)); - this.registerTableFunction("setPage", this.setPage.bind(this)); - this.registerTableFunction("setPageToRow", this.userSetPageToRow.bind(this)); - this.registerTableFunction("setPageSize", this.userSetPageSize.bind(this)); - this.registerTableFunction("getPageSize", this.getPageSize.bind(this)); - this.registerTableFunction("previousPage", this.previousPage.bind(this)); - this.registerTableFunction("nextPage", this.nextPage.bind(this)); - this.registerTableFunction("getPage", this.getPage.bind(this)); - this.registerTableFunction("getPageMax", this.getPageMax.bind(this)); - - //register component functions - this.registerComponentFunction("row", "pageTo", this.setPageToRow.bind(this)); - } - - initialize(){ - if(this.table.options.pagination){ - this.subscribe("row-deleted", this.rowsUpdated.bind(this)); - this.subscribe("row-added", this.rowsUpdated.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("footer-redraw", this.footerRedraw.bind(this)); - - if(this.table.options.paginationAddRow == "page"){ - this.subscribe("row-adding-position", this.rowAddingPosition.bind(this)); - } - - if(this.table.options.paginationMode === "remote"){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - } - - if(this.table.options.progressiveLoad){ - console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time"); - } - - this.registerDisplayHandler(this.restOnRenderBefore.bind(this), 40); - this.registerDisplayHandler(this.getRows.bind(this), 50); - - this.createElements(); - this.initializePageCounter(); - this.initializePaginator(); - }else if(this.table.options.progressiveLoad){ - this.subscribe("data-params", this.remotePageParams.bind(this)); - this.subscribe("data-loaded", this._parseRemoteData.bind(this)); - this.subscribe("table-built", this.calculatePageSizes.bind(this)); - this.subscribe("data-processed", this.initialLoadComplete.bind(this)); - - this.initializeProgressive(this.table.options.progressiveLoad); - - if(this.table.options.progressiveLoad === "scroll"){ - this.subscribe("scroll-vertical", this.scrollVertical.bind(this)); - } - } - } - - rowAddingPosition(row, top){ - var rowManager = this.table.rowManager, - displayRows = rowManager.getDisplayRows(), - index; - - if(top){ - if(displayRows.length){ - index = displayRows[0]; - }else{ - if(rowManager.activeRows.length){ - index = rowManager.activeRows[rowManager.activeRows.length-1]; - top = false; - } - } - }else{ - if(displayRows.length){ - index = displayRows[displayRows.length - 1]; - top = displayRows.length < this.size ? false : true; - } - } - - return {index, top}; - } - - calculatePageSizes(){ - var testElRow, testElCell; - - if(this.table.options.paginationSize){ - this.size = this.table.options.paginationSize; - }else{ - testElRow = document.createElement("div"); - testElRow.classList.add("tabulator-row"); - testElRow.style.visibility = "hidden"; - - testElCell = document.createElement("div"); - testElCell.classList.add("tabulator-cell"); - testElCell.innerHTML = "Page Row Test"; - - testElRow.appendChild(testElCell); - - this.table.rowManager.getTableElement().appendChild(testElRow); - - this.size = Math.floor(this.table.rowManager.getElement().clientHeight / testElRow.offsetHeight); - - this.table.rowManager.getTableElement().removeChild(testElRow); - } - - this.dispatchExternal("pageSizeChanged", this.size); - - this.generatePageSizeSelectList(); - } - - initialLoadComplete(){ - this.initialLoad = false; - } - - remotePageParams(data, config, silent, params){ - if(!this.initialLoad){ - if((this.progressiveLoad && !silent) || (!this.progressiveLoad && !this.dataChanging)){ - this.reset(true); - } - } - - //configure request params - params.page = this.page; - - //set page size if defined - if(this.size){ - params.size = this.size; - } - - return params; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetPageToRow(row){ - if(this.table.options.pagination){ - row = this.table.rowManager.findRow(row); - - if(row){ - return this.setPageToRow(row); - } - } - - return Promise.reject(); - } - - userSetPageSize(size){ - if(this.table.options.pagination){ - this.setPageSize(size); - return this.setPage(1); - }else{ - return false; - } - } - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - scrollVertical(top, dir){ - var element, diff, margin; - if(!dir && !this.table.dataLoader.loading){ - element = this.table.rowManager.getElement(); - diff = element.scrollHeight - element.clientHeight - top; - margin = this.table.options.progressiveLoadScrollMargin || (element.clientHeight * 2); - - if(diff < margin){ - this.nextPage() - .catch(() => {}); //consume the exception thrown when on the last page - } - } - } - - restOnRenderBefore(rows, renderInPosition){ - if(!renderInPosition){ - if(this.mode === "local"){ - this.reset(); - } - } - - return rows; - } - - rowsUpdated(){ - this.refreshData(true, "all"); - } - - createElements(){ - var button; - - this.element = document.createElement("span"); - this.element.classList.add("tabulator-paginator"); - - this.pagesElement = document.createElement("span"); - this.pagesElement.classList.add("tabulator-pages"); - - button = document.createElement("button"); - button.classList.add("tabulator-page"); - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - button.setAttribute("aria-label", ""); - button.setAttribute("title", ""); - - this.firstBut = button.cloneNode(true); - this.firstBut.setAttribute("data-page", "first"); - - this.prevBut = button.cloneNode(true); - this.prevBut.setAttribute("data-page", "prev"); - - this.nextBut = button.cloneNode(true); - this.nextBut.setAttribute("data-page", "next"); - - this.lastBut = button.cloneNode(true); - this.lastBut.setAttribute("data-page", "last"); - - if(this.table.options.paginationSizeSelector){ - this.pageSizeSelect = document.createElement("select"); - this.pageSizeSelect.classList.add("tabulator-page-size"); - } - } - - generatePageSizeSelectList(){ - var pageSizes = []; - - if(this.pageSizeSelect){ - - if(Array.isArray(this.table.options.paginationSizeSelector)){ - pageSizes = this.table.options.paginationSizeSelector; - this.pageSizes = pageSizes; - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes.unshift(this.size); - } - }else{ - - if(this.pageSizes.indexOf(this.size) == -1){ - pageSizes = []; - - for (let i = 1; i < 5; i++){ - pageSizes.push(this.size * i); - } - - this.pageSizes = pageSizes; - }else{ - pageSizes = this.pageSizes; - } - } - - while(this.pageSizeSelect.firstChild) this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild); - - pageSizes.forEach((item) => { - var itemEl = document.createElement("option"); - itemEl.value = item; - - if(item === true){ - this.langBind("pagination|all", function(value){ - itemEl.innerHTML = value; - }); - }else{ - itemEl.innerHTML = item; - } - - - - this.pageSizeSelect.appendChild(itemEl); - }); - - this.pageSizeSelect.value = this.size; - } - } - - initializePageCounter(){ - var counter = this.table.options.paginationCounter, - pageCounter = null; - - if(counter){ - if(typeof counter === "function"){ - pageCounter = counter; - }else{ - pageCounter = Page.pageCounters[counter]; - } - - if(pageCounter){ - this.pageCounter = pageCounter; - - this.pageCounterElement = document.createElement("span"); - this.pageCounterElement.classList.add("tabulator-page-counter"); - }else{ - console.warn("Pagination Error - No such page counter found: ", counter); - } - } - } - - //setup pagination - initializePaginator(hidden){ - var pageSelectLabel, paginationCounterHolder; - - if(!hidden){ - //build pagination element - - //bind localizations - this.langBind("pagination|first", (value) => { - this.firstBut.innerHTML = value; - }); - - this.langBind("pagination|first_title", (value) => { - this.firstBut.setAttribute("aria-label", value); - this.firstBut.setAttribute("title", value); - }); - - this.langBind("pagination|prev", (value) => { - this.prevBut.innerHTML = value; - }); - - this.langBind("pagination|prev_title", (value) => { - this.prevBut.setAttribute("aria-label", value); - this.prevBut.setAttribute("title", value); - }); - - this.langBind("pagination|next", (value) => { - this.nextBut.innerHTML = value; - }); - - this.langBind("pagination|next_title", (value) => { - this.nextBut.setAttribute("aria-label", value); - this.nextBut.setAttribute("title", value); - }); - - this.langBind("pagination|last", (value) => { - this.lastBut.innerHTML = value; - }); - - this.langBind("pagination|last_title", (value) => { - this.lastBut.setAttribute("aria-label", value); - this.lastBut.setAttribute("title", value); - }); - - //click bindings - this.firstBut.addEventListener("click", () => { - this.setPage(1); - }); - - this.prevBut.addEventListener("click", () => { - this.previousPage(); - }); - - this.nextBut.addEventListener("click", () => { - this.nextPage(); - }); - - this.lastBut.addEventListener("click", () => { - this.setPage(this.max); - }); - - if(this.table.options.paginationElement){ - this.element = this.table.options.paginationElement; - } - - if(this.pageSizeSelect){ - pageSelectLabel = document.createElement("label"); - - this.langBind("pagination|page_size", (value) => { - this.pageSizeSelect.setAttribute("aria-label", value); - this.pageSizeSelect.setAttribute("title", value); - pageSelectLabel.innerHTML = value; - }); - - this.element.appendChild(pageSelectLabel); - this.element.appendChild(this.pageSizeSelect); - - this.pageSizeSelect.addEventListener("change", (e) => { - this.setPageSize(this.pageSizeSelect.value == "true" ? true : this.pageSizeSelect.value); - this.setPage(1); - }); - } - - //append to DOM - this.element.appendChild(this.firstBut); - this.element.appendChild(this.prevBut); - this.element.appendChild(this.pagesElement); - this.element.appendChild(this.nextBut); - this.element.appendChild(this.lastBut); - - if(!this.table.options.paginationElement){ - if(this.table.options.paginationCounter){ - - paginationCounterHolder; - - if(this.table.options.paginationCounterElement){ - if(this.table.options.paginationCounterElement instanceof HTMLElement){ - this.table.options.paginationCounterElement.appendChild(this.pageCounterElement); - }else if(typeof this.table.options.paginationCounterElement === "string"){ - paginationCounterHolder = document.querySelector(this.table.options.paginationCounterElement); - - if(paginationCounterHolder){ - paginationCounterHolder.appendChild(this.pageCounterElement); - }else{ - console.warn("Pagination Error - Unable to find element matching paginationCounterElement selector:", this.table.options.paginationCounterElement); - } - } - }else{ - this.footerAppend(this.pageCounterElement); - } - - } - - this.footerAppend(this.element); - } - - this.page = this.table.options.paginationInitialPage; - this.count = this.table.options.paginationButtonCount; - } - - //set default values - this.mode = this.table.options.paginationMode; - } - - initializeProgressive(mode){ - this.initializePaginator(true); - this.mode = "progressive_" + mode; - this.progressiveLoad = true; - } - - trackChanges(){ - this.dispatch("page-changed"); - } - - //calculate maximum page from number of rows - setMaxRows(rowCount){ - if(!rowCount){ - this.max = 1; - }else{ - this.max = this.size === true ? 1 : Math.ceil(rowCount/this.size); - } - - if(this.page > this.max){ - this.page = this.max; - } - } - - //reset to first page without triggering action - reset(force){ - if(!this.initialLoad){ - if(this.mode == "local" || force){ - this.page = 1; - this.trackChanges(); - } - } - } - - //set the maximum page - setMaxPage(max){ - - max = parseInt(max); - - this.max = max || 1; - - if(this.page > this.max){ - this.page = this.max; - this.trigger(); - } - } - - //set current page number - setPage(page){ - switch(page){ - case "first": - return this.setPage(1); - - case "prev": - return this.previousPage(); - - case "next": - return this.nextPage(); - - case "last": - return this.setPage(this.max); - } - - page = parseInt(page); - - if((page > 0 && page <= this.max) || this.mode !== "local"){ - this.page = page; - - this.trackChanges(); - - return this.trigger(); - }else{ - console.warn("Pagination Error - Requested page is out of range of 1 - " + this.max + ":", page); - return Promise.reject(); - } - } - - setPageToRow(row){ - var rows = this.displayRows(-1); - var index = rows.indexOf(row); - - if(index > -1){ - var page = this.size === true ? 1 : Math.ceil((index + 1) / this.size); - - return this.setPage(page); - }else{ - console.warn("Pagination Error - Requested row is not visible"); - return Promise.reject(); - } - } - - setPageSize(size){ - if(size !== true){ - size = parseInt(size); - } - - if(size > 0){ - this.size = size; - this.dispatchExternal("pageSizeChanged", size); - } - - if(this.pageSizeSelect){ - // this.pageSizeSelect.value = size; - this.generatePageSizeSelectList(); - } - - this.trackChanges(); - } - - _setPageCounter(totalRows, size, currentRow){ - var content; - - if(this.pageCounter){ - - if(this.mode === "remote"){ - size = this.size; - currentRow = ((this.page - 1) * this.size) + 1; - totalRows = this.remoteRowCountEstimate; - } - - content = this.pageCounter.call(this, size, currentRow, this.page, totalRows, this.max); - - switch(typeof content){ - case "object": - if(content instanceof Node){ - - //clear previous cell contents - while(this.pageCounterElement.firstChild) this.pageCounterElement.removeChild(this.pageCounterElement.firstChild); - - this.pageCounterElement.appendChild(content); - }else{ - this.pageCounterElement.innerHTML = ""; - - if(content != null){ - console.warn("Page Counter Error - Page Counter has returned a type of object, the only valid page counter object return is an instance of Node, the page counter returned:", content); - } - } - break; - case "undefined": - this.pageCounterElement.innerHTML = ""; - break; - default: - this.pageCounterElement.innerHTML = content; - } - } - } - - //setup the pagination buttons - _setPageButtons(){ - let leftSize = Math.floor((this.count-1) / 2); - let rightSize = Math.ceil((this.count-1) / 2); - let min = this.max - this.page + leftSize + 1 < this.count ? this.max-this.count+1: Math.max(this.page-leftSize,1); - let max = this.page <= rightSize? Math.min(this.count, this.max) :Math.min(this.page+rightSize, this.max); - - while(this.pagesElement.firstChild) this.pagesElement.removeChild(this.pagesElement.firstChild); - - if(this.page == 1){ - this.firstBut.disabled = true; - this.prevBut.disabled = true; - }else{ - this.firstBut.disabled = false; - this.prevBut.disabled = false; - } - - if(this.page == this.max){ - this.lastBut.disabled = true; - this.nextBut.disabled = true; - }else{ - this.lastBut.disabled = false; - this.nextBut.disabled = false; - } - - for(let i = min; i <= max; i++){ - if(i>0 && i <= this.max){ - this.pagesElement.appendChild(this._generatePageButton(i)); - } - } - - this.footerRedraw(); - } - - _generatePageButton(page){ - var button = document.createElement("button"); - - button.classList.add("tabulator-page"); - if(page == this.page){ - button.classList.add("active"); - } - - button.setAttribute("type", "button"); - button.setAttribute("role", "button"); - - this.langBind("pagination|page_title", (value) => { - button.setAttribute("aria-label", value + " " + page); - button.setAttribute("title", value + " " + page); - }); - - button.setAttribute("data-page", page); - button.textContent = page; - - button.addEventListener("click", (e) => { - this.setPage(page); - }); - - return button; - } - - //previous page - previousPage(){ - if(this.page > 1){ - this.page--; - - this.trackChanges(); - - return this.trigger(); - - }else{ - console.warn("Pagination Error - Previous page would be less than page 1:", 0); - return Promise.reject(); - } - } - - //next page - nextPage(){ - if(this.page < this.max){ - this.page++; - - this.trackChanges(); - - return this.trigger(); - - }else{ - if(!this.progressiveLoad){ - console.warn("Pagination Error - Next page would be greater than maximum page of " + this.max + ":", this.max + 1); - } - return Promise.reject(); - } - } - - //return current page number - getPage(){ - return this.page; - } - - //return max page number - getPageMax(){ - return this.max; - } - - getPageSize(size){ - return this.size; - } - - getMode(){ - return this.mode; - } - - //return appropriate rows for current page - getRows(data){ - var actualRowPageSize = 0, - output, start, end, actualStartRow; - - var actualRows = data.filter((row) => { - return row.type === "row"; - }); - - if(this.mode == "local"){ - output = []; - - this.setMaxRows(data.length); - - if(this.size === true){ - start = 0; - end = data.length; - }else{ - start = this.size * (this.page - 1); - end = start + parseInt(this.size); - } - - this._setPageButtons(); - - for(let i = start; i < end; i++){ - let row = data[i]; - - if(row){ - output.push(row); - - if(row.type === "row"){ - if(!actualStartRow){ - actualStartRow = row; - } - - actualRowPageSize++; - } - } - } - - this._setPageCounter(actualRows.length, actualRowPageSize, actualStartRow ? (actualRows.indexOf(actualStartRow) + 1) : 0); - - return output; - }else{ - this._setPageButtons(); - this._setPageCounter(actualRows.length); - - return data.slice(0); - } - } - - trigger(){ - var left; - - switch(this.mode){ - case "local": - left = this.table.rowManager.scrollLeft; - - this.refreshData(); - this.table.rowManager.scrollHorizontal(left); - - this.dispatchExternal("pageLoaded", this.getPage()); - - return Promise.resolve(); - - case "remote": - this.dataChanging = true; - return this.reloadData(null) - .finally(() => { - this.dataChanging = false; - }); - - case "progressive_load": - case "progressive_scroll": - return this.reloadData(null, true); - - default: - console.warn("Pagination Error - no such pagination mode:", this.mode); - return Promise.reject(); - } - } - - _parseRemoteData(data){ - var margin; - - if(typeof data.last_page === "undefined"){ - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").last_page || "last_page") + "' property"); - } - - if(data.data){ - this.max = parseInt(data.last_page) || 1; - - this.remoteRowCountEstimate = typeof data.last_row !== "undefined" ? data.last_row : (data.last_page * this.size - (this.page == data.last_page ? (this.size - data.data.length) : 0)); - - if(this.progressiveLoad){ - switch(this.mode){ - case "progressive_load": - - if(this.page == 1){ - this.table.rowManager.setData(data.data, false, this.page == 1); - }else{ - this.table.rowManager.addRows(data.data); - } - - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }, this.table.options.progressiveLoadDelay); - } - break; - - case "progressive_scroll": - data = this.page === 1 ? data.data : this.table.rowManager.getData().concat(data.data); - - this.table.rowManager.setData(data, this.page !== 1, this.page == 1); - - margin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2); - - if(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){ - if(this.page < this.max){ - setTimeout(() => { - this.nextPage(); - }); - } - } - break; - } - - return false; - }else{ - // left = this.table.rowManager.scrollLeft; - this.dispatchExternal("pageLoaded", this.getPage()); - // this.table.rowManager.scrollHorizontal(left); - // this.table.columnManager.scrollHorizontal(left); - } - - }else{ - console.warn("Remote Pagination Error - Server response missing '" + (this.options("dataReceiveParams").data || "data") + "' property"); - } - - return data.data; - } - - //handle the footer element being redrawn - footerRedraw(){ - var footer = this.table.footerManager.containerElement; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - }else{ - this.pagesElement.style.display = ''; - - if((Math.ceil(footer.clientWidth) - footer.scrollWidth) < 0){ - this.pagesElement.style.display = 'none'; - } - } - } -} - -Page.moduleName = "page"; - -//load defaults -Page.pageCounters = defaultPageCounters; - -export default Page; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters.js b/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters.js deleted file mode 100644 index e2e8d1f..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters.js +++ /dev/null @@ -1,8 +0,0 @@ -import rows from './pageCounters/rows.js'; -import pages from './pageCounters/pages.js'; - - -export default { - rows:rows, - pages:pages, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters/pages.js b/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters/pages.js deleted file mode 100644 index 144e377..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters/pages.js +++ /dev/null @@ -1,33 +0,0 @@ -export default function(pageSize, currentRow, currentPage, totalRows, totalPages){ - - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - valueEl.innerHTML = " " + currentPage + " "; - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - totalEl.innerHTML = " " + totalPages + " "; - - this.table.modules.localize.langBind("pagination|counter|pages", (value) => { - rowsEl.innerHTML = value; - }); - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - - return el; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters/rows.js b/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters/rows.js deleted file mode 100644 index 40d9c2b..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Page/defaults/pageCounters/rows.js +++ /dev/null @@ -1,40 +0,0 @@ -export default function(pageSize, currentRow, currentPage, totalRows, totalPages){ - var el = document.createElement("span"), - showingEl = document.createElement("span"), - valueEl = document.createElement("span"), - ofEl = document.createElement("span"), - totalEl = document.createElement("span"), - rowsEl = document.createElement("span"); - - this.table.modules.localize.langBind("pagination|counter|showing", (value) => { - showingEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|of", (value) => { - ofEl.innerHTML = value; - }); - - this.table.modules.localize.langBind("pagination|counter|rows", (value) => { - rowsEl.innerHTML = value; - }); - - if(totalRows){ - valueEl.innerHTML = " " + currentRow + "-" + Math.min((currentRow + pageSize - 1), totalRows) + " "; - - totalEl.innerHTML = " " + totalRows + " "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(ofEl); - el.appendChild(totalEl); - el.appendChild(rowsEl); - }else{ - valueEl.innerHTML = " 0 "; - - el.appendChild(showingEl); - el.appendChild(valueEl); - el.appendChild(rowsEl); - } - - return el; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Persistence/Persistence.js b/tmp/tabulator-5.6.1/src/js/modules/Persistence/Persistence.js deleted file mode 100644 index fc8a4c2..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Persistence/Persistence.js +++ /dev/null @@ -1,475 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultReaders from './defaults/readers.js'; -import defaultWriters from './defaults/writers.js'; - -class Persistence extends Module{ - - constructor(table){ - super(table); - - this.mode = ""; - this.id = ""; - // this.persistProps = ["field", "width", "visible"]; - this.defWatcherBlock = false; - this.config = {}; - this.readFunc = false; - this.writeFunc = false; - - this.registerTableOption("persistence", false); - this.registerTableOption("persistenceID", ""); //key for persistent storage - this.registerTableOption("persistenceMode", true); //mode for storing persistence information - this.registerTableOption("persistenceReaderFunc", false); //function for handling persistence data reading - this.registerTableOption("persistenceWriterFunc", false); //function for handling persistence data writing - } - - // Test for whether localStorage is available for use. - localStorageTest() { - var testKey = "_tabulator_test"; - - try { - window.localStorage.setItem( testKey, testKey); - window.localStorage.removeItem( testKey ); - return true; - } catch(e) { - return false; - } - } - - //setup parameters - initialize(){ - if(this.table.options.persistence){ - //determine persistent layout storage type - var mode = this.table.options.persistenceMode, - id = this.table.options.persistenceID, - retrievedData; - - this.mode = mode !== true ? mode : (this.localStorageTest() ? "local" : "cookie"); - - if(this.table.options.persistenceReaderFunc){ - if(typeof this.table.options.persistenceReaderFunc === "function"){ - this.readFunc = this.table.options.persistenceReaderFunc; - }else{ - if(Persistence.readers[this.table.options.persistenceReaderFunc]){ - this.readFunc = Persistence.readers[this.table.options.persistenceReaderFunc]; - }else{ - console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc); - } - } - }else{ - if(Persistence.readers[this.mode]){ - this.readFunc = Persistence.readers[this.mode]; - }else{ - console.warn("Persistence Read Error - invalid reader set", this.mode); - } - } - - if(this.table.options.persistenceWriterFunc){ - if(typeof this.table.options.persistenceWriterFunc === "function"){ - this.writeFunc = this.table.options.persistenceWriterFunc; - }else{ - if(Persistence.writers[this.table.options.persistenceWriterFunc]){ - this.writeFunc = Persistence.writers[this.table.options.persistenceWriterFunc]; - }else{ - console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc); - } - } - }else{ - if(Persistence.writers[this.mode]){ - this.writeFunc = Persistence.writers[this.mode]; - }else{ - console.warn("Persistence Write Error - invalid writer set", this.mode); - } - } - - //set storage tag - this.id = "tabulator-" + (id || (this.table.element.getAttribute("id") || "")); - - this.config = { - sort:this.table.options.persistence === true || this.table.options.persistence.sort, - filter:this.table.options.persistence === true || this.table.options.persistence.filter, - headerFilter:this.table.options.persistence === true || this.table.options.persistence.headerFilter, - group:this.table.options.persistence === true || this.table.options.persistence.group, - page:this.table.options.persistence === true || this.table.options.persistence.page, - columns:this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns, - }; - - //load pagination data if needed - if(this.config.page){ - retrievedData = this.retrieveData("page"); - - if(retrievedData){ - if(typeof retrievedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)){ - this.table.options.paginationSize = retrievedData.paginationSize; - } - - if(typeof retrievedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)){ - this.table.options.paginationInitialPage = retrievedData.paginationInitialPage; - } - } - } - - //load group data if needed - if(this.config.group){ - retrievedData = this.retrieveData("group"); - - if(retrievedData){ - if(typeof retrievedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)){ - this.table.options.groupBy = retrievedData.groupBy; - } - if(typeof retrievedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)){ - this.table.options.groupStartOpen = retrievedData.groupStartOpen; - } - if(typeof retrievedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)){ - this.table.options.groupHeader = retrievedData.groupHeader; - } - } - } - - if(this.config.columns){ - this.table.options.columns = this.load("columns", this.table.options.columns); - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.save.bind(this, "columns")); - this.subscribe("column-hide", this.save.bind(this, "columns")); - this.subscribe("column-moved", this.save.bind(this, "columns")); - } - - this.subscribe("table-built", this.tableBuilt.bind(this), 0); - - this.subscribe("table-redraw", this.tableRedraw.bind(this)); - - this.subscribe("filter-changed", this.eventSave.bind(this, "filter")); - this.subscribe("filter-changed", this.eventSave.bind(this, "headerFilter")); - this.subscribe("sort-changed", this.eventSave.bind(this, "sort")); - this.subscribe("group-changed", this.eventSave.bind(this, "group")); - this.subscribe("page-changed", this.eventSave.bind(this, "page")); - this.subscribe("column-resized", this.eventSave.bind(this, "columns")); - this.subscribe("column-width", this.eventSave.bind(this, "columns")); - this.subscribe("layout-refreshed", this.eventSave.bind(this, "columns")); - } - - this.registerTableFunction("getColumnLayout", this.getColumnLayout.bind(this)); - this.registerTableFunction("setColumnLayout", this.setColumnLayout.bind(this)); - } - - eventSave(type){ - if(this.config[type]){ - this.save(type); - } - } - - tableBuilt(){ - var sorters, filters, headerFilters; - - if(this.config.sort){ - sorters = this.load("sort"); - - if(!sorters === false){ - this.table.options.initialSort = sorters; - } - } - - if(this.config.filter){ - filters = this.load("filter"); - - if(!filters === false){ - this.table.options.initialFilter = filters; - } - } - if(this.config.headerFilter){ - headerFilters = this.load("headerFilter"); - - if(!headerFilters === false){ - this.table.options.initialHeaderFilter = headerFilters; - } - } - - } - - tableRedraw(force){ - if(force && this.config.columns){ - this.save("columns"); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - getColumnLayout(){ - return this.parseColumns(this.table.columnManager.getColumns()); - } - - setColumnLayout(layout){ - this.table.columnManager.setColumns(this.mergeDefinition(this.table.options.columns, layout, true)); - return true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumn(column){ - var def, keys; - - if(this.config.columns){ - this.defWatcherBlock = true; - - def = column.getDefinition(); - - keys = this.config.columns === true ? Object.keys(def) : this.config.columns; - - keys.forEach((key)=>{ - var props = Object.getOwnPropertyDescriptor(def, key); - var value = def[key]; - - if(props){ - Object.defineProperty(def, key, { - set: (newValue) => { - value = newValue; - - if(!this.defWatcherBlock){ - this.save("columns"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - if(props.get){ - props.get(); - } - return value; - } - }); - } - }); - - this.defWatcherBlock = false; - } - } - - //load saved definitions - load(type, current){ - var data = this.retrieveData(type); - - if(current){ - data = data ? this.mergeDefinition(current, data) : current; - } - - return data; - } - - //retrieve data from memory - retrieveData(type){ - return this.readFunc ? this.readFunc(this.id, type) : false; - } - - //merge old and new column definitions - mergeDefinition(oldCols, newCols, mergeAllNew){ - var output = []; - - newCols = newCols || []; - - newCols.forEach((column, to) => { - var from = this._findColumn(oldCols, column), - keys; - - if(from){ - if(mergeAllNew){ - keys = Object.keys(column); - }else if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(from); - keys.push("width"); - }else{ - keys = this.config.columns; - } - - keys.forEach((key)=>{ - if(key !== "columns" && typeof column[key] !== "undefined"){ - from[key] = column[key]; - } - }); - - if(from.columns){ - from.columns = this.mergeDefinition(from.columns, column.columns); - } - - output.push(from); - } - }); - - oldCols.forEach((column, i) => { - var from = this._findColumn(newCols, column); - - if (!from) { - if(output.length>i){ - output.splice(i, 0, column); - }else{ - output.push(column); - } - } - }); - - return output; - } - - //find matching columns - _findColumn(columns, subject){ - var type = subject.columns ? "group" : (subject.field ? "field" : "object"); - - return columns.find(function(col){ - switch(type){ - case "group": - return col.title === subject.title && col.columns.length === subject.columns.length; - - case "field": - return col.field === subject.field; - - case "object": - return col === subject; - } - }); - } - - //save data - save(type){ - var data = {}; - - switch(type){ - case "columns": - data = this.parseColumns(this.table.columnManager.getColumns()); - break; - - case "filter": - data = this.table.modules.filter.getFilters(); - break; - - case "headerFilter": - data = this.table.modules.filter.getHeaderFilters(); - break; - - case "sort": - data = this.validateSorters(this.table.modules.sort.getSort()); - break; - - case "group": - data = this.getGroupConfig(); - break; - - case "page": - data = this.getPageConfig(); - break; - } - - if(this.writeFunc){ - this.writeFunc(this.id, type, data); - } - - } - - //ensure sorters contain no function data - validateSorters(data){ - data.forEach(function(item){ - item.column = item.field; - delete item.field; - }); - - return data; - } - - getGroupConfig(){ - var data = {}; - - if(this.config.group){ - if(this.config.group === true || this.config.group.groupBy){ - data.groupBy = this.table.options.groupBy; - } - - if(this.config.group === true || this.config.group.groupStartOpen){ - data.groupStartOpen = this.table.options.groupStartOpen; - } - - if(this.config.group === true || this.config.group.groupHeader){ - data.groupHeader = this.table.options.groupHeader; - } - } - - return data; - } - - getPageConfig(){ - var data = {}; - - if(this.config.page){ - if(this.config.page === true || this.config.page.size){ - data.paginationSize = this.table.modules.page.getPageSize(); - } - - if(this.config.page === true || this.config.page.page){ - data.paginationInitialPage = this.table.modules.page.getPage(); - } - } - - return data; - } - - - //parse columns for data to store - parseColumns(columns){ - var definitions = [], - excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"]; - - columns.forEach((column) => { - var defStore = {}, - colDef = column.getDefinition(), - keys; - - if(column.isGroup){ - defStore.title = colDef.title; - defStore.columns = this.parseColumns(column.getColumns()); - }else{ - defStore.field = column.getField(); - - if(this.config.columns === true || this.config.columns == undefined){ - keys = Object.keys(colDef); - keys.push("width"); - keys.push("visible"); - }else{ - keys = this.config.columns; - } - - keys.forEach((key)=>{ - switch(key){ - case "width": - defStore.width = column.getWidth(); - break; - case "visible": - defStore.visible = column.visible; - break; - - default: - if(typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1){ - defStore[key] = colDef[key]; - } - } - }); - } - - definitions.push(defStore); - }); - - return definitions; - } -} - -Persistence.moduleName = "persistence"; - -Persistence.moduleInitOrder = -10; - -//load defaults -Persistence.readers = defaultReaders; -Persistence.writers = defaultWriters; - -export default Persistence; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Persistence/defaults/readers.js b/tmp/tabulator-5.6.1/src/js/modules/Persistence/defaults/readers.js deleted file mode 100644 index 0e32df5..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Persistence/defaults/readers.js +++ /dev/null @@ -1,29 +0,0 @@ -// read persistance information from storage -export default { - local:function(id, type){ - var data = localStorage.getItem(id + "-" + type); - - return data ? JSON.parse(data) : false; - }, - cookie:function(id, type){ - var cookie = document.cookie, - key = id + "-" + type, - cookiePos = cookie.indexOf(key + "="), - end, data; - - //if cookie exists, decode and load column data into tabulator - if(cookiePos > -1){ - cookie = cookie.slice(cookiePos); - - end = cookie.indexOf(";"); - - if(end > -1){ - cookie = cookie.slice(0, end); - } - - data = cookie.replace(key + "=", ""); - } - - return data ? JSON.parse(data) : false; - } -}; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Persistence/defaults/writers.js b/tmp/tabulator-5.6.1/src/js/modules/Persistence/defaults/writers.js deleted file mode 100644 index 3a47629..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Persistence/defaults/writers.js +++ /dev/null @@ -1,13 +0,0 @@ -//write persistence information to storage -export default { - local:function(id, type, data){ - localStorage.setItem(id + "-" + type, JSON.stringify(data)); - }, - cookie:function(id, type, data){ - var expireDate = new Date(); - - expireDate.setDate(expireDate.getDate() + 10000); - - document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString(); - } -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Popup/Popup.js b/tmp/tabulator-5.6.1/src/js/modules/Popup/Popup.js deleted file mode 100644 index 8dbbebb..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Popup/Popup.js +++ /dev/null @@ -1,231 +0,0 @@ -import Module from '../../core/Module.js'; - -class Popup extends Module{ - - constructor(table){ - super(table); - - this.columnSubscribers = {}; - - this.registerTableOption("rowContextPopup", false); - this.registerTableOption("rowClickPopup", false); - this.registerTableOption("rowDblClickPopup", false); - this.registerTableOption("groupContextPopup", false); - this.registerTableOption("groupClickPopup", false); - this.registerTableOption("groupDblClickPopup", false); - - this.registerColumnOption("headerContextPopup"); - this.registerColumnOption("headerClickPopup"); - this.registerColumnOption("headerDblClickPopup"); - this.registerColumnOption("headerPopup"); - this.registerColumnOption("headerPopupIcon"); - this.registerColumnOption("contextPopup"); - this.registerColumnOption("clickPopup"); - this.registerColumnOption("dblClickPopup"); - - this.registerComponentFunction("cell", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("column", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("row", "popup", this._componentPopupCall.bind(this)); - this.registerComponentFunction("group", "popup", this._componentPopupCall.bind(this)); - - } - - initialize(){ - this.initializeRowWatchers(); - this.initializeGroupWatchers(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - _componentPopupCall(component, contents, position){ - this.loadPopupEvent(contents, null, component, position); - } - - initializeRowWatchers(){ - if(this.table.options.rowContextPopup){ - this.subscribe("row-contextmenu", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - this.table.on("rowTapHold", this.loadPopupEvent.bind(this, this.table.options.rowContextPopup)); - } - - if(this.table.options.rowClickPopup){ - this.subscribe("row-click", this.loadPopupEvent.bind(this, this.table.options.rowClickPopup)); - } - - if(this.table.options.rowDblClickPopup){ - this.subscribe("row-dblclick", this.loadPopupEvent.bind(this, this.table.options.rowDblClickPopup)); - } - } - - initializeGroupWatchers(){ - if(this.table.options.groupContextPopup){ - this.subscribe("group-contextmenu", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - this.table.on("groupTapHold", this.loadPopupEvent.bind(this, this.table.options.groupContextPopup)); - } - - if(this.table.options.groupClickPopup){ - this.subscribe("group-click", this.loadPopupEvent.bind(this, this.table.options.groupClickPopup)); - } - - if(this.table.options.groupDblClickPopup){ - this.subscribe("group-dblclick", this.loadPopupEvent.bind(this, this.table.options.groupDblClickPopup)); - } - } - - initializeColumn(column){ - var def = column.definition; - - //handle column events - if(def.headerContextPopup && !this.columnSubscribers.headerContextPopup){ - this.columnSubscribers.headerContextPopup = this.loadPopupTableColumnEvent.bind(this, "headerContextPopup"); - this.subscribe("column-contextmenu", this.columnSubscribers.headerContextPopup); - this.table.on("headerTapHold", this.loadPopupTableColumnEvent.bind(this, "headerContextPopup")); - } - - if(def.headerClickPopup && !this.columnSubscribers.headerClickPopup){ - this.columnSubscribers.headerClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerClickPopup"); - this.subscribe("column-click", this.columnSubscribers.headerClickPopup); - - - }if(def.headerDblClickPopup && !this.columnSubscribers.headerDblClickPopup){ - this.columnSubscribers.headerDblClickPopup = this.loadPopupTableColumnEvent.bind(this, "headerDblClickPopup"); - this.subscribe("column-dblclick", this.columnSubscribers.headerDblClickPopup); - } - - if(def.headerPopup){ - this.initializeColumnHeaderPopup(column); - } - - //handle cell events - if(def.contextPopup && !this.columnSubscribers.contextPopup){ - this.columnSubscribers.contextPopup = this.loadPopupTableCellEvent.bind(this, "contextPopup"); - this.subscribe("cell-contextmenu", this.columnSubscribers.contextPopup); - this.table.on("cellTapHold", this.loadPopupTableCellEvent.bind(this, "contextPopup")); - } - - if(def.clickPopup && !this.columnSubscribers.clickPopup){ - this.columnSubscribers.clickPopup = this.loadPopupTableCellEvent.bind(this, "clickPopup"); - this.subscribe("cell-click", this.columnSubscribers.clickPopup); - } - - if(def.dblClickPopup && !this.columnSubscribers.dblClickPopup){ - this.columnSubscribers.dblClickPopup = this.loadPopupTableCellEvent.bind(this, "dblClickPopup"); - this.subscribe("cell-click", this.columnSubscribers.dblClickPopup); - } - } - - initializeColumnHeaderPopup(column){ - var icon = column.definition.headerPopupIcon, - headerPopupEl; - - headerPopupEl = document.createElement("span"); - headerPopupEl.classList.add("tabulator-header-popup-button"); - - if(icon){ - if(typeof icon === "function"){ - icon = icon(column.getComponent()); - } - - if(icon instanceof HTMLElement){ - headerPopupEl.appendChild(icon); - }else{ - headerPopupEl.innerHTML = icon; - } - }else{ - headerPopupEl.innerHTML = "⋮"; - } - - headerPopupEl.addEventListener("click", (e) => { - e.stopPropagation(); - e.preventDefault(); - - this.loadPopupEvent(column.definition.headerPopup, e, column); - }); - - column.titleElement.insertBefore(headerPopupEl, column.titleElement.firstChild); - } - - loadPopupTableCellEvent(option, e, cell){ - if(cell._cell){ - cell = cell._cell; - } - - if(cell.column.definition[option]){ - this.loadPopupEvent(cell.column.definition[option], e, cell); - } - } - - loadPopupTableColumnEvent(option, e, column){ - if(column._column){ - column = column._column; - } - - if(column.definition[option]){ - this.loadPopupEvent(column.definition[option], e, column); - } - } - - loadPopupEvent(contents, e, component, position){ - var renderedCallback; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(component._group){ - component = component._group; - }else if(component._row){ - component = component._row; - } - - contents = typeof contents == "function" ? contents.call(this.table, e, component.getComponent(), onRendered) : contents; - - this.loadPopup(e, component, contents, renderedCallback, position); - } - - loadPopup(e, component, contents, renderedCallback, position){ - var touch = !(e instanceof MouseEvent), - contentsEl, popup; - - if(contents instanceof HTMLElement){ - contentsEl = contents; - }else{ - contentsEl = document.createElement("div"); - contentsEl.innerHTML = contents; - } - - contentsEl.classList.add("tabulator-popup"); - - contentsEl.addEventListener("click", (e) =>{ - e.stopPropagation(); - }); - - if(!touch){ - e.preventDefault(); - } - - popup = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - popup.renderCallback(renderedCallback); - } - - if(e){ - popup.show(e); - }else{ - popup.show(component.getElement(), position || "center"); - } - - - popup.hideOnBlur(() => { - this.dispatchExternal("popupClosed", component.getComponent()); - }); - - - - this.dispatchExternal("popupOpened", component.getComponent()); - } -} - -Popup.moduleName = "popup"; - -export default Popup; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Print/Print.js b/tmp/tabulator-5.6.1/src/js/modules/Print/Print.js deleted file mode 100644 index a9793f6..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Print/Print.js +++ /dev/null @@ -1,138 +0,0 @@ -import Module from '../../core/Module.js'; - -class Print extends Module{ - - constructor(table){ - super(table); - - this.element = false; - this.manualBlock = false; - this.beforeprintEventHandler = null; - this.afterprintEventHandler = null; - - this.registerTableOption("printAsHtml", false); //enable print as html - this.registerTableOption("printFormatter", false); //printing page formatter - this.registerTableOption("printHeader", false); //page header contents - this.registerTableOption("printFooter", false); //page footer contents - this.registerTableOption("printStyled", true); //enable print as html styling - this.registerTableOption("printRowRange", "visible"); //restrict print to visible rows only - this.registerTableOption("printConfig", {}); //print config options - - this.registerColumnOption("print"); - this.registerColumnOption("titlePrint"); - } - - initialize(){ - if(this.table.options.printAsHtml){ - this.beforeprintEventHandler = this.replaceTable.bind(this); - this.afterprintEventHandler = this.cleanup.bind(this); - - window.addEventListener("beforeprint", this.beforeprintEventHandler ); - window.addEventListener("afterprint", this.afterprintEventHandler); - this.subscribe("table-destroy", this.destroy.bind(this)); - } - - this.registerTableFunction("print", this.printFullscreen.bind(this)); - } - - destroy(){ - if(this.table.options.printAsHtml){ - window.removeEventListener( "beforeprint", this.beforeprintEventHandler ); - window.removeEventListener( "afterprint", this.afterprintEventHandler ); - } - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - replaceTable(){ - if(!this.manualBlock){ - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-table"); - - this.element.appendChild(this.table.modules.export.generateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print")); - - this.table.element.style.display = "none"; - - this.table.element.parentNode.insertBefore(this.element, this.table.element); - } - } - - cleanup(){ - document.body.classList.remove("tabulator-print-fullscreen-hide"); - - if(this.element && this.element.parentNode){ - this.element.parentNode.removeChild(this.element); - this.table.element.style.display = ""; - } - } - - printFullscreen(visible, style, config){ - var scrollX = window.scrollX, - scrollY = window.scrollY, - headerEl = document.createElement("div"), - footerEl = document.createElement("div"), - tableEl = this.table.modules.export.generateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible || this.table.options.printRowRange, "print"), - headerContent, footerContent; - - this.manualBlock = true; - - this.element = document.createElement("div"); - this.element.classList.add("tabulator-print-fullscreen"); - - if(this.table.options.printHeader){ - headerEl.classList.add("tabulator-print-header"); - - headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader; - - if(typeof headerContent == "string"){ - headerEl.innerHTML = headerContent; - }else{ - headerEl.appendChild(headerContent); - } - - this.element.appendChild(headerEl); - } - - this.element.appendChild(tableEl); - - if(this.table.options.printFooter){ - footerEl.classList.add("tabulator-print-footer"); - - footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter; - - - if(typeof footerContent == "string"){ - footerEl.innerHTML = footerContent; - }else{ - footerEl.appendChild(footerContent); - } - - this.element.appendChild(footerEl); - } - - document.body.classList.add("tabulator-print-fullscreen-hide"); - document.body.appendChild(this.element); - - if(this.table.options.printFormatter){ - this.table.options.printFormatter(this.element, tableEl); - } - - window.print(); - - this.cleanup(); - - window.scrollTo(scrollX, scrollY); - - this.manualBlock = false; - } -} - -Print.moduleName = "print"; - -export default Print; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/ReactiveData/ReactiveData.js b/tmp/tabulator-5.6.1/src/js/modules/ReactiveData/ReactiveData.js deleted file mode 100644 index c91a69e..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/ReactiveData/ReactiveData.js +++ /dev/null @@ -1,408 +0,0 @@ -import Module from '../../core/Module.js'; - -class ReactiveData extends Module{ - - constructor(table){ - super(table); - - this.data = false; - this.blocked = false; //block reactivity while performing update - this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with - this.currentVersion = 0; - - this.registerTableOption("reactiveData", false); //enable data reactivity - } - - initialize(){ - if(this.table.options.reactiveData){ - this.subscribe("cell-value-save-before", this.block.bind(this, "cellsave")); - this.subscribe("cell-value-save-after", this.unblock.bind(this, "cellsave")); - this.subscribe("row-data-save-before", this.block.bind(this, "rowsave")); - this.subscribe("row-data-save-after", this.unblock.bind(this, "rowsave")); - this.subscribe("row-data-init-after", this.watchRow.bind(this)); - this.subscribe("data-processing", this.watchData.bind(this)); - this.subscribe("table-destroy", this.unwatchData.bind(this)); - } - } - - watchData(data){ - var self = this, - version; - - this.currentVersion ++; - - version = this.currentVersion; - - this.unwatchData(); - - this.data = data; - - //override array push function - this.origFuncs.push = data.push; - - Object.defineProperty(this.data, "push", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-push"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, false); - }); - - result = self.origFuncs.push.apply(data, arguments); - - self.unblock("data-push"); - } - - return result; - } - }); - - //override array unshift function - this.origFuncs.unshift = data.unshift; - - Object.defineProperty(this.data, "unshift", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-unshift"); - - args.forEach((arg) => { - self.table.rowManager.addRowActual(arg, true); - }); - - result = self.origFuncs.unshift.apply(data, arguments); - - self.unblock("data-unshift"); - } - - return result; - } - }); - - - //override array shift function - this.origFuncs.shift = data.shift; - - Object.defineProperty(this.data, "shift", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-shift"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[0]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.shift.call(data); - - self.unblock("data-shift"); - } - - return result; - } - }); - - //override array pop function - this.origFuncs.pop = data.pop; - - Object.defineProperty(this.data, "pop", { - enumerable: false, - configurable: true, - value: function(){ - var row, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-pop"); - - if(self.data.length){ - row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]); - - if(row){ - row.deleteActual(); - } - } - - result = self.origFuncs.pop.call(data); - - self.unblock("data-pop"); - } - - return result; - } - }); - - - //override array splice function - this.origFuncs.splice = data.splice; - - Object.defineProperty(this.data, "splice", { - enumerable: false, - configurable: true, - value: function(){ - var args = Array.from(arguments), - start = args[0] < 0 ? data.length + args[0] : args[0], - end = args[1], - newRows = args[2] ? args.slice(2) : false, - startRow, result; - - if(!self.blocked && version === self.currentVersion){ - self.block("data-splice"); - //add new rows - if(newRows){ - startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false; - - if(startRow){ - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, startRow, true); - }); - }else{ - newRows = newRows.slice().reverse(); - - newRows.forEach((rowData) => { - self.table.rowManager.addRowActual(rowData, true, false, true); - }); - } - } - - //delete removed rows - if(end !== 0){ - var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end); - - oldRows.forEach((rowData, i) => { - var row = self.table.rowManager.getRowFromDataObject(rowData); - - if(row){ - row.deleteActual(i !== oldRows.length - 1); - } - }); - } - - if(newRows || end !== 0){ - self.table.rowManager.reRenderInPosition(); - } - - result = self.origFuncs.splice.apply(data, arguments); - - self.unblock("data-splice"); - } - - return result ; - } - }); - } - - unwatchData(){ - if(this.data !== false){ - for(var key in this.origFuncs){ - Object.defineProperty(this.data, key, { - enumerable: true, - configurable:true, - writable:true, - value: this.origFuncs.key, - }); - } - } - } - - watchRow(row){ - var data = row.getData(); - - for(var key in data){ - this.watchKey(row, data, key); - } - - if(this.table.options.dataTree){ - this.watchTreeChildren(row); - } - } - - watchTreeChildren (row){ - var self = this, - childField = row.getData()[this.table.options.dataTreeChildField], - origFuncs = {}; - - if(childField){ - - origFuncs.push = childField.push; - - Object.defineProperty(childField, "push", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-push"); - - var result = origFuncs.push.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-push"); - } - - return result; - } - }); - - origFuncs.unshift = childField.unshift; - - Object.defineProperty(childField, "unshift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-unshift"); - - var result = origFuncs.unshift.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-unshift"); - } - - return result; - } - }); - - origFuncs.shift = childField.shift; - - Object.defineProperty(childField, "shift", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-shift"); - - var result = origFuncs.shift.call(childField); - this.rebuildTree(row); - - self.unblock("tree-shift"); - } - - return result; - } - }); - - origFuncs.pop = childField.pop; - - Object.defineProperty(childField, "pop", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-pop"); - - var result = origFuncs.pop.call(childField); - this.rebuildTree(row); - - self.unblock("tree-pop"); - } - - return result; - } - }); - - origFuncs.splice = childField.splice; - - Object.defineProperty(childField, "splice", { - enumerable: false, - configurable: true, - value: () => { - if(!self.blocked){ - self.block("tree-splice"); - - var result = origFuncs.splice.apply(childField, arguments); - this.rebuildTree(row); - - self.unblock("tree-splice"); - } - - return result; - } - }); - } - } - - rebuildTree(row){ - this.table.modules.dataTree.initializeRow(row); - this.table.modules.dataTree.layoutRow(row); - this.table.rowManager.refreshActiveData("tree", false, true); - } - - watchKey(row, data, key){ - var self = this, - props = Object.getOwnPropertyDescriptor(data, key), - value = data[key], - version = this.currentVersion; - - Object.defineProperty(data, key, { - set: (newValue) => { - value = newValue; - if(!self.blocked && version === self.currentVersion){ - self.block("key"); - - var update = {}; - update[key] = newValue; - row.updateData(update); - - self.unblock("key"); - } - - if(props.set){ - props.set(newValue); - } - }, - get:() => { - - if(props.get){ - props.get(); - } - - return value; - } - }); - } - - unwatchRow(row){ - var data = row.getData(); - - for(var key in data){ - Object.defineProperty(data, key, { - value:data[key], - }); - } - } - - block(key){ - if(!this.blocked){ - this.blocked = key; - } - } - - unblock(key){ - if(this.blocked === key){ - this.blocked = false; - } - } -} - -ReactiveData.moduleName = "reactiveData"; - -export default ReactiveData; - - - diff --git a/tmp/tabulator-5.6.1/src/js/modules/ResizeColumns/ResizeColumns.js b/tmp/tabulator-5.6.1/src/js/modules/ResizeColumns/ResizeColumns.js deleted file mode 100644 index b105e60..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/ResizeColumns/ResizeColumns.js +++ /dev/null @@ -1,311 +0,0 @@ -import Module from '../../core/Module.js'; - -class ResizeColumns extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startX = false; - this.startWidth = false; - this.latestX = false; - this.handle = null; - this.initialNextColumn = null; - this.nextColumn = null; - - this.initialized = false; - this.registerColumnOption("resizable", true); - this.registerTableOption("resizableColumnFit", false); - } - - initialize(){ - this.subscribe("column-rendered", this.layoutColumnHeader.bind(this)); - } - - initializeEventWatchers(){ - if(!this.initialized){ - - this.subscribe("cell-rendered", this.layoutCellHandles.bind(this)); - this.subscribe("cell-delete", this.deInitializeComponent.bind(this)); - - this.subscribe("cell-height", this.resizeHandle.bind(this)); - this.subscribe("column-moved", this.columnLayoutUpdated.bind(this)); - - this.subscribe("column-hide", this.deInitializeColumn.bind(this)); - this.subscribe("column-show", this.columnLayoutUpdated.bind(this)); - this.subscribe("column-width", this.columnWidthUpdated.bind(this)); - - this.subscribe("column-delete", this.deInitializeComponent.bind(this)); - this.subscribe("column-height", this.resizeHandle.bind(this)); - - this.initialized = true; - } - } - - - layoutCellHandles(cell){ - if(cell.row.type === "row"){ - this.deInitializeComponent(cell); - this.initializeColumn("cell", cell, cell.column, cell.element); - } - } - - layoutColumnHeader(column){ - if(column.definition.resizable){ - this.initializeEventWatchers(); - this.deInitializeComponent(column); - this.initializeColumn("header", column, column, column.element); - } - } - - columnLayoutUpdated(column){ - var prev = column.prevColumn(); - - this.reinitializeColumn(column); - - if(prev){ - this.reinitializeColumn(prev); - } - } - - columnWidthUpdated(column){ - if(column.modules.frozen){ - if(this.table.modules.frozenColumns.leftColumns.includes(column)){ - this.table.modules.frozenColumns.leftColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - }else if(this.table.modules.frozenColumns.rightColumns.includes(column)){ - this.table.modules.frozenColumns.rightColumns.forEach((col) => { - this.reinitializeColumn(col); - }); - } - } - } - - frozenColumnOffset(column){ - var offset = false; - - if(column.modules.frozen){ - offset = column.modules.frozen.marginValue; - - if(column.modules.frozen.position === "left"){ - offset += column.getWidth() - 3; - }else{ - if(offset){ - offset -= 3; - } - } - } - - return offset !== false ? offset + "px" : false; - } - - reinitializeColumn(column){ - var frozenOffset = this.frozenColumnOffset(column); - - column.cells.forEach((cell) => { - if(cell.modules.resize && cell.modules.resize.handleEl){ - if(frozenOffset){ - cell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - cell.modules.resize.handleEl.style["z-index"] = 11; - } - - cell.element.after(cell.modules.resize.handleEl); - } - }); - - if(column.modules.resize && column.modules.resize.handleEl){ - if(frozenOffset){ - column.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset; - } - - column.element.after(column.modules.resize.handleEl); - } - } - - initializeColumn(type, component, column, element){ - var self = this, - variableHeight = false, - mode = column.definition.resizable, - config = {}, - nearestColumn = column.getLastColumn(); - - //set column resize mode - if(type === "header"){ - variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight; - config = {variableHeight:variableHeight}; - } - - if((mode === true || mode == type) && this._checkResizability(nearestColumn)){ - - var handle = document.createElement('span'); - handle.className = "tabulator-col-resize-handle"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startColumn = column; - self.initialNextColumn = self.nextColumn = nearestColumn.nextColumn(); - self._mouseDown(e, nearestColumn, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - //resize column on double click - handle.addEventListener("dblclick", (e) => { - var oldWidth = nearestColumn.getWidth(); - - e.stopPropagation(); - nearestColumn.reinitializeWidth(true); - - if(oldWidth !== nearestColumn.getWidth()){ - self.dispatch("column-resized", nearestColumn); - self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent()); - } - }); - - if(column.modules.frozen){ - handle.style.position = "sticky"; - handle.style[column.modules.frozen.position] = this.frozenColumnOffset(column); - } - - config.handleEl = handle; - - if(element.parentNode && column.visible){ - element.after(handle); - } - } - - component.modules.resize = config; - } - - deInitializeColumn(column){ - this.deInitializeComponent(column); - - column.cells.forEach((cell) => { - this.deInitializeComponent(cell); - }); - } - - deInitializeComponent(component){ - var handleEl; - - if(component.modules.resize){ - handleEl = component.modules.resize.handleEl; - - if(handleEl && handleEl.parentElement){ - handleEl.parentElement.removeChild(handleEl); - } - } - } - - resizeHandle(component, height){ - if(component.modules.resize && component.modules.resize.handleEl){ - component.modules.resize.handleEl.style.height = height; - } - } - - _checkResizability(column){ - return column.definition.resizable; - } - - _mouseDown(e, column, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - var x = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX, - startDiff = x - self.startX, - moveDiff = x - self.latestX, - blockedBefore, blockedAfter; - - self.latestX = x; - - if(self.table.rtl){ - startDiff = -startDiff; - moveDiff = -moveDiff; - } - - blockedBefore = column.width == column.minWidth || column.width == column.maxWidth; - - column.setWidth(self.startWidth + startDiff); - - blockedAfter = column.width == column.minWidth || column.width == column.maxWidth; - - if(moveDiff < 0){ - self.nextColumn = self.initialNextColumn; - } - - if(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){ - let colWidth = self.nextColumn.getWidth(); - - if(moveDiff > 0){ - if(colWidth <= self.nextColumn.minWidth){ - self.nextColumn = self.nextColumn.nextColumn(); - } - } - - if(self.nextColumn){ - self.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff); - } - } - - self.table.columnManager.rerenderColumns(true); - - if(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - } - - function mouseUp(e){ - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = false; - } - - if(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){ - column.checkCellHeights(); - } - - document.body.removeEventListener("mouseup", mouseUp); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - if(self.startWidth !== column.getWidth()){ - self.table.columnManager.verticalAlignHeaders(); - - self.dispatch("column-resized", column); - self.table.externalEvents.dispatch("columnResized", column.getComponent()); - } - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - if(self.startColumn.modules.edit){ - self.startColumn.modules.edit.blocked = true; - } - - self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX; - self.latestX = self.startX; - self.startWidth = column.getWidth(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } -} - -ResizeColumns.moduleName = "resizeColumns"; - -export default ResizeColumns; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/ResizeRows/ResizeRows.js b/tmp/tabulator-5.6.1/src/js/modules/ResizeRows/ResizeRows.js deleted file mode 100644 index f1b95b7..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/ResizeRows/ResizeRows.js +++ /dev/null @@ -1,112 +0,0 @@ -import Module from '../../core/Module.js'; - -class ResizeRows extends Module{ - - constructor(table){ - super(table); - - this.startColumn = false; - this.startY = false; - this.startHeight = false; - this.handle = null; - this.prevHandle = null; - - this.registerTableOption("resizableRows", false); //resizable rows - } - - initialize(){ - if(this.table.options.resizableRows){ - this.subscribe("row-layout-after", this.initializeRow.bind(this)); - } - } - - initializeRow(row){ - var self = this, - rowEl = row.getElement(); - - var handle = document.createElement('div'); - handle.className = "tabulator-row-resize-handle"; - - var prevHandle = document.createElement('div'); - prevHandle.className = "tabulator-row-resize-handle prev"; - - handle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var handleDown = function(e){ - self.startRow = row; - self._mouseDown(e, row, handle); - }; - - handle.addEventListener("mousedown", handleDown); - handle.addEventListener("touchstart", handleDown, {passive: true}); - - prevHandle.addEventListener("click", function(e){ - e.stopPropagation(); - }); - - var prevHandleDown = function(e){ - var prevRow = self.table.rowManager.prevDisplayRow(row); - - if(prevRow){ - self.startRow = prevRow; - self._mouseDown(e, prevRow, prevHandle); - } - }; - - prevHandle.addEventListener("mousedown",prevHandleDown); - prevHandle.addEventListener("touchstart",prevHandleDown, {passive: true}); - - rowEl.appendChild(handle); - rowEl.appendChild(prevHandle); - } - - _mouseDown(e, row, handle){ - var self = this; - - self.table.element.classList.add("tabulator-block-select"); - - function mouseMove(e){ - row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY)); - } - - function mouseUp(e){ - - // //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = false; - // } - - document.body.removeEventListener("mouseup", mouseMove); - document.body.removeEventListener("mousemove", mouseMove); - - handle.removeEventListener("touchmove", mouseMove); - handle.removeEventListener("touchend", mouseUp); - - self.table.element.classList.remove("tabulator-block-select"); - - self.dispatchExternal("rowResized", row.getComponent()); - } - - e.stopPropagation(); //prevent resize from interfering with movable columns - - //block editor from taking action while resizing is taking place - // if(self.startColumn.modules.edit){ - // self.startColumn.modules.edit.blocked = true; - // } - - self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY; - self.startHeight = row.getHeight(); - - document.body.addEventListener("mousemove", mouseMove); - document.body.addEventListener("mouseup", mouseUp); - - handle.addEventListener("touchmove", mouseMove, {passive: true}); - handle.addEventListener("touchend", mouseUp); - } -} - -ResizeRows.moduleName = "resizeRows"; - -export default ResizeRows; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/ResizeTable/ResizeTable.js b/tmp/tabulator-5.6.1/src/js/modules/ResizeTable/ResizeTable.js deleted file mode 100644 index b8c5564..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/ResizeTable/ResizeTable.js +++ /dev/null @@ -1,160 +0,0 @@ -import Module from '../../core/Module.js'; - -class ResizeTable extends Module{ - - constructor(table){ - super(table); - - this.binding = false; - this.visibilityObserver = false; - this.resizeObserver = false; - this.containerObserver = false; - - this.tableHeight = 0; - this.tableWidth = 0; - this.containerHeight = 0; - this.containerWidth = 0; - - this.autoResize = false; - - this.visible = false; - - this.initialized = false; - this.initialRedraw = false; - - this.registerTableOption("autoResize", true); //auto resize table - } - - initialize(){ - if(this.table.options.autoResize){ - var table = this.table, - tableStyle; - - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - if(typeof IntersectionObserver !== "undefined" && typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual"){ - - this.initializeVisibilityObserver(); - - this.autoResize = true; - - this.resizeObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){ - this.tableHeight = nodeHeight; - this.tableWidth = nodeWidth; - - if(table.element.parentNode){ - this.containerHeight = table.element.parentNode.clientHeight; - this.containerWidth = table.element.parentNode.clientWidth; - } - - this.redrawTable(); - } - } - }); - - this.resizeObserver.observe(table.element); - - tableStyle = window.getComputedStyle(table.element); - - if(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))){ - - this.containerObserver = new ResizeObserver((entry) => { - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - - var nodeHeight = Math.floor(entry[0].contentRect.height); - var nodeWidth = Math.floor(entry[0].contentRect.width); - - if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){ - this.containerHeight = nodeHeight; - this.containerWidth = nodeWidth; - this.tableHeight = table.element.clientHeight; - this.tableWidth = table.element.clientWidth; - } - - this.redrawTable(); - } - }); - - this.containerObserver.observe(this.table.element.parentNode); - } - - this.subscribe("table-resize", this.tableResized.bind(this)); - - }else{ - this.binding = function(){ - if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){ - table.columnManager.rerenderColumns(true); - table.redraw(); - } - }; - - window.addEventListener("resize", this.binding); - } - - this.subscribe("table-destroy", this.clearBindings.bind(this)); - } - } - - initializeVisibilityObserver(){ - this.visibilityObserver = new IntersectionObserver((entries) => { - this.visible = entries[0].isIntersecting; - - if(!this.initialized){ - this.initialized = true; - this.initialRedraw = !this.visible; - }else{ - if(this.visible){ - this.redrawTable(this.initialRedraw); - this.initialRedraw = false; - } - } - }); - - this.visibilityObserver.observe(this.table.element); - } - - redrawTable(force){ - if(this.initialized && this.visible){ - this.table.columnManager.rerenderColumns(true); - this.table.redraw(force); - } - } - - tableResized(){ - this.table.rowManager.redraw(); - } - - clearBindings(){ - if(this.binding){ - window.removeEventListener("resize", this.binding); - } - - if(this.resizeObserver){ - this.resizeObserver.unobserve(this.table.element); - } - - if(this.visibilityObserver){ - this.visibilityObserver.unobserve(this.table.element); - } - - if(this.containerObserver){ - this.containerObserver.unobserve(this.table.element.parentNode); - } - } -} - -ResizeTable.moduleName = "resizeTable"; - -export default ResizeTable; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/ResponsiveLayout/ResponsiveLayout.js b/tmp/tabulator-5.6.1/src/js/modules/ResponsiveLayout/ResponsiveLayout.js deleted file mode 100644 index 694d384..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +++ /dev/null @@ -1,348 +0,0 @@ -import Module from '../../core/Module.js'; - -class ResponsiveLayout extends Module{ - - constructor(table){ - super(table); - - this.columns = []; - this.hiddenColumns = []; - this.mode = ""; - this.index = 0; - this.collapseFormatter = []; - this.collapseStartOpen = true; - this.collapseHandleColumn = false; - - this.registerTableOption("responsiveLayout", false); //responsive layout flags - this.registerTableOption("responsiveLayoutCollapseStartOpen", true); //start showing collapsed data - this.registerTableOption("responsiveLayoutCollapseUseFormatters", true); //responsive layout collapse formatter - this.registerTableOption("responsiveLayoutCollapseFormatter", false); //responsive layout collapse formatter - - this.registerColumnOption("responsive"); - } - - //generate responsive columns list - initialize(){ - if(this.table.options.responsiveLayout){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("column-show", this.updateColumnVisibility.bind(this)); - this.subscribe("column-hide", this.updateColumnVisibility.bind(this)); - this.subscribe("columns-loaded", this.initializeResponsivity.bind(this)); - this.subscribe("column-moved", this.initializeResponsivity.bind(this)); - this.subscribe("column-add", this.initializeResponsivity.bind(this)); - this.subscribe("column-delete", this.initializeResponsivity.bind(this)); - - this.subscribe("table-redrawing", this.tableRedraw.bind(this)); - - if(this.table.options.responsiveLayout === "collapse"){ - this.subscribe("row-data-changed", this.generateCollapsedRowContent.bind(this)); - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-layout", this.layoutRow.bind(this)); - } - } - } - - tableRedraw(force){ - if(["fitColumns", "fitDataStretch"].indexOf(this.layoutMode()) === -1){ - if(!force){ - this.update(); - } - } - } - - initializeResponsivity(){ - var columns = []; - - this.mode = this.table.options.responsiveLayout; - this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData; - this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen; - this.hiddenColumns = []; - - //determine level of responsivity for each column - this.table.columnManager.columnsByIndex.forEach((column, i) => { - if(column.modules.responsive){ - if(column.modules.responsive.order && column.modules.responsive.visible){ - column.modules.responsive.index = i; - columns.push(column); - - if(!column.visible && this.mode === "collapse"){ - this.hiddenColumns.push(column); - } - } - } - }); - - //sort list by responsivity - columns = columns.reverse(); - columns = columns.sort((a, b) => { - var diff = b.modules.responsive.order - a.modules.responsive.order; - return diff || (b.modules.responsive.index - a.modules.responsive.index); - }); - - this.columns = columns; - - if(this.mode === "collapse"){ - this.generateCollapsedContent(); - } - - //assign collapse column - for (let col of this.table.columnManager.columnsByIndex){ - if(col.definition.formatter == "responsiveCollapse"){ - this.collapseHandleColumn = col; - break; - } - } - - if(this.collapseHandleColumn){ - if(this.hiddenColumns.length){ - this.collapseHandleColumn.show(); - }else{ - this.collapseHandleColumn.hide(); - } - } - } - - //define layout information - initializeColumn(column){ - var def = column.getDefinition(); - - column.modules.responsive = {order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible:def.visible === false ? false : true}; - } - - initializeRow(row){ - var el; - - if(row.type !== "calc"){ - el = document.createElement("div"); - el.classList.add("tabulator-responsive-collapse"); - - row.modules.responsiveLayout = { - element:el, - open:this.collapseStartOpen, - }; - - if(!this.collapseStartOpen){ - el.style.display = 'none'; - } - } - } - - layoutRow(row){ - var rowEl = row.getElement(); - - if(row.modules.responsiveLayout){ - rowEl.appendChild(row.modules.responsiveLayout.element); - this.generateCollapsedRowContent(row); - } - } - - //update column visibility - updateColumnVisibility(column, responsiveToggle){ - if(!responsiveToggle && column.modules.responsive){ - column.modules.responsive.visible = column.visible; - this.initializeResponsivity(); - } - } - - hideColumn(column){ - var colCount = this.hiddenColumns.length; - - column.hide(false, true); - - if(this.mode === "collapse"){ - this.hiddenColumns.unshift(column); - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !colCount){ - this.collapseHandleColumn.show(); - } - } - } - - showColumn(column){ - var index; - - column.show(false, true); - //set column width to prevent calculation loops on uninitialized columns - column.setWidth(column.getWidth()); - - if(this.mode === "collapse"){ - index = this.hiddenColumns.indexOf(column); - - if(index > -1){ - this.hiddenColumns.splice(index, 1); - } - - this.generateCollapsedContent(); - - if(this.collapseHandleColumn && !this.hiddenColumns.length){ - this.collapseHandleColumn.hide(); - } - } - } - - //redraw columns to fit space - update(){ - var working = true; - - while(working){ - - let width = this.table.modules.layout.getMode() == "fitColumns" ? this.table.columnManager.getFlexBaseWidth() : this.table.columnManager.getWidth(); - - let diff = (this.table.options.headerVisible ? this.table.columnManager.element.clientWidth : this.table.element.clientWidth) - width; - - if(diff < 0){ - //table is too wide - let column = this.columns[this.index]; - - if(column){ - this.hideColumn(column); - this.index ++; - }else{ - working = false; - } - - }else{ - - //table has spare space - let column = this.columns[this.index -1]; - - if(column){ - if(diff > 0){ - if(diff >= column.getWidth()){ - this.showColumn(column); - this.index --; - }else{ - working = false; - } - }else{ - working = false; - } - }else{ - working = false; - } - } - - if(!this.table.rowManager.activeRowsCount){ - this.table.rowManager.renderEmptyScroll(); - } - } - } - - generateCollapsedContent(){ - var rows = this.table.rowManager.getDisplayRows(); - - rows.forEach((row) => { - this.generateCollapsedRowContent(row); - }); - } - - generateCollapsedRowContent(row){ - var el, contents; - - if(row.modules.responsiveLayout){ - el = row.modules.responsiveLayout.element; - - while(el.firstChild) el.removeChild(el.firstChild); - - contents = this.collapseFormatter(this.generateCollapsedRowData(row)); - if(contents){ - el.appendChild(contents); - } - } - } - - generateCollapsedRowData(row){ - var data = row.getData(), - output = [], - mockCellComponent; - - this.hiddenColumns.forEach((column) => { - var value = column.getFieldValue(data); - - if(column.definition.title && column.field){ - if(column.modules.format && this.table.options.responsiveLayoutCollapseUseFormatters){ - - mockCellComponent = { - value:false, - data:{}, - getValue:function(){ - return value; - }, - getData:function(){ - return data; - }, - getType:function(){ - return "cell"; - }, - getElement:function(){ - return document.createElement("div"); - }, - getRow:function(){ - return row.getComponent(); - }, - getColumn:function(){ - return column.getComponent(); - }, - getTable:() => { - return this.table; - }, - }; - - function onRendered(callback){ - callback(); - } - - output.push({ - field: column.field, - title: column.definition.title, - value: column.modules.format.formatter.call(this.table.modules.format, mockCellComponent, column.modules.format.params, onRendered) - }); - }else{ - output.push({ - field: column.field, - title: column.definition.title, - value: value - }); - } - } - }); - - return output; - } - - formatCollapsedData(data){ - var list = document.createElement("table"); - - data.forEach(function(item){ - var row = document.createElement("tr"); - var titleData = document.createElement("td"); - var valueData = document.createElement("td"); - var node_content; - - var titleHighlight = document.createElement("strong"); - titleData.appendChild(titleHighlight); - this.langBind("columns|" + item.field, function(text){ - titleHighlight.innerHTML = text || item.title; - }); - - if(item.value instanceof Node){ - node_content = document.createElement("div"); - node_content.appendChild(item.value); - valueData.appendChild(node_content); - }else{ - valueData.innerHTML = item.value; - } - - row.appendChild(titleData); - row.appendChild(valueData); - list.appendChild(row); - }, this); - - return Object.keys(data).length ? list : ""; - } -} - -ResponsiveLayout.moduleName = "responsiveLayout"; - -export default ResponsiveLayout; diff --git a/tmp/tabulator-5.6.1/src/js/modules/SelectRange/Range.js b/tmp/tabulator-5.6.1/src/js/modules/SelectRange/Range.js deleted file mode 100644 index b5a82a9..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/SelectRange/Range.js +++ /dev/null @@ -1,354 +0,0 @@ -import CoreFeature from '../../core/CoreFeature.js'; -import RangeComponent from "./RangeComponent"; - -class Range extends CoreFeature{ - constructor(table, rangeManager, start, end) { - super(table); - - this.rangeManager = rangeManager; - this.element = null; - this.initialized = false; - this.initializing = { - start:false, - end:false, - }; - this.destroyed = false; - - this.top = 0; - this.bottom = 0; - this.left = 0; - this.right = 0; - - this.table = table; - this.start = {row:0, col:0}; - this.end = {row:0, col:0}; - - if(this.rangeManager.rowHeader){ - this.left = 1; - this.right = 1; - this.start.col = 1; - this.end.col = 1; - } - - this.initElement(); - - setTimeout(() => { - this.initBounds(start, end); - }); - } - - initElement(){ - this.element = document.createElement("div"); - this.element.classList.add("tabulator-range"); - } - - initBounds(start, end){ - this._updateMinMax(); - - if(start){ - this.setBounds(start, end || start); - } - } - - /////////////////////////////////// - /////// Boundary Setup /////// - /////////////////////////////////// - - setStart(row, col) { - if(this.start.row !== row || this.start.col !== col){ - this.start.row = row; - this.start.col = col; - - this.initializing.start = true; - this._updateMinMax(); - } - } - - setEnd(row, col) { - if(this.end.row !== row || this.end.col !== col){ - this.end.row = row; - this.end.col = col; - - this.initializing.end = true; - this._updateMinMax(); - } - } - - setBounds(start, end, visibleRows){ - if(start){ - this.setStartBound(start); - } - - this.setEndBound(end || start); - this.rangeManager.layoutElement(visibleRows); - } - - setStartBound(element){ - var row, col; - - if (element.type === "column") { - if(this.rangeManager.columnSelection){ - this.setStart(0, element.getPosition() - 1); - } - }else{ - row = element.row.position - 1; - col = element.column.getPosition() - 1; - - if (element.column === this.rangeManager.rowHeader) { - this.setStart(row, 1); - } else { - this.setStart(row, col); - } - } - } - - setEndBound(element){ - var rowsCount = this._getTableRows().length, - row, col, isRowHeader; - - if (element.type === "column") { - if(this.rangeManager.columnSelection){ - if (this.rangeManager.selecting === "column") { - this.setEnd(rowsCount - 1, element.getPosition() - 1); - } else if (this.rangeManager.selecting === "cell") { - this.setEnd(0, element.getPosition() - 1); - } - } - }else{ - row = element.row.position - 1; - col = element.column.getPosition() - 1; - isRowHeader = element.column === this.rangeManager.rowHeader; - - if (this.rangeManager.selecting === "row") { - this.setEnd(row, this._getTableColumns().length - 1); - } else if (this.rangeManager.selecting !== "row" && isRowHeader) { - this.setEnd(row, 0); - } else if (this.rangeManager.selecting === "column") { - this.setEnd(rowsCount - 1, col); - } else { - this.setEnd(row, col); - } - } - } - - _updateMinMax() { - this.top = Math.min(this.start.row, this.end.row); - this.bottom = Math.max(this.start.row, this.end.row); - this.left = Math.min(this.start.col, this.end.col); - this.right = Math.max(this.start.col, this.end.col); - - if(this.initialized){ - this.dispatchExternal("rangeChanged", this.getComponent()); - }else{ - if(this.initializing.start && this.initializing.end){ - this.initialized = true; - this.dispatchExternal("rangeAdded", this.getComponent()); - } - } - } - - _getTableColumns() { - return this.table.columnManager.getVisibleColumnsByIndex(); - } - - _getTableRows() { - return this.table.rowManager.getDisplayRows(); - } - - /////////////////////////////////// - /////// Rendering /////// - /////////////////////////////////// - - layout() { - var _vDomTop = this.table.rowManager.renderer.vDomTop, - _vDomBottom = this.table.rowManager.renderer.vDomBottom, - _vDomLeft = this.table.columnManager.renderer.leftCol, - _vDomRight = this.table.columnManager.renderer.rightCol, - top, bottom, left, right, topLeftCell, bottomRightCell; - - if (_vDomTop == null) { - _vDomTop = 0; - } - - if (_vDomBottom == null) { - _vDomBottom = Infinity; - } - - if (_vDomLeft == null) { - _vDomLeft = 0; - } - - if (_vDomRight == null) { - _vDomRight = Infinity; - } - - if (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) { - top = Math.max(this.top, _vDomTop); - bottom = Math.min(this.bottom, _vDomBottom); - left = Math.max(this.left, _vDomLeft); - right = Math.min(this.right, _vDomRight); - - topLeftCell = this.rangeManager.getCell(top, left); - bottomRightCell = this.rangeManager.getCell(bottom, right); - - this.element.classList.add("tabulator-range-active"); - // this.element.classList.toggle("tabulator-range-active", this === this.rangeManager.activeRange); - - this.element.style.left = topLeftCell.row.getElement().offsetLeft + topLeftCell.getElement().offsetLeft + "px"; - this.element.style.top = topLeftCell.row.getElement().offsetTop + "px"; - this.element.style.width = bottomRightCell.getElement().offsetLeft + bottomRightCell.getElement().offsetWidth - topLeftCell.getElement().offsetLeft + "px"; - this.element.style.height = bottomRightCell.row.getElement().offsetTop + bottomRightCell.row.getElement().offsetHeight - topLeftCell.row.getElement().offsetTop + "px"; - } - } - - atTopLeft(cell) { - return cell.row.position - 1 === this.top && cell.column.getPosition() - 1 === this.left; - } - - atBottomRight(cell) { - return cell.row.position - 1 === this.bottom && cell.column.getPosition() - 1 === this.right; - } - - occupies(cell) { - return this.occupiesRow(cell.row) && this.occupiesColumn(cell.column); - } - - occupiesRow(row) { - return this.top <= row.position - 1 && row.position - 1 <= this.bottom; - } - - occupiesColumn(col) { - return this.left <= col.getPosition() - 1 && col.getPosition() - 1 <= this.right; - } - - overlaps(left, top, right, bottom) { - if ((this.left > right || left > this.right) || (this.top > bottom || top > this.bottom)){ - return false; - } - - return true; - } - - getData() { - var data = [], - rows = this.getRows(), - columns = this.getColumns(); - - rows.forEach((row) => { - var rowData = row.getData(), - result = {}; - - columns.forEach((column) => { - result[column.field] = rowData[column.field]; - }); - - data.push(result); - }); - - return data; - } - - getCells(structured, component) { - var cells = [], - rows = this.getRows(), - columns = this.getColumns(); - - if (structured) { - cells = rows.map((row) => { - var arr = []; - - row.getCells().forEach((cell) => { - if (columns.includes(cell.column)) { - arr.push(component ? cell.getComponent() : cell); - } - }); - - return arr; - }); - } else { - rows.forEach((row) => { - row.getCells().forEach((cell) => { - if (columns.includes(cell.column)) { - cells.push(component ? cell.getComponent() : cell); - } - }); - }); - } - - return cells; - } - - getStructuredCells() { - return this.getCells(true, true); - } - - getRows() { - return this._getTableRows().slice(this.top, this.bottom + 1); - } - - getColumns() { - return this._getTableColumns().slice(this.left, this.right + 1); - } - - clearValues(){ - var cells = this.getCells(); - var clearValue = this.table.options.selectableRangeClearCellsValue; - - this.table.blockRedraw(); - - cells.forEach((cell) => { - cell.setValue(clearValue); - }); - - this.table.restoreRedraw(); - - } - - getBounds(component){ - var cells = this.getCells(false, component), - output = { - start:null, - end:null, - }; - - if(cells.length){ - output.start = cells[0]; - output.end = cells[cells.length - 1]; - }else{ - console.warn("No bounds defined on range"); - } - - return output; - } - - getComponent() { - if (!this.component) { - this.component = new RangeComponent(this); - } - return this.component; - } - - destroy(notify) { - this.destroyed = true; - - this.element.remove(); - - if(notify){ - this.rangeManager.rangeRemoved(this); - } - - if(this.initialized){ - this.dispatchExternal("rangeRemoved", this.getComponent()); - } - } - - destroyedGuard(func){ - if(this.destroyed){ - console.warn("You cannot call the " + func + " function on a destroyed range"); - } - - return !this.destroyed; - } -} - -export default Range; diff --git a/tmp/tabulator-5.6.1/src/js/modules/SelectRange/RangeComponent.js b/tmp/tabulator-5.6.1/src/js/modules/SelectRange/RangeComponent.js deleted file mode 100644 index fd2f480..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/SelectRange/RangeComponent.js +++ /dev/null @@ -1,93 +0,0 @@ -class RangeComponent { - constructor(range) { - this._range = range; - - return new Proxy(this, { - get: function (target, name, receiver) { - if (typeof target[name] !== "undefined") { - return target[name]; - } else { - return target._range.table.componentFunctionBinder.handle("range", target._range, name); - } - }, - }); - } - - getElement() { - return this._range.element; - } - - getData() { - return this._range.getData(); - } - - getCells() { - return this._range.getCells(true); - } - - getStructuredCells() { - return this._range.getStructuredCells(); - } - - getRows() { - return this._range.getRows().map((row) => row.getComponent()); - } - - getColumns() { - return this._range.getColumns().map((column) => column.getComponent()); - } - - getBounds() { - return this._range.getBounds(); - } - - getTopEdge() { - return this._range.top; - } - - getBottomEdge() { - return this._range.bottom; - } - - getLeftEdge() { - return this._range.left; - } - - getRightEdge() { - return this._range.right; - } - - setBounds(start, end){ - if(this._range.destroyedGuard("setBounds")){ - this._range.setBounds(start ? start._cell : start, end ? end._cell : end); - } - } - - setStartBound(start){ - if(this._range.destroyedGuard("setStartBound")){ - this._range.setEndBound(start ? start._cell : start); - this._range.rangeManager.layoutElement(); - } - } - - setEndBound(end){ - if(this._range.destroyedGuard("setEndBound")){ - this._range.setEndBound(end ? end._cell : end); - this._range.rangeManager.layoutElement(); - } - } - - clearValues(){ - if(this._range.destroyedGuard("clearValues")){ - this._range.clearValues(); - } - } - - remove(){ - if(this._range.destroyedGuard("remove")){ - this._range.destroy(true); - } - } -} - -export default RangeComponent; diff --git a/tmp/tabulator-5.6.1/src/js/modules/SelectRange/SelectRange.js b/tmp/tabulator-5.6.1/src/js/modules/SelectRange/SelectRange.js deleted file mode 100644 index 9c447cb..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/SelectRange/SelectRange.js +++ /dev/null @@ -1,870 +0,0 @@ -import Module from "../../core/Module.js"; -import Range from "./Range.js"; - -class SelectRange extends Module { - constructor(table) { - super(table); - - this.selecting = "cell"; - this.mousedown = false; - this.ranges = []; - this.overlay = null; - this.rowHeader = null; - this.layoutChangeTimeout = null; - this.columnSelection = false; - this.rowSelection = false; - this.maxRanges = 0; - this.activeRange = false; - this.blockKeydown = false; - - this.keyDownEvent = this._handleKeyDown.bind(this); - this.mouseUpEvent = this._handleMouseUp.bind(this); - - this.registerTableOption("selectableRange", false); //enable selectable range - this.registerTableOption("selectableRangeColumns", false); //enable selectable range - this.registerTableOption("selectableRangeRows", false); //enable selectable range - this.registerTableOption("selectableRangeClearCells", false); //allow clearing of active range - this.registerTableOption("selectableRangeClearCellsValue", undefined); //value for cleared active range - - this.registerTableFunction("getRangesData", this.getRangesData.bind(this)); - this.registerTableFunction("getRanges", this.getRanges.bind(this)); - this.registerTableFunction("addRange", this.addRangeFromComponent.bind(this)); - - this.registerComponentFunction("cell", "getRanges", this.cellGetRanges.bind(this)); - this.registerComponentFunction("row", "getRanges", this.rowGetRanges.bind(this)); - this.registerComponentFunction("column", "getRanges", this.colGetRanges.bind(this)); - } - - /////////////////////////////////// - /////// Initialization /////// - /////////////////////////////////// - - initialize() { - if (this.options("selectableRange")) { - if(!this.options("selectableRows")){ - - this.maxRanges = this.options("selectableRange"); - - this.initializeTable(); - this.initializeWatchers(); - }else{ - console.warn("SelectRange functionality cannot be used in conjunction with row selection"); - } - } - } - - - initializeTable() { - this.overlay = document.createElement("div"); - this.overlay.classList.add("tabulator-range-overlay"); - - this.rangeContainer = document.createElement("div"); - this.rangeContainer.classList.add("tabulator-range-container"); - - this.activeRangeCellElement = document.createElement("div"); - this.activeRangeCellElement.classList.add("tabulator-range-cell-active"); - - this.overlay.appendChild(this.rangeContainer); - this.overlay.appendChild(this.activeRangeCellElement); - - this.table.rowManager.element.addEventListener("keydown", this.keyDownEvent); - - this.resetRanges(); - - this.table.rowManager.element.appendChild(this.overlay); - this.table.columnManager.element.setAttribute("tabindex", 0); - this.table.element.classList.add("tabulator-ranges"); - } - - initializeWatchers() { - this.columnSelection = this.options("selectableRangeColumns"); - this.rowSelection = this.options("selectableRangeRows"); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - this.subscribe("column-mousedown", this.handleColumnMouseDown.bind(this)); - this.subscribe("column-mousemove", this.handleColumnMouseMove.bind(this)); - this.subscribe("column-resized", this.handleColumnResized.bind(this)); - this.subscribe("column-width", this.layoutChange.bind(this)); - this.subscribe("column-height", this.layoutChange.bind(this)); - this.subscribe("column-resized", this.layoutChange.bind(this)); - this.subscribe("columns-loaded", this.updateHeaderColumn.bind(this)); - - this.subscribe("cell-height", this.layoutChange.bind(this)); - this.subscribe("cell-rendered", this.renderCell.bind(this)); - this.subscribe("cell-mousedown", this.handleCellMouseDown.bind(this)); - this.subscribe("cell-mousemove", this.handleCellMouseMove.bind(this)); - this.subscribe("cell-click", this.handleCellClick.bind(this)); - this.subscribe("cell-editing", this.handleEditingCell.bind(this)); - - this.subscribe("page-changed", this.redraw.bind(this)); - - this.subscribe("scroll-vertical", this.layoutChange.bind(this)); - this.subscribe("scroll-horizontal", this.layoutChange.bind(this)); - - this.subscribe("data-destroy", this.tableDestroyed.bind(this)); - this.subscribe("data-processed", this.resetRanges.bind(this)); - - this.subscribe("table-layout", this.layoutElement.bind(this)); - this.subscribe("table-redraw", this.redraw.bind(this)); - this.subscribe("table-destroy", this.tableDestroyed.bind(this)); - - this.subscribe("edit-editor-clear", this.finishEditingCell.bind(this)); - this.subscribe("edit-blur", this.restoreFocus.bind(this)); - - this.subscribe("keybinding-nav-prev", this.keyNavigate.bind(this, "left")); - this.subscribe("keybinding-nav-next", this.keyNavigate.bind(this, "right")); - this.subscribe("keybinding-nav-left", this.keyNavigate.bind(this, "left")); - this.subscribe("keybinding-nav-right", this.keyNavigate.bind(this, "right")); - this.subscribe("keybinding-nav-up", this.keyNavigate.bind(this, "up")); - this.subscribe("keybinding-nav-down", this.keyNavigate.bind(this, "down")); - this.subscribe("keybinding-nav-range", this.keyNavigateRange.bind(this)); - } - - - initializeColumn(column) { - if(this.columnSelection && column.definition.headerSort && this.options("headerSortClickElement") !== "icon"){ - console.warn("Using column headerSort with selectableRangeColumns option may result in unpredictable behavior. Consider using headerSortClickElement: 'icon'."); - } - - if (column.modules.edit) { - // Block editor from taking action so we can trigger edit by - // double clicking. - // column.modules.edit.blocked = true; - } - } - - updateHeaderColumn(){ - if(this.rowSelection){ - this.rowHeader = this.table.columnManager.getVisibleColumnsByIndex()[0]; - - if(this.rowHeader){ - this.rowHeader.definition.cssClass = this.rowHeader.definition.cssClass + " tabulator-range-row-header"; - - if(this.rowHeader.definition.headerSort){ - console.warn("Using column headerSort with selectableRangeRows option may result in unpredictable behavior"); - } - - if(this.rowHeader.definition.editor){ - console.warn("Using column editor with selectableRangeRows option may result in unpredictable behavior"); - } - } - } - } - - /////////////////////////////////// - /////// Table Functions /////// - /////////////////////////////////// - - getRanges(){ - return this.ranges.map((range) => range.getComponent()); - } - - getRangesData() { - return this.ranges.map((range) => range.getData()); - } - - addRangeFromComponent(start, end){ - start = start ? start._cell : null; - end = end ? end._cell : null; - - return this.addRange(start, end); - } - - /////////////////////////////////// - /////// Component Functions /////// - /////////////////////////////////// - - cellGetRanges(cell){ - var ranges = []; - - if (cell.column === this.rowHeader) { - ranges = this.ranges.filter((range) => range.occupiesRow(cell.row)); - } else { - ranges = this.ranges.filter((range) => range.occupies(cell)); - } - - return ranges.map((range) => range.getComponent()); - } - - rowGetRanges(row){ - var ranges = this.ranges.filter((range) => range.occupiesRow(row)); - - return ranges.map((range) => range.getComponent()); - } - - colGetRanges(col){ - var ranges = this.ranges.filter((range) => range.occupiesColumn(col)); - - return ranges.map((range) => range.getComponent()); - } - - /////////////////////////////////// - ////////// Event Handlers ///////// - /////////////////////////////////// - - _handleMouseUp(e){ - this.mousedown = false; - document.removeEventListener("mouseup", this.mouseUpEvent); - } - - _handleKeyDown(e) { - if (!this.blockKeydown && (!this.table.modules.edit || (this.table.modules.edit && !this.table.modules.edit.currentCell))) { - if (e.key === "Enter") { - // is editing a cell? - if (this.table.modules.edit && this.table.modules.edit.currentCell) { - return; - } - - this.table.modules.edit.editCell(this.getActiveCell()); - - e.preventDefault(); - } - - if ((e.key === "Backspace" || e.key === "Delete") && this.options("selectableRangeClearCells")) { - if(this.activeRange){ - this.activeRange.clearValues(); - } - } - } - } - - initializeFocus(cell){ - var range; - - try{ - if (document.selection) { // IE - range = document.body.createTextRange(); - range.moveToElementText(cell.getElement()); - range.select(); - } else if (window.getSelection) { - range = document.createRange(); - range.selectNode(cell.getElement()); - window.getSelection().removeAllRanges(); - window.getSelection().addRange(range); - } - }catch(e){} - } - - restoreFocus(element){ - this.table.rowManager.element.focus(); - - return true; - } - - /////////////////////////////////// - ////// Column Functionality /////// - /////////////////////////////////// - - handleColumnResized(column) { - var selected; - - if (this.selecting !== "column" && this.selecting !== "all") { - return; - } - - selected = this.ranges.some((range) => range.occupiesColumn(column)); - - if (!selected) { - return; - } - - this.ranges.forEach((range) => { - var selectedColumns = range.getColumns(true); - - selectedColumns.forEach((selectedColumn) => { - if (selectedColumn !== column) { - selectedColumn.setWidth(column.width); - } - }); - }); - } - - handleColumnMouseDown(event, column) { - if (event.button === 2 && (this.selecting === "column" || this.selecting === "all") && this.activeRange.occupiesColumn(column)) { - return; - } - - this.mousedown = true; - - document.addEventListener("mouseup", this.mouseUpEvent); - - this.newSelection(event, column); - } - - handleColumnMouseMove(e, column) { - if (column === this.rowHeader || !this.mousedown || this.selecting === 'all') { - return; - } - - this.activeRange.setBounds(false, column, true); - } - - /////////////////////////////////// - //////// Cell Functionality /////// - /////////////////////////////////// - - renderCell(cell) { - var el = cell.getElement(), - rangeIdx = this.ranges.findIndex((range) => range.occupies(cell)); - - el.classList.toggle("tabulator-range-selected", rangeIdx !== -1); - el.classList.toggle("tabulator-range-only-cell-selected", this.ranges.length === 1 && this.ranges[0].atTopLeft(cell) && this.ranges[0].atBottomRight(cell)); - - el.dataset.range = rangeIdx; - } - - handleCellMouseDown(event, cell) { - if (event.button === 2 && (this.activeRange.occupies(cell) || ((this.selecting === "row" || this.selecting === "all") && this.activeRange.occupiesRow(cell.row)))) { - return; - } - - this.mousedown = true; - - document.addEventListener("mouseup", this.mouseUpEvent); - - this.newSelection(event, cell); - } - - handleCellMouseMove(e, cell) { - if (!this.mousedown || this.selecting === "all") { - return; - } - - this.activeRange.setBounds(false, cell, true); - } - - handleCellClick(e, cell){ - this.initializeFocus(cell); - } - - handleEditingCell(cell) { - if(this.activeRange){ - this.activeRange.setBounds(cell); - } - } - - finishEditingCell() { - this.blockKeydown = true; - this.table.rowManager.element.focus(); - - setTimeout(() => { - this.blockKeydown = false; - }, 10); - } - - /////////////////////////////////// - /////// Navigation /////// - /////////////////////////////////// - - keyNavigate(dir, e){ - if(this.navigate(false, false, dir)){ - e.preventDefault(); - } - } - - keyNavigateRange(e, dir, jump, expand){ - if(this.navigate(jump, expand, dir)){ - e.preventDefault(); - } - } - - navigate(jump, expand, dir) { - var moved = false, - range, rangeEdge, nextRow, nextCol, row, column; - - // Don't navigate while editing - if (this.table.modules.edit && this.table.modules.edit.currentCell) { - return false; - } - - // If there are more than 1 range, use the active range and destroy the others - if (this.ranges.length > 1) { - this.ranges = this.ranges.filter((range) => { - if (range === this.activeRange) { - range.setEnd(range.start.row, range.start.col); - return true; - } - range.destroy(); - return false; - }); - } - - range = this.activeRange; - - rangeEdge = expand ? range.end : range.start; - nextRow = rangeEdge.row; - nextCol = rangeEdge.col; - - if(jump){ - switch(dir){ - case "left": - nextCol = this.findJumpCellLeft(range.start.row, rangeEdge.col); - break; - case "right": - nextCol = this.findJumpCellRight(range.start.row, rangeEdge.col); - break; - case "up": - nextRow = this.findJumpCellUp(rangeEdge.row, range.start.col); - break; - case "down": - nextRow = this.findJumpCellDown(rangeEdge.row, range.start.col); - break; - } - }else{ - if(expand){ - if ((this.selecting === 'row' && (dir === 'left' || dir === 'right')) || (this.selecting === 'column' && (dir === 'up' || dir === 'down'))) { - return; - } - } - - switch(dir){ - case "left": - nextCol = Math.max(nextCol - 1, 0); - break; - case "right": - nextCol = Math.min(nextCol + 1, this.getTableColumns().length - 1); - break; - case "up": - nextRow = Math.max(nextRow - 1, 0); - break; - case "down": - nextRow = Math.min(nextRow + 1, this.getTableRows().length - 1); - break; - } - } - - moved = nextCol !== rangeEdge.col || nextRow !== rangeEdge.row; - - if(!expand){ - range.setStart(nextRow, nextCol); - } - - range.setEnd(nextRow, nextCol); - - if(!expand){ - this.selecting = "cell"; - } - - if (moved) { - row = this.getRowByRangePos(range.end.row); - column = this.getColumnByRangePos(range.end.col); - - if ((dir === 'left' || dir === 'right') && column.getElement().parentNode === null) { - column.getComponent().scrollTo(undefined, false); - } else if ((dir === 'up' || dir === 'down') && row.getElement().parentNode === null) { - row.getComponent().scrollTo(undefined, false); - } else { - // Use faster autoScroll when the elements are on the DOM - this.autoScroll(range, row.getElement(), column.getElement()); - } - - this.layoutElement(); - - return true; - } - } - - rangeRemoved(removed){ - this.ranges = this.ranges.filter((range) => range !== removed); - - if(this.activeRange === removed){ - if(this.ranges.length){ - this.activeRange = this.ranges[this.ranges.length - 1]; - }else{ - this.addRange(); - } - } - - this.layoutElement(); - } - - findJumpCell(cells, reverse, emptyStart, emptySide){ - var nextCell; - - if(reverse){ - cells = cells.reverse(); - } - - for(let currentCell of cells){ - let currentValue = currentCell.getValue(); - - if(emptyStart){ - nextCell = currentCell; - if(currentValue){ - break; - } - }else{ - if(emptySide){ - nextCell = currentCell; - - if(currentValue){ - break; - } - }else{ - if(currentValue){ - nextCell = currentCell; - }else{ - break; - } - } - } - } - - return nextCell; - } - - findJumpCellLeft(rowPos, colPos){ - var row = this.getRowByRangePos(rowPos), - cells = row.cells.filter((cell) => cell.column.visible), - isStartingCellEmpty = !cells[colPos].getValue(), - isLeftOfStartingCellEmpty = cells[colPos] ? !cells[colPos].getValue() : false, - jumpCol = colPos, - targetCells = this.rowHeader ? cells.slice(1, colPos) : cells.slice(0, colPos), - nextCell = this.findJumpCell(targetCells, true, isStartingCellEmpty, isLeftOfStartingCellEmpty); - - if(nextCell){ - jumpCol = nextCell.column.getPosition() - 1; - } - - return jumpCol; - } - - findJumpCellRight(rowPos, colPos){ - var row = this.getRowByRangePos(rowPos), - cells = row.cells.filter((cell) => cell.column.visible), - isStartingCellEmpty = !cells[colPos].getValue(), - isRightOfStartingCellEmpty = cells[colPos + 1] ? !cells[colPos + 1].getValue() : false, - jumpCol = colPos, - nextCell = this.findJumpCell(cells.slice(colPos + 1, cells.length), false, isStartingCellEmpty, isRightOfStartingCellEmpty); - - if(nextCell){ - jumpCol = nextCell.column.getPosition() - 1; - } - - return jumpCol; - } - - findJumpCellUp(rowPos, colPos) { - var column = this.getColumnByRangePos(colPos), - cells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)), - isStartingCellEmpty = !cells[rowPos].getValue(), - isTopOfStartingCellEmpty = cells[rowPos - 1] ? !cells[rowPos - 1].getValue() : false, - jumpRow = rowPos, - nextCell = this.findJumpCell(cells.slice(0, jumpRow), true, isStartingCellEmpty, isTopOfStartingCellEmpty); - - if(nextCell){ - jumpRow = nextCell.row.position - 1; - } - - return jumpRow; - } - - findJumpCellDown(rowPos, colPos) { - var column = this.getColumnByRangePos(colPos), - cells = column.cells.filter((cell) => this.table.rowManager.activeRows.includes(cell.row)), - isStartingCellEmpty = !cells[rowPos].getValue(), - isBottomOfStartingCellEmpty = cells[rowPos + 1] ? !cells[rowPos + 1].getValue() : false, - jumpRow = rowPos, - nextCell = this.findJumpCell(cells.slice(jumpRow + 1, cells.length), false, isStartingCellEmpty, isBottomOfStartingCellEmpty); - - if(nextCell){ - jumpRow = nextCell.row.position - 1; - } - - return jumpRow; - } - - /////////////////////////////////// - /////// Selection /////// - /////////////////////////////////// - newSelection(event, element) { - var range; - - if (element.type === "column") { - if(!this.columnSelection){ - return; - } - - if (element === this.rowHeader) { - range = this.resetRanges(); - this.selecting = "all"; - - var topLeftCell, bottomRightCell = this.getCell(-1, -1); - - if(this.rowHeader){ - topLeftCell = this.getCell(0, 1); - }else{ - topLeftCell = this.getCell(0, 0); - } - - range.setBounds(topLeftCell, bottomRightCell); - return; - } else { - this.selecting = "column"; - } - } else if (element.column === this.rowHeader) { - this.selecting = "row"; - } else { - this.selecting = "cell"; - } - - if (event.shiftKey) { - this.activeRange.setBounds(false, element); - } else if (event.ctrlKey) { - this.addRange().setBounds(element); - } else { - this.resetRanges().setBounds(element); - } - } - - autoScroll(range, row, column) { - var tableHolder = this.table.rowManager.element, - rowHeader, rect, view, withinHorizontalView, withinVerticalView; - - if (typeof row === 'undefined') { - row = this.getRowByRangePos(range.end.row).getElement(); - } - - if (typeof column === 'undefined') { - column = this.getColumnByRangePos(range.end.col).getElement(); - } - - if (this.rowHeader) { - rowHeader = this.rowHeader.getElement(); - } - - rect = { - left: column.offsetLeft, - right: column.offsetLeft + column.offsetWidth, - top: row.offsetTop, - bottom: row.offsetTop + row.offsetHeight, - }; - - view = { - left: tableHolder.scrollLeft, - right: Math.ceil(tableHolder.scrollLeft + tableHolder.clientWidth), - top: tableHolder.scrollTop, - bottom: tableHolder.scrollTop + tableHolder.offsetHeight - this.table.rowManager.scrollbarWidth, - }; - - if (rowHeader) { - view.left += rowHeader.offsetWidth; - } - - withinHorizontalView = view.left < rect.left && rect.left < view.right && view.left < rect.right && rect.right < view.right; - - withinVerticalView = view.top < rect.top && rect.top < view.bottom && view.top < rect.bottom && rect.bottom < view.bottom; - - if (!withinHorizontalView) { - if (rect.left < view.left) { - tableHolder.scrollLeft = rect.left; - if (rowHeader) { - tableHolder.scrollLeft -= rowHeader.offsetWidth; - } - } else if (rect.right > view.right) { - tableHolder.scrollLeft = rect.right - tableHolder.clientWidth; - } - } - - if (!withinVerticalView) { - if (rect.top < view.top) { - tableHolder.scrollTop = rect.top; - } else if (rect.bottom > view.bottom) { - tableHolder.scrollTop = rect.bottom - tableHolder.clientHeight; - } - } - } - - - /////////////////////////////////// - /////// Layout /////// - /////////////////////////////////// - - layoutChange(){ - this.overlay.style.visibility = "hidden"; - clearTimeout(this.layoutChangeTimeout); - this.layoutChangeTimeout = setTimeout(this.layoutRanges.bind(this), 200); - } - - redraw(force) { - if (force) { - this.selecting = 'cell'; - this.resetRanges(); - this.layoutElement(); - } - } - - layoutElement(visibleRows) { - var rows; - - if (visibleRows) { - rows = this.table.rowManager.getVisibleRows(true); - } else { - rows = this.table.rowManager.getRows(); - } - - rows.forEach((row) => { - if (row.type === "row") { - this.layoutRow(row); - row.cells.forEach((cell) => this.renderCell(cell)); - } - }); - - this.getTableColumns().forEach((column) => { - this.layoutColumn(column); - }); - - this.layoutRanges(); - } - - layoutRow(row) { - var el = row.getElement(), - selected = false, - occupied = this.ranges.some((range) => range.occupiesRow(row)); - - if (this.selecting === "row") { - selected = occupied; - } else if (this.selecting === "all") { - selected = true; - } - - el.classList.toggle("tabulator-range-selected", selected); - el.classList.toggle("tabulator-range-highlight", occupied); - } - - layoutColumn(column) { - var el = column.getElement(), - selected = false, - occupied = this.ranges.some((range) => range.occupiesColumn(column)); - - if (this.selecting === "column") { - selected = occupied; - } else if (this.selecting === "all") { - selected = true; - } - - el.classList.toggle("tabulator-range-selected", selected); - el.classList.toggle("tabulator-range-highlight", occupied); - } - - layoutRanges() { - var activeCell; - - if (!this.table.initialized) { - return; - } - - activeCell = this.getActiveCell(); - - if (!activeCell) { - return; - } - - this.activeRangeCellElement.style.left = activeCell.row.getElement().offsetLeft + activeCell.getElement().offsetLeft + "px"; - this.activeRangeCellElement.style.top = activeCell.row.getElement().offsetTop + "px"; - this.activeRangeCellElement.style.width = activeCell.getElement().offsetLeft + activeCell.getElement().offsetWidth - activeCell.getElement().offsetLeft + "px"; - this.activeRangeCellElement.style.height = activeCell.row.getElement().offsetTop + activeCell.row.getElement().offsetHeight - activeCell.row.getElement().offsetTop + "px"; - - this.ranges.forEach((range) => range.layout()); - - this.overlay.style.visibility = "visible"; - } - - - /////////////////////////////////// - /////// Helper Functions /////// - /////////////////////////////////// - - getCell(rowIdx, colIdx) { - var row; - - if (colIdx < 0) { - colIdx = this.getTableColumns().length + colIdx; - if (colIdx < 0) { - return null; - } - } - - if (rowIdx < 0) { - rowIdx = this.getTableRows().length + rowIdx; - } - - row = this.table.rowManager.getRowFromPosition(rowIdx + 1); - - return row ? row.getCells(false, true).filter((cell) => cell.column.visible)[colIdx] : null; - } - - - getActiveCell() { - return this.getCell(this.activeRange.start.row, this.activeRange.start.col); - } - - getRowByRangePos(pos) { - return this.getTableRows()[pos]; - } - - getColumnByRangePos(pos) { - return this.getTableColumns()[pos]; - } - - getTableRows() { - return this.table.rowManager.getDisplayRows(); - } - - getTableColumns() { - return this.table.columnManager.getVisibleColumnsByIndex(); - } - - addRange(start, end) { - var range; - - if(this.maxRanges !== true && this.ranges.length >= this.maxRanges){ - this.ranges.shift().destroy(); - } - - range = new Range(this.table, this, start, end); - - this.activeRange = range; - this.ranges.push(range); - this.rangeContainer.appendChild(range.element); - - return range; - } - - resetRanges() { - var range, cell; - - this.ranges.forEach((range) => range.destroy()); - this.ranges = []; - - range = this.addRange(); - - if(this.table.rowManager.activeRows.length){ - cell = this.table.rowManager.activeRows[0].cells[this.rowHeader ? 1 : 0]; - - if(cell){ - range.setBounds(cell); - this.initializeFocus(cell); - } - } - - return range; - } - - tableDestroyed(){ - document.removeEventListener("mouseup", this.mouseUpEvent); - this.table.rowManager.element.removeEventListener("keydown", this.keyDownEvent); - } - - selectedRows(component) { - return component ? this.activeRange.getRows().map((row) => row.getComponent()) : this.activeRange.getRows(); - } - - selectedColumns(component) { - return component ? this.activeRange.getColumns().map((col) => col.getComponent()) : this.activeRange.getColumns(); - } -} - -SelectRange.moduleName = "selectRange"; - -export default SelectRange; diff --git a/tmp/tabulator-5.6.1/src/js/modules/SelectRow/SelectRow.js b/tmp/tabulator-5.6.1/src/js/modules/SelectRow/SelectRow.js deleted file mode 100644 index afc2659..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/SelectRow/SelectRow.js +++ /dev/null @@ -1,495 +0,0 @@ -import Module from '../../core/Module.js'; - -class SelectRow extends Module{ - - constructor(table){ - super(table); - - this.selecting = false; //flag selecting in progress - this.lastClickedRow = false; //last clicked row - this.selectPrev = []; //hold previously selected element for drag drop selection - this.selectedRows = []; //hold selected rows - this.headerCheckboxElement = null; // hold header select element - - this.registerTableOption("selectableRows", "highlight"); //highlight rows on hover - this.registerTableOption("selectableRowsRangeMode", "drag"); //highlight rows on hover - this.registerTableOption("selectableRowsRollingSelection", true); //roll selection once maximum number of selectable rows is reached - this.registerTableOption("selectableRowsPersistence", true); // maintain selection when table view is updated - this.registerTableOption("selectableRowsCheck", function(data, row){return true;}); //check whether row is selectable - - this.registerTableFunction("selectRow", this.selectRows.bind(this)); - this.registerTableFunction("deselectRow", this.deselectRows.bind(this)); - this.registerTableFunction("toggleSelectRow", this.toggleRow.bind(this)); - this.registerTableFunction("getSelectedRows", this.getSelectedRows.bind(this)); - this.registerTableFunction("getSelectedData", this.getSelectedData.bind(this)); - - //register component functions - this.registerComponentFunction("row", "select", this.selectRows.bind(this)); - this.registerComponentFunction("row", "deselect", this.deselectRows.bind(this)); - this.registerComponentFunction("row", "toggleSelect", this.toggleRow.bind(this)); - this.registerComponentFunction("row", "isSelected", this.isRowSelected.bind(this)); - } - - initialize(){ - - this.deprecatedOptionsCheck(); - - if(this.table.options.selectableRows === "highlight" && this.table.options.selectableRange){ - this.table.options.selectableRows = false; - } - - if(this.table.options.selectableRows !== false){ - this.subscribe("row-init", this.initializeRow.bind(this)); - this.subscribe("row-deleting", this.rowDeleted.bind(this)); - this.subscribe("rows-wipe", this.clearSelectionData.bind(this)); - this.subscribe("rows-retrieve", this.rowRetrieve.bind(this)); - - if(this.table.options.selectableRows && !this.table.options.selectableRowsPersistence){ - this.subscribe("data-refreshing", this.deselectRows.bind(this)); - } - } - } - - deprecatedOptionsCheck(){ - this.deprecationCheck("selectable", "selectableRows", true); - this.deprecationCheck("selectableRollingSelection", "selectableRowsRollingSelection", true); - this.deprecationCheck("selectableRangeMode", "selectableRowsRangeMode", true); - this.deprecationCheck("selectablePersistence", "selectableRowsPersistence", true); - this.deprecationCheck("selectableCheck", "selectableRowsCheck", true); - } - - rowRetrieve(type, prevValue){ - return type === "selected" ? this.selectedRows : prevValue; - } - - rowDeleted(row){ - this._deselectRow(row, true); - } - - clearSelectionData(silent){ - var prevSelected = this.selectedRows.length; - - this.selecting = false; - this.lastClickedRow = false; - this.selectPrev = []; - this.selectedRows = []; - - if(prevSelected && silent !== true){ - this._rowSelectionChanged(); - } - } - - initializeRow(row){ - var self = this, - selectable = self.checkRowSelectability(row), - element = row.getElement(); - - // trigger end of row selection - var endSelect = function(){ - - setTimeout(function(){ - self.selecting = false; - }, 50); - - document.body.removeEventListener("mouseup", endSelect); - }; - - row.modules.select = {selected:false}; - - element.classList.toggle("tabulator-selectable", selectable); - element.classList.toggle("tabulator-unselectable", !selectable); - - //set row selection class - if(self.checkRowSelectability(row)){ - if(self.table.options.selectableRows && self.table.options.selectableRows != "highlight"){ - if(self.table.options.selectableRowsRangeMode === "click"){ - element.addEventListener("click", this.handleComplexRowClick.bind(this, row)); - }else{ - element.addEventListener("click", function(e){ - if(!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()){ - self.table._clearSelection(); - } - - if(!self.selecting){ - self.toggleRow(row); - } - }); - - element.addEventListener("mousedown", function(e){ - if(e.shiftKey){ - self.table._clearSelection(); - - self.selecting = true; - - self.selectPrev = []; - - document.body.addEventListener("mouseup", endSelect); - document.body.addEventListener("keyup", endSelect); - - self.toggleRow(row); - - return false; - } - }); - - element.addEventListener("mouseenter", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.toggleRow(row); - - if(self.selectPrev[1] == row){ - self.toggleRow(self.selectPrev[0]); - } - } - }); - - element.addEventListener("mouseout", function(e){ - if(self.selecting){ - self.table._clearSelection(); - self.selectPrev.unshift(row); - } - }); - } - } - } - } - - handleComplexRowClick(row, e){ - if(e.shiftKey){ - this.table._clearSelection(); - this.lastClickedRow = this.lastClickedRow || row; - - var lastClickedRowIdx = this.table.rowManager.getDisplayRowIndex(this.lastClickedRow); - var rowIdx = this.table.rowManager.getDisplayRowIndex(row); - - var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx; - var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx; - - var rows = this.table.rowManager.getDisplayRows().slice(0); - var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1); - - if(e.ctrlKey || e.metaKey){ - toggledRows.forEach((toggledRow)=>{ - if(toggledRow !== this.lastClickedRow){ - - if(this.table.options.selectableRows !== true && !this.isRowSelected(row)){ - if(this.selectedRows.length < this.table.options.selectableRows){ - this.toggleRow(toggledRow); - } - }else{ - this.toggleRow(toggledRow); - } - } - }); - this.lastClickedRow = row; - }else{ - this.deselectRows(undefined, true); - - if(this.table.options.selectableRows !== true){ - if(toggledRows.length > this.table.options.selectableRows){ - toggledRows = toggledRows.slice(0, this.table.options.selectableRows); - } - } - - this.selectRows(toggledRows); - } - this.table._clearSelection(); - } - else if(e.ctrlKey || e.metaKey){ - this.toggleRow(row); - this.lastClickedRow = row; - }else{ - this.deselectRows(undefined, true); - this.selectRows(row); - this.lastClickedRow = row; - } - } - - checkRowSelectability(row){ - if(row && row.type === "row"){ - return this.table.options.selectableRowsCheck.call(this.table, row.getComponent()); - } - - return false; - } - - //toggle row selection - toggleRow(row){ - if(this.checkRowSelectability(row)){ - if(row.modules.select && row.modules.select.selected){ - this._deselectRow(row); - }else{ - this._selectRow(row); - } - } - } - - //select a number of rows - selectRows(rows){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = this.table.rowManager.rows; - break; - - case "number": - rowMatch = this.table.rowManager.findRow(rows); - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._selectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(false, changes); - } - }else{ - if(rowMatch){ - this._selectRow(rowMatch, false, true); - } - } - } - - //select an individual row - _selectRow(rowInfo, silent, force){ - //handle max row count - if(!isNaN(this.table.options.selectableRows) && this.table.options.selectableRows !== true && !force){ - if(this.selectedRows.length >= this.table.options.selectableRows){ - if(this.table.options.selectableRowsRollingSelection){ - this._deselectRow(this.selectedRows[0]); - }else{ - return false; - } - } - } - - var row = this.table.rowManager.findRow(rowInfo); - - if(row){ - if(this.selectedRows.indexOf(row) == -1){ - row.getElement().classList.add("tabulator-selected"); - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = true; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = true; - } - - this.selectedRows.push(row); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, true); - } - - this.dispatchExternal("rowSelected", row.getComponent()); - - this._rowSelectionChanged(silent, row); - - return row; - } - }else{ - if(!silent){ - console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - isRowSelected(row){ - return this.selectedRows.indexOf(row) !== -1; - } - - //deselect a number of rows - deselectRows(rows, silent){ - var changes = [], - rowMatch, change; - - switch(typeof rows){ - case "undefined": - rowMatch = Object.assign([], this.selectedRows); - break; - - case "number": - rowMatch = this.table.rowManager.findRow(rows); - break; - - case "string": - rowMatch = this.table.rowManager.findRow(rows); - - if(!rowMatch){ - rowMatch = this.table.rowManager.getRows(rows); - } - break; - - default: - rowMatch = rows; - break; - } - - if(Array.isArray(rowMatch)){ - if(rowMatch.length){ - rowMatch.forEach((row) => { - change = this._deselectRow(row, true, true); - - if(change){ - changes.push(change); - } - }); - - this._rowSelectionChanged(silent, [], changes); - } - }else{ - if(rowMatch){ - this._deselectRow(rowMatch, silent, true); - } - } - } - - //deselect an individual row - _deselectRow(rowInfo, silent){ - var self = this, - row = self.table.rowManager.findRow(rowInfo), - index, element; - - if(row){ - index = self.selectedRows.findIndex(function(selectedRow){ - return selectedRow == row; - }); - - if(index > -1){ - - element = row.getElement(); - - if(element){ - element.classList.remove("tabulator-selected"); - } - - if(!row.modules.select){ - row.modules.select = {}; - } - - row.modules.select.selected = false; - if(row.modules.select.checkboxEl){ - row.modules.select.checkboxEl.checked = false; - } - self.selectedRows.splice(index, 1); - - if(this.table.options.dataTreeSelectPropagate){ - this.childRowSelection(row, false); - } - - this.dispatchExternal("rowDeselected", row.getComponent()); - - self._rowSelectionChanged(silent, undefined, row); - - return row; - } - }else{ - if(!silent){ - console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo); - } - } - } - - getSelectedData(){ - var data = []; - - this.selectedRows.forEach(function(row){ - data.push(row.getData()); - }); - - return data; - } - - getSelectedRows(){ - var rows = []; - - this.selectedRows.forEach(function(row){ - rows.push(row.getComponent()); - }); - - return rows; - } - - _rowSelectionChanged(silent, selected = [], deselected = []){ - if(this.headerCheckboxElement){ - if(this.selectedRows.length === 0){ - this.headerCheckboxElement.checked = false; - this.headerCheckboxElement.indeterminate = false; - } else if(this.table.rowManager.rows.length === this.selectedRows.length){ - this.headerCheckboxElement.checked = true; - this.headerCheckboxElement.indeterminate = false; - } else { - this.headerCheckboxElement.indeterminate = true; - this.headerCheckboxElement.checked = false; - } - } - - if(!silent){ - if(!Array.isArray(selected)){ - selected = [selected]; - } - - selected = selected.map(row => row.getComponent()); - - if(!Array.isArray(deselected)){ - deselected = [deselected]; - } - - deselected = deselected.map(row => row.getComponent()); - - this.dispatchExternal("rowSelectionChanged", this.getSelectedData(), this.getSelectedRows(), selected, deselected); - } - } - - registerRowSelectCheckbox (row, element) { - if(!row._row.modules.select){ - row._row.modules.select = {}; - } - - row._row.modules.select.checkboxEl = element; - } - - registerHeaderSelectCheckbox (element) { - this.headerCheckboxElement = element; - } - - childRowSelection(row, select){ - var children = this.table.modules.dataTree.getChildren(row, true); - - if(select){ - for(let child of children){ - this._selectRow(child, true); - } - }else{ - for(let child of children){ - this._deselectRow(child, true); - } - } - } -} - -SelectRow.moduleName = "selectRow"; - -export default SelectRow; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/Sort.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/Sort.js deleted file mode 100644 index 991f708..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/Sort.js +++ /dev/null @@ -1,477 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultSorters from './defaults/sorters.js'; - -class Sort extends Module{ - - constructor(table){ - super(table); - - this.sortList = []; //holder current sort - this.changed = false; //has the sort changed since last render - - this.registerTableOption("sortMode", "local"); //local or remote sorting - - this.registerTableOption("initialSort", false); //initial sorting criteria - this.registerTableOption("columnHeaderSortMulti", true); //multiple or single column sorting - this.registerTableOption("sortOrderReverse", false); //reverse internal sort ordering - this.registerTableOption("headerSortElement", "
        "); //header sort element - this.registerTableOption("headerSortClickElement", "header"); //element which triggers sort when clicked - - this.registerColumnOption("sorter"); - this.registerColumnOption("sorterParams"); - - this.registerColumnOption("headerSort", true); - this.registerColumnOption("headerSortStartingDir"); - this.registerColumnOption("headerSortTristate"); - - } - - initialize(){ - this.subscribe("column-layout", this.initializeColumn.bind(this)); - this.subscribe("table-built", this.tableBuilt.bind(this)); - this.registerDataHandler(this.sort.bind(this), 20); - - this.registerTableFunction("setSort", this.userSetSort.bind(this)); - this.registerTableFunction("getSorters", this.getSort.bind(this)); - this.registerTableFunction("clearSort", this.clearSort.bind(this)); - - if(this.table.options.sortMode === "remote"){ - this.subscribe("data-params", this.remoteSortParams.bind(this)); - } - } - - tableBuilt(){ - if(this.table.options.initialSort){ - this.setSort(this.table.options.initialSort); - } - } - - remoteSortParams(data, config, silent, params){ - var sorters = this.getSort(); - - sorters.forEach((item) => { - delete item.column; - }); - - params.sort = sorters; - - return params; - } - - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - userSetSort(sortList, dir){ - this.setSort(sortList, dir); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - clearSort(){ - this.clear(); - // this.table.rowManager.sorterRefresh(); - this.refreshSort(); - } - - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - //initialize column header for sorting - initializeColumn(column){ - var sorter = false, - colEl, - arrowEl; - - switch(typeof column.definition.sorter){ - case "string": - if(Sort.sorters[column.definition.sorter]){ - sorter = Sort.sorters[column.definition.sorter]; - }else{ - console.warn("Sort Error - No such sorter found: ", column.definition.sorter); - } - break; - - case "function": - sorter = column.definition.sorter; - break; - } - - column.modules.sort = { - sorter:sorter, dir:"none", - params:column.definition.sorterParams || {}, - startingDir:column.definition.headerSortStartingDir || "asc", - tristate: column.definition.headerSortTristate, - }; - - if(column.definition.headerSort !== false){ - - colEl = column.getElement(); - - colEl.classList.add("tabulator-sortable"); - - arrowEl = document.createElement("div"); - arrowEl.classList.add("tabulator-col-sorter"); - - switch(this.table.options.headerSortClickElement){ - case "icon": - arrowEl.classList.add("tabulator-col-sorter-element"); - break; - case "header": - colEl.classList.add("tabulator-col-sorter-element"); - break; - default: - colEl.classList.add("tabulator-col-sorter-element"); - break; - } - - switch(this.table.options.headerSortElement){ - case "function": - //do nothing - break; - - case "object": - arrowEl.appendChild(this.table.options.headerSortElement); - break; - - default: - arrowEl.innerHTML = this.table.options.headerSortElement; - } - - //create sorter arrow - column.titleHolderElement.appendChild(arrowEl); - - column.modules.sort.element = arrowEl; - - this.setColumnHeaderSortIcon(column, "none"); - - if(this.table.options.headerSortClickElement === "icon"){ - arrowEl.addEventListener("mousedown", (e) => { - e.stopPropagation(); - }); - } - - //sort on click - (this.table.options.headerSortClickElement === "icon" ? arrowEl : colEl).addEventListener("click", (e) => { - var dir = "", - sorters=[], - match = false; - - if(column.modules.sort){ - if(column.modules.sort.tristate){ - if(column.modules.sort.dir == "none"){ - dir = column.modules.sort.startingDir; - }else{ - if(column.modules.sort.dir == column.modules.sort.startingDir){ - dir = column.modules.sort.dir == "asc" ? "desc" : "asc"; - }else{ - dir = "none"; - } - } - }else{ - switch(column.modules.sort.dir){ - case "asc": - dir = "desc"; - break; - - case "desc": - dir = "asc"; - break; - - default: - dir = column.modules.sort.startingDir; - } - } - - if (this.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) { - sorters = this.getSort(); - - match = sorters.findIndex((sorter) => { - return sorter.field === column.getField(); - }); - - if(match > -1){ - sorters[match].dir = dir; - - match = sorters.splice(match, 1)[0]; - if(dir != "none"){ - sorters.push(match); - } - }else{ - if(dir != "none"){ - sorters.push({column:column, dir:dir}); - } - } - - //add to existing sort - this.setSort(sorters); - }else{ - if(dir == "none"){ - this.clear(); - }else{ - //sort by column only - this.setSort(column, dir); - } - - } - - // this.table.rowManager.sorterRefresh(!this.sortList.length); - this.refreshSort(); - } - }); - } - } - - refreshSort(){ - if(this.table.options.sortMode === "remote"){ - this.reloadData(null, false, false); - }else{ - this.refreshData(true); - } - - //TODO - Persist left position of row manager - // left = this.scrollLeft; - // this.scrollHorizontal(left); - } - - //check if the sorters have changed since last use - hasChanged(){ - var changed = this.changed; - this.changed = false; - return changed; - } - - //return current sorters - getSort(){ - var self = this, - sorters = []; - - self.sortList.forEach(function(item){ - if(item.column){ - sorters.push({column:item.column.getComponent(), field:item.column.getField(), dir:item.dir}); - } - }); - - return sorters; - } - - //change sort list and trigger sort - setSort(sortList, dir){ - var self = this, - newSortList = []; - - if(!Array.isArray(sortList)){ - sortList = [{column: sortList, dir:dir}]; - } - - sortList.forEach(function(item){ - var column; - - column = self.table.columnManager.findColumn(item.column); - - if(column){ - item.column = column; - newSortList.push(item); - self.changed = true; - }else{ - console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column); - } - - }); - - self.sortList = newSortList; - - this.dispatch("sort-changed"); - } - - //clear sorters - clear(){ - this.setSort([]); - } - - //find appropriate sorter for column - findSorter(column){ - var row = this.table.rowManager.activeRows[0], - sorter = "string", - field, value; - - if(row){ - row = row.getData(); - field = column.getField(); - - if(field){ - - value = column.getFieldValue(row); - - switch(typeof value){ - case "undefined": - sorter = "string"; - break; - - case "boolean": - sorter = "boolean"; - break; - - default: - if(!isNaN(value) && value !== ""){ - sorter = "number"; - }else{ - if(value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)){ - sorter = "alphanum"; - } - } - break; - } - } - } - - return Sort.sorters[sorter]; - } - - //work through sort list sorting data - sort(data){ - var self = this, - sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList, - sortListActual = [], - rowComponents = []; - - if(this.subscribedExternal("dataSorting")){ - this.dispatchExternal("dataSorting", self.getSort()); - } - - self.clearColumnHeaders(); - - if(this.table.options.sortMode !== "remote"){ - - //build list of valid sorters and trigger column specific callbacks before sort begins - sortList.forEach(function(item, i){ - var sortObj; - - if(item.column){ - sortObj = item.column.modules.sort; - - if(sortObj){ - - //if no sorter has been defined, take a guess - if(!sortObj.sorter){ - sortObj.sorter = self.findSorter(item.column); - } - - item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params; - - sortListActual.push(item); - } - - self.setColumnHeader(item.column, item.dir); - } - }); - - //sort data - if (sortListActual.length) { - self._sortItems(data, sortListActual); - } - - }else{ - sortList.forEach(function(item, i){ - self.setColumnHeader(item.column, item.dir); - }); - } - - if(this.subscribedExternal("dataSorted")){ - data.forEach((row) => { - rowComponents.push(row.getComponent()); - }); - - this.dispatchExternal("dataSorted", self.getSort(), rowComponents); - } - - return data; - } - - //clear sort arrows on columns - clearColumnHeaders(){ - this.table.columnManager.getRealColumns().forEach((column) => { - if(column.modules.sort){ - column.modules.sort.dir = "none"; - column.getElement().setAttribute("aria-sort", "none"); - this.setColumnHeaderSortIcon(column, "none"); - } - }); - } - - //set the column header sort direction - setColumnHeader(column, dir){ - column.modules.sort.dir = dir; - column.getElement().setAttribute("aria-sort", dir === "asc" ? "ascending" : "descending"); - this.setColumnHeaderSortIcon(column, dir); - } - - setColumnHeaderSortIcon(column, dir){ - var sortEl = column.modules.sort.element, - arrowEl; - - if(column.definition.headerSort && typeof this.table.options.headerSortElement === "function"){ - while(sortEl.firstChild) sortEl.removeChild(sortEl.firstChild); - - arrowEl = this.table.options.headerSortElement.call(this.table, column.getComponent(), dir); - - if(typeof arrowEl === "object"){ - sortEl.appendChild(arrowEl); - }else{ - sortEl.innerHTML = arrowEl; - } - } - } - - //sort each item in sort list - _sortItems(data, sortList){ - var sorterCount = sortList.length - 1; - - data.sort((a, b) => { - var result; - - for(var i = sorterCount; i>= 0; i--){ - let sortItem = sortList[i]; - - result = this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params); - - if(result !== 0){ - break; - } - } - - return result; - }); - } - - //process individual rows for a sort function on active data - _sortRow(a, b, column, dir, params){ - var el1Comp, el2Comp; - - //switch elements depending on search direction - var el1 = dir == "asc" ? a : b; - var el2 = dir == "asc" ? b : a; - - a = column.getFieldValue(el1.getData()); - b = column.getFieldValue(el2.getData()); - - a = typeof a !== "undefined" ? a : ""; - b = typeof b !== "undefined" ? b : ""; - - el1Comp = el1.getComponent(); - el2Comp = el2.getComponent(); - - return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params); - } -} - -Sort.moduleName = "sort"; - -//load defaults -Sort.sorters = defaultSorters; - -export default Sort; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters.js deleted file mode 100644 index 5d17769..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters.js +++ /dev/null @@ -1,21 +0,0 @@ -import number from './sorters/number.js'; -import string from './sorters/string.js'; -import date from './sorters/date.js'; -import time from './sorters/time.js'; -import datetime from './sorters/datetime.js'; -import boolean from './sorters/boolean.js'; -import array from './sorters/array.js'; -import exists from './sorters/exists.js'; -import alphanum from './sorters/alphanum.js'; - -export default { - number:number, - string:string, - date:date, - time:time, - datetime:datetime, - boolean:boolean, - array:array, - exists:exists, - alphanum:alphanum -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/alphanum.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/alphanum.js deleted file mode 100644 index 5efd9f0..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/alphanum.js +++ /dev/null @@ -1,44 +0,0 @@ -//sort alpha numeric strings -export default function(as, bs, aRow, bRow, column, dir, params){ - var a, b, a1, b1, i= 0, L, rx = /(\d+)|(\D+)/g, rd = /\d/; - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - - //handle empty values - if(!as && as!== 0){ - emptyAlign = !bs && bs!== 0 ? 0 : -1; - }else if(!bs && bs!== 0){ - emptyAlign = 1; - }else{ - - if(isFinite(as) && isFinite(bs)) return as - bs; - a = String(as).toLowerCase(); - b = String(bs).toLowerCase(); - if(a === b) return 0; - if(!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1; - a = a.match(rx); - b = b.match(rx); - L = a.length > b.length ? b.length : a.length; - while(i < L){ - a1= a[i]; - b1= b[i++]; - if(a1 !== b1){ - if(isFinite(a1) && isFinite(b1)){ - if(a1.charAt(0) === "0") a1 = "." + a1; - if(b1.charAt(0) === "0") b1 = "." + b1; - return a1 - b1; - } - else return a1 > b1 ? 1 : -1; - } - } - - return a.length > b.length; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/array.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/array.js deleted file mode 100644 index ad3ee19..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/array.js +++ /dev/null @@ -1,54 +0,0 @@ -//sort if element contains any data -export default function(a, b, aRow, bRow, column, dir, params){ - var type = params.type || "length", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - function calc(value){ - var result; - - switch(type){ - case "length": - result = value.length; - break; - - case "sum": - result = value.reduce(function(c, d){ - return c + d; - }); - break; - - case "max": - result = Math.max.apply(null, value) ; - break; - - case "min": - result = Math.min.apply(null, value) ; - break; - - case "avg": - result = value.reduce(function(c, d){ - return c + d; - }) / value.length; - break; - } - - return result; - } - - //handle non array values - if(!Array.isArray(a)){ - emptyAlign = !Array.isArray(b) ? 0 : -1; - }else if(!Array.isArray(b)){ - emptyAlign = 1; - }else{ - return calc(b) - calc(a); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/boolean.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/boolean.js deleted file mode 100644 index 3919859..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/boolean.js +++ /dev/null @@ -1,7 +0,0 @@ -//sort booleans -export default function(a, b, aRow, bRow, column, dir, params){ - var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0; - var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0; - - return el1 - el2; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/date.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/date.js deleted file mode 100644 index fa45c42..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/date.js +++ /dev/null @@ -1,10 +0,0 @@ -import datetime from './datetime.js'; - -//sort date -export default function(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "dd/MM/yyyy"; - } - - return datetime.call(this, a, b, aRow, bRow, column, dir, params); -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/datetime.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/datetime.js deleted file mode 100644 index f2e63ef..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/datetime.js +++ /dev/null @@ -1,44 +0,0 @@ -//sort datetime -export default function(a, b, aRow, bRow, column, dir, params){ - var DT = window.DateTime || luxon.DateTime; - var format = params.format || "dd/MM/yyyy HH:mm:ss", - alignEmptyValues = params.alignEmptyValues, - emptyAlign = 0; - - if(typeof DT != "undefined"){ - if(!DT.isDateTime(a)){ - if(format === "iso"){ - a = DT.fromISO(String(a)); - }else{ - a = DT.fromFormat(String(a), format); - } - } - - if(!DT.isDateTime(b)){ - if(format === "iso"){ - b = DT.fromISO(String(b)); - }else{ - b = DT.fromFormat(String(b), format); - } - } - - if(!a.isValid){ - emptyAlign = !b.isValid ? 0 : -1; - }else if(!b.isValid){ - emptyAlign = 1; - }else{ - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; - - }else{ - console.error("Sort Error - 'datetime' sorter is dependant on luxon.js"); - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/exists.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/exists.js deleted file mode 100644 index 46f0c5b..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/exists.js +++ /dev/null @@ -1,7 +0,0 @@ -//sort if element contains any data -export default function(a, b, aRow, bRow, column, dir, params){ - var el1 = typeof a == "undefined" ? 0 : 1; - var el2 = typeof b == "undefined" ? 0 : 1; - - return el1 - el2; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/number.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/number.js deleted file mode 100644 index d96dcd3..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/number.js +++ /dev/null @@ -1,40 +0,0 @@ -//sort numbers -export default function(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var decimal = params.decimalSeparator; - var thousand = params.thousandSeparator; - var emptyAlign = 0; - - a = String(a); - b = String(b); - - if(thousand){ - a = a.split(thousand).join(""); - b = b.split(thousand).join(""); - } - - if(decimal){ - a = a.split(decimal).join("."); - b = b.split(decimal).join("."); - } - - a = parseFloat(a); - b = parseFloat(b); - - //handle non numeric values - if(isNaN(a)){ - emptyAlign = isNaN(b) ? 0 : -1; - }else if(isNaN(b)){ - emptyAlign = 1; - }else{ - //compare valid values - return a - b; - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/string.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/string.js deleted file mode 100644 index 422278c..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/string.js +++ /dev/null @@ -1,34 +0,0 @@ -//sort strings -export default function(a, b, aRow, bRow, column, dir, params){ - var alignEmptyValues = params.alignEmptyValues; - var emptyAlign = 0; - var locale; - - //handle empty values - if(!a){ - emptyAlign = !b ? 0 : -1; - }else if(!b){ - emptyAlign = 1; - }else{ - //compare valid values - switch(typeof params.locale){ - case "boolean": - if(params.locale){ - locale = this.langLocale(); - } - break; - case "string": - locale = params.locale; - break; - } - - return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale); - } - - //fix empty values in position - if((alignEmptyValues === "top" && dir === "desc") || (alignEmptyValues === "bottom" && dir === "asc")){ - emptyAlign *= -1; - } - - return emptyAlign; -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/time.js b/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/time.js deleted file mode 100644 index 9bfa7c9..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Sort/defaults/sorters/time.js +++ /dev/null @@ -1,10 +0,0 @@ -import datetime from './datetime.js'; - -//sort times -export default function(a, b, aRow, bRow, column, dir, params){ - if(!params.format){ - params.format = "HH:mm"; - } - - return datetime.call(this, a, b, aRow, bRow, column, dir, params); -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/js/modules/Tooltip/Tooltip.js b/tmp/tabulator-5.6.1/src/js/modules/Tooltip/Tooltip.js deleted file mode 100644 index a43a1ca..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Tooltip/Tooltip.js +++ /dev/null @@ -1,130 +0,0 @@ -import Module from '../../core/Module.js'; -import Cell from '../../core/cell/Cell.js'; - -class Tooltip extends Module{ - - constructor(table){ - super(table); - - this.tooltipSubscriber = null, - this.headerSubscriber = null, - - this.timeout = null; - this.popupInstance = null; - - this.registerTableOption("tooltipGenerationMode", undefined); //deprecated - this.registerTableOption("tooltipDelay", 300); - - this.registerColumnOption("tooltip"); - this.registerColumnOption("headerTooltip"); - } - - initialize(){ - this.deprecatedOptionsCheck(); - - this.subscribe("column-init", this.initializeColumn.bind(this)); - } - - deprecatedOptionsCheck(){ - this.deprecationCheckMsg("tooltipGenerationMode", "This option is no longer needed as tooltips are always generated on hover now"); - } - - initializeColumn(column){ - if(column.definition.headerTooltip && !this.headerSubscriber){ - this.headerSubscriber = true; - - this.subscribe("column-mousemove", this.mousemoveCheck.bind(this, "headerTooltip")); - this.subscribe("column-mouseout", this.mouseoutCheck.bind(this, "headerTooltip")); - } - - if(column.definition.tooltip && !this.tooltipSubscriber){ - this.tooltipSubscriber = true; - - this.subscribe("cell-mousemove", this.mousemoveCheck.bind(this, "tooltip")); - this.subscribe("cell-mouseout", this.mouseoutCheck.bind(this, "tooltip")); - } - } - - mousemoveCheck(action, e, component){ - var tooltip = action === "tooltip" ? component.column.definition.tooltip : component.definition.headerTooltip; - - if(tooltip){ - this.clearPopup(); - this.timeout = setTimeout(this.loadTooltip.bind(this, e, component, tooltip), this.table.options.tooltipDelay); - } - } - - mouseoutCheck(action, e, component){ - if(!this.popupInstance){ - this.clearPopup(); - } - } - - clearPopup(action, e, component){ - clearTimeout(this.timeout); - this.timeout = null; - - if(this.popupInstance){ - this.popupInstance.hide(); - } - } - - loadTooltip(e, component, tooltip){ - var contentsEl, renderedCallback, coords; - - function onRendered(callback){ - renderedCallback = callback; - } - - if(typeof tooltip === "function"){ - tooltip = tooltip(e, component.getComponent(), onRendered); - } - - if(tooltip instanceof HTMLElement){ - contentsEl = tooltip; - }else{ - contentsEl = document.createElement("div"); - - if(tooltip === true){ - if(component instanceof Cell){ - tooltip = component.value; - }else{ - if(component.definition.field){ - this.langBind("columns|" + component.definition.field, (value) => { - contentsEl.innerHTML = tooltip = value || component.definition.title; - }); - }else{ - tooltip = component.definition.title; - } - } - } - - contentsEl.innerHTML = tooltip; - } - - if(tooltip || tooltip === 0 || tooltip === false){ - contentsEl.classList.add("tabulator-tooltip"); - - contentsEl.addEventListener("mousemove", e => e.preventDefault()); - - this.popupInstance = this.popup(contentsEl); - - if(typeof renderedCallback === "function"){ - this.popupInstance.renderCallback(renderedCallback); - } - - coords = this.popupInstance.containerEventCoords(e); - - this.popupInstance.show(coords.x + 15, coords.y + 15).hideOnBlur(() => { - this.dispatchExternal("TooltipClosed", component.getComponent()); - this.popupInstance = null; - }); - - this.dispatchExternal("TooltipOpened", component.getComponent()); - } - } -} - -Tooltip.moduleName = "tooltip"; - -export default Tooltip; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Validate/Validate.js b/tmp/tabulator-5.6.1/src/js/modules/Validate/Validate.js deleted file mode 100644 index 8378e2b..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Validate/Validate.js +++ /dev/null @@ -1,305 +0,0 @@ -import Module from '../../core/Module.js'; - -import defaultValidators from './defaults/validators.js'; - -class Validate extends Module{ - - constructor(table){ - super(table); - - this.invalidCells = []; - - this.registerTableOption("validationMode", "blocking"); - - this.registerColumnOption("validator"); - - this.registerTableFunction("getInvalidCells", this.getInvalidCells.bind(this)); - this.registerTableFunction("clearCellValidation", this.userClearCellValidation.bind(this)); - this.registerTableFunction("validate", this.userValidate.bind(this)); - - this.registerComponentFunction("cell", "isValid", this.cellIsValid.bind(this)); - this.registerComponentFunction("cell", "clearValidation", this.clearValidation.bind(this)); - this.registerComponentFunction("cell", "validate", this.cellValidate.bind(this)); - - this.registerComponentFunction("column", "validate", this.columnValidate.bind(this)); - this.registerComponentFunction("row", "validate", this.rowValidate.bind(this)); - } - - - initialize(){ - this.subscribe("cell-delete", this.clearValidation.bind(this)); - this.subscribe("column-layout", this.initializeColumnCheck.bind(this)); - - this.subscribe("edit-success", this.editValidate.bind(this)); - this.subscribe("edit-editor-clear", this.editorClear.bind(this)); - this.subscribe("edit-edited-clear", this.editedClear.bind(this)); - } - - /////////////////////////////////// - ///////// Event Handling ////////// - /////////////////////////////////// - - editValidate(cell, value, previousValue){ - var valid = this.table.options.validationMode !== "manual" ? this.validate(cell.column.modules.validate, cell, value) : true; - - // allow time for editor to make render changes then style cell - if(valid !== true){ - setTimeout(() => { - cell.getElement().classList.add("tabulator-validation-fail"); - this.dispatchExternal("validationFailed", cell.getComponent(), value, valid); - }); - } - - return valid; - } - - editorClear(cell, cancelled){ - if(cancelled){ - if(cell.column.modules.validate){ - this.cellValidate(cell); - } - } - - cell.getElement().classList.remove("tabulator-validation-fail"); - } - - editedClear(cell){ - if(cell.modules.validate){ - cell.modules.validate.invalid = false; - } - } - - /////////////////////////////////// - ////////// Cell Functions ///////// - /////////////////////////////////// - - cellIsValid(cell){ - return cell.modules.validate ? (cell.modules.validate.invalid || true) : true; - } - - cellValidate(cell){ - return this.validate(cell.column.modules.validate, cell, cell.getValue()); - } - - /////////////////////////////////// - ///////// Column Functions //////// - /////////////////////////////////// - - columnValidate(column){ - var invalid = []; - - column.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ////////// Row Functions ////////// - /////////////////////////////////// - - rowValidate(row){ - var invalid = []; - - row.cells.forEach((cell) => { - if(this.cellValidate(cell) !== true){ - invalid.push(cell.getComponent()); - } - }); - - return invalid.length ? invalid : true; - } - - /////////////////////////////////// - ///////// Table Functions ///////// - /////////////////////////////////// - - - userClearCellValidation(cells){ - if(!cells){ - cells = this.getInvalidCells(); - } - - if(!Array.isArray(cells)){ - cells = [cells]; - } - - cells.forEach((cell) => { - this.clearValidation(cell._getSelf()); - }); - } - - userValidate(cells){ - var output = []; - - //clear row data - this.table.rowManager.rows.forEach((row) => { - row = row.getComponent(); - - var valid = row.validate(); - - if(valid !== true){ - output = output.concat(valid); - } - }); - - return output.length ? output : true; - } - - /////////////////////////////////// - ///////// Internal Logic ////////// - /////////////////////////////////// - - initializeColumnCheck(column){ - if(typeof column.definition.validator !== "undefined"){ - this.initializeColumn(column); - } - } - - //validate - initializeColumn(column){ - var self = this, - config = [], - validator; - - if(column.definition.validator){ - - if(Array.isArray(column.definition.validator)){ - column.definition.validator.forEach((item) => { - validator = self._extractValidator(item); - - if(validator){ - config.push(validator); - } - }); - - }else{ - validator = this._extractValidator(column.definition.validator); - - if(validator){ - config.push(validator); - } - } - - column.modules.validate = config.length ? config : false; - } - } - - _extractValidator(value){ - var type, params, pos; - - switch(typeof value){ - case "string": - pos = value.indexOf(':'); - - if(pos > -1){ - type = value.substring(0,pos); - params = value.substring(pos+1); - }else{ - type = value; - } - - return this._buildValidator(type, params); - - case "function": - return this._buildValidator(value); - - case "object": - return this._buildValidator(value.type, value.parameters); - } - } - - _buildValidator(type, params){ - - var func = typeof type == "function" ? type : Validate.validators[type]; - - if(!func){ - console.warn("Validator Setup Error - No matching validator found:", type); - return false; - }else{ - return { - type:typeof type == "function" ? "function" : type, - func:func, - params:params, - }; - } - } - - validate(validators, cell, value){ - var self = this, - failedValidators = [], - invalidIndex = this.invalidCells.indexOf(cell); - - if(validators){ - validators.forEach((item) => { - if(!item.func.call(self, cell.getComponent(), value, item.params)){ - failedValidators.push({ - type:item.type, - parameters:item.params - }); - } - }); - } - - if(!cell.modules.validate){ - cell.modules.validate = {}; - } - - if(!failedValidators.length){ - cell.modules.validate.invalid = false; - cell.getElement().classList.remove("tabulator-validation-fail"); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - }else{ - cell.modules.validate.invalid = failedValidators; - - if(this.table.options.validationMode !== "manual"){ - cell.getElement().classList.add("tabulator-validation-fail"); - } - - if(invalidIndex == -1){ - this.invalidCells.push(cell); - } - } - - return failedValidators.length ? failedValidators : true; - } - - getInvalidCells(){ - var output = []; - - this.invalidCells.forEach((cell) => { - output.push(cell.getComponent()); - }); - - return output; - } - - clearValidation(cell){ - var invalidIndex; - - if(cell.modules.validate && cell.modules.validate.invalid){ - - cell.getElement().classList.remove("tabulator-validation-fail"); - cell.modules.validate.invalid = false; - - invalidIndex = this.invalidCells.indexOf(cell); - - if(invalidIndex > -1){ - this.invalidCells.splice(invalidIndex, 1); - } - } - } -} - -Validate.moduleName = "validate"; - -//load defaults -Validate.validators = defaultValidators; - -export default Validate; diff --git a/tmp/tabulator-5.6.1/src/js/modules/Validate/defaults/validators.js b/tmp/tabulator-5.6.1/src/js/modules/Validate/defaults/validators.js deleted file mode 100644 index ae43ccc..0000000 --- a/tmp/tabulator-5.6.1/src/js/modules/Validate/defaults/validators.js +++ /dev/null @@ -1,150 +0,0 @@ -export default { - //is integer - integer: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && Math.floor(value) === value; - }, - - //is float - float: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - value = Number(value); - - return !isNaN(value) && isFinite(value) && value % 1 !== 0; - }, - - //must be a number - numeric: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return !isNaN(value); - }, - - //must be a string - string: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return isNaN(value); - }, - - //must be alphanumeric - alphanumeric: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - var reg = new RegExp(/^[a-z0-9]+$/i); - - return reg.test(value); - }, - - //maximum value - max: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) <= parameters; - }, - - //minimum value - min: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return parseFloat(value) >= parameters; - }, - - //starts with value - starts: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().startsWith(String(parameters).toLowerCase()); - }, - - //ends with value - ends: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).toLowerCase().endsWith(String(parameters).toLowerCase()); - }, - - - //minimum string length - minLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length >= parameters; - }, - - //maximum string length - maxLength: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - return String(value).length <= parameters; - }, - - //in provided value list - in: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - - if(typeof parameters == "string"){ - parameters = parameters.split("|"); - } - - return parameters.indexOf(value) > -1; - }, - - //must match provided regex - regex: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var reg = new RegExp(parameters); - - return reg.test(value); - }, - - //value must be unique in this column - unique: function(cell, value, parameters){ - if(value === "" || value === null || typeof value === "undefined"){ - return true; - } - var unique = true; - - var cellData = cell.getData(); - var column = cell.getColumn()._getSelf(); - - this.table.rowManager.rows.forEach(function(row){ - var data = row.getData(); - - if(data !== cellData){ - if(value == column.getFieldValue(data)){ - unique = false; - } - } - }); - - return unique; - }, - - //must have a value - required:function(cell, value, parameters){ - return value !== "" && value !== null && typeof value !== "undefined"; - }, -}; \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/scss/tabulator.scss b/tmp/tabulator-5.6.1/src/scss/tabulator.scss deleted file mode 100644 index 44b8464..0000000 --- a/tmp/tabulator-5.6.1/src/scss/tabulator.scss +++ /dev/null @@ -1,1583 +0,0 @@ - -//Main Theme Variables -$backgroundColor: #888 !default; //background color of tabulator -$borderColor:#999 !default; //border to tabulator -$textSize:14px !default; //table text size - -//header theming -$headerBackgroundColor:#e6e6e6 !default; //border to tabulator -$headerTextColor:#555 !default; //header text color -$headerBorderColor:#aaa !default; //header border color -$headerSeparatorColor:#999 !default; //header bottom separator color -$headerMargin:4px !default; //padding round header - -//column header arrows -$sortArrowHover: #555 !default; -$sortArrowActive: #666 !default; -$sortArrowInactive: #bbb !default; - -//row theming -$rowBackgroundColor:#fff !default; //table row background color -$rowAltBackgroundColor:#EFEFEF !default; //table row background color -$rowBorderColor:#aaa !default; //table border color -$rowTextColor:#333 !default; //table text color -$rowHoverBackground:#bbb !default; //row background color on hover - -$rowSelectedBackground: #9ABCEA !default; //row background color when selected -$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered - -$editBoxColor:#1D68CD !default; //border color for edit boxes -$errorColor:#dd0000 !default; //error indication - -//footer theming -$footerBackgroundColor:#e6e6e6 !default; //border to tabulator -$footerTextColor:#555 !default; //footer text color -$footerBorderColor:#aaa !default; //footer border color -$footerSeparatorColor:#999 !default; //footer bottom separator color -$footerActiveColor:#d00 !default; //footer bottom active text color - - -//range selection -$rangeBorderColor: #2975DD !default; //range border color -$rangeHandleColor: $rangeBorderColor !default; //range handle color -$rangeHeaderSelectedBackground: #3876ca !default; //header background color when selected -$rangeHeaderSelectedTextColor: #FFFFFF !default; //header text color when selected -$rangeHeaderHighlightBackground: #D6D6D6 !default; //header background color when highlighted -$rangeHeaderTextHighlightBackground: #000000 !default; //header text color when highlighted - -//Tabulator Containing Element -.tabulator{ - position: relative; - - border: 1px solid $borderColor; - - background-color: $backgroundColor; - - font-size:$textSize; - text-align: left; - overflow:hidden; - - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); - - &[tabulator-layout="fitDataFill"]{ - .tabulator-tableholder{ - .tabulator-table{ - min-width:100%; - } - } - } - - &[tabulator-layout="fitDataTable"]{ - display: inline-block; - } - - &.tabulator-block-select{ - user-select: none; - } - - &.tabulator-ranges{ - .tabulator-cell:not(.tabulator-editing){ - user-select: none; - } - } - - - //column header containing element - .tabulator-header{ - position:relative; - box-sizing: border-box; - - width:100%; - - border-bottom:1px solid $headerSeparatorColor; - background-color: $headerBackgroundColor; - color: $headerTextColor; - font-weight:bold; - - white-space: nowrap; - overflow:hidden; - - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - - outline: none; - - &.tabulator-header-hidden{ - display:none; - } - - .tabulator-header-contents{ - position: relative; - overflow: hidden; - - .tabulator-headers{ - display: inline-block; - } - } - - //individual column header element - .tabulator-col{ - display:inline-flex; - position:relative; - box-sizing:border-box; - - flex-direction: column; - justify-content: flex-start; - - border-right:1px solid $headerBorderColor; - background:$headerBackgroundColor; - - text-align:left; - vertical-align: bottom; - overflow: hidden; - - &.tabulator-moving{ - position: absolute; - border:1px solid $headerSeparatorColor; - background:darken($headerBackgroundColor, 10%); - pointer-events: none; - } - - &.tabulator-range-highlight{ - background-color: $rangeHeaderHighlightBackground; - color: $rangeHeaderTextHighlightBackground; - } - - &.tabulator-range-selected{ - background-color: $rangeHeaderSelectedBackground; - color: $rangeHeaderSelectedTextColor; - } - - //hold content of column header - .tabulator-col-content{ - box-sizing:border-box; - position: relative; - padding:4px; - - //header menu button - .tabulator-header-popup-button{ - padding: 0 8px; - - &:hover{ - cursor: pointer; - opacity: .6; - } - } - - //hold title and sort arrow - .tabulator-col-title-holder{ - position: relative; - } - - //hold title of column header - .tabulator-col-title{ - box-sizing:border-box; - width: 100%; - - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align:bottom; - - &.tabulator-col-title-wrap{ - white-space: normal; - text-overflow: initial; - } - - //element to hold title editor - .tabulator-title-editor{ - box-sizing: border-box; - width: 100%; - - border:1px solid #999; - - padding:1px; - - background: #fff; - } - - .tabulator-header-popup-button + .tabulator-title-editor{ - width:calc(100% - 22px); - } - } - - //column sorter arrow - .tabulator-col-sorter{ - display: flex; - align-items: center; - - position: absolute; - top:0; - bottom:0; - right:4px; - - .tabulator-arrow{ - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid $sortArrowInactive; - } - } - - } - - //complex header column group - &.tabulator-col-group{ - - //gelement to hold sub columns in column group - .tabulator-col-group-cols{ - position:relative; - display: flex; - - border-top:1px solid $headerBorderColor; - overflow: hidden; - - margin-right:-1px; - } - } - - //header filter containing element - .tabulator-header-filter{ - position: relative; - box-sizing: border-box; - margin-top:2px; - width:100%; - text-align: center; - - //styling adjustment for inbuilt editors - textarea{ - height:auto !important; - } - - svg{ - margin-top: 3px; - } - - input{ - &::-ms-clear { - width : 0; - height: 0; - } - } - } - - //styling child elements for sortable columns - &.tabulator-sortable{ - .tabulator-col-title{ - padding-right:25px; - } - - @media (hover:hover) and (pointer:fine){ - &.tabulator-col-sorter-element:hover{ - cursor:pointer; - background-color:darken($headerBackgroundColor, 10%); - } - } - - &[aria-sort="none"]{ - .tabulator-col-content .tabulator-col-sorter{ - color: $sortArrowInactive; - - @media (hover:hover) and (pointer:fine){ - &.tabulator-col-sorter-element .tabulator-arrow:hover{ - cursor:pointer; - border-bottom: 6px solid $sortArrowHover; - } - } - - .tabulator-arrow{ - border-top: none; - border-bottom: 6px solid $sortArrowInactive; - } - } - } - - &[aria-sort="ascending"]{ - .tabulator-col-content .tabulator-col-sorter{ - color: $sortArrowActive; - - @media (hover:hover) and (pointer:fine){ - &.tabulator-col-sorter-element .tabulator-arrow:hover{ - cursor:pointer; - border-bottom: 6px solid $sortArrowHover; - } - } - - .tabulator-arrow{ - border-top: none; - border-bottom: 6px solid $sortArrowActive; - - } - } - } - - &[aria-sort="descending"]{ - .tabulator-col-content .tabulator-col-sorter{ - color: $sortArrowActive; - - @media (hover:hover) and (pointer:fine){ - &.tabulator-col-sorter-element .tabulator-arrow:hover{ - cursor:pointer; - border-top: 6px solid $sortArrowHover; - } - } - - .tabulator-arrow{ - border-bottom: none; - border-top: 6px solid $sortArrowActive; - color: $sortArrowActive; - } - } - } - } - - - &.tabulator-col-vertical{ - .tabulator-col-content{ - .tabulator-col-title{ - writing-mode: vertical-rl; - text-orientation: mixed; - - display:flex; - align-items:center; - justify-content:center; - } - } - - &.tabulator-col-vertical-flip{ - .tabulator-col-title{ - transform: rotate(180deg); - } - } - - &.tabulator-sortable{ - .tabulator-col-title{ - padding-right:0; - padding-top:20px; - } - - &.tabulator-col-vertical-flip{ - .tabulator-col-title{ - padding-right:0; - padding-bottom:20px; - } - - } - - .tabulator-col-sorter{ - justify-content: center; - left:0; - right:0; - top:4px; - bottom:auto; - } - } - } - } - - .tabulator-frozen{ - position: sticky; - left:0; - - // background-color: inherit; - - z-index: 11; - - &.tabulator-frozen-left{ - border-right:2px solid $rowBorderColor; - } - - &.tabulator-frozen-right{ - border-left:2px solid $rowBorderColor; - } - } - - - .tabulator-calcs-holder{ - box-sizing:border-box; - display: inline-block; - - background:lighten($headerBackgroundColor, 5%) !important; - - border-top:1px solid $rowBorderColor; - border-bottom:1px solid $headerBorderColor; - - // overflow: hidden; - - .tabulator-row{ - background:lighten($headerBackgroundColor, 5%) !important; - - .tabulator-col-resize-handle{ - display: none; - } - } - } - - .tabulator-frozen-rows-holder{ - display: inline-block; - &:empty{ - display: none; - } - } - } - - //scrolling element to hold table - .tabulator-tableholder{ - position:relative; - width:100%; - white-space: nowrap; - overflow:auto; - -webkit-overflow-scrolling: touch; - - &:focus{ - outline: none; - } - - //default placeholder element - .tabulator-placeholder{ - box-sizing:border-box; - display: flex; - align-items:center; - justify-content: center; - - min-width:100%; - width:100%; - - &[tabulator-render-mode="virtual"]{ - min-height:100%; - } - - .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - - padding:10px; - - color:#ccc; - font-weight: bold; - font-size: 20px; - - white-space: normal; - } - } - - //element to hold table rows - .tabulator-table{ - position:relative; - display:inline-block; - background-color:$rowBackgroundColor; - white-space: nowrap; - overflow:visible; - color:$rowTextColor; - - //row element - .tabulator-row{ - &.tabulator-calcs{ - font-weight: bold; - background:darken($rowAltBackgroundColor, 5%) !important; - - &.tabulator-calcs-top{ - border-bottom:2px solid $rowBorderColor; - } - - &.tabulator-calcs-bottom{ - border-top:2px solid $rowBorderColor; - } - } - } - - } - - .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; - - & .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid $rangeBorderColor; - - &.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: $rangeHandleColor; - border-radius: 999px; - } - } - - & .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid $rangeBorderColor; - } - } - } - - //footer element - .tabulator-footer{ - border-top:1px solid $footerSeparatorColor; - background-color: $footerBackgroundColor; - - color: $footerTextColor; - font-weight:bold; - white-space:nowrap; - user-select:none; - - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - - .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - - padding:5px 10px; - - &:empty{ - display: none; - } - } - - .tabulator-calcs-holder{ - box-sizing:border-box; - width:100%; - - text-align: left; - - background:lighten($footerBackgroundColor, 5%) !important; - border-bottom:1px solid $rowBorderColor; - border-top:1px solid $rowBorderColor; - - overflow: hidden; - - .tabulator-row{ - display: inline-block; - background:lighten($footerBackgroundColor, 5%) !important; - - .tabulator-col-resize-handle{ - display: none; - } - } - - - &:only-child{ - margin-bottom:-5px; - border-bottom:none; - } - } - - &>*+.tabulator-page-counter{ - margin-left:10px; - } - - .tabulator-page-counter { - font-weight: normal; - } - - .tabulator-paginator{ - flex:1; - - text-align: right; - - color: $footerTextColor; - font-family:inherit; - font-weight:inherit; - font-size:inherit; - } - - //pagination container element - .tabulator-page-size{ - display:inline-block; - - margin:0 5px; - padding:2px 5px; - - border:1px solid $footerBorderColor; - border-radius:3px; - } - - .tabulator-pages{ - margin:0 7px; - } - - //pagination button - .tabulator-page{ - display:inline-block; - - margin:0 2px; - padding:2px 5px; - - border:1px solid $footerBorderColor; - border-radius:3px; - - background:rgba(255,255,255,.2); - - &.active{ - color:$footerActiveColor; - } - - &:disabled{ - opacity:.5; - } - - &:not(disabled){ - @media (hover:hover) and (pointer:fine){ - &:hover{ - cursor:pointer; - background:rgba(0,0,0,.2); - color:#fff; - } - } - } - } - } - - //column resize handles - .tabulator-col-resize-handle{ - position: relative; - display: inline-block; - width: 6px; - - margin-left: -3px; - margin-right: -3px; - - z-index: 11; - vertical-align: middle; - - @media (hover:hover) and (pointer:fine){ - &:hover{ - cursor:ew-resize; - } - } - - &:last-of-type{ - width:3px; - margin-right:0; - } - } - - - //holding div that contains loader and covers tabulator element to prevent interaction - .tabulator-alert{ - position:absolute; - display: flex; - align-items:center; - - top:0; - left:0; - z-index:100; - - height:100%; - width:100%; - background:rgba(0,0,0,.4); - text-align:center; - - //loading message element - .tabulator-alert-msg { - display:inline-block; - - margin:0 auto; - padding:10px 20px; - - border-radius:10px; - - background:#fff; - font-weight:bold; - font-size:16px; - - //loading message - &.tabulator-alert-state-msg { - border:4px solid #333; - color:#000; - } - - //error message - &.tabulator-alert-state-error { - border:4px solid #D00; - color:#590000; - } - } - } -} - -//row element -.tabulator-row{ - position: relative; - box-sizing: border-box; - min-height:$textSize + ($headerMargin * 2); - background-color: $rowBackgroundColor; - - - &.tabulator-row-even{ - background-color: $rowAltBackgroundColor; - } - - @media (hover:hover) and (pointer:fine){ - &.tabulator-selectable:hover{ - background-color:$rowHoverBackground; - cursor: pointer; - } - } - - &.tabulator-selected{ - background-color:$rowSelectedBackground; - } - - @media (hover:hover) and (pointer:fine){ - &.tabulator-selected:hover{ - background-color:$rowSelectedBackgroundHover; - cursor: pointer; - } - } - - &.tabulator-row-moving{ - border:1px solid #000; - background:#fff; - } - - &.tabulator-moving{ - position: absolute; - - border-top:1px solid $rowBorderColor; - border-bottom:1px solid $rowBorderColor; - - pointer-events: none; - z-index:15; - } - - &.tabulator-range-highlight{ - .tabulator-cell.tabulator-range-row-header{ - background-color: $rangeHeaderHighlightBackground; - color: $rangeHeaderTextHighlightBackground; - } - - &.tabulator-range-selected{ - .tabulator-cell.tabulator-range-row-header{ - background-color: $rangeHeaderSelectedBackground; - color: $rangeHeaderSelectedTextColor; - } - } - } - - - &.tabulator-range-selected{ - .tabulator-cell.tabulator-range-row-header{ - background-color: $rangeHeaderSelectedBackground; - color: $rangeHeaderSelectedTextColor; - } - } - - //row resize handles - .tabulator-row-resize-handle{ - position:absolute; - right:0; - bottom:0; - left:0; - height:5px; - - &.prev{ - top:0; - bottom:auto; - } - - @media (hover:hover) and (pointer:fine){ - &:hover{ - cursor:ns-resize; - } - } - } - - .tabulator-responsive-collapse{ - box-sizing:border-box; - - padding:5px; - - border-top:1px solid $rowBorderColor; - border-bottom:1px solid $rowBorderColor; - - &:empty{ - display:none; - } - - table{ - font-size:$textSize; - - tr{ - td{ - position: relative; - - &:first-of-type{ - padding-right:10px; - } - } - } - } - } - - //cell element - .tabulator-cell{ - display:inline-block; - position: relative; - box-sizing:border-box; - padding:4px; - border-right:1px solid $rowBorderColor; - vertical-align:middle; - white-space:nowrap; - overflow:hidden; - text-overflow:ellipsis; - outline:none; - - &.tabulator-frozen{ - display: inline-block; - position: sticky; - - left:0; - - background-color: inherit; - - z-index: 11; - - &.tabulator-frozen-left{ - border-right:2px solid $rowBorderColor; - } - - &.tabulator-frozen-right{ - border-left:2px solid $rowBorderColor; - } - } - - &.tabulator-editing{ - border:1px solid $editBoxColor; - outline:none; - - padding: 0; - - input, select{ - border:1px; - background:transparent; - outline:none; - } - } - - &.tabulator-validation-fail{ - border:1px solid $errorColor; - - input, select{ - border:1px; - background:transparent; - - color: $errorColor; - } - } - - //movable row handle - &.tabulator-row-handle{ - display: inline-flex; - align-items:center; - justify-content:center; - - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - - //handle holder - .tabulator-row-handle-box{ - width:80%; - - //Hamburger element - .tabulator-row-handle-bar{ - width:100%; - height:3px; - margin-top:2px; - background:#666; - } - } - } - - &.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){ - background-color: $rowSelectedBackground; - } - - .tabulator-data-tree-branch-empty{ - display:inline-block; - width:7px; - } - - .tabulator-data-tree-branch{ - display:inline-block; - vertical-align:middle; - - height:9px; - width:7px; - - margin-top:-9px; - margin-right:5px; - - border-bottom-left-radius:1px; - - border-left:2px solid $rowBorderColor; - border-bottom:2px solid $rowBorderColor; - } - - .tabulator-data-tree-control{ - - display:inline-flex; - justify-content:center; - align-items:center; - vertical-align:middle; - - height:11px; - width:11px; - - margin-right:5px; - - border:1px solid $rowTextColor; - border-radius:2px; - background:rgba(0, 0, 0, .1); - - overflow:hidden; - - @media (hover:hover) and (pointer:fine){ - &:hover{ - cursor:pointer; - background:rgba(0, 0, 0, .2); - } - } - - .tabulator-data-tree-control-collapse{ - display:inline-block; - position: relative; - - height: 7px; - width: 1px; - - background: transparent; - - &:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - - height: 1px; - width: 7px; - - background: $rowTextColor; - } - } - - .tabulator-data-tree-control-expand{ - display:inline-block; - position: relative; - - height: 7px; - width: 1px; - - background: $rowTextColor; - - &:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - - height: 1px; - width: 7px; - - background: $rowTextColor; - } - } - - } - - .tabulator-responsive-collapse-toggle{ - display: inline-flex; - align-items:center; - justify-content:center; - - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - - height:15px; - width:15px; - - border-radius:20px; - background:#666; - - color:$rowBackgroundColor; - font-weight:bold; - font-size:1.1em; - - @media (hover:hover) and (pointer:fine){ - &:hover{ - opacity:.7; - cursor: pointer; - } - } - - &.open{ - .tabulator-responsive-collapse-toggle-close{ - display:initial; - } - - .tabulator-responsive-collapse-toggle-open{ - display:none; - } - } - - svg{ - stroke:$rowBackgroundColor; - } - - .tabulator-responsive-collapse-toggle-close{ - display:none; - } - } - - .tabulator-traffic-light{ - display: inline-block; - height:14px; - width:14px; - - border-radius:14px; - } - } - - //row grouping element - &.tabulator-group{ - box-sizing:border-box; - border-bottom:1px solid #999; - border-right:1px solid $rowBorderColor; - border-top:1px solid #999; - padding:5px; - padding-left:10px; - background:#ccc; - font-weight:bold; - - min-width: 100%; - - @media (hover:hover) and (pointer:fine){ - &:hover{ - cursor:pointer; - background-color:rgba(0,0,0,.1); - } - } - - &.tabulator-group-visible{ - - .tabulator-arrow{ - margin-right:10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid $sortArrowActive; - border-bottom: 0; - } - - } - - &.tabulator-group-level-1{ - padding-left:30px; - } - - &.tabulator-group-level-2{ - padding-left:50px; - } - - &.tabulator-group-level-3{ - padding-left:70px; - } - - &.tabulator-group-level-4{ - padding-left:90px; - } - - &.tabulator-group-level-5{ - padding-left:110px; - } - - .tabulator-group-toggle{ - display: inline-block; - } - - //sorting arrow - .tabulator-arrow{ - display: inline-block; - width: 0; - height: 0; - margin-right:16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid $sortArrowActive; - vertical-align:middle; - } - - span{ - margin-left:10px; - color:#d00; - } - } - -} - -.tabulator-popup-container{ - position: absolute; - display:inline-block; - box-sizing:border-box; - - background:$rowBackgroundColor; - border:1px solid $rowBorderColor; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, .2); - - font-size:$textSize; - - overflow-y:auto; - -webkit-overflow-scrolling: touch; - - z-index: 10000; -} - -.tabulator-popup{ - padding:5px; - - border-radius: 3px; -} - -.tabulator-tooltip{ - max-width: Min(500px, 100%); - - padding:3px 5px; - - border-radius: 2px; - box-shadow:none; - - font-size:12px; - - pointer-events: none; -} - -.tabulator-menu{ - .tabulator-menu-item{ - position:relative; - box-sizing:border-box; - - padding:5px 10px; - - user-select: none; - - &.tabulator-menu-item-disabled{ - opacity: .5; - } - - @media (hover:hover) and (pointer:fine){ - &:not(.tabulator-menu-item-disabled):hover{ - cursor: pointer; - background: $rowAltBackgroundColor; - } - } - - &.tabulator-menu-item-submenu{ - padding-right:25px; - - &::after { - display: inline-block; - position: absolute; - - top: calc(5px + .4em); - right: 10px; - height: 7px; - width: 7px; - - content: ''; - - border-width: 1px 1px 0 0; - border-style: solid; - border-color: $rowBorderColor; - vertical-align: top; - - transform: rotate(45deg); - } - } - } - - .tabulator-menu-separator{ - border-top:1px solid $rowBorderColor; - } -} - -.tabulator-edit-list{ - max-height:200px; - - font-size:$textSize; - - overflow-y:auto; - -webkit-overflow-scrolling: touch; - - .tabulator-edit-list-item{ - padding:4px; - - color:$rowTextColor; - outline:none; - - &.active{ - color:$rowBackgroundColor; - background:$editBoxColor; - - &.focused{ - outline:1px solid rgba($rowBackgroundColor, .5); - } - } - - &.focused{ - outline:1px solid $editBoxColor; - } - - @media (hover:hover) and (pointer:fine){ - &:hover{ - cursor:pointer; - - color:$rowBackgroundColor; - background:$editBoxColor; - } - } - } - - .tabulator-edit-list-placeholder{ - padding:4px; - - color:$rowTextColor; - text-align: center; - } - - .tabulator-edit-list-group{ - border-bottom:1px solid $rowBorderColor; - - padding:4px; - padding-top:6px; - - color:$rowTextColor; - font-weight:bold; - - } - - .tabulator-edit-list-item, .tabulator-edit-list-group{ - &.tabulator-edit-list-group-level-2{ - padding-left:12px; - } - - &.tabulator-edit-list-group-level-3{ - padding-left:20px; - } - - &.tabulator-edit-list-group-level-4{ - padding-left:28px; - } - - &.tabulator-edit-list-group-level-5{ - padding-left:36px; - } - } -} - - -//RTL Styling - -.tabulator.tabulator-ltr{ - direction: ltr; -} - -.tabulator.tabulator-rtl{ - text-align: initial; - direction: rtl; - - .tabulator-header { - .tabulator-col{ - text-align: initial; - border-left:1px solid $headerBorderColor; - border-right:initial; - - &.tabulator-col-group{ - .tabulator-col-group-cols{ - margin-right:initial; - margin-left:-1px; - } - } - - &.tabulator-sortable{ - .tabulator-col-title{ - padding-right:0; - padding-left:25px; - } - } - - .tabulator-col-content{ - .tabulator-col-sorter{ - left:8px; - right:initial; - } - } - } - } - - .tabulator-row{ - .tabulator-cell{ - border-right:initial; - border-left:1px solid $rowBorderColor; - - .tabulator-data-tree-branch{ - margin-right:initial; - margin-left:5px; - - border-bottom-left-radius:initial; - border-bottom-right-radius:1px; - - border-left:initial; - border-right:2px solid $rowBorderColor; - } - - .tabulator-data-tree-control{ - margin-right:initial; - margin-left:5px; - } - - &.tabulator-frozen{ - - &.tabulator-frozen-left{ - border-left:2px solid $rowBorderColor; - } - - &.tabulator-frozen-right{ - border-right:2px solid $rowBorderColor; - } - } - } - - .tabulator-col-resize-handle{ - &:last-of-type{ - width:3px; - margin-left:0; - margin-right:-3px; - } - } - - } - - .tabulator-footer { - .tabulator-calcs-holder{ - text-align: initial; - } - - } - -} - - -// Table print styling - -.tabulator-print-fullscreen{ - position: absolute; - top:0; - bottom:0; - left:0; - right:0; - - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){ - display:none !important; -} - -.tabulator-print-table{ - border-collapse: collapse; - - .tabulator-data-tree-branch{ - display:inline-block; - vertical-align:middle; - - height:9px; - width:7px; - - margin-top:-9px; - margin-right:5px; - - border-bottom-left-radius:1px; - - border-left:2px solid $rowBorderColor; - border-bottom:2px solid $rowBorderColor; - } - - //row grouping element - .tabulator-print-table-group{ - box-sizing:border-box; - border-bottom:1px solid #999; - border-right:1px solid $rowBorderColor; - border-top:1px solid #999; - padding:5px; - padding-left:10px; - background:#ccc; - font-weight:bold; - - min-width: 100%; - - @media (hover:hover) and (pointer:fine){ - &:hover{ - cursor:pointer; - background-color:rgba(0,0,0,.1); - } - } - - &.tabulator-group-visible{ - - .tabulator-arrow{ - margin-right:10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid $sortArrowActive; - border-bottom: 0; - } - - } - - &.tabulator-group-level-1{ - td{ - padding-left:30px !important; - } - } - - &.tabulator-group-level-2{ - td{ - padding-left:50px !important; - } - } - - &.tabulator-group-level-3{ - td{ - padding-left:70px !important; - } - } - - &.tabulator-group-level-4{ - td{ - padding-left:90px !important; - } - } - - &.tabulator-group-level-5{ - td{ - padding-left:110px !important; - } - } - - .tabulator-group-toggle{ - display: inline-block; - } - - //sorting arrow - .tabulator-arrow{ - display: inline-block; - width: 0; - height: 0; - margin-right:16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid $sortArrowActive; - vertical-align:middle; - } - - span{ - margin-left:10px; - color:#d00; - } - } - - .tabulator-data-tree-control{ - - display:inline-flex; - justify-content:center; - align-items:center; - vertical-align:middle; - - height:11px; - width:11px; - - margin-right:5px; - - border:1px solid $rowTextColor; - border-radius:2px; - background:rgba(0, 0, 0, .1); - - overflow:hidden; - - @media (hover:hover) and (pointer:fine){ - &:hover{ - cursor:pointer; - background:rgba(0, 0, 0, .2); - } - } - - .tabulator-data-tree-control-collapse{ - display:inline-block; - position: relative; - - height: 7px; - width: 1px; - - background: transparent; - - &:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - - height: 1px; - width: 7px; - - background: $rowTextColor; - } - } - - .tabulator-data-tree-control-expand{ - display:inline-block; - position: relative; - - height: 7px; - width: 1px; - - background: $rowTextColor; - - &:after { - position: absolute; - content: ""; - left: -3px; - top: 3px; - - height: 1px; - width: 7px; - - background: $rowTextColor; - } - } - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/functions4.scss b/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/functions4.scss deleted file mode 100644 index 9c6a252..0000000 --- a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/functions4.scss +++ /dev/null @@ -1,118 +0,0 @@ -// Bootstrap functions -// -// Utility mixins and functions for evaluating source code across our variables, maps, and mixins. - -// Ascending -// Used to evaluate Sass maps like our grid breakpoints. -@mixin _assert-ascending($map, $map-name) { - $prev-key: null; - $prev-num: null; - @each $key, $num in $map { - @if $prev-num == null { - // Do nothing - } @else if not comparable($prev-num, $num) { - @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !"; - } @else if $prev-num >= $num { - @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !"; - } - $prev-key: $key; - $prev-num: $num; - } -} - -// Starts at zero -// Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0. -@mixin _assert-starts-at-zero($map) { - $values: map-values($map); - $first-value: nth($values, 1); - @if $first-value != 0 { - @warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}."; - } -} - -// Replace `$search` with `$replace` in `$string` -// Used on our SVG icon backgrounds for custom forms. -// -// @author Hugo Giraudel -// @param {String} $string - Initial string -// @param {String} $search - Substring to replace -// @param {String} $replace ('') - New value -// @return {String} - Updated string -@function str-replace($string, $search, $replace: "") { - $index: str-index($string, $search); - - @if $index { - @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); - } - - @return $string; -} - -// Color contrast -@function color-yiq($color) { - $r: red($color); - $g: green($color); - $b: blue($color); - - $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000; - - @if ($yiq >= $yiq-contrasted-threshold) { - @return $yiq-text-dark; - } @else { - @return $yiq-text-light; - } -} - -// Retrieve color Sass maps -@function color($key: "blue") { - @return map-get($colors, $key); -} - -@function theme-color($key: "primary") { - @return map-get($theme-colors, $key); -} - -@function gray($key: "100") { - @return map-get($grays, $key); -} - -// Request a theme color level -@function theme-color-level($color-name: "primary", $level: 0) { - $color: theme-color($color-name); - $color-base: if($level > 0, $black, $white); - $level: abs($level); - - @return mix($color-base, $color, $level * $theme-color-interval); -} - - -// Tables - -@mixin table-row-variant($state, $background) { - // Exact selectors below required to override `.table-striped` and prevent - // inheritance to nested tables. - .table-#{$state} { - &, - > th, - > td { - background-color: $background; - } - } - - // Hover states for `.table-hover` - // Note: this is not available for cells or rows within `thead` or `tfoot`. - .table-hover { - $hover-background: darken($background, 5%); - - .table-#{$state} { - @include hover { - background-color: $hover-background; - - > td, - > th { - background-color: $hover-background; - } - } - } - } -} diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/functions5.scss b/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/functions5.scss deleted file mode 100644 index 30539b3..0000000 --- a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/functions5.scss +++ /dev/null @@ -1,302 +0,0 @@ -// Bootstrap functions -// -// Utility mixins and functions for evaluating source code across our variables, maps, and mixins. - -// Ascending -// Used to evaluate Sass maps like our grid breakpoints. -@mixin _assert-ascending($map, $map-name) { - $prev-key: null; - $prev-num: null; - @each $key, $num in $map { - @if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" { - // Do nothing - } @else if not comparable($prev-num, $num) { - @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !"; - } @else if $prev-num >= $num { - @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !"; - } - $prev-key: $key; - $prev-num: $num; - } -} - -// Starts at zero -// Used to ensure the min-width of the lowest breakpoint starts at 0. -@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") { - @if length($map) > 0 { - $values: map-values($map); - $first-value: nth($values, 1); - @if $first-value != 0 { - @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}."; - } - } -} - -// Colors -@function to-rgb($value) { - @return red($value), green($value), blue($value); -} - -// stylelint-disable scss/dollar-variable-pattern -@function rgba-css-var($identifier, $target) { - @if $identifier == "body" and $target == "bg" { - @return rgba(var(--#{$variable-prefix}#{$identifier}-bg-rgb), var(--#{$variable-prefix}#{$target}-opacity)); - } @if $identifier == "body" and $target == "text" { - @return rgba(var(--#{$variable-prefix}#{$identifier}-color-rgb), var(--#{$variable-prefix}#{$target}-opacity)); - } @else { - @return rgba(var(--#{$variable-prefix}#{$identifier}-rgb), var(--#{$variable-prefix}#{$target}-opacity)); - } -} - -@function map-loop($map, $func, $args...) { - $_map: (); - - @each $key, $value in $map { - // allow to pass the $key and $value of the map as an function argument - $_args: (); - @each $arg in $args { - $_args: append($_args, if($arg == "$key", $key, if($arg == "$value", $value, $arg))); - } - - $_map: map-merge($_map, ($key: call(get-function($func), $_args...))); - } - - @return $_map; -} -// stylelint-enable scss/dollar-variable-pattern - -@function varify($list) { - $result: null; - @each $entry in $list { - $result: append($result, var(--#{$variable-prefix}#{$entry}), space); - } - @return $result; -} - -// Internal Bootstrap function to turn maps into its negative variant. -// It prefixes the keys with `n` and makes the value negative. -@function negativify-map($map) { - $result: (); - @each $key, $value in $map { - @if $key != 0 { - $result: map-merge($result, ("n" + $key: (-$value))); - } - } - @return $result; -} - -// Get multiple keys from a sass map -@function map-get-multiple($map, $values) { - $result: (); - @each $key, $value in $map { - @if (index($values, $key) != null) { - $result: map-merge($result, ($key: $value)); - } - } - @return $result; -} - -// Merge multiple maps -@function map-merge-multiple($maps...) { - $merged-maps: (); - - @each $map in $maps { - $merged-maps: map-merge($merged-maps, $map); - } - @return $merged-maps; -} - -// Replace `$search` with `$replace` in `$string` -// Used on our SVG icon backgrounds for custom forms. -// -// @author Hugo Giraudel -// @param {String} $string - Initial string -// @param {String} $search - Substring to replace -// @param {String} $replace ('') - New value -// @return {String} - Updated string -@function str-replace($string, $search, $replace: "") { - $index: str-index($string, $search); - - @if $index { - @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); - } - - @return $string; -} - -// See https://codepen.io/kevinweber/pen/dXWoRw -// -// Requires the use of quotes around data URIs. - -@function escape-svg($string) { - @if str-index($string, "data:image/svg+xml") { - @each $char, $encoded in $escaped-characters { - // Do not escape the url brackets - @if str-index($string, "url(") == 1 { - $string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}"); - } @else { - $string: str-replace($string, $char, $encoded); - } - } - } - - @return $string; -} - -// Color contrast -// See https://github.com/twbs/bootstrap/pull/30168 - -// A list of pre-calculated numbers of pow(divide((divide($value, 255) + .055), 1.055), 2.4). (from 0 to 255) -// stylelint-disable-next-line scss/dollar-variable-default, scss/dollar-variable-pattern -$_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003 .0033 .0037 .004 .0044 .0048 .0052 .0056 .006 .0065 .007 .0075 .008 .0086 .0091 .0097 .0103 .011 .0116 .0123 .013 .0137 .0144 .0152 .016 .0168 .0176 .0185 .0194 .0203 .0212 .0222 .0232 .0242 .0252 .0262 .0273 .0284 .0296 .0307 .0319 .0331 .0343 .0356 .0369 .0382 .0395 .0409 .0423 .0437 .0452 .0467 .0482 .0497 .0513 .0529 .0545 .0561 .0578 .0595 .0612 .063 .0648 .0666 .0685 .0704 .0723 .0742 .0762 .0782 .0802 .0823 .0844 .0865 .0887 .0908 .0931 .0953 .0976 .0999 .1022 .1046 .107 .1095 .1119 .1144 .117 .1195 .1221 .1248 .1274 .1301 .1329 .1356 .1384 .1413 .1441 .147 .15 .1529 .1559 .159 .162 .1651 .1683 .1714 .1746 .1779 .1812 .1845 .1878 .1912 .1946 .1981 .2016 .2051 .2086 .2122 .2159 .2195 .2232 .227 .2307 .2346 .2384 .2423 .2462 .2502 .2542 .2582 .2623 .2664 .2705 .2747 .2789 .2831 .2874 .2918 .2961 .3005 .305 .3095 .314 .3185 .3231 .3278 .3325 .3372 .3419 .3467 .3515 .3564 .3613 .3663 .3712 .3763 .3813 .3864 .3916 .3968 .402 .4072 .4125 .4179 .4233 .4287 .4342 .4397 .4452 .4508 .4564 .4621 .4678 .4735 .4793 .4851 .491 .4969 .5029 .5089 .5149 .521 .5271 .5333 .5395 .5457 .552 .5583 .5647 .5711 .5776 .5841 .5906 .5972 .6038 .6105 .6172 .624 .6308 .6376 .6445 .6514 .6584 .6654 .6724 .6795 .6867 .6939 .7011 .7084 .7157 .7231 .7305 .7379 .7454 .7529 .7605 .7682 .7758 .7835 .7913 .7991 .807 .8148 .8228 .8308 .8388 .8469 .855 .8632 .8714 .8796 .8879 .8963 .9047 .9131 .9216 .9301 .9387 .9473 .956 .9647 .9734 .9823 .9911 1; - -@function color-contrast($background, $color-contrast-dark: $color-contrast-dark, $color-contrast-light: $color-contrast-light, $min-contrast-ratio: $min-contrast-ratio) { - $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black; - $max-ratio: 0; - $max-ratio-color: null; - - @each $color in $foregrounds { - $contrast-ratio: contrast-ratio($background, $color); - @if $contrast-ratio > $min-contrast-ratio { - @return $color; - } @else if $contrast-ratio > $max-ratio { - $max-ratio: $contrast-ratio; - $max-ratio-color: $color; - } - } - - @warn "Found no color leading to #{$min-contrast-ratio}:1 contrast ratio against #{$background}..."; - - @return $max-ratio-color; -} - -@function contrast-ratio($background, $foreground: $color-contrast-light) { - $l1: luminance($background); - $l2: luminance(opaque($background, $foreground)); - - @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05)); -} - -// Return WCAG2.0 relative luminance -// See https://www.w3.org/WAI/GL/wiki/Relative_luminance -// See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests -@function luminance($color) { - $rgb: ( - "r": red($color), - "g": green($color), - "b": blue($color) - ); - - @each $name, $value in $rgb { - $value: if(divide($value, 255) < .03928, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1)); - $rgb: map-merge($rgb, ($name: $value)); - } - - @return (map-get($rgb, "r") * .2126) + (map-get($rgb, "g") * .7152) + (map-get($rgb, "b") * .0722); -} - -// Return opaque color -// opaque(#fff, rgba(0, 0, 0, .5)) => #808080 -@function opaque($background, $foreground) { - @return mix(rgba($foreground, 1), $background, opacity($foreground) * 100); -} - -// scss-docs-start color-functions -// Tint a color: mix a color with white -@function tint-color($color, $weight) { - @return mix(white, $color, $weight); -} - -// Shade a color: mix a color with black -@function shade-color($color, $weight) { - @return mix(black, $color, $weight); -} - -// Shade the color if the weight is positive, else tint it -@function shift-color($color, $weight) { - @return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight)); -} -// scss-docs-end color-functions - -// Return valid calc -@function add($value1, $value2, $return-calc: true) { - @if $value1 == null { - @return $value2; - } - - @if $value2 == null { - @return $value1; - } - - @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) { - @return $value1 + $value2; - } - - @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2); -} - -@function subtract($value1, $value2, $return-calc: true) { - @if $value1 == null and $value2 == null { - @return null; - } - - @if $value1 == null { - @return -$value2; - } - - @if $value2 == null { - @return $value1; - } - - @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) { - @return $value1 - $value2; - } - - @if type-of($value2) != number { - $value2: unquote("(") + $value2 + unquote(")"); - } - - @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2); -} - -@function divide($dividend, $divisor, $precision: 10) { - $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1); - $dividend: abs($dividend); - $divisor: abs($divisor); - @if $dividend == 0 { - @return 0; - } - @if $divisor == 0 { - @error "Cannot divide by 0"; - } - $remainder: $dividend; - $result: 0; - $factor: 10; - @while ($remainder > 0 and $precision >= 0) { - $quotient: 0; - @while ($remainder >= $divisor) { - $remainder: $remainder - $divisor; - $quotient: $quotient + 1; - } - $result: $result * 10 + $quotient; - $factor: $factor * .1; - $remainder: $remainder * 10; - $precision: $precision - 1; - @if ($precision < 0 and $remainder >= $divisor * 5) { - $result: $result + 1; - } - } - $result: $result * $factor * $sign; - $dividend-unit: unit($dividend); - $divisor-unit: unit($divisor); - $unit-map: ( - "px": 1px, - "rem": 1rem, - "em": 1em, - "%": 1% - ); - @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) { - $result: $result * map-get($unit-map, $dividend-unit); - } - @return $result; -} diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap3.scss b/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap3.scss deleted file mode 100644 index 8bcc219..0000000 --- a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +++ /dev/null @@ -1,288 +0,0 @@ -@import "variables3.scss"; - -// Style conversion file, bootstrap to tabulator - -//Main Theme Variables -$backgroundColor: $table-bg !default; //background color of tabulator -$borderColor:$table-border-color !default; //border to tabulator -$textSize:$font-size-base !default; //table text size - -//header theming -$headerBackgroundColor:#fff !default; //border to tabulator -$headerSeparatorColor:$table-border-color !default; //header bottom separator color - -$cellPadding:$table-cell-padding !default; //padding round header -$cellPaddingCondensed:$table-condensed-cell-padding !default; //padding round header - -//column header arrows -$sortArrowActive: #666 !default; -$sortArrowInactive: #bbb !default; - -//row theming -$rowBackgroundColor:$backgroundColor !default; //table row background color -$rowAltBackgroundColor:$table-bg-accent !default; //table row background color -$rowBorderColor:$table-border-color !default; //table border color -$rowHoverBackground:$table-bg-hover !default; //row background color on hover - -$rowSelectedBackground: #9ABCEA !default; //row background color when selected -$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered - - -$editBoxColor:#1D68CD !default; //border color for edit boxes -$errorColor:#dd0000 !default; //error indication - -//footer theming -$footerBorderColor:$table-border-color !default; //footer border color -$footerSeparatorColor:$table-border-color !default; //footer bottom separator color -$footerActiveColor:#d00 !default; //footer bottom active text color - -@import "../../tabulator.scss"; - -.tabulator{ - background-color: $backgroundColor; - margin-bottom: $line-height-computed; - border:none; - - .tabulator-header{ - border-bottom:2px solid $headerSeparatorColor; - background-color: $headerBackgroundColor; - color:inherit; - - .tabulator-col{ - background-color: $headerBackgroundColor; - border-right:none; - - .tabulator-col-content{ - padding:$cellPadding; - } - - &.tabulator-col-group{ - .tabulator-col-group-cols{ - border-top:1px solid $borderColor; - } - } - } - - .tabulator-calcs-holder{ - width:100%; - border-bottom:1px solid $headerSeparatorColor; - } - } - - .tabulator-tableholder{ - .tabulator-placeholder{ - span{ - color:#000; - } - } - - .tabulator-table{ - color:inherit; - } - } - - .tabulator-footer{ - border-top:2px solid $footerSeparatorColor; - background: inherit; - - .tabulator-calcs-holder{ - border-bottom:1px solid $rowBorderColor; - border-top:1px solid $rowBorderColor; - } - - .tabulator-paginator{ - color:inherit; - } - } - - //Bootstrap theming classes - - &.table-striped{ - .tabulator-row{ - &.tabulator-row-even{ - background-color: $rowAltBackgroundColor; - } - } - } - - &.table-bordered{ - border:1px solid $borderColor; - - .tabulator-header{ - .tabulator-col{ - border-right:1px solid $borderColor; - } - } - - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - .tabulator-cell{ - border-right:1px solid $borderColor; - } - } - } - } - } - - &.table-condensed{ - .tabulator-header{ - .tabulator-col{ - .tabulator-col-content{ - padding:$cellPaddingCondensed; - } - } - } - - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - min-height:$textSize + ($cellPaddingCondensed * 2); - - .tabulator-cell{ - padding:$cellPaddingCondensed; - } - } - } - } - } - - - //row colors - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - &.active{ - background:$table-bg-active!important; - } - &.success{ - background:$state-success-bg!important; - } - &.info{ - background: $state-info-bg!important; - } - &.warning{ - background:$state-warning-bg!important; - } - &.danger{ - background:$state-danger-bg!important; - } - } - } - } -} - -//row element -.tabulator-row{ - min-height:$textSize + ($cellPadding * 2); - border-bottom:1px solid $rowBorderColor; - - &.tabulator-row-even{ - background-color: transparent; - } - - @media (hover:hover) and (pointer:fine){ - &.tabulator-selectable:hover{ - background-color:$rowHoverBackground !important; - } - } - - &.tabulator-selected{ - background-color:$rowSelectedBackground !important; - } - - @media (hover:hover) and (pointer:fine){ - &.tabulator-selected:hover{ - background-color:$rowSelectedBackgroundHover !important; - cursor: pointer; - } - } - - .tabulator-cell{ - padding:$cellPadding; - border-right:none; - - &:last-of-type{ - border-right: none; - } - - .tabulator-data-tree-control{ - border:1px solid #333; - - .tabulator-data-tree-control-collapse{ - &:after { - background: #333; - } - } - - .tabulator-data-tree-control-expand{ - background: #333; - - &:after { - background: #333; - } - } - } - } - - &.tabulator-group{ - background:#fafafa; - - span{ - color:#666; - } - } -} - -.tabulator-edit-select-list{ - .tabulator-edit-select-list-item{ - color:inherit; - } - - .tabulator-edit-select-list-notice{ - color:inherit; - } - - .tabulator-edit-select-list-group{ - color:inherit; - } -} - -.tabulator.tabulator-rtl{ - .tabulator-header { - .tabulator-col{ - border:none; - } - } -} - -.tabulator-print-table{ - border-collapse: collapse; - - .tabulator-print-table-group{ - background:#fafafa; - - span{ - color:#666; - } - } - - .tabulator-data-tree-control{ - border:1px solid #333; - - .tabulator-data-tree-control-collapse{ - &:after { - background: #333; - } - } - - .tabulator-data-tree-control-expand{ - background: #333; - - &:after { - background: #333; - } - } - } -} - diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap4.scss b/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap4.scss deleted file mode 100644 index c914b9c..0000000 --- a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +++ /dev/null @@ -1,553 +0,0 @@ -@import "functions4.scss"; -@import "variables4.scss"; - -// Style conversion file, bootstrap to tabulator - -//Main Theme Variables -$backgroundColor: $table-bg !default; //background color of tabulator -$borderColor:$table-border-color !default; //border to tabulator -$textSize:16px !default; //table text size - -//header theming -$headerBackgroundColor:#fff !default; //border to tabulator -$headerSeparatorColor:$table-border-color !default; //header bottom separator color - -$cellPadding:12px !default; //padding round header - -//column header arrows -$sortArrowActive: #666 !default; -$sortArrowInactive: #bbb !default; - -//row theming -$rowBackgroundColor:$backgroundColor !default; //table row background color -$rowAltBackgroundColor: $table-accent-bg !default; //table row background color -$rowBorderColor:$table-border-color !default; //table border color -$rowHoverBackground:$table-hover-bg !default; //row background color on hover - -$rowSelectedBackground: #9ABCEA !default; //row background color when selected -$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered - - -$editBoxColor:#1D68CD !default; //border color for edit boxes -$errorColor:#dd0000 !default; //error indication - -//footer theming -$footerBorderColor:$pagination-border-color !default; //footer border color -$footerSeparatorColor:$table-border-color !default; //footer bottom separator color -$footerActiveColor:$pagination-active-color !default; //footer bottom active text color - -$table-cell-padding-sm: 5px; - -@import "../../tabulator.scss"; - -.tabulator{ - background-color: $backgroundColor; - border:none; - - .tabulator-header{ - border-top:1px solid $headerSeparatorColor; - border-bottom:2px solid $headerSeparatorColor; - color:inherit; - - .tabulator-col{ - border-right:none; - background-color: $headerBackgroundColor; - - .tabulator-col-content{ - padding:$cellPadding; - - .tabulator-col-sorter{ - right:0; - } - } - - &.tabulator-col-group{ - .tabulator-col-group-cols{ - border-top:1px solid $borderColor; - } - } - - .tabulator-header-filter{ - input{ - padding: .375rem .75rem; - - background-color: #fff; - background-clip: padding-box; - - border: 1px solid #ced4da; - border-radius: .25rem; - - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - - font-size: 1rem; - line-height: 1.5; - color: #495057; - - &:focus { - color: #495057; - background-color: #fff; - border:1px solid $editBoxColor; - outline: 0; - // box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25); - } - } - } - } - - .tabulator-calcs-holder{ - width:100%; - border-bottom:1px solid $headerSeparatorColor; - } - } - - .tabulator-tableholder{ - .tabulator-placeholder{ - span{ - color:#000; - } - } - - .tabulator-table{ - color:inherit; - } - } - - .tabulator-footer{ - color:inherit; - - .tabulator-paginator{ - color:inherit; - } - - .tabulator-pages{ - margin:0; - } - - .tabulator-page{ - margin:0; - margin-top:5px; - padding:8px 12px; - - &[data-page="first"]{ - border-top-left-radius:4px; - border-bottom-left-radius:4px; - } - - &[data-page="last"]{ - border:1px solid $footerBorderColor; - border-top-right-radius:4px; - border-bottom-right-radius:4px; - } - - &.active{ - border-color:$pagination-active-border-color; - background-color:$pagination-active-bg; - color:$footerActiveColor; - } - - &:disabled{ - border-color:$pagination-disabled-border-color; - background:$pagination-disabled-bg; - color:$pagination-disabled-color; - } - - &:not(.disabled){ - @media (hover:hover) and (pointer:fine){ - &:hover{ - border-color:$pagination-hover-border-color; - background:$pagination-hover-bg; - color:$pagination-hover-color; - } - } - } - } - } - - //Bootstrap theming classes - - &.thead-dark{ - .tabulator-header{ - border-color: $table-dark-border-color; - background-color: $table-dark-bg; - color: $table-dark-color; - - .tabulator-col{ - border-color: $table-dark-border-color; - background-color: $table-dark-bg; - color: $table-dark-color; - } - } - } - - &.table-dark{ - background-color: $table-dark-bg; - - &:not(.thead-light) .tabulator-header{ - border-color: $table-dark-border-color; - background-color: $table-dark-bg; - color: $table-dark-color; - - .tabulator-col{ - border-color: $table-dark-border-color; - background-color: $table-dark-bg; - color: $table-dark-color; - } - } - - .tabulator-tableholder{ - color: $table-dark-color; - } - - - .tabulator-row{ - border-color: $table-dark-border-color; - background-color: $table-dark-bg; - color: $table-dark-color; - - @media (hover:hover) and (pointer:fine){ - &:hover{ - background-color: $table-dark-border-color; - - .tabulator-cell{ - background-color: $table-dark-hover-bg; - } - } - } - - &.tabulator-selected{ - background-color:$rowSelectedBackground; - } - } - - .tabulator-footer{ - border-color: $table-dark-border-color !important; - - .tabulator-calcs-holder{ - border-color: $table-dark-border-color !important; - background:$table-dark-bg !important; - - .tabulator-row{ - border-color: $table-dark-border-color !important; - background-color: $table-dark-bg !important; - color: $table-dark-color !important; - } - } - } - } - - &.table-striped{ - &:not(.table-dark){ - .tabulator-row{ - &.tabulator-row-even{ - background-color: $rowAltBackgroundColor; - - &.tabulator-selected{ - background-color:$rowSelectedBackground; - } - - @media (hover:hover) and (pointer:fine){ - &.tabulator-selectable:hover{ - background-color:$rowHoverBackground; - cursor: pointer; - } - - &.tabulator-selected:hover{ - background-color:$rowSelectedBackgroundHover; - cursor: pointer; - } - } - } - } - } - - &.table-dark{ - .tabulator-row{ - &:nth-child(even){ - .tabulator-cell{ - background-color: $table-dark-accent-bg; - } - } - } - } - } - - &.table-bordered{ - border:1px solid $borderColor; - - .tabulator-header{ - .tabulator-col{ - border-right:1px solid $borderColor; - } - } - - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - .tabulator-cell{ - border-right:1px solid $borderColor; - } - } - } - } - } - - - &.table-borderless{ - .tabulator-header{ - border:none; - } - - .tabulator-row{ - border:none; - } - } - - &.table-sm{ - .tabulator-header{ - .tabulator-col{ - .tabulator-col-content{ - padding:$table-cell-padding-sm !important; - } - } - } - - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - min-height:$textSize + ($table-cell-padding-sm * 2); - - .tabulator-cell{ - padding:$table-cell-padding-sm !important; - } - } - } - } - } - - - //row colors - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - &.table-primary{ - background:theme-color-level("primary", -9) !important; - } - &.table-secondary{ - background:theme-color-level("secondary", -9) !important; - } - &.table-success{ - background:theme-color-level("success", -9) !important; - } - &.table-info{ - background:theme-color-level("info", -9) !important; - } - &.table-warning{ - background:theme-color-level("warning", -9) !important; - } - &.table-danger{ - background:theme-color-level("danger", -9) !important; - } - &.table-light{ - background:theme-color-level("light", -9) !important; - } - &.table-dark{ - background:theme-color-level("dark", -9) !important; - } - &.table-active{ - background:$table-active-bg !important; - } - - &.bg-primary{ - background:theme-color-level("primary", 0) !important; - } - &.bg-secondary{ - background:theme-color-level("secondary", 0) !important; - } - &.bg-success{ - background:theme-color-level("success", 0) !important; - } - &.bg-info{ - background:theme-color-level("info", 0) !important; - } - &.bg-warning{ - background:theme-color-level("warning", 0) !important; - } - &.bg-danger{ - background:theme-color-level("danger", 0) !important; - } - &.bg-light{ - background:theme-color-level("light", 0) !important; - } - &.bg-dark{ - background:theme-color-level("dark", 0) !important; - } - &.bg-active{ - background:$table-active-bg !important; - } - - .tabulator-cell{ - &.table-primary{ - background:theme-color-level("primary", -9) !important; - } - &.table-secondary{ - background:theme-color-level("secondary", -9) !important; - } - &.table-success{ - background:theme-color-level("success", -9) !important; - } - &.table-info{ - background:theme-color-level("info", -9) !important; - } - &.table-warning{ - background:theme-color-level("warning", -9) !important; - } - &.table-danger{ - background:theme-color-level("danger", -9) !important; - } - &.table-light{ - background:theme-color-level("light", -9) !important; - } - &.table-dark{ - background:theme-color-level("dark", -9) !important; - } - &.table-active{ - background:$table-active-bg !important; - } - - &.bg-primary{ - background:theme-color-level("primary", 0) !important; - } - &.bg-secondary{ - background:theme-color-level("secondary", 0) !important; - } - &.bg-success{ - background:theme-color-level("success", 0) !important; - } - &.bg-info{ - background:theme-color-level("info", 0) !important; - } - &.bg-warning{ - background:theme-color-level("warning", 0) !important; - } - &.bg-danger{ - background:theme-color-level("danger", 0) !important; - } - &.bg-light{ - background:theme-color-level("light", 0) !important; - } - &.bg-dark{ - background:theme-color-level("dark", 0) !important; - } - &.bg-active{ - background:$table-active-bg !important; - } - } - } - } - } -} - -.tabulator-row{ - min-height:$textSize + ($cellPadding * 2); - border-bottom:1px solid $rowBorderColor; - - .tabulator-cell{ - padding:$cellPadding; - border-right:none; - - &:last-of-type{ - border-right: none; - } - - .tabulator-data-tree-control{ - border:1px solid #ccc; - - .tabulator-data-tree-control-collapse{ - &:after { - background: #ccc; - } - } - - .tabulator-data-tree-control-expand{ - background: #ccc; - - &:after { - background: #ccc; - } - } - } - } - - &.tabulator-group{ - background:#fafafa; - - span{ - color:#666; - } - } -} - -.tabulator-edit-select-list{ - background:$headerBackgroundColor; - - .tabulator-edit-select-list-item{ - &.active{ - color:$headerBackgroundColor; - - &.focused{ - outline:1px solid rgba($headerBackgroundColor, .5); - } - } - - @media (hover:hover) and (pointer:fine){ - &:hover{ - color:$headerBackgroundColor; - } - } - } - - .tabulator-edit-select-list-notice{ - color:inherit; - } - - .tabulator-edit-select-list-group{ - color:inherit; - } -} - -.tabulator.tabulator-rtl{ - .tabulator-header { - .tabulator-col{ - text-align: initial; - border-left:initial; - } - } -} - -.tabulator-print-table{ - .tabulator-print-table-group{ - background:#fafafa; - - span{ - color:#666; - } - } - - .tabulator-data-tree-control{ - color:inherit; - - .tabulator-data-tree-control-collapse{ - &:after { - background: #ccc; - } - } - - .tabulator-data-tree-control-expand{ - background: #ccc; - - &:after { - background: #ccc; - } - } - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap5.scss b/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap5.scss deleted file mode 100644 index 2c9b6c5..0000000 --- a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +++ /dev/null @@ -1,585 +0,0 @@ -@import "functions5.scss"; -@import "variables5.scss"; - -// Style conversion file, bootstrap to tabulator - -//Main Theme Variables -$backgroundColor: $table-bg !default; //background color of tabulator -$borderColor:$table-border-color !default; //border to tabulator -$textSize:16px !default; //table text size - -//header theming -$headerBackgroundColor:$table-bg !default; //border to tabulator -$headerForegroundColor:inherit !default; //border to tabulator -$headerSeparatorColor:$table-border-color !default; //header bottom separator color - -$cellPadding:12px !default; //padding round header - -//column header arrows -$sortArrowActive: #666 !default; -$sortArrowInactive: #bbb !default; - -//row theming -$rowBackgroundColor:$backgroundColor !default; //table row background color -$rowAltBackgroundColor: $table-striped-bg !default; //table row background color -$rowBorderColor:$table-border-color !default; //table border color -$rowHoverBackground:$table-hover-bg !default; //row background color on hover - -$rowSelectedBackground: #9ABCEA !default; //row background color when selected -$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered - - -$editBoxColor:#1D68CD !default; //border color for edit boxes -$errorColor:#dd0000 !default; //error indication - -//footer theming -$footerBorderColor:$pagination-border-color !default; //footer border color -$footerSeparatorColor:$table-border-color !default; //footer bottom separator color -$footerActiveColor:$pagination-active-color !default; //footer bottom active text color - -$table-cell-padding-sm: 5px; - -@import "../../tabulator.scss"; - -.tabulator{ - background-color: $backgroundColor; - border:none; - - .tabulator-header{ - border-top:1px solid $headerSeparatorColor; - border-bottom:2px solid $headerSeparatorColor; - color:$headerForegroundColor; - - .tabulator-col{ - border-right:none; - background-color: $headerBackgroundColor; - - .tabulator-col-content{ - padding:$cellPadding; - - .tabulator-col-sorter{ - right:0; - } - } - - &.tabulator-col-group{ - .tabulator-col-group-cols{ - border-top:1px solid $borderColor; - } - } - - .tabulator-header-filter{ - input{ - padding: .375rem .75rem; - - background-color: #fff; - background-clip: padding-box; - - border: 1px solid #ced4da; - border-radius: .25rem; - - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - - font-size: 1rem; - line-height: 1.5; - color: #495057; - - &:focus { - color: #495057; - background-color: #fff; - border:1px solid $editBoxColor; - outline: 0; - // box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25); - } - } - } - } - - .tabulator-calcs-holder{ - width:100%; - border-bottom:1px solid $headerSeparatorColor; - } - } - - .tabulator-tableholder{ - .tabulator-placeholder{ - span{ - color:#000; - } - } - - .tabulator-table{ - color:inherit; - } - } - - .tabulator-footer{ - color:inherit; - - .tabulator-paginator{ - color:inherit; - } - - .tabulator-pages{ - margin:0; - } - - .tabulator-page{ - margin:0; - margin-top:5px; - padding:8px 12px; - - &[data-page="first"]{ - border-top-left-radius:4px; - border-bottom-left-radius:4px; - } - - &[data-page="last"]{ - border:1px solid $footerBorderColor; - border-top-right-radius:4px; - border-bottom-right-radius:4px; - } - - &.active{ - border-color:$pagination-active-border-color; - background-color:$pagination-active-bg; - color:$footerActiveColor; - } - - &:disabled{ - border-color:$pagination-disabled-border-color; - background:$pagination-disabled-bg; - color:$pagination-disabled-color; - } - - &:not(.disabled){ - @media (hover:hover) and (pointer:fine){ - &:hover{ - border-color:$pagination-hover-border-color; - background:$pagination-hover-bg; - color:$pagination-hover-color; - } - } - } - } - } - - //Bootstrap theming classes - - &.thead-dark{ - .tabulator-header{ - border-color: $borderColor; - background-color: $backgroundColor; - color: $table-color; - - .tabulator-col{ - border-color: $borderColor; - background-color: $backgroundColor; - color: $table-color; - } - } - } - - &.table{ - background-color: $backgroundColor; - - &:not(.thead-light) .tabulator-header{ - border-color: $borderColor; - background-color: $backgroundColor; - color: $table-color; - - .tabulator-col{ - border-color: $borderColor; - background-color: $backgroundColor; - color: $table-color; - } - } - - .tabulator-tableholder{ - color: $table-color; - } - - - .tabulator-row{ - border-color: $borderColor; - background-color: $backgroundColor; - color: $table-color; - - @media (hover:hover) and (pointer:fine){ - &:hover{ - background-color: $borderColor; - - .tabulator-cell{ - background-color: $table-hover-bg; - } - } - } - - &.tabulator-selected{ - background-color:$rowSelectedBackground; - } - } - - .tabulator-footer{ - border-color: $borderColor !important; - - .tabulator-calcs-holder{ - border-color: $borderColor !important; - background:$backgroundColor !important; - - .tabulator-row{ - border-color: $borderColor !important; - background-color: $backgroundColor !important; - color: $table-color !important; - } - } - } - } - - &.table-striped{ - &:not(.table){ - .tabulator-row{ - &.tabulator-row-even{ - background-color: $rowAltBackgroundColor; - - &.tabulator-selected{ - background-color:$rowSelectedBackground; - } - - @media (hover:hover) and (pointer:fine){ - &.tabulator-selectable:hover{ - background-color:$rowHoverBackground; - cursor: pointer; - } - - &.tabulator-selected:hover{ - background-color:$rowSelectedBackgroundHover; - cursor: pointer; - } - } - } - } - } - - &.table{ - .tabulator-row{ - &:nth-child(even){ - .tabulator-cell{ - background-color: $table-accent-bg; - } - } - } - } - } - - &.table-bordered{ - border:1px solid $borderColor; - - .tabulator-header{ - .tabulator-col{ - border-right:1px solid $borderColor; - } - } - - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - .tabulator-cell{ - border-right:1px solid $borderColor; - } - } - } - } - } - - - &.table-borderless{ - .tabulator-header{ - border:none; - } - - .tabulator-row{ - border:none; - } - } - - &.table-sm{ - .tabulator-header{ - .tabulator-col{ - .tabulator-col-content{ - padding:$table-cell-padding-sm !important; - } - } - } - - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - min-height:$textSize + ($table-cell-padding-sm * 2); - - .tabulator-cell{ - padding:$table-cell-padding-sm !important; - } - } - } - } - - .tabulator-row{ - padding-top: 0; - padding-bottom: 0; - } - - .tabulator-col-resize-handle{ - padding:0; - } - } - - - //row colors - .tabulator-tableholder{ - .tabulator-table{ - .tabulator-row{ - &.table-primary{ - background:map-get($table-variants, "primary") !important; - } - &.table-secondary{ - background:map-get($table-variants, "secondary") !important; - } - &.table-success{ - background:map-get($table-variants, "success") !important; - } - &.table-info{ - background:map-get($table-variants, "info") !important; - } - &.table-warning{ - background:map-get($table-variants, "warning") !important; - } - &.table-danger{ - background:map-get($table-variants, "danger") !important; - } - &.table-light{ - background:map-get($table-variants, "light") !important; - } - &.table{ - background:map-get($table-variants, "dark") !important; - } - &.table-active{ - background:$table-active-bg !important; - } - - &.bg-primary{ - background:map-get($table-variants, "primary") !important; - } - &.bg-secondary{ - background:map-get($table-variants, "secondary") !important; - } - &.bg-success{ - background:map-get($table-variants, "success") !important; - } - &.bg-info{ - background:map-get($table-variants, "info") !important; - } - &.bg-warning{ - background:map-get($table-variants, "warning") !important; - } - &.bg-danger{ - background:map-get($table-variants, "danger") !important; - } - &.bg-light{ - background:map-get($table-variants, "light") !important; - } - &.bg-dark{ - background:map-get($table-variants, "dark") !important; - } - &.bg-active{ - background:$table-active-bg !important; - } - - .tabulator-cell{ - &.table-primary{ - background:map-get($table-variants, "primary") !important; - } - &.table-secondary{ - background:map-get($table-variants, "secondary") !important; - } - &.table-success{ - background:map-get($table-variants, "success") !important; - } - &.table-info{ - background:map-get($table-variants, "info") !important; - } - &.table-warning{ - background:map-get($table-variants, "warning") !important; - } - &.table-danger{ - background:map-get($table-variants, "danger") !important; - } - &.table-light{ - background:map-get($table-variants, "light") !important; - } - &.table{ - background:map-get($table-variants, "dark") !important; - } - &.table-active{ - background:$table-active-bg !important; - } - - &.bg-primary{ - background:map-get($table-variants, "primary") !important; - } - &.bg-secondary{ - background:map-get($table-variants, "secondary") !important; - } - &.bg-success{ - background:map-get($table-variants, "success") !important; - } - &.bg-info{ - background:map-get($table-variants, "info") !important; - } - &.bg-warning{ - background:map-get($table-variants, "warning") !important; - } - &.bg-danger{ - background:map-get($table-variants, "danger") !important; - } - &.bg-light{ - background:map-get($table-variants, "light") !important; - } - &.bg-dark{ - background:map-get($table-variants, "dark") !important; - } - &.bg-active{ - background:$table-active-bg !important; - } - } - } - } - } -} - -.tabulator-row{ - min-height:$textSize + ($cellPadding * 2); - border-bottom:1px solid $rowBorderColor; - - .tabulator-cell{ - padding:$cellPadding; - border-right:none; - - &:last-of-type{ - border-right: none; - } - - .tabulator-data-tree-control{ - border:1px solid #ccc; - - .tabulator-data-tree-control-collapse{ - &:after { - background: #ccc; - } - } - - .tabulator-data-tree-control-expand{ - background: #ccc; - - &:after { - background: #ccc; - } - } - } - } - - &.tabulator-group{ - background:#fafafa; - - span{ - color:#666; - } - } -} - -.tabulator-edit-select-list{ - background:$headerBackgroundColor; - - .tabulator-edit-select-list-item{ - &.active{ - color:$headerBackgroundColor; - - &.focused{ - outline:1px solid rgba($headerBackgroundColor, .5); - } - } - - @media (hover:hover) and (pointer:fine){ - &:hover{ - color:$headerBackgroundColor; - } - } - } - - .tabulator-edit-select-list-notice{ - color:inherit; - } - - .tabulator-edit-select-list-group{ - color:inherit; - } -} - -.tabulator.tabulator-rtl{ - .tabulator-header { - .tabulator-col{ - text-align: initial; - border-left:initial; - } - } -} - -.tabulator-print-table{ - .tabulator-print-table-group{ - background:#fafafa; - - span{ - color:#666; - } - } - - .tabulator-data-tree-control{ - color:inherit; - - .tabulator-data-tree-control-collapse{ - &:after { - background: #ccc; - } - } - - .tabulator-data-tree-control-expand{ - background: #ccc; - - &:after { - background: #ccc; - } - } - } -} - -.tabulator-popup-container{ - background:#fff; -} - -.tabulator-edit-list{ - .tabulator-edit-list-item{ - &.active{ - color:#fff; - - &.focused{ - outline:1px solid rgba(#fff, .5); - } - } - - @media (hover:hover) and (pointer:fine){ - &:hover{ - color:#fff; - } - } - } -} \ No newline at end of file diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables3.scss b/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables3.scss deleted file mode 100644 index 572c983..0000000 --- a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables3.scss +++ /dev/null @@ -1,870 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -$gray-base: #000 !default; -$gray-darker: lighten($gray-base, 13.5%) !default; // #222 -$gray-dark: lighten($gray-base, 20%) !default; // #333 -$gray: lighten($gray-base, 33.5%) !default; // #555 -$gray-light: lighten($gray-base, 46.7%) !default; // #777 -$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee - -$brand-primary: darken(#428bca, 6.5%) !default; // #337ab7 -$brand-success: #5cb85c !default; -$brand-info: #5bc0de !default; -$brand-warning: #f0ad4e !default; -$brand-danger: #d9534f !default; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -$body-bg: #fff !default; -//** Global text color on ``. -$text-color: $gray-dark !default; - -//** Global textual link color. -$link-color: $brand-primary !default; -//** Link hover color set via `darken()` function. -$link-hover-color: darken($link-color, 15%) !default; -//** Link hover decoration. -$link-hover-decoration: underline !default; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -$font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default; -$font-family-serif: Georgia, "Times New Roman", Times, serif !default; -//** Default monospace fonts for ``, ``, and `
        `.
        -$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
        -$font-family-base:        $font-family-sans-serif !default;
        -
        -$font-size-base:          14px !default;
        -$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
        -$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
        -
        -$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
        -$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
        -$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
        -$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
        -$font-size-h5:            $font-size-base !default;
        -$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
        -
        -//** Unit-less `line-height` for use in components like buttons.
        -$line-height-base:        1.428571429 !default; // 20/14
        -//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
        -$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
        -
        -//** By default, this inherits from the ``.
        -$headings-font-family:    inherit !default;
        -$headings-font-weight:    500 !default;
        -$headings-line-height:    1.1 !default;
        -$headings-color:          inherit !default;
        -
        -
        -//== Iconography
        -//
        -//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
        -
        -//** Load fonts from this directory.
        -$icon-font-path:          "../fonts/" !default;
        -//** File name for all font files.
        -$icon-font-name:          "glyphicons-halflings-regular" !default;
        -//** Element ID within SVG icon file.
        -$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
        -
        -
        -//== Components
        -//
        -//## Define common padding and border radius sizes and more. Values based on 14px text and 1@mixin 428 line-height (~20px to start).
        -
        -$padding-base-vertical:     6px !default;
        -$padding-base-horizontal:   12px !default;
        -
        -$padding-large-vertical:    10px !default;
        -$padding-large-horizontal:  16px !default;
        -
        -$padding-small-vertical:    5px !default;
        -$padding-small-horizontal:  10px !default;
        -
        -$padding-xs-vertical:       1px !default;
        -$padding-xs-horizontal:     5px !default;
        -
        -$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
        -$line-height-small:         1.5 !default;
        -
        -$border-radius-base:        4px !default;
        -$border-radius-large:       6px !default;
        -$border-radius-small:       3px !default;
        -
        -//** Global color for active items (e.g., navs or dropdowns).
        -$component-active-color:    #fff !default;
        -//** Global background color for active items (e.g., navs or dropdowns).
        -$component-active-bg:       $brand-primary !default;
        -
        -//** Width of the `border` for generating carets that indicator dropdowns.
        -$caret-width-base:          4px !default;
        -//** Carets increase slightly in size for larger components.
        -$caret-width-large:         5px !default;
        -
        -
        -//== Tables
        -//
        -//## Customizes the `.table` component with basic values, each used across all table variations.
        -
        -//** Padding for ``s and ``s.
        -$table-cell-padding:            8px !default;
        -//** Padding for cells in `.table-condensed`.
        -$table-condensed-cell-padding:  5px !default;
        -
        -//** Default background color used for all tables.
        -// $table-bg:                      transparent !default;
        -$table-bg:                      #fff !default;
        -//** Background color used for `.table-striped`.
        -$table-bg-accent:               #f9f9f9 !default;
        -//** Background color used for `.table-hover`.
        -$table-bg-hover:                #f5f5f5 !default;
        -$table-bg-active:               $table-bg-hover !default;
        -
        -//** Border color for table and cell borders.
        -$table-border-color:            #ddd !default;
        -
        -
        -//== Buttons
        -//
        -//## For each of Bootstrap's buttons, define text, background and border color.
        -
        -$btn-font-weight:                normal !default;
        -
        -$btn-default-color:              #333 !default;
        -$btn-default-bg:                 #fff !default;
        -$btn-default-border:             #ccc !default;
        -
        -$btn-primary-color:              #fff !default;
        -$btn-primary-bg:                 $brand-primary !default;
        -$btn-primary-border:             darken($btn-primary-bg, 5%) !default;
        -
        -$btn-success-color:              #fff !default;
        -$btn-success-bg:                 $brand-success !default;
        -$btn-success-border:             darken($btn-success-bg, 5%) !default;
        -
        -$btn-info-color:                 #fff !default;
        -$btn-info-bg:                    $brand-info !default;
        -$btn-info-border:                darken($btn-info-bg, 5%) !default;
        -
        -$btn-warning-color:              #fff !default;
        -$btn-warning-bg:                 $brand-warning !default;
        -$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
        -
        -$btn-danger-color:               #fff !default;
        -$btn-danger-bg:                  $brand-danger !default;
        -$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
        -
        -$btn-link-disabled-color:        $gray-light !default;
        -
        -// Allows for customizing button radius independently from global border radius
        -$btn-border-radius-base:         $border-radius-base !default;
        -$btn-border-radius-large:        $border-radius-large !default;
        -$btn-border-radius-small:        $border-radius-small !default;
        -
        -
        -//== Forms
        -//
        -//##
        -
        -//** `` background color
        -$input-bg:                       #fff !default;
        -//** `` background color
        -$input-bg-disabled:              $gray-lighter !default;
        -
        -//** Text color for ``s
        -$input-color:                    $gray !default;
        -//** `` border color
        -$input-border:                   #ccc !default;
        -
        -// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
        -//** Default `.form-control` border radius
        -// This has no effect on ``s in CSS.
        -$input-border-radius:            $border-radius-base !default;
        -//** Large `.form-control` border radius
        -$input-border-radius-large:      $border-radius-large !default;
        -//** Small `.form-control` border radius
        -$input-border-radius-small:      $border-radius-small !default;
        -
        -//** Border color for inputs on focus
        -$input-border-focus:             #66afe9 !default;
        -
        -//** Placeholder text color
        -$input-color-placeholder:        #999 !default;
        -
        -//** Default `.form-control` height
        -$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
        -//** Large `.form-control` height
        -$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
        -//** Small `.form-control` height
        -$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
        -
        -//** `.form-group` margin
        -$form-group-margin-bottom:       15px !default;
        -
        -$legend-color:                   $gray-dark !default;
        -$legend-border-color:            #e5e5e5 !default;
        -
        -//** Background color for textual input addons
        -$input-group-addon-bg:           $gray-lighter !default;
        -//** Border color for textual input addons
        -$input-group-addon-border-color: $input-border !default;
        -
        -//** Disabled cursor for form controls and buttons.
        -$cursor-disabled:                not-allowed !default;
        -
        -
        -//== Dropdowns
        -//
        -//## Dropdown menu container and contents.
        -
        -//** Background for the dropdown menu.
        -$dropdown-bg:                    #fff !default;
        -//** Dropdown menu `border-color`.
        -$dropdown-border:                rgba(0,0,0,.15) !default;
        -//** Dropdown menu `border-color` **for IE8**.
        -$dropdown-fallback-border:       #ccc !default;
        -//** Divider color for between dropdown items.
        -$dropdown-divider-bg:            #e5e5e5 !default;
        -
        -//** Dropdown link text color.
        -$dropdown-link-color:            $gray-dark !default;
        -//** Hover color for dropdown links.
        -$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;
        -//** Hover background for dropdown links.
        -$dropdown-link-hover-bg:         #f5f5f5 !default;
        -
        -//** Active dropdown menu item text color.
        -$dropdown-link-active-color:     $component-active-color !default;
        -//** Active dropdown menu item background color.
        -$dropdown-link-active-bg:        $component-active-bg !default;
        -
        -//** Disabled dropdown menu item background color.
        -$dropdown-link-disabled-color:   $gray-light !default;
        -
        -//** Text color for headers within dropdown menus.
        -$dropdown-header-color:          $gray-light !default;
        -
        -//** Deprecated `$dropdown-caret-color` as of v3.1.0
        -$dropdown-caret-color:           #000 !default;
        -
        -
        -//-- Z-index master list
        -//
        -// Warning: Avoid customizing these values. They're used for a bird's eye view
        -// of components dependent on the z-axis and are designed to all work together.
        -//
        -// Note: These variables are not generated into the Customizer.
        -
        -$zindex-navbar:            1000 !default;
        -$zindex-dropdown:          1000 !default;
        -$zindex-popover:           1060 !default;
        -$zindex-tooltip:           1070 !default;
        -$zindex-navbar-fixed:      1030 !default;
        -$zindex-modal-background:  1040 !default;
        -$zindex-modal:             1050 !default;
        -
        -
        -//== Media queries breakpoints
        -//
        -//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
        -
        -// Extra small screen / phone
        -//** Deprecated `$screen-xs` as of v3.0.1
        -$screen-xs:                  480px !default;
        -//** Deprecated `$screen-xs-min` as of v3.2.0
        -$screen-xs-min:              $screen-xs !default;
        -//** Deprecated `$screen-phone` as of v3.0.1
        -$screen-phone:               $screen-xs-min !default;
        -
        -// Small screen / tablet
        -//** Deprecated `$screen-sm` as of v3.0.1
        -$screen-sm:                  768px !default;
        -$screen-sm-min:              $screen-sm !default;
        -//** Deprecated `$screen-tablet` as of v3.0.1
        -$screen-tablet:              $screen-sm-min !default;
        -
        -// Medium screen / desktop
        -//** Deprecated `$screen-md` as of v3.0.1
        -$screen-md:                  992px !default;
        -$screen-md-min:              $screen-md !default;
        -//** Deprecated `$screen-desktop` as of v3.0.1
        -$screen-desktop:             $screen-md-min !default;
        -
        -// Large screen / wide desktop
        -//** Deprecated `$screen-lg` as of v3.0.1
        -$screen-lg:                  1200px !default;
        -$screen-lg-min:              $screen-lg !default;
        -//** Deprecated `$screen-lg-desktop` as of v3.0.1
        -$screen-lg-desktop:          $screen-lg-min !default;
        -
        -// So media queries don't overlap when required, provide a maximum
        -$screen-xs-max:              ($screen-sm-min - 1) !default;
        -$screen-sm-max:              ($screen-md-min - 1) !default;
        -$screen-md-max:              ($screen-lg-min - 1) !default;
        -
        -
        -//== Grid system
        -//
        -//## Define your custom responsive grid.
        -
        -//** Number of columns in the grid.
        -$grid-columns:              12 !default;
        -//** Padding between columns. Gets divided in half for the left and right.
        -$grid-gutter-width:         30px !default;
        -// Navbar collapse
        -//** Point at which the navbar becomes uncollapsed.
        -$grid-float-breakpoint:     $screen-sm-min !default;
        -//** Point at which the navbar begins collapsing.
        -$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
        -
        -
        -//== Container sizes
        -//
        -//## Define the maximum width of `.container` for different screen sizes.
        -
        -// Small screen / tablet
        -$container-tablet:             (720px + $grid-gutter-width) !default;
        -//** For `$screen-sm-min` and up.
        -$container-sm:                 $container-tablet !default;
        -
        -// Medium screen / desktop
        -$container-desktop:            (940px + $grid-gutter-width) !default;
        -//** For `$screen-md-min` and up.
        -$container-md:                 $container-desktop !default;
        -
        -// Large screen / wide desktop
        -$container-large-desktop:      (1140px + $grid-gutter-width) !default;
        -//** For `$screen-lg-min` and up.
        -$container-lg:                 $container-large-desktop !default;
        -
        -
        -//== Navbar
        -//
        -//##
        -
        -// Basics of a navbar
        -$navbar-height:                    50px !default;
        -$navbar-margin-bottom:             $line-height-computed !default;
        -$navbar-border-radius:             $border-radius-base !default;
        -$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
        -$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
        -$navbar-collapse-max-height:       340px !default;
        -
        -$navbar-default-color:             #777 !default;
        -$navbar-default-bg:                #f8f8f8 !default;
        -$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
        -
        -// Navbar links
        -$navbar-default-link-color:                #777 !default;
        -$navbar-default-link-hover-color:          #333 !default;
        -$navbar-default-link-hover-bg:             transparent !default;
        -$navbar-default-link-active-color:         #555 !default;
        -$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;
        -$navbar-default-link-disabled-color:       #ccc !default;
        -$navbar-default-link-disabled-bg:          transparent !default;
        -
        -// Navbar brand label
        -$navbar-default-brand-color:               $navbar-default-link-color !default;
        -$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%) !default;
        -$navbar-default-brand-hover-bg:            transparent !default;
        -
        -// Navbar toggle
        -$navbar-default-toggle-hover-bg:           #ddd !default;
        -$navbar-default-toggle-icon-bar-bg:        #888 !default;
        -$navbar-default-toggle-border-color:       #ddd !default;
        -
        -
        -//=== Inverted navbar
        -// Reset inverted navbar basics
        -$navbar-inverse-color:                      lighten($gray-light, 15%) !default;
        -$navbar-inverse-bg:                         #222 !default;
        -$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
        -
        -// Inverted navbar links
        -$navbar-inverse-link-color:                 lighten($gray-light, 15%) !default;
        -$navbar-inverse-link-hover-color:           #fff !default;
        -$navbar-inverse-link-hover-bg:              transparent !default;
        -$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
        -$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
        -$navbar-inverse-link-disabled-color:        #444 !default;
        -$navbar-inverse-link-disabled-bg:           transparent !default;
        -
        -// Inverted navbar brand label
        -$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
        -$navbar-inverse-brand-hover-color:          #fff !default;
        -$navbar-inverse-brand-hover-bg:             transparent !default;
        -
        -// Inverted navbar toggle
        -$navbar-inverse-toggle-hover-bg:            #333 !default;
        -$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
        -$navbar-inverse-toggle-border-color:        #333 !default;
        -
        -
        -//== Navs
        -//
        -//##
        -
        -//=== Shared nav styles
        -$nav-link-padding:                          10px 15px !default;
        -$nav-link-hover-bg:                         $gray-lighter !default;
        -
        -$nav-disabled-link-color:                   $gray-light !default;
        -$nav-disabled-link-hover-color:             $gray-light !default;
        -
        -//== Tabs
        -$nav-tabs-border-color:                     #ddd !default;
        -
        -$nav-tabs-link-hover-border-color:          $gray-lighter !default;
        -
        -$nav-tabs-active-link-hover-bg:             $body-bg !default;
        -$nav-tabs-active-link-hover-color:          $gray !default;
        -$nav-tabs-active-link-hover-border-color:   #ddd !default;
        -
        -$nav-tabs-justified-link-border-color:            #ddd !default;
        -$nav-tabs-justified-active-link-border-color:     $body-bg !default;
        -
        -//== Pills
        -$nav-pills-border-radius:                   $border-radius-base !default;
        -$nav-pills-active-link-hover-bg:            $component-active-bg !default;
        -$nav-pills-active-link-hover-color:         $component-active-color !default;
        -
        -
        -//== Pagination
        -//
        -//##
        -
        -$pagination-color:                     $link-color !default;
        -$pagination-bg:                        #fff !default;
        -$pagination-border:                    #ddd !default;
        -
        -$pagination-hover-color:               $link-hover-color !default;
        -$pagination-hover-bg:                  $gray-lighter !default;
        -$pagination-hover-border:              #ddd !default;
        -
        -$pagination-active-color:              #fff !default;
        -$pagination-active-bg:                 $brand-primary !default;
        -$pagination-active-border:             $brand-primary !default;
        -
        -$pagination-disabled-color:            $gray-light !default;
        -$pagination-disabled-bg:               #fff !default;
        -$pagination-disabled-border:           #ddd !default;
        -
        -
        -//== Pager
        -//
        -//##
        -
        -$pager-bg:                             $pagination-bg !default;
        -$pager-border:                         $pagination-border !default;
        -$pager-border-radius:                  15px !default;
        -
        -$pager-hover-bg:                       $pagination-hover-bg !default;
        -
        -$pager-active-bg:                      $pagination-active-bg !default;
        -$pager-active-color:                   $pagination-active-color !default;
        -
        -$pager-disabled-color:                 $pagination-disabled-color !default;
        -
        -
        -//== Jumbotron
        -//
        -//##
        -
        -$jumbotron-padding:              30px !default;
        -$jumbotron-color:                inherit !default;
        -$jumbotron-bg:                   $gray-lighter !default;
        -$jumbotron-heading-color:        inherit !default;
        -$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
        -$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
        -
        -
        -//== Form states and alerts
        -//
        -//## Define colors for form feedback states and, by default, alerts.
        -
        -$state-success-text:             #3c763d !default;
        -$state-success-bg:               #dff0d8 !default;
        -$state-success-border:           darken(adjust-hue($state-success-bg, -10%), 5%) !default;
        -
        -$state-info-text:                #31708f !default;
        -$state-info-bg:                  #d9edf7 !default;
        -$state-info-border:              darken(adjust-hue($state-info-bg, -10%), 7%) !default;
        -
        -$state-warning-text:             #8a6d3b !default;
        -$state-warning-bg:               #fcf8e3 !default;
        -$state-warning-border:           darken(adjust-hue($state-warning-bg, -10%), 5%) !default;
        -
        -$state-danger-text:              #a94442 !default;
        -$state-danger-bg:                #f2dede !default;
        -$state-danger-border:            darken(adjust-hue($state-danger-bg, -10%), 5%) !default;
        -
        -
        -//== Tooltips
        -//
        -//##
        -
        -//** Tooltip max width
        -$tooltip-max-width:           200px !default;
        -//** Tooltip text color
        -$tooltip-color:               #fff !default;
        -//** Tooltip background color
        -$tooltip-bg:                  #000 !default;
        -$tooltip-opacity:             .9 !default;
        -
        -//** Tooltip arrow width
        -$tooltip-arrow-width:         5px !default;
        -//** Tooltip arrow color
        -$tooltip-arrow-color:         $tooltip-bg !default;
        -
        -
        -//== Popovers
        -//
        -//##
        -
        -//** Popover body background color
        -$popover-bg:                          #fff !default;
        -//** Popover maximum width
        -$popover-max-width:                   276px !default;
        -//** Popover border color
        -$popover-border-color:                rgba(0,0,0,.2) !default;
        -//** Popover fallback border color
        -$popover-fallback-border-color:       #ccc !default;
        -
        -//** Popover title background color
        -$popover-title-bg:                    darken($popover-bg, 3%) !default;
        -
        -//** Popover arrow width
        -$popover-arrow-width:                 10px !default;
        -//** Popover arrow color
        -$popover-arrow-color:                 $popover-bg !default;
        -
        -//** Popover outer arrow width
        -$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
        -//** Popover outer arrow color
        -$popover-arrow-outer-color:           fadein($popover-border-color, 5%) !default;
        -//** Popover outer arrow fallback color
        -$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
        -
        -
        -//== Labels
        -//
        -//##
        -
        -//** Default label background color
        -$label-default-bg:            $gray-light !default;
        -//** Primary label background color
        -$label-primary-bg:            $brand-primary !default;
        -//** Success label background color
        -$label-success-bg:            $brand-success !default;
        -//** Info label background color
        -$label-info-bg:               $brand-info !default;
        -//** Warning label background color
        -$label-warning-bg:            $brand-warning !default;
        -//** Danger label background color
        -$label-danger-bg:             $brand-danger !default;
        -
        -//** Default label text color
        -$label-color:                 #fff !default;
        -//** Default text color of a linked label
        -$label-link-hover-color:      #fff !default;
        -
        -
        -//== Modals
        -//
        -//##
        -
        -//** Padding applied to the modal body
        -$modal-inner-padding:         15px !default;
        -
        -//** Padding applied to the modal title
        -$modal-title-padding:         15px !default;
        -//** Modal title line-height
        -$modal-title-line-height:     $line-height-base !default;
        -
        -//** Background color of modal content area
        -$modal-content-bg:                             #fff !default;
        -//** Modal content border color
        -$modal-content-border-color:                   rgba(0,0,0,.2) !default;
        -//** Modal content border color **for IE8**
        -$modal-content-fallback-border-color:          #999 !default;
        -
        -//** Modal backdrop background color
        -$modal-backdrop-bg:           #000 !default;
        -//** Modal backdrop opacity
        -$modal-backdrop-opacity:      .5 !default;
        -//** Modal header border color
        -$modal-header-border-color:   #e5e5e5 !default;
        -//** Modal footer border color
        -$modal-footer-border-color:   $modal-header-border-color !default;
        -
        -$modal-lg:                    900px !default;
        -$modal-md:                    600px !default;
        -$modal-sm:                    300px !default;
        -
        -
        -//== Alerts
        -//
        -//## Define alert colors, border radius, and padding.
        -
        -$alert-padding:               15px !default;
        -$alert-border-radius:         $border-radius-base !default;
        -$alert-link-font-weight:      bold !default;
        -
        -$alert-success-bg:            $state-success-bg !default;
        -$alert-success-text:          $state-success-text !default;
        -$alert-success-border:        $state-success-border !default;
        -
        -$alert-info-bg:               $state-info-bg !default;
        -$alert-info-text:             $state-info-text !default;
        -$alert-info-border:           $state-info-border !default;
        -
        -$alert-warning-bg:            $state-warning-bg !default;
        -$alert-warning-text:          $state-warning-text !default;
        -$alert-warning-border:        $state-warning-border !default;
        -
        -$alert-danger-bg:             $state-danger-bg !default;
        -$alert-danger-text:           $state-danger-text !default;
        -$alert-danger-border:         $state-danger-border !default;
        -
        -
        -//== Progress bars
        -//
        -//##
        -
        -//** Background color of the whole progress component
        -$progress-bg:                 #f5f5f5 !default;
        -//** Progress bar text color
        -$progress-bar-color:          #fff !default;
        -//** Variable for setting rounded corners on progress bar.
        -$progress-border-radius:      $border-radius-base !default;
        -
        -//** Default progress bar color
        -$progress-bar-bg:             $brand-primary !default;
        -//** Success progress bar color
        -$progress-bar-success-bg:     $brand-success !default;
        -//** Warning progress bar color
        -$progress-bar-warning-bg:     $brand-warning !default;
        -//** Danger progress bar color
        -$progress-bar-danger-bg:      $brand-danger !default;
        -//** Info progress bar color
        -$progress-bar-info-bg:        $brand-info !default;
        -
        -
        -//== List group
        -//
        -//##
        -
        -//** Background color on `.list-group-item`
        -$list-group-bg:                 #fff !default;
        -//** `.list-group-item` border color
        -$list-group-border:             #ddd !default;
        -//** List group border radius
        -$list-group-border-radius:      $border-radius-base !default;
        -
        -//** Background color of single list items on hover
        -$list-group-hover-bg:           #f5f5f5 !default;
        -//** Text color of active list items
        -$list-group-active-color:       $component-active-color !default;
        -//** Background color of active list items
        -$list-group-active-bg:          $component-active-bg !default;
        -//** Border color of active list elements
        -$list-group-active-border:      $list-group-active-bg !default;
        -//** Text color for content within active list items
        -$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
        -
        -//** Text color of disabled list items
        -$list-group-disabled-color:      $gray-light !default;
        -//** Background color of disabled list items
        -$list-group-disabled-bg:         $gray-lighter !default;
        -//** Text color for content within disabled list items
        -$list-group-disabled-text-color: $list-group-disabled-color !default;
        -
        -$list-group-link-color:         #555 !default;
        -$list-group-link-hover-color:   $list-group-link-color !default;
        -$list-group-link-heading-color: #333 !default;
        -
        -
        -//== Panels
        -//
        -//##
        -
        -$panel-bg:                    #fff !default;
        -$panel-body-padding:          15px !default;
        -$panel-heading-padding:       10px 15px !default;
        -$panel-footer-padding:        $panel-heading-padding !default;
        -$panel-border-radius:         $border-radius-base !default;
        -
        -//** Border color for elements within panels
        -$panel-inner-border:          #ddd !default;
        -$panel-footer-bg:             #f5f5f5 !default;
        -
        -$panel-default-text:          $gray-dark !default;
        -$panel-default-border:        #ddd !default;
        -$panel-default-heading-bg:    #f5f5f5 !default;
        -
        -$panel-primary-text:          #fff !default;
        -$panel-primary-border:        $brand-primary !default;
        -$panel-primary-heading-bg:    $brand-primary !default;
        -
        -$panel-success-text:          $state-success-text !default;
        -$panel-success-border:        $state-success-border !default;
        -$panel-success-heading-bg:    $state-success-bg !default;
        -
        -$panel-info-text:             $state-info-text !default;
        -$panel-info-border:           $state-info-border !default;
        -$panel-info-heading-bg:       $state-info-bg !default;
        -
        -$panel-warning-text:          $state-warning-text !default;
        -$panel-warning-border:        $state-warning-border !default;
        -$panel-warning-heading-bg:    $state-warning-bg !default;
        -
        -$panel-danger-text:           $state-danger-text !default;
        -$panel-danger-border:         $state-danger-border !default;
        -$panel-danger-heading-bg:     $state-danger-bg !default;
        -
        -
        -//== Thumbnails
        -//
        -//##
        -
        -//** Padding around the thumbnail image
        -$thumbnail-padding:           4px !default;
        -//** Thumbnail background color
        -$thumbnail-bg:                $body-bg !default;
        -//** Thumbnail border color
        -$thumbnail-border:            #ddd !default;
        -//** Thumbnail border radius
        -$thumbnail-border-radius:     $border-radius-base !default;
        -
        -//** Custom text color for thumbnail captions
        -$thumbnail-caption-color:     $text-color !default;
        -//** Padding around the thumbnail caption
        -$thumbnail-caption-padding:   9px !default;
        -
        -
        -//== Wells
        -//
        -//##
        -
        -$well-bg:                     #f5f5f5 !default;
        -$well-border:                 darken($well-bg, 7%) !default;
        -
        -
        -//== Badges
        -//
        -//##
        -
        -$badge-color:                 #fff !default;
        -//** Linked badge text color on hover
        -$badge-link-hover-color:      #fff !default;
        -$badge-bg:                    $gray-light !default;
        -
        -//** Badge text color in active nav link
        -$badge-active-color:          $link-color !default;
        -//** Badge background color in active nav link
        -$badge-active-bg:             #fff !default;
        -
        -$badge-font-weight:           bold !default;
        -$badge-line-height:           1 !default;
        -$badge-border-radius:         10px !default;
        -
        -
        -//== Breadcrumbs
        -//
        -//##
        -
        -$breadcrumb-padding-vertical:   8px !default;
        -$breadcrumb-padding-horizontal: 15px !default;
        -//** Breadcrumb background color
        -$breadcrumb-bg:                 #f5f5f5 !default;
        -//** Breadcrumb text color
        -$breadcrumb-color:              #ccc !default;
        -//** Text color of current page in the breadcrumb
        -$breadcrumb-active-color:       $gray-light !default;
        -//** Textual separator for between breadcrumb elements
        -$breadcrumb-separator:          "/" !default;
        -
        -
        -//== Carousel
        -//
        -//##
        -
        -$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
        -
        -$carousel-control-color:                      #fff !default;
        -$carousel-control-width:                      15% !default;
        -$carousel-control-opacity:                    .5 !default;
        -$carousel-control-font-size:                  20px !default;
        -
        -$carousel-indicator-active-bg:                #fff !default;
        -$carousel-indicator-border-color:             #fff !default;
        -
        -$carousel-caption-color:                      #fff !default;
        -
        -
        -//== Close
        -//
        -//##
        -
        -$close-font-weight:           bold !default;
        -$close-color:                 #000 !default;
        -$close-text-shadow:           0 1px 0 #fff !default;
        -
        -
        -//== Code
        -//
        -//##
        -
        -$code-color:                  #c7254e !default;
        -$code-bg:                     #f9f2f4 !default;
        -
        -$kbd-color:                   #fff !default;
        -$kbd-bg:                      #333 !default;
        -
        -$pre-bg:                      #f5f5f5 !default;
        -$pre-color:                   $gray-dark !default;
        -$pre-border-color:            #ccc !default;
        -$pre-scrollable-max-height:   340px !default;
        -
        -
        -//== Type
        -//
        -//##
        -
        -//** Horizontal offset for forms and lists.
        -$component-offset-horizontal: 180px !default;
        -//** Text muted color
        -$text-muted:                  $gray-light !default;
        -//** Abbreviations and acronyms border color
        -$abbr-border-color:           $gray-light !default;
        -//** Headings small color
        -$headings-small-color:        $gray-light !default;
        -//** Blockquote small color
        -$blockquote-small-color:      $gray-light !default;
        -//** Blockquote font size
        -$blockquote-font-size:        ($font-size-base * 1.25) !default;
        -//** Blockquote border color
        -$blockquote-border-color:     $gray-lighter !default;
        -//** Page header border color
        -$page-header-border-color:    $gray-lighter !default;
        -//** Width of horizontal description list titles
        -$dl-horizontal-offset:        $component-offset-horizontal !default;
        -//** Point at which .dl-horizontal becomes horizontal
        -$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
        -//** Horizontal line color.
        -$hr-border:                   $gray-lighter !default;
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables4.scss b/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables4.scss
        deleted file mode 100644
        index e1718b5..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables4.scss
        +++ /dev/null
        @@ -1,930 +0,0 @@
        -
        -
        -// Variables
        -//
        -// Variables should follow the `$component-state-property-size` formula for
        -// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
        -
        -
        -//
        -// Color system
        -//
        -
        -// stylelint-disable
        -$white:    #fff !default;
        -$gray-100: #f8f9fa !default;
        -$gray-200: #e9ecef !default;
        -$gray-300: #dee2e6 !default;
        -$gray-400: #ced4da !default;
        -$gray-500: #adb5bd !default;
        -$gray-600: #6c757d !default;
        -$gray-700: #495057 !default;
        -$gray-800: #343a40 !default;
        -$gray-900: #212529 !default;
        -$black:    #000 !default;
        -
        -$grays: () !default;
        -$grays: map-merge((
        -  "100": $gray-100,
        -  "200": $gray-200,
        -  "300": $gray-300,
        -  "400": $gray-400,
        -  "500": $gray-500,
        -  "600": $gray-600,
        -  "700": $gray-700,
        -  "800": $gray-800,
        -  "900": $gray-900
        -), $grays);
        -
        -$blue:    #007bff !default;
        -$indigo:  #6610f2 !default;
        -$purple:  #6f42c1 !default;
        -$pink:    #e83e8c !default;
        -$red:     #dc3545 !default;
        -$orange:  #fd7e14 !default;
        -$yellow:  #ffc107 !default;
        -$green:   #28a745 !default;
        -$teal:    #20c997 !default;
        -$cyan:    #17a2b8 !default;
        -
        -$colors: () !default;
        -$colors: map-merge((
        -  "blue":       $blue,
        -  "indigo":     $indigo,
        -  "purple":     $purple,
        -  "pink":       $pink,
        -  "red":        $red,
        -  "orange":     $orange,
        -  "yellow":     $yellow,
        -  "green":      $green,
        -  "teal":       $teal,
        -  "cyan":       $cyan,
        -  "white":      $white,
        -  "gray":       $gray-600,
        -  "gray-dark":  $gray-800
        -), $colors);
        -
        -$primary:       $blue !default;
        -$secondary:     $gray-600 !default;
        -$success:       $green !default;
        -$info:          $cyan !default;
        -$warning:       $yellow !default;
        -$danger:        $red !default;
        -$light:         $gray-100 !default;
        -$dark:          $gray-800 !default;
        -
        -$theme-colors: () !default;
        -$theme-colors: map-merge((
        -  "primary":    $primary,
        -  "secondary":  $secondary,
        -  "success":    $success,
        -  "info":       $info,
        -  "warning":    $warning,
        -  "danger":     $danger,
        -  "light":      $light,
        -  "dark":       $dark
        -), $theme-colors);
        -// stylelint-enable
        -
        -// Set a specific jump point for requesting color jumps
        -$theme-color-interval:      8% !default;
        -
        -// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
        -$yiq-contrasted-threshold:  150 !default;
        -
        -// Customize the light and dark text colors for use in our YIQ color contrast function.
        -$yiq-text-dark:             $gray-900 !default;
        -$yiq-text-light:            $white !default;
        -
        -// Options
        -//
        -// Quickly modify global styling by enabling or disabling optional features.
        -
        -$enable-caret:              true !default;
        -$enable-rounded:            true !default;
        -$enable-shadows:            false !default;
        -$enable-gradients:          false !default;
        -$enable-transitions:        true !default;
        -$enable-hover-media-query:  false !default; // Deprecated, no longer affects any compiled CSS
        -$enable-grid-classes:       true !default;
        -$enable-print-styles:       true !default;
        -
        -
        -// Spacing
        -//
        -// Control the default styling of most Bootstrap elements by modifying these
        -// variables. Mostly focused on spacing.
        -// You can add more entries to the $spacers map, should you need more variation.
        -
        -// stylelint-disable
        -$spacer: 1rem !default;
        -$spacers: () !default;
        -$spacers: map-merge((
        -  0: 0,
        -  1: ($spacer * .25),
        -  2: ($spacer * .5),
        -  3: $spacer,
        -  4: ($spacer * 1.5),
        -  5: ($spacer * 3)
        -), $spacers);
        -
        -// This variable affects the `.h-*` and `.w-*` classes.
        -$sizes: () !default;
        -$sizes: map-merge((
        -  25: 25%,
        -  50: 50%,
        -  75: 75%,
        -  100: 100%,
        -  auto: auto
        -), $sizes);
        -// stylelint-enable
        -
        -// Body
        -//
        -// Settings for the `` element.
        -
        -$body-bg:                   $white !default;
        -$body-color:                $gray-900 !default;
        -
        -// Links
        -//
        -// Style anchor elements.
        -
        -$link-color:                theme-color("primary") !default;
        -$link-decoration:           none !default;
        -$link-hover-color:          darken($link-color, 15%) !default;
        -$link-hover-decoration:     underline !default;
        -
        -// Paragraphs
        -//
        -// Style p element.
        -
        -$paragraph-margin-bottom:   1rem !default;
        -
        -
        -// Grid breakpoints
        -//
        -// Define the minimum dimensions at which your layout will change,
        -// adapting to different screen sizes, for use in media queries.
        -
        -$grid-breakpoints: (
        -  xs: 0,
        -  sm: 576px,
        -  md: 768px,
        -  lg: 992px,
        -  xl: 1200px
        -) !default;
        -
        -@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
        -@include _assert-starts-at-zero($grid-breakpoints);
        -
        -
        -// Grid containers
        -//
        -// Define the maximum width of `.container` for different screen sizes.
        -
        -$container-max-widths: (
        -  sm: 540px,
        -  md: 720px,
        -  lg: 960px,
        -  xl: 1140px
        -) !default;
        -
        -@include _assert-ascending($container-max-widths, "$container-max-widths");
        -
        -
        -// Grid columns
        -//
        -// Set the number of columns and specify the width of the gutters.
        -
        -$grid-columns:                12 !default;
        -$grid-gutter-width:           30px !default;
        -
        -// Components
        -//
        -// Define common padding and border radius sizes and more.
        -
        -$line-height-lg:              1.5 !default;
        -$line-height-sm:              1.5 !default;
        -
        -$border-width:                1px !default;
        -$border-color:                $gray-300 !default;
        -
        -$border-radius:               .25rem !default;
        -$border-radius-lg:            .3rem !default;
        -$border-radius-sm:            .2rem !default;
        -
        -$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;
        -$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;
        -$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;
        -
        -$component-active-color:      $white !default;
        -$component-active-bg:         theme-color("primary") !default;
        -
        -$caret-width:                 .3em !default;
        -
        -$transition-base:             all .2s ease-in-out !default;
        -$transition-fade:             opacity .15s linear !default;
        -$transition-collapse:         height .35s ease !default;
        -
        -
        -// Fonts
        -//
        -// Font, line-height, and color for body text, headings, and more.
        -
        -// stylelint-disable value-keyword-case
        -$font-family-sans-serif:      -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
        -$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
        -$font-family-base:            $font-family-sans-serif !default;
        -// stylelint-enable value-keyword-case
        -
        -$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`
        -$font-size-lg:                ($font-size-base * 1.25) !default;
        -$font-size-sm:                ($font-size-base * .875) !default;
        -
        -$font-weight-light:           300 !default;
        -$font-weight-normal:          400 !default;
        -$font-weight-bold:            700 !default;
        -
        -$font-weight-base:            $font-weight-normal !default;
        -$line-height-base:            1.5 !default;
        -
        -$h1-font-size:                $font-size-base * 2.5 !default;
        -$h2-font-size:                $font-size-base * 2 !default;
        -$h3-font-size:                $font-size-base * 1.75 !default;
        -$h4-font-size:                $font-size-base * 1.5 !default;
        -$h5-font-size:                $font-size-base * 1.25 !default;
        -$h6-font-size:                $font-size-base !default;
        -
        -$headings-margin-bottom:      ($spacer / 2) !default;
        -$headings-font-family:        inherit !default;
        -$headings-font-weight:        500 !default;
        -$headings-line-height:        1.2 !default;
        -$headings-color:              inherit !default;
        -
        -$display1-size:               6rem !default;
        -$display2-size:               5.5rem !default;
        -$display3-size:               4.5rem !default;
        -$display4-size:               3.5rem !default;
        -
        -$display1-weight:             300 !default;
        -$display2-weight:             300 !default;
        -$display3-weight:             300 !default;
        -$display4-weight:             300 !default;
        -$display-line-height:         $headings-line-height !default;
        -
        -$lead-font-size:              ($font-size-base * 1.25) !default;
        -$lead-font-weight:            300 !default;
        -
        -$small-font-size:             80% !default;
        -
        -$text-muted:                  $gray-600 !default;
        -
        -$blockquote-small-color:      $gray-600 !default;
        -$blockquote-font-size:        ($font-size-base * 1.25) !default;
        -
        -$hr-border-color:             rgba($black, .1) !default;
        -$hr-border-width:             $border-width !default;
        -
        -$mark-padding:                .2em !default;
        -
        -$dt-font-weight:              $font-weight-bold !default;
        -
        -$kbd-box-shadow:              inset 0 -.1rem 0 rgba($black, .25) !default;
        -$nested-kbd-font-weight:      $font-weight-bold !default;
        -
        -$list-inline-padding:         .5rem !default;
        -
        -$mark-bg:                     #fcf8e3 !default;
        -
        -$hr-margin-y:                 $spacer !default;
        -
        -
        -// Tables
        -//
        -// Customizes the `.table` component with basic values, each used across all table variations.
        -
        -$table-cell-padding:          .75rem !default;
        -$table-cell-padding-sm:       .3rem !default;
        -
        -$table-bg:                    #fff !default;
        -$table-accent-bg:             #f9f9f9 !default;
        -$table-hover-bg:              #f5f5f5 !default;
        -$table-active-bg:             $table-hover-bg !default;
        -
        -$table-border-width:          $border-width !default;
        -$table-border-color:          $gray-300 !default;
        -
        -$table-head-bg:               $gray-200 !default;
        -$table-head-color:            $gray-700 !default;
        -
        -$table-dark-bg:               $gray-900 !default;
        -$table-dark-accent-bg:        rgba($white, .05) !default;
        -$table-dark-hover-bg:         rgba($white, .075) !default;
        -$table-dark-border-color:     lighten($gray-900, 7.5%) !default;
        -$table-dark-color:            $body-bg !default;
        -
        -$table-striped-order:         odd !default;
        -
        -$table-caption-color:         $text-muted !default;
        -
        -// Buttons + Forms
        -//
        -// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
        -
        -$input-btn-padding-y:         .375rem !default;
        -$input-btn-padding-x:         .75rem !default;
        -$input-btn-line-height:       $line-height-base !default;
        -
        -$input-btn-focus-width:       .2rem !default;
        -$input-btn-focus-color:       rgba($component-active-bg, .25) !default;
        -$input-btn-focus-box-shadow:  0 0 0 $input-btn-focus-width $input-btn-focus-color !default;
        -
        -$input-btn-padding-y-sm:      .25rem !default;
        -$input-btn-padding-x-sm:      .5rem !default;
        -$input-btn-line-height-sm:    $line-height-sm !default;
        -
        -$input-btn-padding-y-lg:      .5rem !default;
        -$input-btn-padding-x-lg:      1rem !default;
        -$input-btn-line-height-lg:    $line-height-lg !default;
        -
        -$input-btn-border-width:      $border-width !default;
        -
        -
        -// Buttons
        -//
        -// For each of Bootstrap's buttons, define text, background, and border color.
        -
        -$btn-padding-y:               $input-btn-padding-y !default;
        -$btn-padding-x:               $input-btn-padding-x !default;
        -$btn-line-height:             $input-btn-line-height !default;
        -
        -$btn-padding-y-sm:            $input-btn-padding-y-sm !default;
        -$btn-padding-x-sm:            $input-btn-padding-x-sm !default;
        -$btn-line-height-sm:          $input-btn-line-height-sm !default;
        -
        -$btn-padding-y-lg:            $input-btn-padding-y-lg !default;
        -$btn-padding-x-lg:            $input-btn-padding-x-lg !default;
        -$btn-line-height-lg:          $input-btn-line-height-lg !default;
        -
        -$btn-border-width:            $input-btn-border-width !default;
        -
        -$btn-font-weight:             $font-weight-normal !default;
        -$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
        -$btn-focus-width:             $input-btn-focus-width !default;
        -$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;
        -$btn-disabled-opacity:        .65 !default;
        -$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;
        -
        -$btn-link-disabled-color:     $gray-600 !default;
        -
        -$btn-block-spacing-y:         .5rem !default;
        -
        -// Allows for customizing button radius independently from global border radius
        -$btn-border-radius:           $border-radius !default;
        -$btn-border-radius-lg:        $border-radius-lg !default;
        -$btn-border-radius-sm:        $border-radius-sm !default;
        -
        -$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
        -
        -
        -// Forms
        -
        -$label-margin-bottom:                   .5rem !default;
        -
        -$input-padding-y:                       $input-btn-padding-y !default;
        -$input-padding-x:                       $input-btn-padding-x !default;
        -$input-line-height:                     $input-btn-line-height !default;
        -
        -$input-padding-y-sm:                    $input-btn-padding-y-sm !default;
        -$input-padding-x-sm:                    $input-btn-padding-x-sm !default;
        -$input-line-height-sm:                  $input-btn-line-height-sm !default;
        -
        -$input-padding-y-lg:                    $input-btn-padding-y-lg !default;
        -$input-padding-x-lg:                    $input-btn-padding-x-lg !default;
        -$input-line-height-lg:                  $input-btn-line-height-lg !default;
        -
        -$input-bg:                              $white !default;
        -$input-disabled-bg:                     $gray-200 !default;
        -
        -$input-color:                           $gray-700 !default;
        -$input-border-color:                    $gray-400 !default;
        -$input-border-width:                    $input-btn-border-width !default;
        -$input-box-shadow:                      inset 0 1px 1px rgba($black, .075) !default;
        -
        -$input-border-radius:                   $border-radius !default;
        -$input-border-radius-lg:                $border-radius-lg !default;
        -$input-border-radius-sm:                $border-radius-sm !default;
        -
        -$input-focus-bg:                        $input-bg !default;
        -$input-focus-border-color:              lighten($component-active-bg, 25%) !default;
        -$input-focus-color:                     $input-color !default;
        -$input-focus-width:                     $input-btn-focus-width !default;
        -$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;
        -
        -$input-placeholder-color:               $gray-600 !default;
        -$input-plaintext-color:                 $body-color !default;
        -
        -$input-height-border:                   $input-border-width * 2 !default;
        -
        -$input-height-inner:                    ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;
        -$input-height:                          calc(#{$input-height-inner} + #{$input-height-border}) !default;
        -
        -$input-height-inner-sm:                 ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;
        -$input-height-sm:                       calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;
        -
        -$input-height-inner-lg:                 ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;
        -$input-height-lg:                       calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;
        -
        -$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
        -
        -$form-text-margin-top:                  .25rem !default;
        -
        -$form-check-input-gutter:               1.25rem !default;
        -$form-check-input-margin-y:             .3rem !default;
        -$form-check-input-margin-x:             .25rem !default;
        -
        -$form-check-inline-margin-x:            .75rem !default;
        -$form-check-inline-input-margin-x:      .3125rem !default;
        -
        -$form-group-margin-bottom:              1rem !default;
        -
        -$input-group-addon-color:               $input-color !default;
        -$input-group-addon-bg:                  $gray-200 !default;
        -$input-group-addon-border-color:        $input-border-color !default;
        -
        -$custom-control-gutter:                 1.5rem !default;
        -$custom-control-spacer-x:               1rem !default;
        -
        -$custom-control-indicator-size:         1rem !default;
        -$custom-control-indicator-bg:           $gray-300 !default;
        -$custom-control-indicator-bg-size:      50% 50% !default;
        -$custom-control-indicator-box-shadow:   inset 0 .25rem .25rem rgba($black, .1) !default;
        -
        -$custom-control-indicator-disabled-bg:          $gray-200 !default;
        -$custom-control-label-disabled-color:           $gray-600 !default;
        -
        -$custom-control-indicator-checked-color:        $component-active-color !default;
        -$custom-control-indicator-checked-bg:           $component-active-bg !default;
        -$custom-control-indicator-checked-disabled-bg:  rgba(theme-color("primary"), .5) !default;
        -$custom-control-indicator-checked-box-shadow:   none !default;
        -
        -$custom-control-indicator-focus-box-shadow:     0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;
        -
        -$custom-control-indicator-active-color:         $component-active-color !default;
        -$custom-control-indicator-active-bg:            lighten($component-active-bg, 35%) !default;
        -$custom-control-indicator-active-box-shadow:    none !default;
        -
        -$custom-checkbox-indicator-border-radius:       $border-radius !default;
        -$custom-checkbox-indicator-icon-checked:        str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;
        -
        -$custom-checkbox-indicator-indeterminate-bg:          $component-active-bg !default;
        -$custom-checkbox-indicator-indeterminate-color:       $custom-control-indicator-checked-color !default;
        -$custom-checkbox-indicator-icon-indeterminate:        str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E"), "#", "%23") !default;
        -$custom-checkbox-indicator-indeterminate-box-shadow:  none !default;
        -
        -$custom-radio-indicator-border-radius:          50% !default;
        -$custom-radio-indicator-icon-checked:           str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E"), "#", "%23") !default;
        -
        -$custom-select-padding-y:           .375rem !default;
        -$custom-select-padding-x:           .75rem !default;
        -$custom-select-height:              $input-height !default;
        -$custom-select-indicator-padding:   1rem !default; // Extra padding to account for the presence of the background-image based indicator
        -$custom-select-line-height:         $input-btn-line-height !default;
        -$custom-select-color:               $input-color !default;
        -$custom-select-disabled-color:      $gray-600 !default;
        -$custom-select-bg:                  $input-bg !default;
        -$custom-select-disabled-bg:         $gray-200 !default;
        -$custom-select-bg-size:             8px 10px !default; // In pixels because image dimensions
        -$custom-select-indicator-color:     $gray-800 !default;
        -$custom-select-indicator:           str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E"), "#", "%23") !default;
        -$custom-select-border-width:        $input-btn-border-width !default;
        -$custom-select-border-color:        $input-border-color !default;
        -$custom-select-border-radius:       $border-radius !default;
        -
        -$custom-select-focus-border-color:  $input-focus-border-color !default;
        -$custom-select-focus-box-shadow:    inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;
        -
        -$custom-select-font-size-sm:        75% !default;
        -$custom-select-height-sm:           $input-height-sm !default;
        -
        -$custom-select-font-size-lg:        125% !default;
        -$custom-select-height-lg:           $input-height-lg !default;
        -
        -$custom-range-track-width:          100% !default;
        -$custom-range-track-height:         .5rem !default;
        -$custom-range-track-cursor:         pointer !default;
        -$custom-range-track-bg:             $gray-300 !default;
        -$custom-range-track-border-radius:  1rem !default;
        -$custom-range-track-box-shadow:     inset 0 .25rem .25rem rgba($black, .1) !default;
        -
        -$custom-range-thumb-width:            1rem !default;
        -$custom-range-thumb-height:           $custom-range-thumb-width !default;
        -$custom-range-thumb-bg:               $component-active-bg !default;
        -$custom-range-thumb-border:           0 !default;
        -$custom-range-thumb-border-radius:    1rem !default;
        -$custom-range-thumb-box-shadow:       0 .1rem .25rem rgba($black, .1) !default;
        -$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;
        -$custom-range-thumb-active-bg:        lighten($component-active-bg, 35%) !default;
        -
        -$custom-file-height:                $input-height !default;
        -$custom-file-focus-border-color:    $input-focus-border-color !default;
        -$custom-file-focus-box-shadow:      $input-btn-focus-box-shadow !default;
        -
        -$custom-file-padding-y:             $input-btn-padding-y !default;
        -$custom-file-padding-x:             $input-btn-padding-x !default;
        -$custom-file-line-height:           $input-btn-line-height !default;
        -$custom-file-color:                 $input-color !default;
        -$custom-file-bg:                    $input-bg !default;
        -$custom-file-border-width:          $input-btn-border-width !default;
        -$custom-file-border-color:          $input-border-color !default;
        -$custom-file-border-radius:         $input-border-radius !default;
        -$custom-file-box-shadow:            $input-box-shadow !default;
        -$custom-file-button-color:          $custom-file-color !default;
        -$custom-file-button-bg:             $input-group-addon-bg !default;
        -$custom-file-text: (
        -  en: "Browse"
        -) !default;
        -
        -
        -// Form validation
        -$form-feedback-margin-top:          $form-text-margin-top !default;
        -$form-feedback-font-size:           $small-font-size !default;
        -$form-feedback-valid-color:         theme-color("success") !default;
        -$form-feedback-invalid-color:       theme-color("danger") !default;
        -
        -
        -// Dropdowns
        -//
        -// Dropdown menu container and contents.
        -
        -$dropdown-min-width:                10rem !default;
        -$dropdown-padding-y:                .5rem !default;
        -$dropdown-spacer:                   .125rem !default;
        -$dropdown-bg:                       $white !default;
        -$dropdown-border-color:             rgba($black, .15) !default;
        -$dropdown-border-radius:            $border-radius !default;
        -$dropdown-border-width:             $border-width !default;
        -$dropdown-divider-bg:               $gray-200 !default;
        -$dropdown-box-shadow:               0 .5rem 1rem rgba($black, .175) !default;
        -
        -$dropdown-link-color:               $gray-900 !default;
        -$dropdown-link-hover-color:         darken($gray-900, 5%) !default;
        -$dropdown-link-hover-bg:            $gray-100 !default;
        -
        -$dropdown-link-active-color:        $component-active-color !default;
        -$dropdown-link-active-bg:           $component-active-bg !default;
        -
        -$dropdown-link-disabled-color:      $gray-600 !default;
        -
        -$dropdown-item-padding-y:           .25rem !default;
        -$dropdown-item-padding-x:           1.5rem !default;
        -
        -$dropdown-header-color:             $gray-600 !default;
        -
        -
        -// Z-index master list
        -//
        -// Warning: Avoid customizing these values. They're used for a bird's eye view
        -// of components dependent on the z-axis and are designed to all work together.
        -
        -$zindex-dropdown:                   1000 !default;
        -$zindex-sticky:                     1020 !default;
        -$zindex-fixed:                      1030 !default;
        -$zindex-modal-backdrop:             1040 !default;
        -$zindex-modal:                      1050 !default;
        -$zindex-popover:                    1060 !default;
        -$zindex-tooltip:                    1070 !default;
        -
        -// Navs
        -
        -$nav-link-padding-y:                .5rem !default;
        -$nav-link-padding-x:                1rem !default;
        -$nav-link-disabled-color:           $gray-600 !default;
        -
        -$nav-tabs-border-color:             $gray-300 !default;
        -$nav-tabs-border-width:             $border-width !default;
        -$nav-tabs-border-radius:            $border-radius !default;
        -$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;
        -$nav-tabs-link-active-color:        $gray-700 !default;
        -$nav-tabs-link-active-bg:           $body-bg !default;
        -$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
        -
        -$nav-pills-border-radius:           $border-radius !default;
        -$nav-pills-link-active-color:       $component-active-color !default;
        -$nav-pills-link-active-bg:          $component-active-bg !default;
        -
        -$nav-divider-color:                 $gray-200 !default;
        -$nav-divider-margin-y:              ($spacer / 2) !default;
        -
        -// Navbar
        -
        -$navbar-padding-y:                  ($spacer / 2) !default;
        -$navbar-padding-x:                  $spacer !default;
        -
        -$navbar-nav-link-padding-x:         .5rem !default;
        -
        -$navbar-brand-font-size:            $font-size-lg !default;
        -// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
        -$nav-link-height:                   ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;
        -$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;
        -$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) / 2 !default;
        -
        -$navbar-toggler-padding-y:          .25rem !default;
        -$navbar-toggler-padding-x:          .75rem !default;
        -$navbar-toggler-font-size:          $font-size-lg !default;
        -$navbar-toggler-border-radius:      $btn-border-radius !default;
        -
        -$navbar-dark-color:                 rgba($white, .5) !default;
        -$navbar-dark-hover-color:           rgba($white, .75) !default;
        -$navbar-dark-active-color:          $white !default;
        -$navbar-dark-disabled-color:        rgba($white, .25) !default;
        -$navbar-dark-toggler-icon-bg:       str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
        -$navbar-dark-toggler-border-color:  rgba($white, .1) !default;
        -
        -$navbar-light-color:                rgba($black, .5) !default;
        -$navbar-light-hover-color:          rgba($black, .7) !default;
        -$navbar-light-active-color:         rgba($black, .9) !default;
        -$navbar-light-disabled-color:       rgba($black, .3) !default;
        -$navbar-light-toggler-icon-bg:      str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
        -$navbar-light-toggler-border-color: rgba($black, .1) !default;
        -
        -// Pagination
        -
        -$pagination-padding-y:              .5rem !default;
        -$pagination-padding-x:              .75rem !default;
        -$pagination-padding-y-sm:           .25rem !default;
        -$pagination-padding-x-sm:           .5rem !default;
        -$pagination-padding-y-lg:           .75rem !default;
        -$pagination-padding-x-lg:           1.5rem !default;
        -$pagination-line-height:            1.25 !default;
        -
        -$pagination-color:                  $link-color !default;
        -$pagination-bg:                     $white !default;
        -$pagination-border-width:           $border-width !default;
        -$pagination-border-color:           $gray-300 !default;
        -
        -$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;
        -$pagination-focus-outline:          0 !default;
        -
        -$pagination-hover-color:            $link-hover-color !default;
        -$pagination-hover-bg:               $gray-200 !default;
        -$pagination-hover-border-color:     $gray-300 !default;
        -
        -$pagination-active-color:           $component-active-color !default;
        -$pagination-active-bg:              $component-active-bg !default;
        -$pagination-active-border-color:    $pagination-active-bg !default;
        -
        -$pagination-disabled-color:         $gray-600 !default;
        -$pagination-disabled-bg:            $white !default;
        -$pagination-disabled-border-color:  $gray-300 !default;
        -
        -
        -// Jumbotron
        -
        -$jumbotron-padding:                 2rem !default;
        -$jumbotron-bg:                      $gray-200 !default;
        -
        -
        -// Cards
        -
        -$card-spacer-y:                     .75rem !default;
        -$card-spacer-x:                     1.25rem !default;
        -$card-border-width:                 $border-width !default;
        -$card-border-radius:                $border-radius !default;
        -$card-border-color:                 rgba($black, .125) !default;
        -$card-inner-border-radius:          calc(#{$card-border-radius} - #{$card-border-width}) !default;
        -$card-cap-bg:                       rgba($black, .03) !default;
        -$card-bg:                           $white !default;
        -
        -$card-img-overlay-padding:          1.25rem !default;
        -
        -$card-group-margin:                 ($grid-gutter-width / 2) !default;
        -$card-deck-margin:                  $card-group-margin !default;
        -
        -$card-columns-count:                3 !default;
        -$card-columns-gap:                  1.25rem !default;
        -$card-columns-margin:               $card-spacer-y !default;
        -
        -
        -// Tooltips
        -
        -$tooltip-font-size:                 $font-size-sm !default;
        -$tooltip-max-width:                 200px !default;
        -$tooltip-color:                     $white !default;
        -$tooltip-bg:                        $black !default;
        -$tooltip-border-radius:             $border-radius !default;
        -$tooltip-opacity:                   .9 !default;
        -$tooltip-padding-y:                 .25rem !default;
        -$tooltip-padding-x:                 .5rem !default;
        -$tooltip-margin:                    0 !default;
        -
        -$tooltip-arrow-width:               .8rem !default;
        -$tooltip-arrow-height:              .4rem !default;
        -$tooltip-arrow-color:               $tooltip-bg !default;
        -
        -
        -// Popovers
        -
        -$popover-font-size:                 $font-size-sm !default;
        -$popover-bg:                        $white !default;
        -$popover-max-width:                 276px !default;
        -$popover-border-width:              $border-width !default;
        -$popover-border-color:              rgba($black, .2) !default;
        -$popover-border-radius:             $border-radius-lg !default;
        -$popover-box-shadow:                0 .25rem .5rem rgba($black, .2) !default;
        -
        -$popover-header-bg:                 darken($popover-bg, 3%) !default;
        -$popover-header-color:              $headings-color !default;
        -$popover-header-padding-y:          .5rem !default;
        -$popover-header-padding-x:          .75rem !default;
        -
        -$popover-body-color:                $body-color !default;
        -$popover-body-padding-y:            $popover-header-padding-y !default;
        -$popover-body-padding-x:            $popover-header-padding-x !default;
        -
        -$popover-arrow-width:               1rem !default;
        -$popover-arrow-height:              .5rem !default;
        -$popover-arrow-color:               $popover-bg !default;
        -
        -$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;
        -
        -
        -// Badges
        -
        -$badge-font-size:                   75% !default;
        -$badge-font-weight:                 $font-weight-bold !default;
        -$badge-padding-y:                   .25em !default;
        -$badge-padding-x:                   .4em !default;
        -$badge-border-radius:               $border-radius !default;
        -
        -$badge-pill-padding-x:              .6em !default;
        -// Use a higher than normal value to ensure completely rounded edges when
        -// customizing padding or font-size on labels.
        -$badge-pill-border-radius:          10rem !default;
        -
        -
        -// Modals
        -
        -// Padding applied to the modal body
        -$modal-inner-padding:               1rem !default;
        -
        -$modal-dialog-margin:               .5rem !default;
        -$modal-dialog-margin-y-sm-up:       1.75rem !default;
        -
        -$modal-title-line-height:           $line-height-base !default;
        -
        -$modal-content-bg:                  $white !default;
        -$modal-content-border-color:        rgba($black, .2) !default;
        -$modal-content-border-width:        $border-width !default;
        -$modal-content-border-radius:       $border-radius-lg !default;
        -$modal-content-box-shadow-xs:       0 .25rem .5rem rgba($black, .5) !default;
        -$modal-content-box-shadow-sm-up:    0 .5rem 1rem rgba($black, .5) !default;
        -
        -$modal-backdrop-bg:                 $black !default;
        -$modal-backdrop-opacity:            .5 !default;
        -$modal-header-border-color:         $gray-200 !default;
        -$modal-footer-border-color:         $modal-header-border-color !default;
        -$modal-header-border-width:         $modal-content-border-width !default;
        -$modal-footer-border-width:         $modal-header-border-width !default;
        -$modal-header-padding:              1rem !default;
        -
        -$modal-lg:                          800px !default;
        -$modal-md:                          500px !default;
        -$modal-sm:                          300px !default;
        -
        -$modal-transition:                  transform .3s ease-out !default;
        -
        -
        -// Alerts
        -//
        -// Define alert colors, border radius, and padding.
        -
        -$alert-padding-y:                   .75rem !default;
        -$alert-padding-x:                   1.25rem !default;
        -$alert-margin-bottom:               1rem !default;
        -$alert-border-radius:               $border-radius !default;
        -$alert-link-font-weight:            $font-weight-bold !default;
        -$alert-border-width:                $border-width !default;
        -
        -$alert-bg-level:                    -10 !default;
        -$alert-border-level:                -9 !default;
        -$alert-color-level:                 6 !default;
        -
        -
        -// Progress bars
        -
        -$progress-height:                   1rem !default;
        -$progress-font-size:                ($font-size-base * .75) !default;
        -$progress-bg:                       $gray-200 !default;
        -$progress-border-radius:            $border-radius !default;
        -$progress-box-shadow:               inset 0 .1rem .1rem rgba($black, .1) !default;
        -$progress-bar-color:                $white !default;
        -$progress-bar-bg:                   theme-color("primary") !default;
        -$progress-bar-animation-timing:     1s linear infinite !default;
        -$progress-bar-transition:           width .6s ease !default;
        -
        -// List group
        -
        -$list-group-bg:                     $white !default;
        -$list-group-border-color:           rgba($black, .125) !default;
        -$list-group-border-width:           $border-width !default;
        -$list-group-border-radius:          $border-radius !default;
        -
        -$list-group-item-padding-y:         .75rem !default;
        -$list-group-item-padding-x:         1.25rem !default;
        -
        -$list-group-hover-bg:               $gray-100 !default;
        -$list-group-active-color:           $component-active-color !default;
        -$list-group-active-bg:              $component-active-bg !default;
        -$list-group-active-border-color:    $list-group-active-bg !default;
        -
        -$list-group-disabled-color:         $gray-600 !default;
        -$list-group-disabled-bg:            $list-group-bg !default;
        -
        -$list-group-action-color:           $gray-700 !default;
        -$list-group-action-hover-color:     $list-group-action-color !default;
        -
        -$list-group-action-active-color:    $body-color !default;
        -$list-group-action-active-bg:       $gray-200 !default;
        -
        -
        -// Image thumbnails
        -
        -$thumbnail-padding:                 .25rem !default;
        -$thumbnail-bg:                      $body-bg !default;
        -$thumbnail-border-width:            $border-width !default;
        -$thumbnail-border-color:            $gray-300 !default;
        -$thumbnail-border-radius:           $border-radius !default;
        -$thumbnail-box-shadow:              0 1px 2px rgba($black, .075) !default;
        -
        -
        -// Figures
        -
        -$figure-caption-font-size:          90% !default;
        -$figure-caption-color:              $gray-600 !default;
        -
        -
        -// Breadcrumbs
        -
        -$breadcrumb-padding-y:              .75rem !default;
        -$breadcrumb-padding-x:              1rem !default;
        -$breadcrumb-item-padding:           .5rem !default;
        -
        -$breadcrumb-margin-bottom:          1rem !default;
        -
        -$breadcrumb-bg:                     $gray-200 !default;
        -$breadcrumb-divider-color:          $gray-600 !default;
        -$breadcrumb-active-color:           $gray-600 !default;
        -$breadcrumb-divider:                quote("/") !default;
        -
        -$breadcrumb-border-radius:          $border-radius !default;
        -
        -
        -// Carousel
        -
        -$carousel-control-color:            $white !default;
        -$carousel-control-width:            15% !default;
        -$carousel-control-opacity:          .5 !default;
        -
        -$carousel-indicator-width:          30px !default;
        -$carousel-indicator-height:         3px !default;
        -$carousel-indicator-spacer:         3px !default;
        -$carousel-indicator-active-bg:      $white !default;
        -
        -$carousel-caption-width:            70% !default;
        -$carousel-caption-color:            $white !default;
        -
        -$carousel-control-icon-width:       20px !default;
        -
        -$carousel-control-prev-icon-bg:     str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"), "#", "%23") !default;
        -$carousel-control-next-icon-bg:     str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"), "#", "%23") !default;
        -
        -$carousel-transition:               transform .6s ease !default; // Define transform transition first if using multiple transitons (e.g., `transform 2s ease, opacity .5s ease-out`)
        -
        -
        -// Close
        -
        -$close-font-size:                   $font-size-base * 1.5 !default;
        -$close-font-weight:                 $font-weight-bold !default;
        -$close-color:                       $black !default;
        -$close-text-shadow:                 0 1px 0 $white !default;
        -
        -// Code
        -
        -$code-font-size:                    87.5% !default;
        -$code-color:                        $pink !default;
        -
        -$kbd-padding-y:                     .2rem !default;
        -$kbd-padding-x:                     .4rem !default;
        -$kbd-font-size:                     $code-font-size !default;
        -$kbd-color:                         $white !default;
        -$kbd-bg:                            $gray-900 !default;
        -
        -$pre-color:                         $gray-900 !default;
        -$pre-scrollable-max-height:         340px !default;
        -
        -
        -// Printing
        -$print-page-size:                   a3 !default;
        -$print-body-min-width:              map-get($grid-breakpoints, "lg") !default;
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables5.scss b/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables5.scss
        deleted file mode 100644
        index 87ebfe9..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/bootstrap/variables5.scss
        +++ /dev/null
        @@ -1,1641 +0,0 @@
        -// Variables
        -//
        -// Variables should follow the `$component-state-property-size` formula for
        -// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
        -
        -// Color system
        -
        -// scss-docs-start gray-color-variables
        -$white:    #fff !default;
        -$gray-100: #f8f9fa !default;
        -$gray-200: #e9ecef !default;
        -$gray-300: #dee2e6 !default;
        -$gray-400: #ced4da !default;
        -$gray-500: #adb5bd !default;
        -$gray-600: #6c757d !default;
        -$gray-700: #495057 !default;
        -$gray-800: #343a40 !default;
        -$gray-900: #212529 !default;
        -$black:    #000 !default;
        -// scss-docs-end gray-color-variables
        -
        -// fusv-disable
        -// scss-docs-start gray-colors-map
        -$grays: (
        -  "100": $gray-100,
        -  "200": $gray-200,
        -  "300": $gray-300,
        -  "400": $gray-400,
        -  "500": $gray-500,
        -  "600": $gray-600,
        -  "700": $gray-700,
        -  "800": $gray-800,
        -  "900": $gray-900
        -) !default;
        -// scss-docs-end gray-colors-map
        -// fusv-enable
        -
        -// scss-docs-start color-variables
        -$blue:    #0d6efd !default;
        -$indigo:  #6610f2 !default;
        -$purple:  #6f42c1 !default;
        -$pink:    #d63384 !default;
        -$red:     #dc3545 !default;
        -$orange:  #fd7e14 !default;
        -$yellow:  #ffc107 !default;
        -$green:   #198754 !default;
        -$teal:    #20c997 !default;
        -$cyan:    #0dcaf0 !default;
        -// scss-docs-end color-variables
        -
        -// scss-docs-start colors-map
        -$colors: (
        -  "blue":       $blue,
        -  "indigo":     $indigo,
        -  "purple":     $purple,
        -  "pink":       $pink,
        -  "red":        $red,
        -  "orange":     $orange,
        -  "yellow":     $yellow,
        -  "green":      $green,
        -  "teal":       $teal,
        -  "cyan":       $cyan,
        -  "white":      $white,
        -  "gray":       $gray-600,
        -  "gray-dark":  $gray-800
        -) !default;
        -// scss-docs-end colors-map
        -
        -// scss-docs-start theme-color-variables
        -$primary:       $blue !default;
        -$secondary:     $gray-600 !default;
        -$success:       $green !default;
        -$info:          $cyan !default;
        -$warning:       $yellow !default;
        -$danger:        $red !default;
        -$light:         $gray-100 !default;
        -$dark:          $gray-900 !default;
        -// scss-docs-end theme-color-variables
        -
        -// scss-docs-start theme-colors-map
        -$theme-colors: (
        -  "primary":    $primary,
        -  "secondary":  $secondary,
        -  "success":    $success,
        -  "info":       $info,
        -  "warning":    $warning,
        -  "danger":     $danger,
        -  "light":      $light,
        -  "dark":       $dark
        -) !default;
        -// scss-docs-end theme-colors-map
        -
        -// scss-docs-start theme-colors-rgb
        -$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
        -// scss-docs-end theme-colors-rgb
        -
        -// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
        -// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
        -$min-contrast-ratio:   4.5 !default;
        -
        -// Customize the light and dark text colors for use in our color contrast function.
        -$color-contrast-dark:      $black !default;
        -$color-contrast-light:     $white !default;
        -
        -// fusv-disable
        -$blue-100: tint-color($blue, 80%) !default;
        -$blue-200: tint-color($blue, 60%) !default;
        -$blue-300: tint-color($blue, 40%) !default;
        -$blue-400: tint-color($blue, 20%) !default;
        -$blue-500: $blue !default;
        -$blue-600: shade-color($blue, 20%) !default;
        -$blue-700: shade-color($blue, 40%) !default;
        -$blue-800: shade-color($blue, 60%) !default;
        -$blue-900: shade-color($blue, 80%) !default;
        -
        -$indigo-100: tint-color($indigo, 80%) !default;
        -$indigo-200: tint-color($indigo, 60%) !default;
        -$indigo-300: tint-color($indigo, 40%) !default;
        -$indigo-400: tint-color($indigo, 20%) !default;
        -$indigo-500: $indigo !default;
        -$indigo-600: shade-color($indigo, 20%) !default;
        -$indigo-700: shade-color($indigo, 40%) !default;
        -$indigo-800: shade-color($indigo, 60%) !default;
        -$indigo-900: shade-color($indigo, 80%) !default;
        -
        -$purple-100: tint-color($purple, 80%) !default;
        -$purple-200: tint-color($purple, 60%) !default;
        -$purple-300: tint-color($purple, 40%) !default;
        -$purple-400: tint-color($purple, 20%) !default;
        -$purple-500: $purple !default;
        -$purple-600: shade-color($purple, 20%) !default;
        -$purple-700: shade-color($purple, 40%) !default;
        -$purple-800: shade-color($purple, 60%) !default;
        -$purple-900: shade-color($purple, 80%) !default;
        -
        -$pink-100: tint-color($pink, 80%) !default;
        -$pink-200: tint-color($pink, 60%) !default;
        -$pink-300: tint-color($pink, 40%) !default;
        -$pink-400: tint-color($pink, 20%) !default;
        -$pink-500: $pink !default;
        -$pink-600: shade-color($pink, 20%) !default;
        -$pink-700: shade-color($pink, 40%) !default;
        -$pink-800: shade-color($pink, 60%) !default;
        -$pink-900: shade-color($pink, 80%) !default;
        -
        -$red-100: tint-color($red, 80%) !default;
        -$red-200: tint-color($red, 60%) !default;
        -$red-300: tint-color($red, 40%) !default;
        -$red-400: tint-color($red, 20%) !default;
        -$red-500: $red !default;
        -$red-600: shade-color($red, 20%) !default;
        -$red-700: shade-color($red, 40%) !default;
        -$red-800: shade-color($red, 60%) !default;
        -$red-900: shade-color($red, 80%) !default;
        -
        -$orange-100: tint-color($orange, 80%) !default;
        -$orange-200: tint-color($orange, 60%) !default;
        -$orange-300: tint-color($orange, 40%) !default;
        -$orange-400: tint-color($orange, 20%) !default;
        -$orange-500: $orange !default;
        -$orange-600: shade-color($orange, 20%) !default;
        -$orange-700: shade-color($orange, 40%) !default;
        -$orange-800: shade-color($orange, 60%) !default;
        -$orange-900: shade-color($orange, 80%) !default;
        -
        -$yellow-100: tint-color($yellow, 80%) !default;
        -$yellow-200: tint-color($yellow, 60%) !default;
        -$yellow-300: tint-color($yellow, 40%) !default;
        -$yellow-400: tint-color($yellow, 20%) !default;
        -$yellow-500: $yellow !default;
        -$yellow-600: shade-color($yellow, 20%) !default;
        -$yellow-700: shade-color($yellow, 40%) !default;
        -$yellow-800: shade-color($yellow, 60%) !default;
        -$yellow-900: shade-color($yellow, 80%) !default;
        -
        -$green-100: tint-color($green, 80%) !default;
        -$green-200: tint-color($green, 60%) !default;
        -$green-300: tint-color($green, 40%) !default;
        -$green-400: tint-color($green, 20%) !default;
        -$green-500: $green !default;
        -$green-600: shade-color($green, 20%) !default;
        -$green-700: shade-color($green, 40%) !default;
        -$green-800: shade-color($green, 60%) !default;
        -$green-900: shade-color($green, 80%) !default;
        -
        -$teal-100: tint-color($teal, 80%) !default;
        -$teal-200: tint-color($teal, 60%) !default;
        -$teal-300: tint-color($teal, 40%) !default;
        -$teal-400: tint-color($teal, 20%) !default;
        -$teal-500: $teal !default;
        -$teal-600: shade-color($teal, 20%) !default;
        -$teal-700: shade-color($teal, 40%) !default;
        -$teal-800: shade-color($teal, 60%) !default;
        -$teal-900: shade-color($teal, 80%) !default;
        -
        -$cyan-100: tint-color($cyan, 80%) !default;
        -$cyan-200: tint-color($cyan, 60%) !default;
        -$cyan-300: tint-color($cyan, 40%) !default;
        -$cyan-400: tint-color($cyan, 20%) !default;
        -$cyan-500: $cyan !default;
        -$cyan-600: shade-color($cyan, 20%) !default;
        -$cyan-700: shade-color($cyan, 40%) !default;
        -$cyan-800: shade-color($cyan, 60%) !default;
        -$cyan-900: shade-color($cyan, 80%) !default;
        -
        -$blues: (
        -  "blue-100": $blue-100,
        -  "blue-200": $blue-200,
        -  "blue-300": $blue-300,
        -  "blue-400": $blue-400,
        -  "blue-500": $blue-500,
        -  "blue-600": $blue-600,
        -  "blue-700": $blue-700,
        -  "blue-800": $blue-800,
        -  "blue-900": $blue-900
        -) !default;
        -
        -$indigos: (
        -  "indigo-100": $indigo-100,
        -  "indigo-200": $indigo-200,
        -  "indigo-300": $indigo-300,
        -  "indigo-400": $indigo-400,
        -  "indigo-500": $indigo-500,
        -  "indigo-600": $indigo-600,
        -  "indigo-700": $indigo-700,
        -  "indigo-800": $indigo-800,
        -  "indigo-900": $indigo-900
        -) !default;
        -
        -$purples: (
        -  "purple-100": $purple-200,
        -  "purple-200": $purple-100,
        -  "purple-300": $purple-300,
        -  "purple-400": $purple-400,
        -  "purple-500": $purple-500,
        -  "purple-600": $purple-600,
        -  "purple-700": $purple-700,
        -  "purple-800": $purple-800,
        -  "purple-900": $purple-900
        -) !default;
        -
        -$pinks: (
        -  "pink-100": $pink-100,
        -  "pink-200": $pink-200,
        -  "pink-300": $pink-300,
        -  "pink-400": $pink-400,
        -  "pink-500": $pink-500,
        -  "pink-600": $pink-600,
        -  "pink-700": $pink-700,
        -  "pink-800": $pink-800,
        -  "pink-900": $pink-900
        -) !default;
        -
        -$reds: (
        -  "red-100": $red-100,
        -  "red-200": $red-200,
        -  "red-300": $red-300,
        -  "red-400": $red-400,
        -  "red-500": $red-500,
        -  "red-600": $red-600,
        -  "red-700": $red-700,
        -  "red-800": $red-800,
        -  "red-900": $red-900
        -) !default;
        -
        -$oranges: (
        -  "orange-100": $orange-100,
        -  "orange-200": $orange-200,
        -  "orange-300": $orange-300,
        -  "orange-400": $orange-400,
        -  "orange-500": $orange-500,
        -  "orange-600": $orange-600,
        -  "orange-700": $orange-700,
        -  "orange-800": $orange-800,
        -  "orange-900": $orange-900
        -) !default;
        -
        -$yellows: (
        -  "yellow-100": $yellow-100,
        -  "yellow-200": $yellow-200,
        -  "yellow-300": $yellow-300,
        -  "yellow-400": $yellow-400,
        -  "yellow-500": $yellow-500,
        -  "yellow-600": $yellow-600,
        -  "yellow-700": $yellow-700,
        -  "yellow-800": $yellow-800,
        -  "yellow-900": $yellow-900
        -) !default;
        -
        -$greens: (
        -  "green-100": $green-100,
        -  "green-200": $green-200,
        -  "green-300": $green-300,
        -  "green-400": $green-400,
        -  "green-500": $green-500,
        -  "green-600": $green-600,
        -  "green-700": $green-700,
        -  "green-800": $green-800,
        -  "green-900": $green-900
        -) !default;
        -
        -$teals: (
        -  "teal-100": $teal-100,
        -  "teal-200": $teal-200,
        -  "teal-300": $teal-300,
        -  "teal-400": $teal-400,
        -  "teal-500": $teal-500,
        -  "teal-600": $teal-600,
        -  "teal-700": $teal-700,
        -  "teal-800": $teal-800,
        -  "teal-900": $teal-900
        -) !default;
        -
        -$cyans: (
        -  "cyan-100": $cyan-100,
        -  "cyan-200": $cyan-200,
        -  "cyan-300": $cyan-300,
        -  "cyan-400": $cyan-400,
        -  "cyan-500": $cyan-500,
        -  "cyan-600": $cyan-600,
        -  "cyan-700": $cyan-700,
        -  "cyan-800": $cyan-800,
        -  "cyan-900": $cyan-900
        -) !default;
        -// fusv-enable
        -
        -// Characters which are escaped by the escape-svg function
        -$escaped-characters: (
        -  ("<", "%3c"),
        -  (">", "%3e"),
        -  ("#", "%23"),
        -  ("(", "%28"),
        -  (")", "%29"),
        -) !default;
        -
        -// Options
        -//
        -// Quickly modify global styling by enabling or disabling optional features.
        -
        -$enable-caret:                true !default;
        -$enable-rounded:              true !default;
        -$enable-shadows:              false !default;
        -$enable-gradients:            false !default;
        -$enable-transitions:          true !default;
        -$enable-reduced-motion:       true !default;
        -$enable-smooth-scroll:        true !default;
        -$enable-grid-classes:         true !default;
        -$enable-cssgrid:              false !default;
        -$enable-button-pointers:      true !default;
        -$enable-rfs:                  true !default;
        -$enable-validation-icons:     true !default;
        -$enable-negative-margins:     false !default;
        -$enable-deprecation-messages: true !default;
        -$enable-important-utilities:  true !default;
        -
        -// Prefix for :root CSS variables
        -
        -$variable-prefix:             bs- !default;
        -
        -// Gradient
        -//
        -// The gradient which is added to components if `$enable-gradients` is `true`
        -// This gradient is also added to elements with `.bg-gradient`
        -// scss-docs-start variable-gradient
        -$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;
        -// scss-docs-end variable-gradient
        -
        -// Spacing
        -//
        -// Control the default styling of most Bootstrap elements by modifying these
        -// variables. Mostly focused on spacing.
        -// You can add more entries to the $spacers map, should you need more variation.
        -
        -// scss-docs-start spacer-variables-maps
        -$spacer: 1rem !default;
        -$spacers: (
        -  0: 0,
        -  1: $spacer * .25,
        -  2: $spacer * .5,
        -  3: $spacer,
        -  4: $spacer * 1.5,
        -  5: $spacer * 3,
        -) !default;
        -
        -$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
        -// scss-docs-end spacer-variables-maps
        -
        -// Position
        -//
        -// Define the edge positioning anchors of the position utilities.
        -
        -// scss-docs-start position-map
        -$position-values: (
        -  0: 0,
        -  50: 50%,
        -  100: 100%
        -) !default;
        -// scss-docs-end position-map
        -
        -// Body
        -//
        -// Settings for the `` element.
        -
        -$body-bg:                   $white !default;
        -$body-color:                $gray-900 !default;
        -$body-text-align:           null !default;
        -
        -// Utilities maps
        -//
        -// Extends the default `$theme-colors` maps to help create our utilities.
        -
        -// Come v6, we'll de-dupe these variables. Until then, for backward compatibility, we keep them to reassign.
        -// scss-docs-start utilities-colors
        -$utilities-colors: $theme-colors-rgb !default;
        -// scss-docs-end utilities-colors
        -
        -// scss-docs-start utilities-text-colors
        -$utilities-text: map-merge(
        -  $utilities-colors,
        -  (
        -    "black": to-rgb($black),
        -    "white": to-rgb($white),
        -    "body": to-rgb($body-color)
        -  )
        -) !default;
        -$utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
        -// scss-docs-end utilities-text-colors
        -
        -// scss-docs-start utilities-bg-colors
        -$utilities-bg: map-merge(
        -  $utilities-colors,
        -  (
        -    "black": to-rgb($black),
        -    "white": to-rgb($white),
        -    "body": to-rgb($body-bg)
        -  )
        -) !default;
        -$utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
        -// scss-docs-end utilities-bg-colors
        -
        -// Links
        -//
        -// Style anchor elements.
        -
        -$link-color:                              $primary !default;
        -$link-decoration:                         underline !default;
        -$link-shade-percentage:                   20% !default;
        -$link-hover-color:                        shift-color($link-color, $link-shade-percentage) !default;
        -$link-hover-decoration:                   null !default;
        -
        -$stretched-link-pseudo-element:           after !default;
        -$stretched-link-z-index:                  1 !default;
        -
        -// Paragraphs
        -//
        -// Style p element.
        -
        -$paragraph-margin-bottom:   1rem !default;
        -
        -
        -// Grid breakpoints
        -//
        -// Define the minimum dimensions at which your layout will change,
        -// adapting to different screen sizes, for use in media queries.
        -
        -// scss-docs-start grid-breakpoints
        -$grid-breakpoints: (
        -  xs: 0,
        -  sm: 576px,
        -  md: 768px,
        -  lg: 992px,
        -  xl: 1200px,
        -  xxl: 1400px
        -) !default;
        -// scss-docs-end grid-breakpoints
        -
        -@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
        -@include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
        -
        -
        -// Grid containers
        -//
        -// Define the maximum width of `.container` for different screen sizes.
        -
        -// scss-docs-start container-max-widths
        -$container-max-widths: (
        -  sm: 540px,
        -  md: 720px,
        -  lg: 960px,
        -  xl: 1140px,
        -  xxl: 1320px
        -) !default;
        -// scss-docs-end container-max-widths
        -
        -@include _assert-ascending($container-max-widths, "$container-max-widths");
        -
        -
        -// Grid columns
        -//
        -// Set the number of columns and specify the width of the gutters.
        -
        -$grid-columns:                12 !default;
        -$grid-gutter-width:           1.5rem !default;
        -$grid-row-columns:            6 !default;
        -
        -$gutters: $spacers !default;
        -
        -// Container padding
        -
        -$container-padding-x: $grid-gutter-width * .5 !default;
        -
        -
        -// Components
        -//
        -// Define common padding and border radius sizes and more.
        -
        -// scss-docs-start border-variables
        -$border-width:                1px !default;
        -$border-widths: (
        -  1: 1px,
        -  2: 2px,
        -  3: 3px,
        -  4: 4px,
        -  5: 5px
        -) !default;
        -
        -$border-color:                $gray-300 !default;
        -// scss-docs-end border-variables
        -
        -// scss-docs-start border-radius-variables
        -$border-radius:               .25rem !default;
        -$border-radius-sm:            .2rem !default;
        -$border-radius-lg:            .3rem !default;
        -$border-radius-pill:          50rem !default;
        -// scss-docs-end border-radius-variables
        -
        -// scss-docs-start box-shadow-variables
        -$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;
        -$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;
        -$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;
        -$box-shadow-inset:            inset 0 1px 2px rgba($black, .075) !default;
        -// scss-docs-end box-shadow-variables
        -
        -$component-active-color:      $white !default;
        -$component-active-bg:         $primary !default;
        -
        -// scss-docs-start caret-variables
        -$caret-width:                 .3em !default;
        -$caret-vertical-align:        $caret-width * .85 !default;
        -$caret-spacing:               $caret-width * .85 !default;
        -// scss-docs-end caret-variables
        -
        -$transition-base:             all .2s ease-in-out !default;
        -$transition-fade:             opacity .15s linear !default;
        -// scss-docs-start collapse-transition
        -$transition-collapse:         height .35s ease !default;
        -$transition-collapse-width:   width .35s ease !default;
        -// scss-docs-end collapse-transition
        -
        -// stylelint-disable function-disallowed-list
        -// scss-docs-start aspect-ratios
        -$aspect-ratios: (
        -  "1x1": 100%,
        -  "4x3": calc(3 / 4 * 100%),
        -  "16x9": calc(9 / 16 * 100%),
        -  "21x9": calc(9 / 21 * 100%)
        -) !default;
        -// scss-docs-end aspect-ratios
        -// stylelint-enable function-disallowed-list
        -
        -// Typography
        -//
        -// Font, line-height, and color for body text, headings, and more.
        -
        -// scss-docs-start font-variables
        -// stylelint-disable value-keyword-case
        -$font-family-sans-serif:      system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
        -$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
        -// stylelint-enable value-keyword-case
        -$font-family-base:            var(--#{$variable-prefix}font-sans-serif) !default;
        -$font-family-code:            var(--#{$variable-prefix}font-monospace) !default;
        -
        -// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins
        -// $font-size-base affects the font size of the body text
        -$font-size-root:              null !default;
        -$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`
        -$font-size-sm:                $font-size-base * .875 !default;
        -$font-size-lg:                $font-size-base * 1.25 !default;
        -
        -$font-weight-lighter:         lighter !default;
        -$font-weight-light:           300 !default;
        -$font-weight-normal:          400 !default;
        -$font-weight-bold:            700 !default;
        -$font-weight-bolder:          bolder !default;
        -
        -$font-weight-base:            $font-weight-normal !default;
        -
        -$line-height-base:            1.5 !default;
        -$line-height-sm:              1.25 !default;
        -$line-height-lg:              2 !default;
        -
        -$h1-font-size:                $font-size-base * 2.5 !default;
        -$h2-font-size:                $font-size-base * 2 !default;
        -$h3-font-size:                $font-size-base * 1.75 !default;
        -$h4-font-size:                $font-size-base * 1.5 !default;
        -$h5-font-size:                $font-size-base * 1.25 !default;
        -$h6-font-size:                $font-size-base !default;
        -// scss-docs-end font-variables
        -
        -// scss-docs-start font-sizes
        -$font-sizes: (
        -  1: $h1-font-size,
        -  2: $h2-font-size,
        -  3: $h3-font-size,
        -  4: $h4-font-size,
        -  5: $h5-font-size,
        -  6: $h6-font-size
        -) !default;
        -// scss-docs-end font-sizes
        -
        -// scss-docs-start headings-variables
        -$headings-margin-bottom:      $spacer * .5 !default;
        -$headings-font-family:        null !default;
        -$headings-font-style:         null !default;
        -$headings-font-weight:        500 !default;
        -$headings-line-height:        1.2 !default;
        -$headings-color:              null !default;
        -// scss-docs-end headings-variables
        -
        -// scss-docs-start display-headings
        -$display-font-sizes: (
        -  1: 5rem,
        -  2: 4.5rem,
        -  3: 4rem,
        -  4: 3.5rem,
        -  5: 3rem,
        -  6: 2.5rem
        -) !default;
        -
        -$display-font-weight: 300 !default;
        -$display-line-height: $headings-line-height !default;
        -// scss-docs-end display-headings
        -
        -// scss-docs-start type-variables
        -$lead-font-size:              $font-size-base * 1.25 !default;
        -$lead-font-weight:            300 !default;
        -
        -$small-font-size:             .875em !default;
        -
        -$sub-sup-font-size:           .75em !default;
        -
        -$text-muted:                  $gray-600 !default;
        -
        -$initialism-font-size:        $small-font-size !default;
        -
        -$blockquote-margin-y:         $spacer !default;
        -$blockquote-font-size:        $font-size-base * 1.25 !default;
        -$blockquote-footer-color:     $gray-600 !default;
        -$blockquote-footer-font-size: $small-font-size !default;
        -
        -$hr-margin-y:                 $spacer !default;
        -$hr-color:                    inherit !default;
        -$hr-height:                   $border-width !default;
        -$hr-opacity:                  .25 !default;
        -
        -$legend-margin-bottom:        .5rem !default;
        -$legend-font-size:            1.5rem !default;
        -$legend-font-weight:          null !default;
        -
        -$mark-padding:                .2em !default;
        -
        -$dt-font-weight:              $font-weight-bold !default;
        -
        -$nested-kbd-font-weight:      $font-weight-bold !default;
        -
        -$list-inline-padding:         .5rem !default;
        -
        -$mark-bg:                     #fcf8e3 !default;
        -// scss-docs-end type-variables
        -
        -
        -// Tables
        -//
        -// Customizes the `.table` component with basic values, each used across all table variations.
        -
        -// scss-docs-start table-variables
        -$table-cell-padding-y:        .5rem !default;
        -$table-cell-padding-x:        .5rem !default;
        -$table-cell-padding-y-sm:     .25rem !default;
        -$table-cell-padding-x-sm:     .25rem !default;
        -
        -$table-cell-vertical-align:   top !default;
        -
        -$table-color:                 $body-color !default;
        -$table-bg:                    #fff !default;
        -$table-accent-bg:             transparent !default;
        -
        -$table-th-font-weight:        null !default;
        -
        -$table-striped-color:         $table-color !default;
        -$table-striped-bg-factor:     .05 !default;
        -$table-striped-bg:            $gray-200 !default;
        -
        -$table-active-color:          $table-color !default;
        -$table-active-bg-factor:      .1 !default;
        -$table-active-bg:             $gray-600 !default;
        -
        -$table-hover-color:           $table-color !default;
        -$table-hover-bg-factor:       .075 !default;
        -$table-hover-bg:              $gray-400 !default;
        -
        -$table-border-factor:         .1 !default;
        -$table-border-width:          $border-width !default;
        -$table-border-color:          $border-color !default;
        -
        -$table-striped-order:         odd !default;
        -
        -$table-group-separator-color: currentColor !default;
        -
        -$table-caption-color:         $text-muted !default;
        -
        -$table-bg-scale:              -80% !default;
        -// scss-docs-end table-variables
        -
        -// scss-docs-start table-loop
        -$table-variants: (
        -  "primary":    shift-color($primary, $table-bg-scale),
        -  "secondary":  shift-color($secondary, $table-bg-scale),
        -  "success":    shift-color($success, $table-bg-scale),
        -  "info":       shift-color($info, $table-bg-scale),
        -  "warning":    shift-color($warning, $table-bg-scale),
        -  "danger":     shift-color($danger, $table-bg-scale),
        -  "light":      $light,
        -  "dark":       $dark,
        -) !default;
        -// scss-docs-end table-loop
        -
        -
        -// Buttons + Forms
        -//
        -// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
        -
        -// scss-docs-start input-btn-variables
        -$input-btn-padding-y:         .375rem !default;
        -$input-btn-padding-x:         .75rem !default;
        -$input-btn-font-family:       null !default;
        -$input-btn-font-size:         $font-size-base !default;
        -$input-btn-line-height:       $line-height-base !default;
        -
        -$input-btn-focus-width:         .25rem !default;
        -$input-btn-focus-color-opacity: .25 !default;
        -$input-btn-focus-color:         rgba($component-active-bg, $input-btn-focus-color-opacity) !default;
        -$input-btn-focus-blur:          0 !default;
        -$input-btn-focus-box-shadow:    0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;
        -
        -$input-btn-padding-y-sm:      .25rem !default;
        -$input-btn-padding-x-sm:      .5rem !default;
        -$input-btn-font-size-sm:      $font-size-sm !default;
        -
        -$input-btn-padding-y-lg:      .5rem !default;
        -$input-btn-padding-x-lg:      1rem !default;
        -$input-btn-font-size-lg:      $font-size-lg !default;
        -
        -$input-btn-border-width:      $border-width !default;
        -// scss-docs-end input-btn-variables
        -
        -
        -// Buttons
        -//
        -// For each of Bootstrap's buttons, define text, background, and border color.
        -
        -// scss-docs-start btn-variables
        -$btn-padding-y:               $input-btn-padding-y !default;
        -$btn-padding-x:               $input-btn-padding-x !default;
        -$btn-font-family:             $input-btn-font-family !default;
        -$btn-font-size:               $input-btn-font-size !default;
        -$btn-line-height:             $input-btn-line-height !default;
        -$btn-white-space:             null !default; // Set to `nowrap` to prevent text wrapping
        -
        -$btn-padding-y-sm:            $input-btn-padding-y-sm !default;
        -$btn-padding-x-sm:            $input-btn-padding-x-sm !default;
        -$btn-font-size-sm:            $input-btn-font-size-sm !default;
        -
        -$btn-padding-y-lg:            $input-btn-padding-y-lg !default;
        -$btn-padding-x-lg:            $input-btn-padding-x-lg !default;
        -$btn-font-size-lg:            $input-btn-font-size-lg !default;
        -
        -$btn-border-width:            $input-btn-border-width !default;
        -
        -$btn-font-weight:             $font-weight-normal !default;
        -$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
        -$btn-focus-width:             $input-btn-focus-width !default;
        -$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;
        -$btn-disabled-opacity:        .65 !default;
        -$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;
        -
        -$btn-link-color:              $link-color !default;
        -$btn-link-hover-color:        $link-hover-color !default;
        -$btn-link-disabled-color:     $gray-600 !default;
        -
        -// Allows for customizing button radius independently from global border radius
        -$btn-border-radius:           $border-radius !default;
        -$btn-border-radius-sm:        $border-radius-sm !default;
        -$btn-border-radius-lg:        $border-radius-lg !default;
        -
        -$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
        -
        -$btn-hover-bg-shade-amount:       15% !default;
        -$btn-hover-bg-tint-amount:        15% !default;
        -$btn-hover-border-shade-amount:   20% !default;
        -$btn-hover-border-tint-amount:    10% !default;
        -$btn-active-bg-shade-amount:      20% !default;
        -$btn-active-bg-tint-amount:       20% !default;
        -$btn-active-border-shade-amount:  25% !default;
        -$btn-active-border-tint-amount:   10% !default;
        -// scss-docs-end btn-variables
        -
        -
        -// Forms
        -
        -// scss-docs-start form-text-variables
        -$form-text-margin-top:                  .25rem !default;
        -$form-text-font-size:                   $small-font-size !default;
        -$form-text-font-style:                  null !default;
        -$form-text-font-weight:                 null !default;
        -$form-text-color:                       $text-muted !default;
        -// scss-docs-end form-text-variables
        -
        -// scss-docs-start form-label-variables
        -$form-label-margin-bottom:              .5rem !default;
        -$form-label-font-size:                  null !default;
        -$form-label-font-style:                 null !default;
        -$form-label-font-weight:                null !default;
        -$form-label-color:                      null !default;
        -// scss-docs-end form-label-variables
        -
        -// scss-docs-start form-input-variables
        -$input-padding-y:                       $input-btn-padding-y !default;
        -$input-padding-x:                       $input-btn-padding-x !default;
        -$input-font-family:                     $input-btn-font-family !default;
        -$input-font-size:                       $input-btn-font-size !default;
        -$input-font-weight:                     $font-weight-base !default;
        -$input-line-height:                     $input-btn-line-height !default;
        -
        -$input-padding-y-sm:                    $input-btn-padding-y-sm !default;
        -$input-padding-x-sm:                    $input-btn-padding-x-sm !default;
        -$input-font-size-sm:                    $input-btn-font-size-sm !default;
        -
        -$input-padding-y-lg:                    $input-btn-padding-y-lg !default;
        -$input-padding-x-lg:                    $input-btn-padding-x-lg !default;
        -$input-font-size-lg:                    $input-btn-font-size-lg !default;
        -
        -$input-bg:                              $body-bg !default;
        -$input-disabled-bg:                     $gray-200 !default;
        -$input-disabled-border-color:           null !default;
        -
        -$input-color:                           $body-color !default;
        -$input-border-color:                    $gray-400 !default;
        -$input-border-width:                    $input-btn-border-width !default;
        -$input-box-shadow:                      $box-shadow-inset !default;
        -
        -$input-border-radius:                   $border-radius !default;
        -$input-border-radius-sm:                $border-radius-sm !default;
        -$input-border-radius-lg:                $border-radius-lg !default;
        -
        -$input-focus-bg:                        $input-bg !default;
        -$input-focus-border-color:              tint-color($component-active-bg, 50%) !default;
        -$input-focus-color:                     $input-color !default;
        -$input-focus-width:                     $input-btn-focus-width !default;
        -$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;
        -
        -$input-placeholder-color:               $gray-600 !default;
        -$input-plaintext-color:                 $body-color !default;
        -
        -$input-height-border:                   $input-border-width * 2 !default;
        -
        -$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2) !default;
        -$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y) !default;
        -$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y * .5) !default;
        -
        -$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;
        -$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;
        -$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;
        -
        -$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
        -
        -$form-color-width:                      3rem !default;
        -// scss-docs-end form-input-variables
        -
        -// scss-docs-start form-check-variables
        -$form-check-input-width:                  1em !default;
        -$form-check-min-height:                   $font-size-base * $line-height-base !default;
        -$form-check-padding-start:                $form-check-input-width + .5em !default;
        -$form-check-margin-bottom:                .125rem !default;
        -$form-check-label-color:                  null !default;
        -$form-check-label-cursor:                 null !default;
        -$form-check-transition:                   null !default;
        -
        -$form-check-input-active-filter:          brightness(90%) !default;
        -
        -$form-check-input-bg:                     $input-bg !default;
        -$form-check-input-border:                 1px solid rgba($black, .25) !default;
        -$form-check-input-border-radius:          .25em !default;
        -$form-check-radio-border-radius:          50% !default;
        -$form-check-input-focus-border:           $input-focus-border-color !default;
        -$form-check-input-focus-box-shadow:       $input-btn-focus-box-shadow !default;
        -
        -$form-check-input-checked-color:          $component-active-color !default;
        -$form-check-input-checked-bg-color:       $component-active-bg !default;
        -$form-check-input-checked-border-color:   $form-check-input-checked-bg-color !default;
        -$form-check-input-checked-bg-image:       url("data:image/svg+xml,") !default;
        -$form-check-radio-checked-bg-image:       url("data:image/svg+xml,") !default;
        -
        -$form-check-input-indeterminate-color:          $component-active-color !default;
        -$form-check-input-indeterminate-bg-color:       $component-active-bg !default;
        -$form-check-input-indeterminate-border-color:   $form-check-input-indeterminate-bg-color !default;
        -$form-check-input-indeterminate-bg-image:       url("data:image/svg+xml,") !default;
        -
        -$form-check-input-disabled-opacity:        .5 !default;
        -$form-check-label-disabled-opacity:        $form-check-input-disabled-opacity !default;
        -$form-check-btn-check-disabled-opacity:    $btn-disabled-opacity !default;
        -
        -$form-check-inline-margin-end:    1rem !default;
        -// scss-docs-end form-check-variables
        -
        -// scss-docs-start form-switch-variables
        -$form-switch-color:               rgba($black, .25) !default;
        -$form-switch-width:               2em !default;
        -$form-switch-padding-start:       $form-switch-width + .5em !default;
        -$form-switch-bg-image:            url("data:image/svg+xml,") !default;
        -$form-switch-border-radius:       $form-switch-width !default;
        -$form-switch-transition:          background-position .15s ease-in-out !default;
        -
        -$form-switch-focus-color:         $input-focus-border-color !default;
        -$form-switch-focus-bg-image:      url("data:image/svg+xml,") !default;
        -
        -$form-switch-checked-color:       $component-active-color !default;
        -$form-switch-checked-bg-image:    url("data:image/svg+xml,") !default;
        -$form-switch-checked-bg-position: right center !default;
        -// scss-docs-end form-switch-variables
        -
        -// scss-docs-start input-group-variables
        -$input-group-addon-padding-y:           $input-padding-y !default;
        -$input-group-addon-padding-x:           $input-padding-x !default;
        -$input-group-addon-font-weight:         $input-font-weight !default;
        -$input-group-addon-color:               $input-color !default;
        -$input-group-addon-bg:                  $gray-200 !default;
        -$input-group-addon-border-color:        $input-border-color !default;
        -// scss-docs-end input-group-variables
        -
        -// scss-docs-start form-select-variables
        -$form-select-padding-y:             $input-padding-y !default;
        -$form-select-padding-x:             $input-padding-x !default;
        -$form-select-font-family:           $input-font-family !default;
        -$form-select-font-size:             $input-font-size !default;
        -$form-select-indicator-padding:     $form-select-padding-x * 3 !default; // Extra padding for background-image
        -$form-select-font-weight:           $input-font-weight !default;
        -$form-select-line-height:           $input-line-height !default;
        -$form-select-color:                 $input-color !default;
        -$form-select-bg:                    $input-bg !default;
        -$form-select-disabled-color:        null !default;
        -$form-select-disabled-bg:           $gray-200 !default;
        -$form-select-disabled-border-color: $input-disabled-border-color !default;
        -$form-select-bg-position:           right $form-select-padding-x center !default;
        -$form-select-bg-size:               16px 12px !default; // In pixels because image dimensions
        -$form-select-indicator-color:       $gray-800 !default;
        -$form-select-indicator:             url("data:image/svg+xml,") !default;
        -
        -$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;
        -$form-select-feedback-icon-position:    center right $form-select-indicator-padding !default;
        -$form-select-feedback-icon-size:        $input-height-inner-half $input-height-inner-half !default;
        -
        -$form-select-border-width:        $input-border-width !default;
        -$form-select-border-color:        $input-border-color !default;
        -$form-select-border-radius:       $input-border-radius !default;
        -$form-select-box-shadow:          $box-shadow-inset !default;
        -
        -$form-select-focus-border-color:  $input-focus-border-color !default;
        -$form-select-focus-width:         $input-focus-width !default;
        -$form-select-focus-box-shadow:    0 0 0 $form-select-focus-width $input-btn-focus-color !default;
        -
        -$form-select-padding-y-sm:        $input-padding-y-sm !default;
        -$form-select-padding-x-sm:        $input-padding-x-sm !default;
        -$form-select-font-size-sm:        $input-font-size-sm !default;
        -$form-select-border-radius-sm:    $input-border-radius-sm !default;
        -
        -$form-select-padding-y-lg:        $input-padding-y-lg !default;
        -$form-select-padding-x-lg:        $input-padding-x-lg !default;
        -$form-select-font-size-lg:        $input-font-size-lg !default;
        -$form-select-border-radius-lg:    $input-border-radius-lg !default;
        -
        -$form-select-transition:          $input-transition !default;
        -// scss-docs-end form-select-variables
        -
        -// scss-docs-start form-range-variables
        -$form-range-track-width:          100% !default;
        -$form-range-track-height:         .5rem !default;
        -$form-range-track-cursor:         pointer !default;
        -$form-range-track-bg:             $gray-300 !default;
        -$form-range-track-border-radius:  1rem !default;
        -$form-range-track-box-shadow:     $box-shadow-inset !default;
        -
        -$form-range-thumb-width:                   1rem !default;
        -$form-range-thumb-height:                  $form-range-thumb-width !default;
        -$form-range-thumb-bg:                      $component-active-bg !default;
        -$form-range-thumb-border:                  0 !default;
        -$form-range-thumb-border-radius:           1rem !default;
        -$form-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;
        -$form-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;
        -$form-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in Edge
        -$form-range-thumb-active-bg:               tint-color($component-active-bg, 70%) !default;
        -$form-range-thumb-disabled-bg:             $gray-500 !default;
        -$form-range-thumb-transition:              background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
        -// scss-docs-end form-range-variables
        -
        -// scss-docs-start form-file-variables
        -$form-file-button-color:          $input-color !default;
        -$form-file-button-bg:             $input-group-addon-bg !default;
        -$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%) !default;
        -// scss-docs-end form-file-variables
        -
        -// scss-docs-start form-floating-variables
        -$form-floating-height:            add(3.5rem, $input-height-border) !default;
        -$form-floating-line-height:       1.25 !default;
        -$form-floating-padding-x:         $input-padding-x !default;
        -$form-floating-padding-y:         1rem !default;
        -$form-floating-input-padding-t:   1.625rem !default;
        -$form-floating-input-padding-b:   .625rem !default;
        -$form-floating-label-opacity:     .65 !default;
        -$form-floating-label-transform:   scale(.85) translateY(-.5rem) translateX(.15rem) !default;
        -$form-floating-transition:        opacity .1s ease-in-out, transform .1s ease-in-out !default;
        -// scss-docs-end form-floating-variables
        -
        -// Form validation
        -
        -// scss-docs-start form-feedback-variables
        -$form-feedback-margin-top:          $form-text-margin-top !default;
        -$form-feedback-font-size:           $form-text-font-size !default;
        -$form-feedback-font-style:          $form-text-font-style !default;
        -$form-feedback-valid-color:         $success !default;
        -$form-feedback-invalid-color:       $danger !default;
        -
        -$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;
        -$form-feedback-icon-valid:          url("data:image/svg+xml,") !default;
        -$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;
        -$form-feedback-icon-invalid:        url("data:image/svg+xml,") !default;
        -// scss-docs-end form-feedback-variables
        -
        -// scss-docs-start form-validation-states
        -$form-validation-states: (
        -  "valid": (
        -    "color": $form-feedback-valid-color,
        -    "icon": $form-feedback-icon-valid
        -  ),
        -  "invalid": (
        -    "color": $form-feedback-invalid-color,
        -    "icon": $form-feedback-icon-invalid
        -  )
        -) !default;
        -// scss-docs-end form-validation-states
        -
        -// Z-index master list
        -//
        -// Warning: Avoid customizing these values. They're used for a bird's eye view
        -// of components dependent on the z-axis and are designed to all work together.
        -
        -// scss-docs-start zindex-stack
        -$zindex-dropdown:                   1000 !default;
        -$zindex-sticky:                     1020 !default;
        -$zindex-fixed:                      1030 !default;
        -$zindex-offcanvas-backdrop:         1040 !default;
        -$zindex-offcanvas:                  1045 !default;
        -$zindex-modal-backdrop:             1050 !default;
        -$zindex-modal:                      1055 !default;
        -$zindex-popover:                    1070 !default;
        -$zindex-tooltip:                    1080 !default;
        -// scss-docs-end zindex-stack
        -
        -
        -// Navs
        -
        -// scss-docs-start nav-variables
        -$nav-link-padding-y:                .5rem !default;
        -$nav-link-padding-x:                1rem !default;
        -$nav-link-font-size:                null !default;
        -$nav-link-font-weight:              null !default;
        -$nav-link-color:                    $link-color !default;
        -$nav-link-hover-color:              $link-hover-color !default;
        -$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;
        -$nav-link-disabled-color:           $gray-600 !default;
        -
        -$nav-tabs-border-color:             $gray-300 !default;
        -$nav-tabs-border-width:             $border-width !default;
        -$nav-tabs-border-radius:            $border-radius !default;
        -$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;
        -$nav-tabs-link-active-color:        $gray-700 !default;
        -$nav-tabs-link-active-bg:           $body-bg !default;
        -$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
        -
        -$nav-pills-border-radius:           $border-radius !default;
        -$nav-pills-link-active-color:       $component-active-color !default;
        -$nav-pills-link-active-bg:          $component-active-bg !default;
        -// scss-docs-end nav-variables
        -
        -
        -// Navbar
        -
        -// scss-docs-start navbar-variables
        -$navbar-padding-y:                  $spacer * .5 !default;
        -$navbar-padding-x:                  null !default;
        -
        -$navbar-nav-link-padding-x:         .5rem !default;
        -
        -$navbar-brand-font-size:            $font-size-lg !default;
        -// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
        -$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
        -$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;
        -$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) * .5 !default;
        -$navbar-brand-margin-end:           1rem !default;
        -
        -$navbar-toggler-padding-y:          .25rem !default;
        -$navbar-toggler-padding-x:          .75rem !default;
        -$navbar-toggler-font-size:          $font-size-lg !default;
        -$navbar-toggler-border-radius:      $btn-border-radius !default;
        -$navbar-toggler-focus-width:        $btn-focus-width !default;
        -$navbar-toggler-transition:         box-shadow .15s ease-in-out !default;
        -// scss-docs-end navbar-variables
        -
        -// scss-docs-start navbar-theme-variables
        -$navbar-dark-color:                 rgba($white, .55) !default;
        -$navbar-dark-hover-color:           rgba($white, .75) !default;
        -$navbar-dark-active-color:          $white !default;
        -$navbar-dark-disabled-color:        rgba($white, .25) !default;
        -$navbar-dark-toggler-icon-bg:       url("data:image/svg+xml,") !default;
        -$navbar-dark-toggler-border-color:  rgba($white, .1) !default;
        -
        -$navbar-light-color:                rgba($black, .55) !default;
        -$navbar-light-hover-color:          rgba($black, .7) !default;
        -$navbar-light-active-color:         rgba($black, .9) !default;
        -$navbar-light-disabled-color:       rgba($black, .3) !default;
        -$navbar-light-toggler-icon-bg:      url("data:image/svg+xml,") !default;
        -$navbar-light-toggler-border-color: rgba($black, .1) !default;
        -
        -$navbar-light-brand-color:                $navbar-light-active-color !default;
        -$navbar-light-brand-hover-color:          $navbar-light-active-color !default;
        -$navbar-dark-brand-color:                 $navbar-dark-active-color !default;
        -$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;
        -// scss-docs-end navbar-theme-variables
        -
        -
        -// Dropdowns
        -//
        -// Dropdown menu container and contents.
        -
        -// scss-docs-start dropdown-variables
        -$dropdown-min-width:                10rem !default;
        -$dropdown-padding-x:                0 !default;
        -$dropdown-padding-y:                .5rem !default;
        -$dropdown-spacer:                   .125rem !default;
        -$dropdown-font-size:                $font-size-base !default;
        -$dropdown-color:                    $body-color !default;
        -$dropdown-bg:                       $white !default;
        -$dropdown-border-color:             rgba($black, .15) !default;
        -$dropdown-border-radius:            $border-radius !default;
        -$dropdown-border-width:             $border-width !default;
        -$dropdown-inner-border-radius:      subtract($dropdown-border-radius, $dropdown-border-width) !default;
        -$dropdown-divider-bg:               $dropdown-border-color !default;
        -$dropdown-divider-margin-y:         $spacer * .5 !default;
        -$dropdown-box-shadow:               $box-shadow !default;
        -
        -$dropdown-link-color:               $gray-900 !default;
        -$dropdown-link-hover-color:         shade-color($dropdown-link-color, 10%) !default;
        -$dropdown-link-hover-bg:            $gray-200 !default;
        -
        -$dropdown-link-active-color:        $component-active-color !default;
        -$dropdown-link-active-bg:           $component-active-bg !default;
        -
        -$dropdown-link-disabled-color:      $gray-500 !default;
        -
        -$dropdown-item-padding-y:           $spacer * .25 !default;
        -$dropdown-item-padding-x:           $spacer !default;
        -
        -$dropdown-header-color:             $gray-600 !default;
        -$dropdown-header-padding:           $dropdown-padding-y $dropdown-item-padding-x !default;
        -// scss-docs-end dropdown-variables
        -
        -// scss-docs-start dropdown-dark-variables
        -$dropdown-dark-color:               $gray-300 !default;
        -$dropdown-dark-bg:                  $gray-800 !default;
        -$dropdown-dark-border-color:        $dropdown-border-color !default;
        -$dropdown-dark-divider-bg:          $dropdown-divider-bg !default;
        -$dropdown-dark-box-shadow:          null !default;
        -$dropdown-dark-link-color:          $dropdown-dark-color !default;
        -$dropdown-dark-link-hover-color:    $white !default;
        -$dropdown-dark-link-hover-bg:       rgba($white, .15) !default;
        -$dropdown-dark-link-active-color:   $dropdown-link-active-color !default;
        -$dropdown-dark-link-active-bg:      $dropdown-link-active-bg !default;
        -$dropdown-dark-link-disabled-color: $gray-500 !default;
        -$dropdown-dark-header-color:        $gray-500 !default;
        -// scss-docs-end dropdown-dark-variables
        -
        -
        -// Pagination
        -
        -// scss-docs-start pagination-variables
        -$pagination-padding-y:              .375rem !default;
        -$pagination-padding-x:              .75rem !default;
        -$pagination-padding-y-sm:           .25rem !default;
        -$pagination-padding-x-sm:           .5rem !default;
        -$pagination-padding-y-lg:           .75rem !default;
        -$pagination-padding-x-lg:           1.5rem !default;
        -
        -$pagination-color:                  $link-color !default;
        -$pagination-bg:                     $white !default;
        -$pagination-border-width:           $border-width !default;
        -$pagination-border-radius:          $border-radius !default;
        -$pagination-margin-start:           -$pagination-border-width !default;
        -$pagination-border-color:           $gray-300 !default;
        -
        -$pagination-focus-color:            $link-hover-color !default;
        -$pagination-focus-bg:               $gray-200 !default;
        -$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;
        -$pagination-focus-outline:          0 !default;
        -
        -$pagination-hover-color:            $link-hover-color !default;
        -$pagination-hover-bg:               $gray-200 !default;
        -$pagination-hover-border-color:     $gray-300 !default;
        -
        -$pagination-active-color:           $component-active-color !default;
        -$pagination-active-bg:              $component-active-bg !default;
        -$pagination-active-border-color:    $pagination-active-bg !default;
        -
        -$pagination-disabled-color:         $gray-600 !default;
        -$pagination-disabled-bg:            $white !default;
        -$pagination-disabled-border-color:  $gray-300 !default;
        -
        -$pagination-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
        -
        -$pagination-border-radius-sm:       $border-radius-sm !default;
        -$pagination-border-radius-lg:       $border-radius-lg !default;
        -// scss-docs-end pagination-variables
        -
        -
        -// Placeholders
        -
        -// scss-docs-start placeholders
        -$placeholder-opacity-max:           .5 !default;
        -$placeholder-opacity-min:           .2 !default;
        -// scss-docs-end placeholders
        -
        -// Cards
        -
        -// scss-docs-start card-variables
        -$card-spacer-y:                     $spacer !default;
        -$card-spacer-x:                     $spacer !default;
        -$card-title-spacer-y:               $spacer * .5 !default;
        -$card-border-width:                 $border-width !default;
        -$card-border-color:                 rgba($black, .125) !default;
        -$card-border-radius:                $border-radius !default;
        -$card-box-shadow:                   null !default;
        -$card-inner-border-radius:          subtract($card-border-radius, $card-border-width) !default;
        -$card-cap-padding-y:                $card-spacer-y * .5 !default;
        -$card-cap-padding-x:                $card-spacer-x !default;
        -$card-cap-bg:                       rgba($black, .03) !default;
        -$card-cap-color:                    null !default;
        -$card-height:                       null !default;
        -$card-color:                        null !default;
        -$card-bg:                           $white !default;
        -$card-img-overlay-padding:          $spacer !default;
        -$card-group-margin:                 $grid-gutter-width * .5 !default;
        -// scss-docs-end card-variables
        -
        -// Accordion
        -
        -// scss-docs-start accordion-variables
        -$accordion-padding-y:                     1rem !default;
        -$accordion-padding-x:                     1.25rem !default;
        -$accordion-color:                         $body-color !default;
        -$accordion-bg:                            $body-bg !default;
        -$accordion-border-width:                  $border-width !default;
        -$accordion-border-color:                  rgba($black, .125) !default;
        -$accordion-border-radius:                 $border-radius !default;
        -$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width) !default;
        -
        -$accordion-body-padding-y:                $accordion-padding-y !default;
        -$accordion-body-padding-x:                $accordion-padding-x !default;
        -
        -$accordion-button-padding-y:              $accordion-padding-y !default;
        -$accordion-button-padding-x:              $accordion-padding-x !default;
        -$accordion-button-color:                  $accordion-color !default;
        -$accordion-button-bg:                     $accordion-bg !default;
        -$accordion-transition:                    $btn-transition, border-radius .15s ease !default;
        -$accordion-button-active-bg:              tint-color($component-active-bg, 90%) !default;
        -$accordion-button-active-color:           shade-color($primary, 10%) !default;
        -
        -$accordion-button-focus-border-color:     $input-focus-border-color !default;
        -$accordion-button-focus-box-shadow:       $btn-focus-box-shadow !default;
        -
        -$accordion-icon-width:                    1.25rem !default;
        -$accordion-icon-color:                    $accordion-button-color !default;
        -$accordion-icon-active-color:             $accordion-button-active-color !default;
        -$accordion-icon-transition:               transform .2s ease-in-out !default;
        -$accordion-icon-transform:                rotate(-180deg) !default;
        -
        -$accordion-button-icon:         url("data:image/svg+xml,") !default;
        -$accordion-button-active-icon:  url("data:image/svg+xml,") !default;
        -// scss-docs-end accordion-variables
        -
        -// Tooltips
        -
        -// scss-docs-start tooltip-variables
        -$tooltip-font-size:                 $font-size-sm !default;
        -$tooltip-max-width:                 200px !default;
        -$tooltip-color:                     $white !default;
        -$tooltip-bg:                        $black !default;
        -$tooltip-border-radius:             $border-radius !default;
        -$tooltip-opacity:                   .9 !default;
        -$tooltip-padding-y:                 $spacer * .25 !default;
        -$tooltip-padding-x:                 $spacer * .5 !default;
        -$tooltip-margin:                    0 !default;
        -
        -$tooltip-arrow-width:               .8rem !default;
        -$tooltip-arrow-height:              .4rem !default;
        -$tooltip-arrow-color:               $tooltip-bg !default;
        -// scss-docs-end tooltip-variables
        -
        -// Form tooltips must come after regular tooltips
        -// scss-docs-start tooltip-feedback-variables
        -$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;
        -$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;
        -$form-feedback-tooltip-font-size:     $tooltip-font-size !default;
        -$form-feedback-tooltip-line-height:   null !default;
        -$form-feedback-tooltip-opacity:       $tooltip-opacity !default;
        -$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
        -// scss-docs-end tooltip-feedback-variables
        -
        -
        -// Popovers
        -
        -// scss-docs-start popover-variables
        -$popover-font-size:                 $font-size-sm !default;
        -$popover-bg:                        $white !default;
        -$popover-max-width:                 276px !default;
        -$popover-border-width:              $border-width !default;
        -$popover-border-color:              rgba($black, .2) !default;
        -$popover-border-radius:             $border-radius-lg !default;
        -$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width) !default;
        -$popover-box-shadow:                $box-shadow !default;
        -
        -$popover-header-bg:                 shade-color($popover-bg, 6%) !default;
        -$popover-header-color:              $headings-color !default;
        -$popover-header-padding-y:          .5rem !default;
        -$popover-header-padding-x:          $spacer !default;
        -
        -$popover-body-color:                $body-color !default;
        -$popover-body-padding-y:            $spacer !default;
        -$popover-body-padding-x:            $spacer !default;
        -
        -$popover-arrow-width:               1rem !default;
        -$popover-arrow-height:              .5rem !default;
        -$popover-arrow-color:               $popover-bg !default;
        -
        -$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;
        -// scss-docs-end popover-variables
        -
        -
        -// Toasts
        -
        -// scss-docs-start toast-variables
        -$toast-max-width:                   350px !default;
        -$toast-padding-x:                   .75rem !default;
        -$toast-padding-y:                   .5rem !default;
        -$toast-font-size:                   .875rem !default;
        -$toast-color:                       null !default;
        -$toast-background-color:            rgba($white, .85) !default;
        -$toast-border-width:                1px !default;
        -$toast-border-color:                rgba($black, .1) !default;
        -$toast-border-radius:               $border-radius !default;
        -$toast-box-shadow:                  $box-shadow !default;
        -$toast-spacing:                     $container-padding-x !default;
        -
        -$toast-header-color:                $gray-600 !default;
        -$toast-header-background-color:     rgba($white, .85) !default;
        -$toast-header-border-color:         rgba($black, .05) !default;
        -// scss-docs-end toast-variables
        -
        -
        -// Badges
        -
        -// scss-docs-start badge-variables
        -$badge-font-size:                   .75em !default;
        -$badge-font-weight:                 $font-weight-bold !default;
        -$badge-color:                       $white !default;
        -$badge-padding-y:                   .35em !default;
        -$badge-padding-x:                   .65em !default;
        -$badge-border-radius:               $border-radius !default;
        -// scss-docs-end badge-variables
        -
        -
        -// Modals
        -
        -// scss-docs-start modal-variables
        -$modal-inner-padding:               $spacer !default;
        -
        -$modal-footer-margin-between:       .5rem !default;
        -
        -$modal-dialog-margin:               .5rem !default;
        -$modal-dialog-margin-y-sm-up:       1.75rem !default;
        -
        -$modal-title-line-height:           $line-height-base !default;
        -
        -$modal-content-color:               null !default;
        -$modal-content-bg:                  $white !default;
        -$modal-content-border-color:        rgba($black, .2) !default;
        -$modal-content-border-width:        $border-width !default;
        -$modal-content-border-radius:       $border-radius-lg !default;
        -$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;
        -$modal-content-box-shadow-xs:       $box-shadow-sm !default;
        -$modal-content-box-shadow-sm-up:    $box-shadow !default;
        -
        -$modal-backdrop-bg:                 $black !default;
        -$modal-backdrop-opacity:            .5 !default;
        -$modal-header-border-color:         $border-color !default;
        -$modal-footer-border-color:         $modal-header-border-color !default;
        -$modal-header-border-width:         $modal-content-border-width !default;
        -$modal-footer-border-width:         $modal-header-border-width !default;
        -$modal-header-padding-y:            $modal-inner-padding !default;
        -$modal-header-padding-x:            $modal-inner-padding !default;
        -$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
        -
        -$modal-sm:                          300px !default;
        -$modal-md:                          500px !default;
        -$modal-lg:                          800px !default;
        -$modal-xl:                          1140px !default;
        -
        -$modal-fade-transform:              translate(0, -50px) !default;
        -$modal-show-transform:              none !default;
        -$modal-transition:                  transform .3s ease-out !default;
        -$modal-scale-transform:             scale(1.02) !default;
        -// scss-docs-end modal-variables
        -
        -
        -// Alerts
        -//
        -// Define alert colors, border radius, and padding.
        -
        -// scss-docs-start alert-variables
        -$alert-padding-y:               $spacer !default;
        -$alert-padding-x:               $spacer !default;
        -$alert-margin-bottom:           1rem !default;
        -$alert-border-radius:           $border-radius !default;
        -$alert-link-font-weight:        $font-weight-bold !default;
        -$alert-border-width:            $border-width !default;
        -$alert-bg-scale:                -80% !default;
        -$alert-border-scale:            -70% !default;
        -$alert-color-scale:             40% !default;
        -$alert-dismissible-padding-r:   $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side
        -// scss-docs-end alert-variables
        -
        -
        -// Progress bars
        -
        -// scss-docs-start progress-variables
        -$progress-height:                   1rem !default;
        -$progress-font-size:                $font-size-base * .75 !default;
        -$progress-bg:                       $gray-200 !default;
        -$progress-border-radius:            $border-radius !default;
        -$progress-box-shadow:               $box-shadow-inset !default;
        -$progress-bar-color:                $white !default;
        -$progress-bar-bg:                   $primary !default;
        -$progress-bar-animation-timing:     1s linear infinite !default;
        -$progress-bar-transition:           width .6s ease !default;
        -// scss-docs-end progress-variables
        -
        -
        -// List group
        -
        -// scss-docs-start list-group-variables
        -$list-group-color:                  $gray-900 !default;
        -$list-group-bg:                     $white !default;
        -$list-group-border-color:           rgba($black, .125) !default;
        -$list-group-border-width:           $border-width !default;
        -$list-group-border-radius:          $border-radius !default;
        -
        -$list-group-item-padding-y:         $spacer * .5 !default;
        -$list-group-item-padding-x:         $spacer !default;
        -$list-group-item-bg-scale:          -80% !default;
        -$list-group-item-color-scale:       40% !default;
        -
        -$list-group-hover-bg:               $gray-100 !default;
        -$list-group-active-color:           $component-active-color !default;
        -$list-group-active-bg:              $component-active-bg !default;
        -$list-group-active-border-color:    $list-group-active-bg !default;
        -
        -$list-group-disabled-color:         $gray-600 !default;
        -$list-group-disabled-bg:            $list-group-bg !default;
        -
        -$list-group-action-color:           $gray-700 !default;
        -$list-group-action-hover-color:     $list-group-action-color !default;
        -
        -$list-group-action-active-color:    $body-color !default;
        -$list-group-action-active-bg:       $gray-200 !default;
        -// scss-docs-end list-group-variables
        -
        -
        -// Image thumbnails
        -
        -// scss-docs-start thumbnail-variables
        -$thumbnail-padding:                 .25rem !default;
        -$thumbnail-bg:                      $body-bg !default;
        -$thumbnail-border-width:            $border-width !default;
        -$thumbnail-border-color:            $gray-300 !default;
        -$thumbnail-border-radius:           $border-radius !default;
        -$thumbnail-box-shadow:              $box-shadow-sm !default;
        -// scss-docs-end thumbnail-variables
        -
        -
        -// Figures
        -
        -// scss-docs-start figure-variables
        -$figure-caption-font-size:          $small-font-size !default;
        -$figure-caption-color:              $gray-600 !default;
        -// scss-docs-end figure-variables
        -
        -
        -// Breadcrumbs
        -
        -// scss-docs-start breadcrumb-variables
        -$breadcrumb-font-size:              null !default;
        -$breadcrumb-padding-y:              0 !default;
        -$breadcrumb-padding-x:              0 !default;
        -$breadcrumb-item-padding-x:         .5rem !default;
        -$breadcrumb-margin-bottom:          1rem !default;
        -$breadcrumb-bg:                     null !default;
        -$breadcrumb-divider-color:          $gray-600 !default;
        -$breadcrumb-active-color:           $gray-600 !default;
        -$breadcrumb-divider:                quote("/") !default;
        -$breadcrumb-divider-flipped:        $breadcrumb-divider !default;
        -$breadcrumb-border-radius:          null !default;
        -// scss-docs-end breadcrumb-variables
        -
        -// Carousel
        -
        -// scss-docs-start carousel-variables
        -$carousel-control-color:             $white !default;
        -$carousel-control-width:             15% !default;
        -$carousel-control-opacity:           .5 !default;
        -$carousel-control-hover-opacity:     .9 !default;
        -$carousel-control-transition:        opacity .15s ease !default;
        -
        -$carousel-indicator-width:           30px !default;
        -$carousel-indicator-height:          3px !default;
        -$carousel-indicator-hit-area-height: 10px !default;
        -$carousel-indicator-spacer:          3px !default;
        -$carousel-indicator-opacity:         .5 !default;
        -$carousel-indicator-active-bg:       $white !default;
        -$carousel-indicator-active-opacity:  1 !default;
        -$carousel-indicator-transition:      opacity .6s ease !default;
        -
        -$carousel-caption-width:             70% !default;
        -$carousel-caption-color:             $white !default;
        -$carousel-caption-padding-y:         1.25rem !default;
        -$carousel-caption-spacer:            1.25rem !default;
        -
        -$carousel-control-icon-width:        2rem !default;
        -
        -$carousel-control-prev-icon-bg:      url("data:image/svg+xml,") !default;
        -$carousel-control-next-icon-bg:      url("data:image/svg+xml,") !default;
        -
        -$carousel-transition-duration:       .6s !default;
        -$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
        -
        -$carousel-dark-indicator-active-bg:  $black !default;
        -$carousel-dark-caption-color:        $black !default;
        -$carousel-dark-control-icon-filter:  invert(1) grayscale(100) !default;
        -// scss-docs-end carousel-variables
        -
        -
        -// Spinners
        -
        -// scss-docs-start spinner-variables
        -$spinner-width:           2rem !default;
        -$spinner-height:          $spinner-width !default;
        -$spinner-vertical-align:  -.125em !default;
        -$spinner-border-width:    .25em !default;
        -$spinner-animation-speed: .75s !default;
        -
        -$spinner-width-sm:        1rem !default;
        -$spinner-height-sm:       $spinner-width-sm !default;
        -$spinner-border-width-sm: .2em !default;
        -// scss-docs-end spinner-variables
        -
        -
        -// Close
        -
        -// scss-docs-start close-variables
        -$btn-close-width:            1em !default;
        -$btn-close-height:           $btn-close-width !default;
        -$btn-close-padding-x:        .25em !default;
        -$btn-close-padding-y:        $btn-close-padding-x !default;
        -$btn-close-color:            $black !default;
        -$btn-close-bg:               url("data:image/svg+xml,") !default;
        -$btn-close-focus-shadow:     $input-btn-focus-box-shadow !default;
        -$btn-close-opacity:          .5 !default;
        -$btn-close-hover-opacity:    .75 !default;
        -$btn-close-focus-opacity:    1 !default;
        -$btn-close-disabled-opacity: .25 !default;
        -$btn-close-white-filter:     invert(1) grayscale(100%) brightness(200%) !default;
        -// scss-docs-end close-variables
        -
        -
        -// Offcanvas
        -
        -// scss-docs-start offcanvas-variables
        -$offcanvas-padding-y:               $modal-inner-padding !default;
        -$offcanvas-padding-x:               $modal-inner-padding !default;
        -$offcanvas-horizontal-width:        400px !default;
        -$offcanvas-vertical-height:         30vh !default;
        -$offcanvas-transition-duration:     .3s !default;
        -$offcanvas-border-color:            $modal-content-border-color !default;
        -$offcanvas-border-width:            $modal-content-border-width !default;
        -$offcanvas-title-line-height:       $modal-title-line-height !default;
        -$offcanvas-bg-color:                $modal-content-bg !default;
        -$offcanvas-color:                   $modal-content-color !default;
        -$offcanvas-box-shadow:              $modal-content-box-shadow-xs !default;
        -$offcanvas-backdrop-bg:             $modal-backdrop-bg !default;
        -$offcanvas-backdrop-opacity:        $modal-backdrop-opacity !default;
        -// scss-docs-end offcanvas-variables
        -
        -// Code
        -
        -$code-font-size:                    $small-font-size !default;
        -$code-color:                        $pink !default;
        -
        -$kbd-padding-y:                     .2rem !default;
        -$kbd-padding-x:                     .4rem !default;
        -$kbd-font-size:                     $code-font-size !default;
        -$kbd-color:                         $white !default;
        -$kbd-bg:                            $gray-900 !default;
        -
        -$pre-color:                         null !default;
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bulma/tabulator_bulma.scss b/tmp/tabulator-5.6.1/src/scss/themes/bulma/tabulator_bulma.scss
        deleted file mode 100644
        index 6eeeec4..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/bulma/tabulator_bulma.scss
        +++ /dev/null
        @@ -1,266 +0,0 @@
        -@import "variables.scss";
        -
        -// Style conversion file, bulma to tabulator
        -
        -//Main Theme Variables
        -$backgroundColor: $table-background-color !default; //background color of tabulator
        -// $borderColor:#999 !default; //border to tabulator
        -$textSize:16px !default; //table text size
        -
        -//header theming
        -$headerBackgroundColor:$table-head-background-color !default; //border to tabulator
        -$headerTextColor:$table-head-cell-color !default; //header text color
        -$headerBorderColor:#aaa !default;  //header border color
        -$headerSeparatorColor:#999 !default; //header bottom separator color
        -$headerMargin:4px !default; //padding round header
        -
        -//column header arrows
        -$sortArrowActive: $headerTextColor !default;
        -$sortArrowInactive: #bbb !default;
        -
        -//row theming
        -$rowBackgroundColor:$table-body-background-color !default; //table row background color
        -$rowAltBackgroundColor:$table-striped-row-even-background-color !default; //table row background color
        -$rowBorderColor:#aaa !default; //table border color
        -$rowTextColor:$table-color !default; //table text color
        -$rowHoverBackground:$table-row-hover-background-color !default; //row background color on hover
        -
        -$rowSelectedBackground: $table-row-active-background-color !default; //row background color when selected
        -// $rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered
        -
        -$editBoxColor:#1D68CD !default; //border color for edit boxes
        -$errorColor:#dd0000 !default; //error indication
        -
        -//footer theming
        -$footerBackgroundColor:$table-foot-background-color !default; //border to tabulator
        -$footerTextColor:$table-foot-cell-color !default; //footer text color
        -$footerBorderColor:$grey-lighter !default; //footer border color
        -// $footerSeparatorColor:#999 !default; //footer bottom separator color
        -// $footerActiveColor:#d00 !default; //footer bottom active text color
        -
        -//range selection
        -$rangeBorderColor: #{darken($rowSelectedBackground, 10%)} !default; //range border color
        -$rangeHandleColor: $rangeBorderColor !default; //range handle color
        -$rangeHeaderSelectedBackground: $rangeBorderColor !default; //header background color when selected
        -$rangeHeaderSelectedTextColor: #FFFFFF !default; //header text color when selected
        -
        -
        -@import "../../tabulator.scss";
        -
        -.tabulator{
        -	border:none;
        -	
        -	.tabulator-header{
        -		border:$table-cell-border;
        -		border-width:$table-head-cell-border-width;
        -		
        -		.tabulator-col{
        -			border-right:none;
        -			
        -			&.tabulator-moving{
        -				border:none;
        -			}
        -			
        -			.tabulator-col-content{
        -				padding:$table-cell-padding;
        -				
        -				.tabulator-col-sorter{
        -					right:0px;
        -				}
        -			}
        -			
        -			.tabulator-header-filter{
        -				input{
        -					border:$button-border-width solid $button-border-color;
        -				}
        -			}
        -		}
        -		
        -		.tabulator-calcs-holder{
        -			.tabulator-row{
        -				.tabulator-cell{
        -					border-bottom-width:0;
        -				}
        -			}
        -			
        -			border:$table-cell-border;
        -			border-width:$table-foot-cell-border-width;
        -		}
        -	}
        -	
        -	.tabulator-tableholder{
        -		.tabulator-table{
        -			.tabulator-row{
        -				&.tabulator-calcs{
        -					&.tabulator-calcs-top{
        -						border:$table-cell-border;
        -						border-width:$table-head-cell-border-width;
        -					}
        -					
        -					&.tabulator-calcs-bottom{
        -						border:$table-cell-border;
        -						border-width:$table-foot-cell-border-width;
        -					}
        -					
        -					.tabulator-cell{
        -						border-bottom-width:0;
        -					}
        -				}
        -			}
        -		}
        -	}
        -	
        -	.tabulator-footer{
        -		padding:$table-cell-padding;
        -		border:$table-cell-border;
        -		border-width:$table-foot-cell-border-width;
        -		
        -		.tabulator-calcs-holder{
        -			margin:-5px -10px 10px -10px;
        -			
        -			border:$table-cell-border;
        -			border-width:$table-head-cell-border-width;
        -			
        -			.tabulator-row{
        -				.tabulator-cell{
        -					border-bottom-width:0;
        -				}
        -			}
        -		}
        -		
        -		.tabulator-page{
        -			margin:0 0.1875em;
        -			padding:$button-padding-vertical $button-padding-horizontal;
        -			
        -			border:$button-border-width solid $button-border-color;
        -			
        -			font-size: $textSize;
        -			
        -			&.active{
        -				border-color:$button-active-border-color;
        -				color:$button-active-color;
        -				font-weight:bold;
        -			}
        -			
        -			&:not(.disabled){
        -				@media (hover:hover) and (pointer:fine){
        -					&:hover{
        -						cursor:pointer;
        -						border-color:$button-hover-border-color;
        -						background:inherit;
        -						color:inherit;
        -					}
        -				}
        -			}
        -		}
        -	}
        -	
        -	//Bulma theming classes
        -	
        -	&.is-striped{
        -		.tabulator-row{
        -			&:nth-child(even){
        -				background-color: $rowAltBackgroundColor;
        -			}
        -		}
        -	}
        -	
        -	&.is-bordered{
        -		border:$table-cell-border;
        -		
        -		.tabulator-header{
        -			.tabulator-col{
        -				border-right:$table-cell-border;
        -			}
        -		}
        -		
        -		.tabulator-tableholder{
        -			.tabulator-table{
        -				.tabulator-row{
        -					.tabulator-cell{
        -						border-right:$table-cell-border;
        -					}
        -				}
        -			}
        -		}
        -	}
        -	
        -	&.is-narrow{
        -		.tabulator-header{
        -			.tabulator-col{
        -				.tabulator-col-content{
        -					padding: 0.25em 0.5em
        -				}
        -			}
        -		}
        -		
        -		.tabulator-tableholder{
        -			.tabulator-table{
        -				.tabulator-row{
        -					.tabulator-cell{
        -						padding: 0.25em 0.5em
        -					}
        -				}
        -			}
        -		}
        -	}
        -}
        -
        -.tabulator-row{
        -	min-height:14px + ($headerMargin * 2);
        -	
        -	&.tabulator-row-even{
        -		background-color: inherit;
        -	}
        -	
        -	&.tabulator-selected{
        -		background-color:$rowSelectedBackground !important;
        -	}
        -	
        -	@media (hover:hover) and (pointer:fine){
        -		&.tabulator-selected:hover{
        -			background-color:darken($rowSelectedBackground, 10%) !important;
        -		}
        -	}
        -	
        -	.tabulator-cell{
        -		padding:$table-cell-padding;
        -		border:$table-cell-border;
        -		border-width:$table-cell-border-width;
        -	}
        -	
        -	&.tabulator-group{
        -		border-bottom:1px solid #999;
        -		border-right:none;
        -		border-top:1px solid #999;
        -		color:$table-cell-heading-color;
        -	}
        -}
        -
        -.tabulator-print-table{
        -	.tabulator-print-table-group{
        -		box-sizing:border-box;
        -		border-bottom:1px solid #999;
        -		border-right:none;
        -		border-top:1px solid #999;
        -		color:$table-cell-heading-color;
        -	}
        -}
        -
        -.tabulator-popup-container{
        -	background: $backgroundColor,
        -}
        -
        -.tabulator-edit-list{
        -	.tabulator-edit-list-item{
        -		&.active{
        -			color:$backgroundColor;
        -		}
        -
        -		@media (hover:hover) and (pointer:fine){
        -			&:hover{
        -				color:$backgroundColor;
        -			}
        -		}
        -	}
        -}
        \ No newline at end of file
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/bulma/variables.scss b/tmp/tabulator-5.6.1/src/scss/themes/bulma/variables.scss
        deleted file mode 100644
        index 5783ae4..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/bulma/variables.scss
        +++ /dev/null
        @@ -1,198 +0,0 @@
        -////////// from utilities/initial-variables.sass //////////
        -$black:        hsl(0, 0%, 4%) !default;
        -$black-bis:    hsl(0, 0%, 7%) !default;
        -$black-ter:    hsl(0, 0%, 14%) !default;
        -
        -$grey-darker:  hsl(0, 0%, 21%) !default;
        -$grey-dark:    hsl(0, 0%, 29%) !default;
        -$grey:         hsl(0, 0%, 48%) !default;
        -$grey-light:   hsl(0, 0%, 71%) !default;
        -$grey-lighter: hsl(0, 0%, 86%) !default;
        -
        -$white-ter:    hsl(0, 0%, 96%) !default;
        -$white-bis:    hsl(0, 0%, 98%) !default;
        -$white:        hsl(0, 0%, 100%) !default;
        -
        -$orange:       hsl(14,  100%, 53%) !default;
        -$yellow:       hsl(48,  100%, 67%) !default;
        -$green:        hsl(141, 71%,  48%) !default;
        -$turquoise:    hsl(171, 100%, 41%) !default;
        -$cyan:         hsl(204, 86%,  53%) !default;
        -$blue:         hsl(217, 71%,  53%) !default;
        -$purple:       hsl(271, 100%, 71%) !default;
        -$red:          hsl(348, 100%, 61%) !default;
        -
        -// Typography
        -
        -$family-sans-serif: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif !default;
        -$family-monospace: monospace !default;
        -$render-mode: optimizeLegibility !default;
        -
        -$size-1: 3rem !default;
        -$size-2: 2.5rem !default;
        -$size-3: 2rem !default;
        -$size-4: 1.5rem !default;
        -$size-5: 1.25rem !default;
        -$size-6: 1rem !default;
        -$size-7: 0.75rem !default;
        -
        -$weight-light: 300 !default;
        -$weight-normal: 400 !default;
        -$weight-medium: 500 !default;
        -$weight-semibold: 600 !default;
        -$weight-bold: 700 !default;
        -
        -////////// from utilities/derived-variables.sass //////////
        -
        -$primary: $turquoise !default;
        -
        -$info: $cyan !default;
        -$success: $green !default;
        -$warning: $yellow !default;
        -$danger: $red !default;
        -
        -$light: $white-ter !default;
        -$dark: $grey-darker !default;
        -
        -// Invert colors
        -
        -$orange-invert: findColorInvert($orange) !default;
        -$yellow-invert: findColorInvert($yellow) !default;
        -$green-invert: findColorInvert($green) !default;
        -$turquoise-invert: findColorInvert($turquoise) !default;
        -$cyan-invert: findColorInvert($cyan) !default;
        -$blue-invert: findColorInvert($blue) !default;
        -$purple-invert: findColorInvert($purple) !default;
        -$red-invert: findColorInvert($red) !default;
        -
        -$primary-invert: $turquoise-invert !default;
        -$info-invert: $cyan-invert !default;
        -$success-invert: $green-invert !default;
        -$warning-invert: $yellow-invert !default;
        -$danger-invert: $red-invert !default;
        -$light-invert: $dark !default;
        -$dark-invert: $light !default;
        -
        -// General colors
        -
        -$background: $white-ter !default;
        -
        -$border: $grey-lighter !default;
        -$border-hover: $grey-light !default;
        -
        -// Text colors
        -
        -$text: $grey-dark !default;
        -$text-invert: findColorInvert($text) !default;
        -$text-light: $grey !default;
        -$text-strong: $grey-darker !default;
        -
        -// Code colors
        -
        -$code: $red !default;
        -$code-background: $background !default;
        -
        -$pre: $text !default;
        -$pre-background: $background !default;
        -
        -// Link colors
        -
        -$link: $blue !default;
        -$link-invert: $blue-invert !default;
        -$link-visited: $purple !default;
        -
        -$link-hover: $grey-darker !default;
        -$link-hover-border: $grey-light !default;
        -
        -$link-focus: $grey-darker !default;
        -$link-focus-border: $blue !default;
        -
        -$link-active: $grey-darker !default;
        -$link-active-border: $grey-dark !default;
        -
        -// Typography
        -
        -$family-primary: $family-sans-serif !default;
        -$family-secondary: $family-sans-serif !default;
        -$family-code: $family-monospace !default;
        -
        -$size-small: $size-7 !default;
        -$size-normal: $size-6 !default;
        -$size-medium: $size-5 !default;
        -$size-large: $size-4 !default;
        -
        -// Lists and maps
        -$custom-colors: null !default;
        -$custom-shades: null !default;
        -
        -$colors: mergeColorMaps(("white": ($white, $black), "black": ($black, $white), "light": ($light, $light-invert), "dark": ($dark, $dark-invert), "primary": ($primary, $primary-invert), "link": ($link, $link-invert), "info": ($info, $info-invert), "success": ($success, $success-invert), "warning": ($warning, $warning-invert), "danger": ($danger, $danger-invert)), $custom-colors) !default;
        -$shades: mergeColorMaps(("black-bis": $black-bis, "black-ter": $black-ter, "grey-darker": $grey-darker, "grey-dark": $grey-dark, "grey": $grey, "grey-light": $grey-light, "grey-lighter": $grey-lighter, "white-ter": $white-ter, "white-bis": $white-bis), $custom-shades) !default;
        -
        -$sizes: $size-1 $size-2 $size-3 $size-4 $size-5 $size-6 $size-7 !default;
        -
        -
        -////////// from elements/button.sass //////////
        -
        -$control-border-width: 1px !default;
        -
        -$button-color: $grey-darker !default;
        -$button-background-color: $white !default;
        -
        -$button-border-color: $grey-lighter !default;
        -$button-border-width: $control-border-width !default;
        -
        -$button-padding-vertical: calc(0.375em - #{$button-border-width}) !default;
        -$button-padding-horizontal: 0.75em !default;
        -
        -$button-hover-color: $link-hover !default;
        -$button-hover-border-color: $link-hover-border !default;
        -
        -$button-focus-color: $link-focus !default;
        -$button-focus-border-color: $link-focus-border !default;
        -$button-focus-box-shadow-size: 0 0 0 0.125em !default;
        -$button-focus-box-shadow-color: rgba($link, 0.25) !default;
        -
        -$button-active-color: $link-active !default;
        -$button-active-border-color: $link-active-border !default;
        -
        -$button-text-color: $text !default;
        -$button-text-hover-background-color: $background !default;
        -$button-text-hover-color: $text-strong !default;
        -
        -$button-disabled-background-color: $white !default;
        -$button-disabled-border-color: $grey-lighter !default;
        -$button-disabled-shadow: none !default;
        -$button-disabled-opacity: 0.5 !default;
        -
        -$button-static-color: $grey !default;
        -$button-static-background-color: $white-ter !default;
        -$button-static-border-color: $grey-lighter !default;
        -
        -
        -
        -////////// from elements/table.sass //////////
        -
        -$table-color: $grey-darker !default;
        -$table-background-color: $white !default;
        -
        -$table-cell-border: 1px solid $grey-lighter !default;
        -$table-cell-border-width: 0 0 1px !default;
        -$table-cell-padding: 0.5em 0.75em !default;
        -$table-cell-heading-color: $text-strong !default;
        -
        -$table-head-cell-border-width: 0 0 2px !default;
        -$table-head-cell-color: $text-strong !default;
        -$table-foot-cell-border-width: 2px 0 0 !default;
        -$table-foot-cell-color: $text-strong !default;
        -
        -$table-head-background-color: transparent !default;
        -$table-body-background-color: transparent !default;
        -$table-foot-background-color: transparent !default;
        -
        -$table-row-hover-background-color: $white-bis !default;
        -
        -$table-row-active-background-color: $primary !default;
        -$table-row-active-color: $primary-invert !default;
        -
        -$table-striped-row-even-background-color: $white-bis !default;
        -$table-striped-row-even-hover-background-color: $white-ter !default;
        \ No newline at end of file
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/materialize/tabulator_materialize.scss b/tmp/tabulator-5.6.1/src/scss/themes/materialize/tabulator_materialize.scss
        deleted file mode 100644
        index 32662df..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/materialize/tabulator_materialize.scss
        +++ /dev/null
        @@ -1,275 +0,0 @@
        -@import "variables.scss";
        -
        -// Style conversion file, bootstrap to tabulator
        -
        -//Main Theme Variables
        -$backgroundColor: #fff !default; //background color of tabulator
        -$borderColor:$table-border-color !default; //border to tabulator
        -$textSize:16px !default; //table text size
        -
        -//header theming
        -$headerBackgroundColor:#fff !default; //border to tabulator
        -$headerSeparatorColor:$table-border-color !default; //header bottom separator color
        -
        -$cellPadding:15px !default; //padding round header
        -
        -//column header arrows
        -$sortArrowActive: #666 !default;
        -$sortArrowInactive: #bbb !default;
        -
        -//row theming
        -$rowBackgroundColor:#fff !default; //table row background color
        -$rowAltBackgroundColor: $table-striped-color !default; //table row background color
        -$rowBorderColor:$table-border-color !default; //table border color
        -$rowHoverBackground:$table-striped-color !default; //row background color on hover
        -
        -$rowSelectedBackground:$primary-color !default; //row background color when selected
        -$rowSelectedBackgroundHover: $primary-color !default;//row background color when selected and hovered
        -
        -$editBoxColor:$primary-color !default; //border color for edit boxes
        -$errorColor:#dd0000 !default; //error indication
        -
        -//footer theming
        -$footerBorderColor:$table-border-color !default; //footer border color
        -$footerSeparatorColor:$table-border-color !default; //footer bottom separator color
        -$footerActiveColor:$primary-color !default; //footer bottom active text color
        -
        -//range selection
        -$rangeBorderColor: #{darken($primary-color, 10%)} !default; //range border color
        -$rangeHandleColor: $rangeBorderColor !default; //range handle color
        -$rangeHeaderSelectedBackground: $rangeBorderColor !default; //header background color when selected
        -$rangeHeaderSelectedTextColor: #FFFFFF !default; //header text color when selected
        -
        -
        -@import "../../tabulator.scss";
        -
        -.tabulator{
        -	border:none;
        -	background-color: $backgroundColor;
        -
        -	width: 100%;
        -	max-width: 100%;
        -
        -	.tabulator-header{
        -		color:inherit;
        -
        -		.tabulator-col{
        -			border-right:none;
        -
        -			.tabulator-col-content{
        -				padding:$cellPadding;
        -
        -				.tabulator-col-sorter{
        -					right:-10px;
        -				}
        -			}
        -
        -			&.tabulator-col-group{
        -				.tabulator-col-group-cols{
        -					border-top:1px solid $borderColor;
        -				}
        -			}
        -
        -			&.tabulator-sortable{
        -				.tabulator-col-title{
        -					padding-right:10px;
        -				}
        -			}
        -		}
        -
        -		.tabulator-calcs-holder{
        -			width:100%;
        -
        -			border-bottom:1px solid $headerSeparatorColor;
        -		}
        -
        -		.tabulator-frozen-rows-holder{
        -			min-width:600%;
        -
        -			&:empty{
        -				display: none;
        -			}
        -		}
        -	}
        -
        -	.tabulator-tableholder{
        -		.tabulator-table{
        -			color:inherit;
        -		}
        -	}
        -
        -	.tabulator-footer{
        -		background-color:transparent;
        -		color:inherit;
        -
        -		.tabulator-paginator{
        -			color:inherit;
        -		}
        -
        -		.tabulator-page{
        -			margin:0;
        -			margin-top:5px;
        -			padding:8px 12px;
        -
        -			border-radius:0;
        -			border-right:none;
        -
        -			background:rgba(255,255,255,.2);
        -
        -			&[data-page="next"], &:first-of-type {
        -				border-top-left-radius:4px;
        -				border-bottom-left-radius:4px;
        -			}
        -
        -			&[data-page="prev"], &:last-of-type {
        -				border:1px solid $footerBorderColor;
        -				border-top-right-radius:4px;
        -				border-bottom-right-radius:4px;
        -			}
        -
        -			&.active{
        -				color:$footerActiveColor;
        -			}
        -		}
        -	}
        -
        -	//materialize theming classes
        -	&.striped{
        -		.tabulator-row{
        -			&:nth-child(even){
        -				background-color: $rowAltBackgroundColor;
        -
        -				&.tabulator-selected{
        -					background-color:$rowSelectedBackground !important;
        -				}
        -
        -				@media (hover:hover) and (pointer:fine){
        -					&.tabulator-selectable:hover{
        -						background-color:$rowHoverBackground;
        -						cursor: pointer;
        -					}
        -
        -					&.tabulator-selected:hover{
        -						background-color:$rowSelectedBackgroundHover !important;
        -						cursor: pointer;
        -					}
        -				}
        -			}
        -		}
        -	}
        -}
        -
        -//row element
        -.tabulator-row{
        -	min-height:$textSize + ($cellPadding * 2);
        -	border-bottom:1px solid $rowBorderColor;
        -
        -	&.tabulator-row-even{
        -		background-color: $rowBackgroundColor;
        -	}
        -
        -	.tabulator-cell{
        -		padding:$cellPadding;
        -		border-right:none;
        -
        -		&:last-of-type{
        -			border-right: none;
        -		}
        -
        -		.tabulator-data-tree-control{
        -			border:1px solid #ccc;
        -
        -			.tabulator-data-tree-control-collapse{
        -				&:after {
        -					background: #ccc;
        -				}
        -			}
        -
        -			.tabulator-data-tree-control-expand{
        -				background: #ccc;
        -
        -				&:after {
        -					background: #ccc;
        -				}
        -			}
        -		}
        -	}
        -
        -	&.tabulator-group{
        -		background:#fafafa;
        -
        -		span{
        -			margin-left:10px;
        -			color:#666;
        -		}
        -	}
        -}
        -
        -.tabulator-edit-select-list{
        -	background:$headerBackgroundColor;
        -
        -	.tabulator-edit-select-list-item{
        -		color:inherit;
        -
        -		&.active{
        -			color:$headerBackgroundColor;
        -
        -			&.focused{
        -				outline:1px solid rgba($headerBackgroundColor, .5);
        -			}
        -		}
        -
        -		@media (hover:hover) and (pointer:fine){
        -			&:hover{
        -				color:$headerBackgroundColor;
        -			}
        -		}
        -	}
        -
        -	.tabulator-edit-select-list-notice{
        -		color: inherit;
        -	}
        -
        -	.tabulator-edit-select-list-group{
        -		color: inherit;
        -	}
        -}
        -
        -.tabulator.tabulator-rtl{
        -	.tabulator-header {
        -		.tabulator-col{
        -			border-left:none;
        -			border-right:none;
        -		}
        -	}
        -}
        -
        -.tabulator-print-table{
        -	.tabulator-print-table-group{
        -		background:#fafafa;
        -
        -		span{
        -			margin-left:10px;
        -			color:#666;
        -		}
        -	}
        -
        -	.tabulator-data-tree-control{
        -		border:1px solid #ccc;
        -
        -		.tabulator-data-tree-control-collapse{
        -			&:after {
        -				background: #ccc;
        -			}
        -		}
        -
        -		.tabulator-data-tree-control-expand{
        -			background: #ccc;
        -
        -			&:after {
        -				background: #ccc;
        -			}
        -		}
        -	}
        -}
        -
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/materialize/variables.scss b/tmp/tabulator-5.6.1/src/scss/themes/materialize/variables.scss
        deleted file mode 100644
        index e7dd08d..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/materialize/variables.scss
        +++ /dev/null
        @@ -1,70 +0,0 @@
        -// ==========================================================================
        -// Materialize variables
        -// ==========================================================================
        -//
        -// Table of Contents:
        -//
        -//  1. Colors
        -//  2. Badges
        -//  3. Buttons
        -//  4. Cards
        -//  5. Carousel
        -//  6. Collapsible
        -//  7. Chips
        -//  8. Date + Time Picker
        -//  9. Dropdown
        -//  10. Forms
        -//  11. Global
        -//  12. Grid
        -//  13. Navigation Bar
        -//  14. Side Navigation
        -//  15. Photo Slider
        -//  16. Spinners | Loaders
        -//  17. Tabs
        -//  18. Tables
        -//  19. Toasts
        -//  20. Typography
        -//  21. Footer
        -//  22. Flow Text
        -//  23. Collections
        -//  24. Progress Bar
        -
        -
        -// 18. Tables
        -// ==========================================================================
        -
        -$materialize-red: (
        -  "base":       #e51c23,
        -  "lighten-5":  #fdeaeb,
        -  "lighten-4":  #f8c1c3,
        -  "lighten-3":  #f3989b,
        -  "lighten-2":  #ee6e73,
        -  "lighten-1":  #ea454b,
        -  "darken-1":   #d0181e,
        -  "darken-2":   #b9151b,
        -  "darken-3":   #a21318,
        -  "darken-4":   #8b1014,
        -);
        -
        -$colors: (
        -        "materialize-red": $materialize-red,
        -) !default;
        -
        -// usage: color("name_of_color", "type_of_color")
        -// to avoid to repeating map-get($colors, ...)
        -@function color($color, $type) {
        -  @if map-has-key($colors, $color) {
        -    $curr_color: map-get($colors, $color);
        -    @if map-has-key($curr_color, $type) {
        -      @return map-get($curr_color, $type);
        -    }
        -  }
        -  @warn "Unknown `#{$color}` - `#{$type}` in $colors.";
        -  @return null;
        -}
        -
        -$table-border-color: rgba(0,0,0,.12) !default;
        -$table-striped-color: #f8f8f8 !default;
        -
        -
        -$primary-color: color("materialize-red", "lighten-2") !default;
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/semanticui/tabulator_semanticui.scss b/tmp/tabulator-5.6.1/src/scss/themes/semanticui/tabulator_semanticui.scss
        deleted file mode 100644
        index dd46266..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/semanticui/tabulator_semanticui.scss
        +++ /dev/null
        @@ -1,587 +0,0 @@
        -
        -@import "variables_table.scss";
        -
        -//Main Theme Variables
        -$backgroundColor: $background !default; //background color of tabulator
        -$textSize:14px !default; //table text size
        -
        -//header theming
        -$headerBackgroundColor:$headerBackground !default; //border to tabulator
        -$headerTextColor:$headerColor !default; //header text color
        -$headerBorderColor:#ddd !default;  //header border color
        -$headerSeparatorColor:#999 !default; //header bottom separator color
        -$headerMargin:4px !default; //padding round header
        -
        -//column header arrows
        -$sortArrowActive: #666 !default;
        -$sortArrowInactive: #bbb !default;
        -
        -//row theming
        -$rowBorderColor:#ddd !default; //table border color
        -$rowTextColor:#333 !default; //table text color
        -
        -$rowSelectedBackground: #9ABCEA !default; //row background color when selected
        -$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered
        -
        -
        -$editBoxColor:#1D68CD !default; //border color for edit boxes
        -$errorColor:#dd0000 !default; //error indication
        -
        -//footer theming
        -$footerBackgroundColor:#fff !default; //border to tabulator
        -$footerTextColor:#555 !default; //footer text color
        -$footerBorderColor:#aaa !default; //footer border color
        -$footerSeparatorColor:#999 !default; //footer bottom separator color
        -$footerActiveColor:#d00 !default; //footer bottom active text color
        -
        -@import "../../tabulator.scss";
        -
        -.tabulator{
        -	width: 100%;
        -
        -	margin: $margin;
        -	border: $border;
        -	box-shadow: $boxShadow;
        -	border-radius: $borderRadius;
        -	color: $color;
        -
        -	.tabulator-header{
        -		border-right:none;
        -		border-bottom: $headerBorder;
        -		background-color: $headerBackgroundColor;
        -
        -		box-shadow: $headerBoxShadow;
        -
        -		color: $headerTextColor;
        -		font-style: $headerFontStyle;
        -		font-weight: $headerFontWeight;
        -		text-transform: $headerTextTransform;
        -
        -		.tabulator-col{
        -			border-right: none;
        -			background-color: $headerBackgroundColor;
        -
        -			.tabulator-col-content{
        -				padding: $headerVerticalPadding $headerHorizontalPadding;
        -			}
        -		}
        -	}
        -
        -	.tabulator-tableholder{
        -		.tabulator-table{
        -			background-color:transparent;
        -			.tabulator-row{
        -				&.tabulator-calcs{
        -					background:darken($background, 5%) !important;
        -
        -					&.tabulator-calcs-top{
        -						border-bottom:2px solid $rowBorderColor;
        -					}
        -
        -					&.tabulator-calcs-bottom{
        -						border-top:2px solid $rowBorderColor;
        -					}
        -				}
        -			}
        -		}
        -	}
        -
        -	.tabulator-footer{
        -		padding: $footerVerticalPadding $footerHorizontalPadding;
        -
        -		border-top: $footerBorder;
        -		box-shadow: $footerBoxShadow;
        -
        -		background: $footerBackground;
        -
        -		text-align:right;
        -		color: $footerColor;
        -
        -		font-style: $footerFontStyle;
        -		font-weight: $footerFontWeight;
        -		text-transform: $footerTextTransform;
        -
        -		.tabulator-calcs-holder{
        -			margin:(-$footerVerticalPadding) (-$footerHorizontalPadding) $footerVerticalPadding (-$footerHorizontalPadding);
        -
        -			background:lighten($footerBackground, 5%) !important;
        -
        -			.tabulator-row{
        -				background:lighten($footerBackground, 5%) !important;
        -			}
        -
        -			&:only-child{
        -				margin-bottom:-$footerVerticalPadding;
        -				border-bottom:none;
        -			}
        -		}
        -	}
        -
        -	.tabulator-tableholder{
        -		.tabulator-table{
        -			.tabulator-row{
        -				&.positive, .tabulator-cell.positive{
        -					box-shadow: $positiveBoxShadow;
        -					background: $positiveBackgroundColor !important;
        -					color: $positiveColor !important;
        -
        -					@media (hover:hover) and (pointer:fine){
        -						&:hover{
        -							background: $positiveBackgroundHover !important;
        -							color: $positiveColorHover !important;
        -						}
        -					}
        -				}
        -
        -				&.negative, .tabulator-cell.negative{
        -					box-shadow: $negativeBoxShadow;
        -					background: $negativeBackgroundColor !important;
        -					color: $negativeColor !important;
        -
        -					@media (hover:hover) and (pointer:fine){
        -						&:hover{
        -							background: $negativeBackgroundHover !important;
        -							color: $negativeColorHover !important;
        -						}
        -					}
        -				}
        -
        -				&.error, .tabulator-cell.error{
        -					box-shadow: $errorBoxShadow;
        -					background: $errorBackgroundColor !important;
        -					color: $errorColor !important;
        -
        -					@media (hover:hover) and (pointer:fine){
        -						&:hover{
        -							background: $errorBackgroundHover !important;
        -							color: $errorColorHover !important;
        -						}
        -					}
        -				}
        -
        -				&.warning, .tabulator-cell.warning{
        -					box-shadow: $warningBoxShadow;
        -					background: $warningBackgroundColor !important;
        -					color: $warningColor !important;
        -
        -					@media (hover:hover) and (pointer:fine){
        -						&:hover{
        -							background: $warningBackgroundHover !important;
        -							color: $warningColorHover !important;
        -						}
        -					}
        -				}
        -
        -				&.active, .tabulator-cell.active{
        -					box-shadow: $activeBoxShadow;
        -					background: $activeBackgroundColor !important;
        -					color: $activeColor !important;
        -
        -					@media (hover:hover) and (pointer:fine){
        -						&:hover{
        -							background: $positiveBackgroundHover !important;
        -							color: $positiveColorHover !important;
        -						}
        -					}
        -				}
        -
        -				&.active, .tabulator-cell.active{
        -					pointer-events: none;
        -					color: $disabledTextColor;
        -				}
        -
        -				@media (hover:hover) and (pointer:fine){
        -					&.disabled:hover{
        -						pointer-events: none;
        -						color: $disabledTextColor;
        -					}
        -				}
        -			}
        -		}
        -	}
        -
        -
        -	&.inverted{
        -
        -		background: $invertedBackground;
        -		color: $invertedCellColor;
        -		border: $invertedBorder;
        -
        -		.tabulator-header{
        -			background-color: $invertedHeaderBackground;
        -			border-color: $invertedHeaderBorderColor !important;
        -			color: $invertedHeaderColor;
        -
        -			.tabulator-col{
        -				border-color: $invertedCellBorderColor !important;
        -			}
        -		}
        -
        -		.tabulator-tableholder{
        -			.tabulator-table{
        -				.tabulator-row{
        -					color: $invertedCellColor;
        -					border: $invertedBorder;
        -
        -					.tabulator-cell{
        -						border-color: $invertedCellBorderColor !important;
        -					}
        -				}
        -			}
        -		}
        -
        -		.tabulator-footer{
        -			background: $definitionPageBackground;
        -		}
        -	}
        -
        -	&.striped{
        -		.tabulator-row{
        -			&:nth-child(even){
        -				background-color: $basicTableStripedBackground;
        -			}
        -		}
        -	}
        -
        -	&.celled{
        -		border:1px solid $borderColor;
        -
        -		.tabulator-header{
        -			.tabulator-col{
        -				border-right:$cellBorder;
        -			}
        -		}
        -
        -		.tabulator-tableholder{
        -			.tabulator-table{
        -				.tabulator-row{
        -					.tabulator-cell{
        -						border-right:$cellBorder;
        -					}
        -				}
        -			}
        -		}
        -
        -	}
        -
        -
        -	&[class*="single line"]{
        -		.tabulator-tableholder{
        -			.tabulator-table{
        -				.tabulator-row{
        -					.tabulator-cell{
        -						border-right:none;
        -					}
        -				}
        -			}
        -		}
        -	}
        -
        -	//coloured table varients
        -	/* Red */
        -	&.red {
        -		border-top: $coloredBorderSize solid $red;
        -	}
        -	&.inverted.red {
        -		background-color: $red !important;
        -		color: $white !important;
        -	}
        -
        -	/* Orange */
        -	&.orange {
        -		border-top: $coloredBorderSize solid $orange;
        -	}
        -	&.inverted.orange {
        -		background-color: $orange !important;
        -		color: $white !important;
        -	}
        -
        -	/* Yellow */
        -	&.yellow {
        -		border-top: $coloredBorderSize solid $yellow;
        -	}
        -	&.inverted.yellow {
        -		background-color: $yellow !important;
        -		color: $white !important;
        -	}
        -
        -	/* Olive */
        -	&.olive {
        -		border-top: $coloredBorderSize solid $olive;
        -	}
        -	&.inverted.olive {
        -		background-color: $olive !important;
        -		color: $white !important;
        -	}
        -
        -	/* Green */
        -	&.green {
        -		border-top: $coloredBorderSize solid $green;
        -	}
        -	&.inverted.green {
        -		background-color: $green !important;
        -		color: $white !important;
        -	}
        -
        -	/* Teal */
        -	&.teal {
        -		border-top: $coloredBorderSize solid $teal;
        -	}
        -	&.inverted.teal {
        -		background-color: $teal !important;
        -		color: $white !important;
        -	}
        -
        -	/* Blue */
        -	&.blue {
        -		border-top: $coloredBorderSize solid $blue;
        -	}
        -	&.inverted.blue {
        -		background-color: $blue !important;
        -		color: $white !important;
        -	}
        -
        -	/* Violet */
        -	&.violet {
        -		border-top: $coloredBorderSize solid $violet;
        -	}
        -	&.inverted.violet {
        -		background-color: $violet !important;
        -		color: $white !important;
        -	}
        -
        -	/* Purple */
        -	&.purple {
        -		border-top: $coloredBorderSize solid $purple;
        -	}
        -	&.inverted.purple {
        -		background-color: $purple !important;
        -		color: $white !important;
        -	}
        -
        -	/* Pink */
        -	&.pink {
        -		border-top: $coloredBorderSize solid $pink;
        -	}
        -	&.inverted.pink {
        -		background-color: $pink !important;
        -		color: $white !important;
        -	}
        -
        -	/* Brown */
        -	&.brown {
        -		border-top: $coloredBorderSize solid $brown;
        -	}
        -	&.inverted.brown {
        -		background-color: $brown !important;
        -		color: $white !important;
        -	}
        -
        -	/* Grey */
        -	&.grey {
        -		border-top: $coloredBorderSize solid $grey;
        -	}
        -	&.inverted.grey {
        -		background-color: $grey !important;
        -		color: $white !important;
        -	}
        -
        -	/* Black */
        -	&.black {
        -		border-top: $coloredBorderSize solid $black;
        -	}
        -	&.inverted.black {
        -		background-color: $black !important;
        -		color: $white !important;
        -	}
        -
        -	&.padded{
        -		.tabulator-header{
        -			.tabulator-col{
        -				.tabulator-col-content{
        -					padding: $paddedVerticalPadding $paddedHorizontalPadding;
        -
        -					.tabulator-arrow{
        -						top:20px;
        -					}
        -				}
        -			}
        -		}
        -		.tabulator-tableholder{
        -			.tabulator-table{
        -				.tabulator-row{
        -					.tabulator-cell{
        -						padding: $paddedVerticalPadding $paddedHorizontalPadding;
        -					}
        -				}
        -			}
        -		}
        -
        -		&.very{
        -			.tabulator-header{
        -				.tabulator-col{
        -					.tabulator-col-content{
        -						padding: $veryPaddedVerticalPadding $veryPaddedHorizontalPadding;
        -
        -						.tabulator-arrow{
        -							top:26px;
        -						}
        -					}
        -				}
        -			}
        -			.tabulator-tableholder{
        -				.tabulator-table{
        -					.tabulator-row{
        -						.tabulator-cell{
        -							padding: $veryPaddedVerticalPadding $veryPaddedHorizontalPadding;
        -						}
        -					}
        -				}
        -			}
        -		}
        -	}
        -
        -	&.compact{
        -		.tabulator-header{
        -			.tabulator-col{
        -				.tabulator-col-content{
        -					padding: $compactVerticalPadding $compactHorizontalPadding;
        -
        -					.tabulator-arrow{
        -						top:12px;
        -					}
        -				}
        -			}
        -		}
        -		.tabulator-tableholder{
        -			.tabulator-table{
        -				.tabulator-row{
        -					.tabulator-cell{
        -						padding: $compactVerticalPadding $compactHorizontalPadding;
        -					}
        -				}
        -			}
        -		}
        -
        -		&.very{
        -			.tabulator-header{
        -				.tabulator-col{
        -					.tabulator-col-content{
        -						padding: $veryCompactVerticalPadding $veryCompactHorizontalPadding;
        -
        -						.tabulator-arrow{
        -							top:10px;
        -						}
        -					}
        -				}
        -			}
        -			.tabulator-tableholder{
        -				.tabulator-table{
        -					.tabulator-row{
        -						.tabulator-cell{
        -							padding: $veryCompactVerticalPadding $veryCompactHorizontalPadding;
        -						}
        -					}
        -				}
        -			}
        -		}
        -	}
        -}
        -
        -.tabulator-row{
        -	border-bottom: $rowBorder;
        -
        -	&.tabulator-row-even{
        -		background-color: $rowBackgroundColor;
        -	}
        -
        -	@media (hover:hover) and (pointer:fine){
        -		&.tabulator-selectable:hover{
        -			box-shadow: $activeBoxShadow;
        -			background: $activeBackgroundColor !important;
        -			color: $activeColor !important;
        -		}
        -	}
        -
        -	&.tabulator-selected{
        -		background-color:$rowSelectedBackground !important;
        -	}
        -
        -	@media (hover:hover) and (pointer:fine){
        -		&.tabulator-selected:hover{
        -			background-color:$rowSelectedBackgroundHover !important;
        -			cursor: pointer;
        -		}
        -	}
        -
        -	&.tabulator-moving{
        -		pointer-events: none !important;
        -	}
        -
        -	.tabulator-cell{
        -		padding: $cellVerticalPadding $cellHorizontalPadding;
        -		border-right:none;
        -		vertical-align:middle;
        -
        -		&:last-of-type{
        -			border-right: none;
        -		}
        -
        -		.tabulator-responsive-collapse-toggle{
        -			color:#fff;
        -		}
        -	}
        -
        -	&.tabulator-group{
        -		background:#fafafa;
        -		span{
        -			color:#666;
        -		}
        -	}
        -}
        -
        -.tabulator-menu{
        -	background:$backgroundColor;
        -
        -	.tabulator-menu-item{
        -		@media (hover:hover) and (pointer:fine){
        -			&:not(.tabulator-menu-item-disabled):hover{
        -				background: $headerBackgroundColor;
        -			}
        -		}
        -	}
        -}
        -
        -.tabulator-edit-select-list{
        -	background:$backgroundColor;
        -
        -	.tabulator-edit-select-list-item{
        -		&.active{
        -			color:$backgroundColor;
        -
        -			&.focused{
        -				outline:1px solid rgba($backgroundColor, .5);
        -			}
        -		}
        -
        -		@media (hover:hover) and (pointer:fine){
        -			&:hover{
        -				color:$backgroundColor;
        -			}
        -		}
        -	}
        -
        -	.tabulator-edit-select-list-notice{
        -		color:inherit;
        -	}
        -}
        -
        -.tabulator-print-table{
        -	.tabulator-print-table-group{
        -		background:#fafafa;
        -
        -		span{
        -			color:#666;
        -		}
        -	}
        -}
        \ No newline at end of file
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/semanticui/variables.scss b/tmp/tabulator-5.6.1/src/scss/themes/semanticui/variables.scss
        deleted file mode 100644
        index 65d71c6..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/semanticui/variables.scss
        +++ /dev/null
        @@ -1,839 +0,0 @@
        -/// Remove the unit of a length
        -/// @param {Number} $number - Number to remove unit from
        -/// @author Hugo Giraudel
        -/// @return {Number} - Unitless number
        -@function strip-unit($number) {
        -  @if type-of($number) == 'number' and not unitless($number) {
        -    @return $number / ($number * 0 + 1);
        -  }
        -
        -  @return $number;
        -}
        -
        -/*******************************
        -         Site Settings
        -*******************************/
        -
        -/*-------------------
        -       Fonts
        ---------------------*/
        -
        -$fontName          : 'Lato' !default;
        -$fontSmoothing     : antialiased !default;
        -
        -$headerFont        : $fontName, 'Helvetica Neue', Arial, Helvetica, sans-serif !default;
        -$pageFont          : $fontName, 'Helvetica Neue', Arial, Helvetica, sans-serif !default;
        -
        -$googleFontName    : $fontName !default;
        -$importGoogleFonts : true !default;
        -$googleFontSizes   : '400,700,400italic,700italic' !default;
        -$googleSubset      : 'latin' !default;
        -
        -$googleProtocol    : 'https://' !default;
        -$googleFontRequest : '${googleFontName}:${googleFontSizes}&subset=${googleSubset}' !default;
        -
        -/*-------------------
        -      Base Sizes
        ---------------------*/
        -
        -/* This is the single variable that controls them all */
        -$emSize   : 14px !default;
        -
        -/* The size of page text  */
        -$fontSize : 14px !default;
        -
        -/*-------------------
        -  Exact Pixel Values
        ---------------------*/
        -/*
        -  These are used to specify exact pixel values in em
        -  for things like borders that remain constantly
        -  sized as emSize adjusts
        -
        -  Since there are many more sizes than names for sizes,
        -  these are named by their original pixel values.
        -
        -*/
        -
        -
        -$a1px  : strip-unit(1 / $emSize) + rem !default;
        -$a4px  : strip-unit(4 / $emSize) + rem !default;
        -$a11px  : strip-unit(11 / $emSize) + rem !default;
        -$a14px  : strip-unit(14 / $emSize) + rem !default;
        -
        -$relative1px  : strip-unit(1 / $emSize) + em !default;
        -$relative4px  : strip-unit(4 / $emSize) + em !default;
        -$relative11px  : strip-unit(11 / $emSize) + em !default;
        -$relative14px  : strip-unit(14 / $emSize) + em !default;
        -
        -
        -
        -/*-------------------
        -    Border Radius
        ---------------------*/
        -
        -/* See Power-user section below
        -   for explanation of $px variables
        -*/
        -$relativeBorderRadius: $relative4px !default;
        -$absoluteBorderRadius: $a4px !default;
        -
        -$defaultBorderRadius: $absoluteBorderRadius !default;
        -
        -
        -
        -/*-------------------
        -      Site Colors
        ---------------------*/
        -
        -/*---  Colors  ---*/
        -$red              : #DB2828 !default;
        -$orange           : #F2711C !default;
        -$yellow           : #FBBD08 !default;
        -$olive            : #B5CC18 !default;
        -$green            : #21BA45 !default;
        -$teal             : #00B5AD !default;
        -$blue             : #2185D0 !default;
        -$violet           : #6435C9 !default;
        -$purple           : #A333C8 !default;
        -$pink             : #E03997 !default;
        -$brown            : #A5673F !default;
        -$grey             : #767676 !default;
        -$black            : #1B1C1D !default;
        -
        -/*---  Light Colors  ---*/
        -$lightRed         : #FF695E !default;
        -$lightOrange      : #FF851B !default;
        -$lightYellow      : #FFE21F !default;
        -$lightOlive       : #D9E778 !default;
        -$lightGreen       : #2ECC40 !default;
        -$lightTeal        : #6DFFFF !default;
        -$lightBlue        : #54C8FF !default;
        -$lightViolet      : #A291FB !default;
        -$lightPurple      : #DC73FF !default;
        -$lightPink        : #FF8EDF !default;
        -$lightBrown       : #D67C1C !default;
        -$lightGrey        : #DCDDDE !default;
        -$lightBlack       : #545454 !default;
        -
        -/*---   Neutrals  ---*/
        -$fullBlack        : #000000 !default;
        -$offWhite         : #F9FAFB !default;
        -$darkWhite        : #F3F4F5 !default;
        -$midWhite         : #DCDDDE !default;
        -$white            : #FFFFFF !default;
        -
        -/*--- Colored Backgrounds ---*/
        -$redBackground    : #FFE8E6 !default;
        -$orangeBackground : #FFEDDE !default;
        -$yellowBackground : #FFF8DB !default;
        -$oliveBackground  : #FBFDEF !default;
        -$greenBackground  : #E5F9E7 !default;
        -$tealBackground   : #E1F7F7 !default;
        -$blueBackground   : #DFF0FF !default;
        -$violetBackground : #EAE7FF !default;
        -$purpleBackground : #F6E7FF !default;
        -$pinkBackground   : #FFE3FB !default;
        -$brownBackground  : #F1E2D3 !default;
        -
        -/*--- Colored Text ---*/
        -$redTextColor    : $red !default;
        -$orangeTextColor : $orange !default;
        -$yellowTextColor : #B58105 !default; // Yellow text is difficult to read
        -$oliveTextColor  : #8ABC1E !default; // Olive is difficult to read
        -$greenTextColor  : #1EBC30 !default; // Green is difficult to read
        -$tealTextColor   : #10A3A3 !default; // Teal text is difficult to read
        -$blueTextColor   : $blue !default;
        -$violetTextColor : $violet !default;
        -$purpleTextColor : $purple !default;
        -$pinkTextColor   : $pink !default;
        -$brownTextColor  : $brown !default;
        -
        -/*--- Colored Headers ---*/
        -$redHeaderColor    : darken($redTextColor, 5) !default;
        -$oliveHeaderColor  : darken($oliveTextColor, 5) !default;
        -$greenHeaderColor  : darken($greenTextColor, 5) !default;
        -$yellowHeaderColor : darken($yellowTextColor, 5) !default;
        -$blueHeaderColor   : darken($blueTextColor, 5) !default;
        -$tealHeaderColor   : darken($tealTextColor, 5) !default;
        -$pinkHeaderColor   : darken($pinkTextColor, 5) !default;
        -$violetHeaderColor : darken($violetTextColor, 5) !default;
        -$purpleHeaderColor : darken($purpleTextColor, 5) !default;
        -$orangeHeaderColor : darken($orangeTextColor, 5) !default;
        -$brownHeaderColor  : darken($brownTextColor, 5) !default;
        -
        -/*--- Colored Border ---*/
        -$redBorderColor    : $redTextColor !default;
        -$orangeBorderColor : $orangeTextColor !default;
        -$yellowBorderColor : $yellowTextColor !default;
        -$oliveBorderColor  : $oliveTextColor !default;
        -$greenBorderColor  : $greenTextColor !default;
        -$tealBorderColor   : $tealTextColor !default;
        -$blueBorderColor   : $blueTextColor !default;
        -$violetBorderColor : $violetTextColor !default;
        -$purpleBorderColor : $purpleTextColor !default;
        -$pinkBorderColor   : $pinkTextColor !default;
        -$brownBorderColor  : $brownTextColor !default;
        -
        -/*-------------------
        -     Alpha Colors
        ---------------------*/
        -
        -$subtleTransparentBlack     : rgba(0, 0, 0, 0.03) !default;
        -$transparentBlack           : rgba(0, 0, 0, 0.05) !default;
        -$strongTransparentBlack     : rgba(0, 0, 0, 0.10) !default;
        -$veryStrongTransparentBlack : rgba(0, 0, 0, 0.15) !default;
        -
        -$subtleTransparentWhite     : rgba(255, 255, 255, 0.02) !default;
        -$transparentWhite           : rgba(255, 255, 255, 0.08) !default;
        -$strongTransparentWhite     : rgba(255, 255, 255, 0.15) !default;
        -
        -
        -
        -/*-------------------
        -    Brand Colors
        ---------------------*/
        -
        -$primaryColor        : $blue !default;
        -$secondaryColor      : $black !default;
        -
        -$lightPrimaryColor   : $lightBlue !default;
        -$lightSecondaryColor : $lightBlack !default;
        -
        -/*--------------
        -  Page Heading
        ----------------*/
        -
        -$headerFontWeight : bold !default;
        -$headerLineHeight : (18 / 14) * 1em !default;
        -
        -$h1 : (28 / 14) * 1rem !default;
        -$h2 : (24 / 14) * 1rem !default;
        -$h3 : (18 / 14) * 1rem !default;
        -$h4 : (15 / 14) * 1rem !default;
        -$h5 : (14 / 14) * 1rem !default;
        -
        -
        -/*-------------------
        -        Page
        ---------------------*/
        -
        -$pageBackground      : #FFFFFF !default;
        -$pageOverflowX       : hidden !default;
        -
        -$lineHeight          : 1.4285em !default;
        -$textColor           : rgba(0, 0, 0, 0.87) !default;
        -
        -
        -/*--------------
        -   Form Input
        ----------------*/
        -
        -/* This adjusts the default form input across all elements */
        -$inputBackground        : $white !default;
        -$inputVerticalPadding   : $relative11px !default;
        -$inputHorizontalPadding : $relative14px !default;
        -$inputPadding           : $inputVerticalPadding $inputHorizontalPadding !default;
        -
        -/* Input Text Color */
        -$inputColor: $textColor !default;
        -$inputPlaceholderColor: lighten($inputColor, 75) !default;
        -$inputPlaceholderFocusColor: lighten($inputColor, 45) !default;
        -
        -/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */
        -$inputLineHeight: (17 / 14) * 1em !default;
        -
        -/*-------------------
        -    Focused Input
        ---------------------*/
        -
        -/* Used on inputs, textarea etc */
        -$focusedFormBorderColor: #85B7D9 !default;
        -
        -/* Used on dropdowns, other larger blocks */
        -$focusedFormMutedBorderColor: #96C8DA !default;
        -
        -/*-------------------
        -        Sizes
        ---------------------*/
        -
        -/*
        -  Sizes are all expressed in terms of 14px/em (default em)
        -  This ensures these "ratios" remain constant despite changes in EM
        -*/
        -
        -$miniSize        : (11 / 14) !default;
        -$tinySize        : (12 / 14) !default;
        -$smallSize       : (13 / 14) !default;
        -$mediumSize      : (14 / 14) !default;
        -$largeSize       : (16 / 14) !default;
        -$bigSize         : (18 / 14) !default;
        -$hugeSize        : (20 / 14) !default;
        -$massiveSize     : (24 / 14) !default;
        -
        -
        -/*-------------------
        -      Paragraph
        ---------------------*/
        -
        -$paragraphMargin     : 0em 0em 1em !default;
        -$paragraphLineHeight : $lineHeight !default;
        -
        -/*-------------------
        -       Links
        ---------------------*/
        -
        -$linkColor           : #4183C4 !default;
        -$linkUnderline       : none !default;
        -$linkHoverColor      : darken(saturate($linkColor, 20), 15) !default;
        -$linkHoverUnderline  : $linkUnderline !default;
        -
        -/*-------------------
        -  Highlighted Text
        ---------------------*/
        -
        -$highlightBackground      : #CCE2FF !default;
        -$highlightColor           : $textColor !default;
        -
        -$inputHighlightBackground : rgba(100, 100, 100, 0.4) !default;
        -$inputHighlightColor      : $textColor !default;
        -
        -/*-------------------
        -       Em Sizes
        ---------------------*/
        -
        -/*
        -  This rounds $size values to the closest pixel then expresses that value in (r)em.
        -  This ensures all size values round to exact pixels
        -*/
        -$mini            : (round($miniSize * $emSize) / $emSize) * 1rem !default;
        -$tiny            : (round($tinySize * $emSize) / $emSize) * 1rem !default;
        -$small           : (round($smallSize * $emSize) / $emSize) * 1rem !default;
        -$medium          : (round($mediumSize * $emSize) / $emSize) * 1rem !default;
        -$large           : (round($largeSize * $emSize) / $emSize) * 1rem !default;
        -$big             : (round($bigSize * $emSize) / $emSize) * 1rem !default;
        -$huge            : (round($hugeSize * $emSize) / $emSize) * 1rem !default;
        -$massive         : (round($massiveSize * $emSize) / $emSize) * 1rem !default;
        -
        -/* em */
        -$relativeMini    : (round($miniSize * $emSize) / $emSize) * 1em !default;
        -$relativeTiny    : (round($tinySize * $emSize) / $emSize) * 1em !default;
        -$relativeSmall   : (round($smallSize * $emSize) / $emSize) * 1em !default;
        -$relativeMedium  : (round($mediumSize * $emSize) / $emSize) * 1em !default;
        -$relativeLarge   : (round($largeSize * $emSize) / $emSize) * 1em !default;
        -$relativeBig     : (round($bigSize * $emSize) / $emSize) * 1em !default;
        -$relativeHuge    : (round($hugeSize * $emSize) / $emSize) * 1em !default;
        -$relativeMassive : (round($massiveSize * $emSize) / $emSize) * 1em !default;
        -
        -/* rem */
        -$absoluteMini    : (round($miniSize * $emSize) / $emSize) * 1rem !default;
        -$absoluteTiny    : (round($tinySize * $emSize) / $emSize) * 1rem !default;
        -$absoluteSmall   : (round($smallSize * $emSize) / $emSize) * 1rem !default;
        -$absoluteMedium  : (round($mediumSize * $emSize) / $emSize) * 1rem !default;
        -$absoluteLarge   : (round($largeSize * $emSize) / $emSize) * 1rem !default;
        -$absoluteBig     : (round($bigSize * $emSize) / $emSize) * 1rem !default;
        -$absoluteHuge    : (round($hugeSize * $emSize) / $emSize) * 1rem !default;
        -$absoluteMassive : (round($massiveSize * $emSize) / $emSize) * 1rem !default;
        -
        -
        -/*-------------------
        -       Loader
        ---------------------*/
        -
        -$loaderSize              : $relativeBig !default;
        -$loaderSpeed             : 0.6s !default;
        -$loaderLineWidth         : 0.2em !default;
        -$loaderFillColor         : rgba(0, 0, 0, 0.1) !default;
        -$loaderLineColor         : $grey !default;
        -
        -$invertedLoaderFillColor : rgba(255, 255, 255, 0.15) !default;
        -$invertedLoaderLineColor : $white !default;
        -
        -/*-------------------
        -        Grid
        ---------------------*/
        -
        -$columnCount: 16 !default;
        -
        -/*-------------------
        -     Transitions
        ---------------------*/
        -
        -$defaultDuration : 0.1s !default;
        -$defaultEasing   : ease !default;
        -
        -/*-------------------
        -     Breakpoints
        ---------------------*/
        -
        -$mobileBreakpoint            : 320px !default;
        -$tabletBreakpoint            : 768px !default;
        -$computerBreakpoint          : 992px !default;
        -$largeMonitorBreakpoint      : 1200px !default;
        -$widescreenMonitorBreakpoint : 1920px !default;
        -
        -
        -
        -/* Columns */
        -$oneWide        : (1 / $columnCount * 100%) !default;
        -$twoWide        : (2 / $columnCount * 100%) !default;
        -$threeWide      : (3 / $columnCount * 100%) !default;
        -$fourWide       : (4 / $columnCount * 100%) !default;
        -$fiveWide       : (5 / $columnCount * 100%) !default;
        -$sixWide        : (6 / $columnCount * 100%) !default;
        -$sevenWide      : (7 / $columnCount * 100%) !default;
        -$eightWide      : (8 / $columnCount * 100%) !default;
        -$nineWide       : (9 / $columnCount * 100%) !default;
        -$tenWide        : (10 / $columnCount * 100%) !default;
        -$elevenWide     : (11 / $columnCount * 100%) !default;
        -$twelveWide     : (12 / $columnCount * 100%) !default;
        -$thirteenWide   : (13 / $columnCount * 100%) !default;
        -$fourteenWide   : (14 / $columnCount * 100%) !default;
        -$fifteenWide    : (15 / $columnCount * 100%) !default;
        -$sixteenWide    : (16 / $columnCount * 100%) !default;
        -
        -$oneColumn      : (1 / 1 * 100%) !default;
        -$twoColumn      : (1 / 2 * 100%) !default;
        -$threeColumn    : (1 / 3 * 100%) !default;
        -$fourColumn     : (1 / 4 * 100%) !default;
        -$fiveColumn     : (1 / 5 * 100%) !default;
        -$sixColumn      : (1 / 6 * 100%) !default;
        -$sevenColumn    : (1 / 7 * 100%) !default;
        -$eightColumn    : (1 / 8 * 100%) !default;
        -$nineColumn     : (1 / 9 * 100%) !default;
        -$tenColumn      : (1 / 10 * 100%) !default;
        -$elevenColumn   : (1 / 11 * 100%) !default;
        -$twelveColumn   : (1 / 12 * 100%) !default;
        -$thirteenColumn : (1 / 13 * 100%) !default;
        -$fourteenColumn : (1 / 14 * 100%) !default;
        -$fifteenColumn  : (1 / 15 * 100%) !default;
        -$sixteenColumn  : (1 / 16 * 100%) !default;
        -
        -
        -/*******************************
        -           Power-User
        -*******************************/
        -
        -
        -/*-------------------
        -    Emotive Colors
        ---------------------*/
        -
        -/* Positive */
        -$positiveColor           : $green !default;
        -$positiveBackgroundColor : #FCFFF5 !default;
        -$positiveBorderColor     : #A3C293 !default;
        -$positiveHeaderColor     : #1A531B !default;
        -$positiveTextColor       : #2C662D !default;
        -
        -/* Negative */
        -$negativeColor           : $red !default;
        -$negativeBackgroundColor : #FFF6F6 !default;
        -$negativeBorderColor     : #E0B4B4 !default;
        -$negativeHeaderColor     : #912D2B !default;
        -$negativeTextColor       : #9F3A38 !default;
        -
        -/* Info */
        -$infoColor              : #31CCEC !default;
        -$infoBackgroundColor    : #F8FFFF !default;
        -$infoBorderColor        : #A9D5DE !default;
        -$infoHeaderColor        : #0E566C !default;
        -$infoTextColor          : #276F86 !default;
        -
        -/* Warning */
        -$warningColor           : #F2C037 !default;
        -$warningBorderColor     : #C9BA9B !default;
        -$warningBackgroundColor : #FFFAF3 !default;
        -$warningHeaderColor     : #794B02 !default;
        -$warningTextColor       : #573A08 !default;
        -
        -/*-------------------
        -        Paths
        ---------------------*/
        -
        -/* For source only. Modified in gulp for dist */
        -$imagePath : '../../themes/default/assets/images' !default;
        -$fontPath  : '../../themes/default/assets/fonts' !default;
        -
        -
        -/*-------------------
        -       Icons
        ---------------------*/
        -
        -/* Maximum Glyph Width of Icon */
        -$iconWidth : 1.18em !default;
        -
        -/*-------------------
        -     Neutral Text
        ---------------------*/
        -
        -$darkTextColor               : rgba(0, 0, 0, 0.85) !default;
        -$mutedTextColor              : rgba(0, 0, 0, 0.6) !default;
        -$lightTextColor              : rgba(0, 0, 0, 0.4) !default;
        -
        -$unselectedTextColor         : rgba(0, 0, 0, 0.4) !default;
        -$hoveredTextColor            : rgba(0, 0, 0, 0.8) !default;
        -$pressedTextColor            : rgba(0, 0, 0, 0.9) !default;
        -$selectedTextColor           : rgba(0, 0, 0, 0.95) !default;
        -$disabledTextColor           : rgba(0, 0, 0, 0.2) !default;
        -
        -$invertedTextColor           : rgba(255, 255, 255, 0.9) !default;
        -$invertedMutedTextColor      : rgba(255, 255, 255, 0.8) !default;
        -$invertedLightTextColor      : rgba(255, 255, 255, 0.7) !default;
        -$invertedUnselectedTextColor : rgba(255, 255, 255, 0.5) !default;
        -$invertedHoveredTextColor    : rgba(255, 255, 255, 1) !default;
        -$invertedPressedTextColor    : rgba(255, 255, 255, 1) !default;
        -$invertedSelectedTextColor   : rgba(255, 255, 255, 1) !default;
        -$invertedDisabledTextColor   : rgba(255, 255, 255, 0.2) !default;
        -
        -/*-------------------
        -     Brand Colors
        ---------------------*/
        -
        -$facebookColor   : #3B5998 !default;
        -$twitterColor    : #55ACEE !default;
        -$googlePlusColor : #DD4B39 !default;
        -$linkedInColor   : #1F88BE !default;
        -$youtubeColor    : #CC181E !default;
        -$pinterestColor  : #BD081C !default;
        -$vkColor         : #4D7198 !default;
        -$instagramColor  : #49769C !default;
        -
        -/*-------------------
        -      Borders
        ---------------------*/
        -
        -$circularRadius                : 500rem !default;
        -
        -$borderColor               : rgba(34, 36, 38, 0.15) !default;
        -$strongBorderColor         : rgba(34, 36, 38, 0.22) !default;
        -$internalBorderColor       : rgba(34, 36, 38, 0.1) !default;
        -$selectedBorderColor       : rgba(34, 36, 38, 0.35) !default;
        -$strongSelectedBorderColor : rgba(34, 36, 38, 0.5) !default;
        -$disabledBorderColor       : rgba(34, 36, 38, 0.5) !default;
        -
        -$solidInternalBorderColor  : #FAFAFA !default;
        -$solidBorderColor          : #D4D4D5 !default;
        -$solidSelectedBorderColor  : #BCBDBD !default;
        -
        -$whiteBorderColor              : rgba(255, 255, 255, 0.1) !default;
        -$selectedWhiteBorderColor      : rgba(255, 255, 255, 0.8) !default;
        -
        -$solidWhiteBorderColor         : #555555 !default;
        -$selectedSolidWhiteBorderColor : #999999 !default;
        -
        -/*-------------------
        -       Accents
        ---------------------*/
        -
        -/* Differentiating Neutrals */
        -$subtleGradient: linear-gradient(transparent, $transparentBlack) !default;
        -
        -/* Differentiating Layers */
        -$subtleShadow:
        -  0px 1px 2px 0 $borderColor
        - !default;
        -$floatingShadow:
        -  0px 2px 4px 0px rgba(34, 36, 38, 0.12),
        -  0px 2px 10px 0px rgba(34, 36, 38, 0.15)
        - !default;
        -
        -
        -/*-------------------
        -    Derived Values
        ---------------------*/
        -
        -/* Loaders Position Offset */
        -$loaderOffset : -($loaderSize / 2) !default;
        -$loaderMargin : $loaderOffset 0em 0em $loaderOffset !default;
        -
        -/* Rendered Scrollbar Width */
        -$scrollbarWidth: 17px !default;
        -
        -/* Maximum Single Character Glyph Width, aka Capital "W" */
        -$glyphWidth: 1.1em !default;
        -
        -/* Used to match floats with text */
        -$lineHeightOffset       : (($lineHeight - 1em) / 2) !default;
        -$headerLineHeightOffset : ($headerLineHeight - 1em) / 2 !default;
        -
        -/* Header Spacing */
        -$headerTopMargin    : calc(2rem - #{$headerLineHeightOffset}) !default;
        -$headerBottomMargin : 1rem !default;
        -
        -/* Minimum Mobile Width */
        -$pageMinWidth       : 320px !default;
        -
        -/* Positive / Negative Dupes */
        -$successBackgroundColor : $positiveBackgroundColor !default;
        -$successColor           : $positiveColor !default;
        -$successBorderColor     : $positiveBorderColor !default;
        -$successHeaderColor     : $positiveHeaderColor !default;
        -$successTextColor       : $positiveTextColor !default;
        -
        -$errorBackgroundColor   : $negativeBackgroundColor !default;
        -$errorColor             : $negativeColor !default;
        -$errorBorderColor       : $negativeBorderColor !default;
        -$errorHeaderColor       : $negativeHeaderColor !default;
        -$errorTextColor         : $negativeTextColor !default;
        -
        -
        -/* Responsive */
        -$largestMobileScreen : ($tabletBreakpoint - 1px) !default;
        -$largestTabletScreen : ($computerBreakpoint - 1px) !default;
        -$largestSmallMonitor : ($largeMonitorBreakpoint - 1px) !default;
        -$largestLargeMonitor : ($widescreenMonitorBreakpoint - 1px) !default;
        -
        -
        -
        -/*******************************
        -             States
        -*******************************/
        -
        -/*-------------------
        -      Disabled
        ---------------------*/
        -
        -$disabledOpacity: 0.45 !default;
        -$disabledTextColor: rgba(40, 40, 40, 0.3) !default;
        -$invertedDisabledTextColor: rgba(225, 225, 225, 0.3) !default;
        -
        -/*-------------------
        -        Hover
        ---------------------*/
        -
        -/*---  Shadows  ---*/
        -$floatingShadowHover:
        -  0px 2px 4px 0px rgba(34, 36, 38, 0.15),
        -  0px 2px 10px 0px rgba(34, 36, 38, 0.25)
        - !default;
        -
        -/*---  Colors  ---*/
        -$primaryColorHover    : saturate(darken($primaryColor, 5), 10) !default;
        -$secondaryColorHover  : saturate(lighten($secondaryColor, 5), 10) !default;
        -
        -$redHover             : saturate(darken($red, 5), 10) !default;
        -$orangeHover          : saturate(darken($orange, 5), 10) !default;
        -$yellowHover          : saturate(darken($yellow, 5), 10) !default;
        -$oliveHover           : saturate(darken($olive, 5), 10) !default;
        -$greenHover           : saturate(darken($green, 5), 10) !default;
        -$tealHover            : saturate(darken($teal, 5), 10) !default;
        -$blueHover            : saturate(darken($blue, 5), 10) !default;
        -$violetHover          : saturate(darken($violet, 5), 10) !default;
        -$purpleHover          : saturate(darken($purple, 5), 10) !default;
        -$pinkHover            : saturate(darken($pink, 5), 10) !default;
        -$brownHover           : saturate(darken($brown, 5), 10) !default;
        -
        -$lightRedHover        : saturate(darken($lightRed, 5), 10) !default;
        -$lightOrangeHover     : saturate(darken($lightOrange, 5), 10) !default;
        -$lightYellowHover     : saturate(darken($lightYellow, 5), 10) !default;
        -$lightOliveHover      : saturate(darken($lightOlive, 5), 10) !default;
        -$lightGreenHover      : saturate(darken($lightGreen, 5), 10) !default;
        -$lightTealHover       : saturate(darken($lightTeal, 5), 10) !default;
        -$lightBlueHover       : saturate(darken($lightBlue, 5), 10) !default;
        -$lightVioletHover     : saturate(darken($lightViolet, 5), 10) !default;
        -$lightPurpleHover     : saturate(darken($lightPurple, 5), 10) !default;
        -$lightPinkHover       : saturate(darken($lightPink, 5), 10) !default;
        -$lightBrownHover      : saturate(darken($lightBrown, 5), 10) !default;
        -$lightGreyHover       : saturate(darken($lightGrey, 5), 10) !default;
        -$lightBlackHover      : saturate(darken($fullBlack, 5), 10) !default;
        -
        -/*---  Emotive  ---*/
        -$positiveColorHover   : saturate(darken($positiveColor, 5), 10) !default;
        -$negativeColorHover   : saturate(darken($negativeColor, 5), 10) !default;
        -
        -/*---  Brand   ---*/
        -$facebookHoverColor   : saturate(darken($facebookColor, 5), 10) !default;
        -$twitterHoverColor    : saturate(darken($twitterColor, 5), 10) !default;
        -$googlePlusHoverColor : saturate(darken($googlePlusColor, 5), 10) !default;
        -$linkedInHoverColor   : saturate(darken($linkedInColor, 5), 10) !default;
        -$youtubeHoverColor    : saturate(darken($youtubeColor, 5), 10) !default;
        -$instagramHoverColor  : saturate(darken($instagramColor, 5), 10) !default;
        -$pinterestHoverColor  : saturate(darken($pinterestColor, 5), 10) !default;
        -$vkHoverColor         : saturate(darken($vkColor, 5), 10) !default;
        -
        -/*---  Dark Tones  ---*/
        -$fullBlackHover       : lighten($fullBlack, 5) !default;
        -$blackHover           : lighten($black, 5) !default;
        -$greyHover            : lighten($grey, 5) !default;
        -
        -/*---  Light Tones  ---*/
        -$whiteHover           : darken($white, 5) !default;
        -$offWhiteHover        : darken($offWhite, 5) !default;
        -$darkWhiteHover       : darken($darkWhite, 5) !default;
        -
        -/*-------------------
        -        Focus
        ---------------------*/
        -
        -/*---  Colors  ---*/
        -$primaryColorFocus    : saturate(darken($primaryColor, 8), 20) !default;
        -$secondaryColorFocus  : saturate(lighten($secondaryColor, 8), 20) !default;
        -
        -$redFocus             : saturate(darken($red, 8), 20) !default;
        -$orangeFocus          : saturate(darken($orange, 8), 20) !default;
        -$yellowFocus          : saturate(darken($yellow, 8), 20) !default;
        -$oliveFocus           : saturate(darken($olive, 8), 20) !default;
        -$greenFocus           : saturate(darken($green, 8), 20) !default;
        -$tealFocus            : saturate(darken($teal, 8), 20) !default;
        -$blueFocus            : saturate(darken($blue, 8), 20) !default;
        -$violetFocus          : saturate(darken($violet, 8), 20) !default;
        -$purpleFocus          : saturate(darken($purple, 8), 20) !default;
        -$pinkFocus            : saturate(darken($pink, 8), 20) !default;
        -$brownFocus           : saturate(darken($brown, 8), 20) !default;
        -
        -$lightRedFocus        : saturate(darken($lightRed, 8), 20) !default;
        -$lightOrangeFocus     : saturate(darken($lightOrange, 8), 20) !default;
        -$lightYellowFocus     : saturate(darken($lightYellow, 8), 20) !default;
        -$lightOliveFocus      : saturate(darken($lightOlive, 8), 20) !default;
        -$lightGreenFocus      : saturate(darken($lightGreen, 8), 20) !default;
        -$lightTealFocus       : saturate(darken($lightTeal, 8), 20) !default;
        -$lightBlueFocus       : saturate(darken($lightBlue, 8), 20) !default;
        -$lightVioletFocus     : saturate(darken($lightViolet, 8), 20) !default;
        -$lightPurpleFocus     : saturate(darken($lightPurple, 8), 20) !default;
        -$lightPinkFocus       : saturate(darken($lightPink, 8), 20) !default;
        -$lightBrownFocus      : saturate(darken($lightBrown, 8), 20) !default;
        -$lightGreyFocus       : saturate(darken($lightGrey, 8), 20) !default;
        -$lightBlackFocus      : saturate(darken($fullBlack, 8), 20) !default;
        -
        -/*---  Emotive  ---*/
        -$positiveColorFocus   : saturate(darken($positiveColor, 8), 20) !default;
        -$negativeColorFocus   : saturate(darken($negativeColor, 8), 20) !default;
        -
        -/*---  Brand   ---*/
        -$facebookFocusColor   : saturate(darken($facebookColor, 8), 20) !default;
        -$twitterFocusColor    : saturate(darken($twitterColor, 8), 20) !default;
        -$googlePlusFocusColor : saturate(darken($googlePlusColor, 8), 20) !default;
        -$linkedInFocusColor   : saturate(darken($linkedInColor, 8), 20) !default;
        -$youtubeFocusColor    : saturate(darken($youtubeColor, 8), 20) !default;
        -$instagramFocusColor  : saturate(darken($instagramColor, 8), 20) !default;
        -$pinterestFocusColor  : saturate(darken($pinterestColor, 8), 20) !default;
        -$vkFocusColor         : saturate(darken($vkColor, 8), 20) !default;
        -
        -/*---  Dark Tones  ---*/
        -$fullBlackFocus       : lighten($fullBlack, 8) !default;
        -$blackFocus           : lighten($black, 8) !default;
        -$greyFocus            : lighten($grey, 8) !default;
        -
        -/*---  Light Tones  ---*/
        -$whiteFocus           : darken($white, 8) !default;
        -$offWhiteFocus        : darken($offWhite, 8) !default;
        -$darkWhiteFocus       : darken($darkWhite, 8) !default;
        -
        -
        -/*-------------------
        -    Down (:active)
        ---------------------*/
        -
        -/*---  Colors  ---*/
        -$primaryColorDown    : darken($primaryColor, 10) !default;
        -$secondaryColorDown  : lighten($secondaryColor, 10) !default;
        -
        -$redDown             : darken($red, 10) !default;
        -$orangeDown          : darken($orange, 10) !default;
        -$yellowDown          : darken($yellow, 10) !default;
        -$oliveDown           : darken($olive, 10) !default;
        -$greenDown           : darken($green, 10) !default;
        -$tealDown            : darken($teal, 10) !default;
        -$blueDown            : darken($blue, 10) !default;
        -$violetDown          : darken($violet, 10) !default;
        -$purpleDown          : darken($purple, 10) !default;
        -$pinkDown            : darken($pink, 10) !default;
        -$brownDown           : darken($brown, 10) !default;
        -
        -$lightRedDown        : darken($lightRed, 10) !default;
        -$lightOrangeDown     : darken($lightOrange, 10) !default;
        -$lightYellowDown     : darken($lightYellow, 10) !default;
        -$lightOliveDown      : darken($lightOlive, 10) !default;
        -$lightGreenDown      : darken($lightGreen, 10) !default;
        -$lightTealDown       : darken($lightTeal, 10) !default;
        -$lightBlueDown       : darken($lightBlue, 10) !default;
        -$lightVioletDown     : darken($lightViolet, 10) !default;
        -$lightPurpleDown     : darken($lightPurple, 10) !default;
        -$lightPinkDown       : darken($lightPink, 10) !default;
        -$lightBrownDown      : darken($lightBrown, 10) !default;
        -$lightGreyDown       : darken($lightGrey, 10) !default;
        -$lightBlackDown      : darken($fullBlack, 10) !default;
        -
        -/*---  Emotive  ---*/
        -$positiveColorDown   : darken($positiveColor, 10) !default;
        -$negativeColorDown   : darken($negativeColor, 10) !default;
        -
        -/*---  Brand   ---*/
        -$facebookDownColor   : darken($facebookColor, 10) !default;
        -$twitterDownColor    : darken($twitterColor, 10) !default;
        -$googlePlusDownColor : darken($googlePlusColor, 10) !default;
        -$linkedInDownColor   : darken($linkedInColor, 10) !default;
        -$youtubeDownColor    : darken($youtubeColor, 10) !default;
        -$instagramDownColor  : darken($instagramColor, 10) !default;
        -$pinterestDownColor  : darken($pinterestColor, 10) !default;
        -$vkDownColor         : darken($vkColor, 10) !default;
        -
        -/*---  Dark Tones  ---*/
        -$fullBlackDown       : lighten($fullBlack, 10) !default;
        -$blackDown           : lighten($black, 10) !default;
        -$greyDown            : lighten($grey, 10) !default;
        -
        -/*---  Light Tones  ---*/
        -$whiteDown           : darken($white, 10) !default;
        -$offWhiteDown        : darken($offWhite, 10) !default;
        -$darkWhiteDown       : darken($darkWhite, 10) !default;
        -
        -
        -/*-------------------
        -        Active
        ---------------------*/
        -
        -/*---  Colors  ---*/
        -$primaryColorActive    : saturate(darken($primaryColor, 5), 15) !default;
        -$secondaryColorActive  : saturate(lighten($secondaryColor, 5), 15) !default;
        -
        -$redActive             : saturate(darken($red, 5), 15) !default;
        -$orangeActive          : saturate(darken($orange, 5), 15) !default;
        -$yellowActive          : saturate(darken($yellow, 5), 15) !default;
        -$oliveActive           : saturate(darken($olive, 5), 15) !default;
        -$greenActive           : saturate(darken($green, 5), 15) !default;
        -$tealActive            : saturate(darken($teal, 5), 15) !default;
        -$blueActive            : saturate(darken($blue, 5), 15) !default;
        -$violetActive          : saturate(darken($violet, 5), 15) !default;
        -$purpleActive          : saturate(darken($purple, 5), 15) !default;
        -$pinkActive            : saturate(darken($pink, 5), 15) !default;
        -$brownActive           : saturate(darken($brown, 5), 15) !default;
        -
        -$lightRedActive        : saturate(darken($lightRed, 5), 15) !default;
        -$lightOrangeActive     : saturate(darken($lightOrange, 5), 15) !default;
        -$lightYellowActive     : saturate(darken($lightYellow, 5), 15) !default;
        -$lightOliveActive      : saturate(darken($lightOlive, 5), 15) !default;
        -$lightGreenActive      : saturate(darken($lightGreen, 5), 15) !default;
        -$lightTealActive       : saturate(darken($lightTeal, 5), 15) !default;
        -$lightBlueActive       : saturate(darken($lightBlue, 5), 15) !default;
        -$lightVioletActive     : saturate(darken($lightViolet, 5), 15) !default;
        -$lightPurpleActive     : saturate(darken($lightPurple, 5), 15) !default;
        -$lightPinkActive       : saturate(darken($lightPink, 5), 15) !default;
        -$lightBrownActive      : saturate(darken($lightBrown, 5), 15) !default;
        -$lightGreyActive       : saturate(darken($lightGrey, 5), 15) !default;
        -$lightBlackActive      : saturate(darken($fullBlack, 5), 15) !default;
        -
        -/*---  Emotive  ---*/
        -$positiveColorActive   : saturate(darken($positiveColor, 5), 15) !default;
        -$negativeColorActive   : saturate(darken($negativeColor, 5), 15) !default;
        -
        -/*---  Brand   ---*/
        -$facebookActiveColor   : saturate(darken($facebookColor, 5), 15) !default;
        -$twitterActiveColor    : saturate(darken($twitterColor, 5), 15) !default;
        -$googlePlusActiveColor : saturate(darken($googlePlusColor, 5), 15) !default;
        -$linkedInActiveColor   : saturate(darken($linkedInColor, 5), 15) !default;
        -$youtubeActiveColor    : saturate(darken($youtubeColor, 5), 15) !default;
        -$instagramActiveColor  : saturate(darken($instagramColor, 5), 15) !default;
        -$pinterestActiveColor  : saturate(darken($pinterestColor, 5), 15) !default;
        -$vkActiveColor         : saturate(darken($vkColor, 5), 15) !default;
        -
        -/*---  Dark Tones  ---*/
        -$fullBlackActive       : darken($fullBlack, 5) !default;
        -$blackActive           : darken($black, 5) !default;
        -$greyActive            : darken($grey, 5) !default;
        -
        -/*---  Light Tones  ---*/
        -$whiteActive           : darken($white, 5) !default;
        -$offWhiteActive        : darken($offWhite, 5) !default;
        -$darkWhiteActive       : darken($darkWhite, 5) !default;
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/semanticui/variables_table.scss b/tmp/tabulator-5.6.1/src/scss/themes/semanticui/variables_table.scss
        deleted file mode 100644
        index 37a288c..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/semanticui/variables_table.scss
        +++ /dev/null
        @@ -1,247 +0,0 @@
        -@import "variables.scss";
        -
        -/*******************************
        -             Table
        -*******************************/
        -
        -/*-------------------
        -       Element
        ---------------------*/
        -
        -$verticalMargin: 1em !default;
        -$horizontalMargin: 0em !default;
        -$margin: $verticalMargin $horizontalMargin !default;
        -$borderCollapse: separate !default;
        -$borderSpacing: 0px !default;
        -$borderRadius: $defaultBorderRadius !default;
        -$transition:
        -  background $defaultDuration $defaultEasing,
        -  color $defaultDuration $defaultEasing !default;
        -$background: $white !default;
        -$color: $textColor !default;
        -$borderWidth: 1px !default;
        -$border: $borderWidth solid $borderColor !default;
        -$boxShadow: none !default;
        -$textAlign: left !default;
        -
        -/*--------------
        -     Parts
        ----------------*/
        -
        -/* Table Row */
        -$rowBorder: 1px solid $internalBorderColor !default;
        -
        -/* Table Cell */
        -$cellVerticalPadding: $relativeMini !default;
        -$cellHorizontalPadding: $relativeMini !default;
        -$cellVerticalAlign: inherit !default;
        -$cellTextAlign: inherit !default;
        -$cellBorder: 1px solid $internalBorderColor !default;
        -
        -/* Table Header */
        -$headerBorder: 1px solid $internalBorderColor !default;
        -$headerDivider: none !default;
        -$headerBackground: $offWhite !default;
        -$headerAlign: inherit !default;
        -$headerVerticalAlign: inherit !default;
        -$headerColor: $textColor !default;
        -$headerVerticalPadding: $relativeSmall !default;
        -$headerHorizontalPadding: $cellHorizontalPadding !default;
        -$headerFontStyle: none !default;
        -$headerFontWeight: bold !default;
        -$headerTextTransform: none !default;
        -$headerBoxShadow: none !default;
        -
        -/* Table Footer */
        -$footerBoxShadow: none !default;
        -$footerBorder: 1px solid $borderColor !default;
        -$footerDivider: none !default;
        -$footerBackground: $offWhite !default;
        -$footerAlign: inherit !default;
        -$footerVerticalAlign: middle !default;
        -$footerColor: $textColor !default;
        -$footerVerticalPadding: $cellVerticalPadding !default;
        -$footerHorizontalPadding: $cellHorizontalPadding !default;
        -$footerFontStyle: normal !default;
        -$footerFontWeight: normal !default;
        -$footerTextTransform: none !default;
        -
        -/* Responsive Size */
        -$responsiveHeaderDisplay: block !default;
        -$responsiveFooterDisplay: block !default;
        -$responsiveRowVerticalPadding: 1em !default;
        -$responsiveRowBoxShadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1) inset !important !default;
        -$responsiveCellVerticalPadding: 0.25em !default;
        -$responsiveCellHorizontalPadding: 0.75em !default;
        -$responsiveCellBoxShadow: none !important !default;
        -
        -/*-------------------
        -       Types
        ---------------------*/
        -
        -/* Definition */
        -$definitionPageBackground: $white !default;
        -
        -$definitionHeaderBackground: transparent !default;
        -$definitionHeaderColor: $unselectedTextColor !default;
        -$definitionHeaderFontWeight: normal !default;
        -
        -$definitionFooterBackground: $definitionHeaderBackground !default;
        -$definitionFooterColor: $definitionHeaderColor !default;
        -$definitionFooterFontWeight: $definitionHeaderFontWeight !default;
        -
        -$definitionColumnBackground: $subtleTransparentBlack !default;
        -$definitionColumnFontWeight: bold !default;
        -$definitionColumnColor: $selectedTextColor !default;
        -$definitionColumnFontSize: $relativeMedium !default;
        -$definitionColumnTextTransform: '' !default;
        -$definitionColumnBoxShadow: '' !default;
        -$definitionColumnTextAlign: '' !default;
        -$definitionColumnHorizontalPadding: '' !default;
        -
        -
        -/*--------------
        -    Couplings
        ----------------*/
        -
        -$iconVerticalAlign: baseline !default;
        -
        -/*--------------
        -     States
        ----------------*/
        -
        -$stateMarkerWidth: 0px !default;
        -
        -/* Positive */
        -$positiveColor: $positiveTextColor !default;
        -$positiveBoxShadow: $stateMarkerWidth 0px 0px $positiveBorderColor inset !default;
        -$positiveBackgroundHover: darken($positiveBackgroundColor, 3) !default;
        -$positiveColorHover: darken($positiveColor, 3) !default;
        -
        -/* Negative */
        -$negativeColor: $negativeTextColor !default;
        -$negativeBoxShadow: $stateMarkerWidth 0px 0px $negativeBorderColor inset !default;
        -$negativeBackgroundHover: darken($negativeBackgroundColor, 3) !default;
        -$negativeColorHover: darken($negativeColor, 3) !default;
        -
        -/* Error */
        -$errorColor: $errorTextColor !default;
        -$errorBoxShadow: $stateMarkerWidth 0px 0px $errorBorderColor inset !default;
        -$errorBackgroundHover: darken($errorBackgroundColor, 3) !default;
        -$errorColorHover: darken($errorColor, 3) !default;
        -
        -/* Warning */
        -$warningColor: $warningTextColor !default;
        -$warningBoxShadow: $stateMarkerWidth 0px 0px $warningBorderColor inset !default;
        -$warningBackgroundHover: darken($warningBackgroundColor, 3) !default;
        -$warningColorHover: darken($warningColor, 3) !default;
        -
        -/* Active */
        -$activeColor: $textColor !default;
        -$activeBackgroundColor: #E0E0E0 !default;
        -$activeBoxShadow: $stateMarkerWidth 0px 0px $activeColor inset !default;
        -
        -$activeBackgroundHover: #EFEFEF !default;
        -$activeColorHover: $selectedTextColor !default;
        -
        -/*--------------
        -     Types
        ----------------*/
        -
        -/* Attached */
        -$attachedTopOffset: 0px !default;
        -$attachedBottomOffset: 0px !default;
        -$attachedHorizontalOffset: -$borderWidth !default;
        -$attachedWidth: calc(100% + #{$attachedHorizontalOffset * -2}) !default;
        -$attachedBoxShadow: none !default;
        -$attachedBorder: $borderWidth solid $solidBorderColor !default;
        -$attachedBottomBoxShadow:
        -  $boxShadow,
        -  $attachedBoxShadow
        - !default;
        -
        -/* Striped */
        -$stripedBackground: rgba(0, 0, 50, 0.02) !default;
        -$invertedStripedBackground: rgba(255, 255, 255, 0.05) !default;
        -
        -/* Selectable */
        -$selectableBackground: $transparentBlack !default;
        -$selectableTextColor: $selectedTextColor !default;
        -$selectableInvertedBackground: $transparentWhite !default;
        -$selectableInvertedTextColor: $invertedSelectedTextColor !default;
        -
        -/* Sortable */
        -$sortableBackground: '' !default;
        -$sortableColor: $textColor !default;
        -
        -$sortableBorder: 1px solid $borderColor !default;
        -$sortableIconWidth: auto !default;
        -$sortableIconDistance: 0.5em !default;
        -$sortableIconOpacity: 0.8 !default;
        -$sortableIconFont: 'Icons' !default;
        -$sortableIconAscending: '\f0d8' !default;
        -$sortableIconDescending: '\f0d7' !default;
        -$sortableDisabledColor: $disabledTextColor !default;
        -
        -$sortableHoverBackground: $transparentBlack !default;
        -$sortableHoverColor: $hoveredTextColor !default;
        -
        -$sortableActiveBackground: $transparentBlack !default;
        -$sortableActiveColor: $selectedTextColor !default;
        -
        -$sortableActiveHoverBackground: $transparentBlack !default;
        -$sortableActiveHoverColor: $selectedTextColor !default;
        -
        -$sortableInvertedBorderColor: transparent !default;
        -$sortableInvertedHoverBackground: $transparentWhite $subtleGradient !default;
        -$sortableInvertedHoverColor: $invertedHoveredTextColor !default;
        -$sortableInvertedActiveBackground: $strongTransparentWhite $subtleGradient !default;
        -$sortableInvertedActiveColor: $invertedSelectedTextColor !default;
        -
        -/* Colors */
        -$coloredBorderSize: 0.2em !default;
        -$coloredBorderRadius: 0em 0em $borderRadius $borderRadius !default;
        -
        -/* Inverted */
        -$invertedBackground: #333333 !default;
        -$invertedBorder: none !default;
        -$invertedCellBorderColor: $whiteBorderColor !default;
        -$invertedCellColor: $invertedTextColor !default;
        -
        -$invertedHeaderBackground: $veryStrongTransparentBlack !default;
        -$invertedHeaderColor: $invertedTextColor !default;
        -$invertedHeaderBorderColor: $invertedCellBorderColor !default;
        -
        -$invertedDefinitionColumnBackground: $subtleTransparentWhite !default;
        -$invertedDefinitionColumnColor: $invertedSelectedTextColor !default;
        -$invertedDefinitionColumnFontWeight: bold !default;
        -
        -/* Basic */
        -$basicTableBackground: transparent !default;
        -$basicTableBorder: $borderWidth solid $borderColor !default;
        -$basicBoxShadow: none !default;
        -
        -$basicTableHeaderBackground: transparent !default;
        -$basicTableCellBackground: transparent !default;
        -$basicTableHeaderDivider: none !default;
        -$basicTableCellBorder: 1px solid rgba(0, 0, 0, 0.1) !default;
        -$basicTableCellPadding: '' !default;
        -$basicTableStripedBackground: #f2f2f2 !default;
        -
        -/* Padded */
        -$paddedVerticalPadding: 1em !default;
        -$paddedHorizontalPadding: 1em !default;
        -$veryPaddedVerticalPadding: 1.5em !default;
        -$veryPaddedHorizontalPadding: 1.5em !default;
        -
        -/* Compact */
        -$compactVerticalPadding: 0.5em !default;
        -$compactHorizontalPadding: 0.7em !default;
        -$veryCompactVerticalPadding: 0.4em !default;
        -$veryCompactHorizontalPadding: 0.6em !default;
        -
        -
        -/* Sizes */
        -$small: 0.9em !default;
        -$medium: 1em !default;
        -$large: 1.1em !default;
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/tabulator_midnight.scss b/tmp/tabulator-5.6.1/src/scss/themes/tabulator_midnight.scss
        deleted file mode 100644
        index 4b2ea22..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/tabulator_midnight.scss
        +++ /dev/null
        @@ -1,175 +0,0 @@
        -
        -//Main Theme Variables
        -$backgroundColor: #222 !default; //background color of tabulator
        -$borderColor:#333 !default; //border to tabulator
        -$textSize:14px !default; //table text size
        -
        -//header theming
        -$headerBackgroundColor:#333 !default; //border to tabulator
        -$headerTextColor:#fff !default; //header text color
        -$headerBorderColor:#aaa !default;  //header border color
        -$headerSeparatorColor:#999 !default; //header bottom separator color
        -$headerMargin:4px !default; //padding round header
        -
        -//column header arrows
        -$sortArrowActive: #666 !default;
        -$sortArrowInactive: #bbb !default;
        -
        -//row theming
        -$rowBackgroundColor:#666 !default; //table row background color
        -$rowAltBackgroundColor:#444 !default; //table row background color
        -$rowBorderColor:#888 !default; //table border color
        -$rowTextColor:#fff !default; //table text color
        -$rowHoverBackground:#999 !default; //row background color on hover
        -
        -$rowSelectedBackground: #000 !default; //row background color when selected
        -$rowSelectedBackgroundHover: #888 !default;//row background color when selected and hovered
        -
        -$editBoxColor:#999 !default; //border color for edit boxes
        -$errorColor:#dd0000 !default; //error indication
        -
        -//footer theming
        -$footerBackgroundColor:#333 !default; //border to tabulator
        -$footerTextColor:#333 !default; //footer text color
        -$footerBorderColor:#aaa !default; //footer border color
        -$footerSeparatorColor:#999 !default; //footer bottom separator color
        -$footerActiveColor:#fff !default; //footer bottom active text color
        -
        -$headerHighlightBackground: #777 !default; //header background color when highlighted
        -$headerTextHighlightBackground: #fff !default; //header background color when highlighted
        -
        -//range selection
        -$rangeBorderColor: #ccc !default; //range border color
        -$rangeHandleColor: $rangeBorderColor !default; //range handle color
        -$rangeHeaderSelectedBackground: $rangeBorderColor !default; //header background color when selected
        -$rangeHeaderSelectedTextColor: #333 !default; //header text color when selected
        -$rangeHeaderHighlightBackground: #999 !default; //header background color when highlighted
        -$rangeHeaderTextHighlightBackground: #000000 !default; //header text color when highlighted
        -
        -
        -
        -@import "../tabulator.scss";
        -
        -//Tabulator Containing Element
        -.tabulator{
        -	background-color: $backgroundColor;
        -
        -	.tabulator-header{
        -
        -		.tabulator-col{
        -			background-color: $headerBackgroundColor;
        -
        -			.tabulator-col-content{
        -				.tabulator-col-title{
        -					.tabulator-title-editor{
        -						color: #fff;
        -					}
        -				}
        -			}
        -
        -			.tabulator-header-filter{
        -				input, select{
        -					border:1px solid #999;
        -					background: #444;
        -					color: #fff;
        -				}
        -			}
        -		}
        -
        -		.tabulator-calcs-holder{
        -			background:darken($headerBackgroundColor, 10%) !important;
        -
        -			.tabulator-row{
        -				background:darken($headerBackgroundColor, 10%) !important;
        -			}
        -		}
        -	}
        -
        -	//footer element
        -	.tabulator-footer{
        -
        -		.tabulator-calcs-holder{
        -			background:darken($footerBackgroundColor, 5%) !important;
        -
        -			.tabulator-row{
        -				background:darken($footerBackgroundColor, 5%) !important;
        -			}
        -		}
        -
        -		//pagination container element
        -		.tabulator-paginator{
        -			label{
        -				color:#fff;
        -			}
        -		}
        -
        -		.tabulator-page-counter {
        -			color: #fff;
        -		}
        -
        -		//pagination button
        -		.tabulator-page{
        -			color: $footerTextColor;
        -			font-family:inherit;
        -			font-weight:inherit;
        -			font-size:inherit;
        -		}
        -	}
        -}
        -
        -//row element
        -.tabulator-row{
        -
        -	//row grouping element
        -	&.tabulator-group{
        -		min-width: 100%;
        -
        -		color:#333;
        -
        -		@media (hover:hover) and (pointer:fine){
        -			&:hover{
        -				cursor:pointer;
        -				background-color:rgba(0,0,0,.1);
        -			}
        -		}
        -
        -		span{
        -			color:#666;
        -		}
        -	}
        -}
        -
        -.tabulator-edit-select-list{
        -	background:$rowTextColor;
        -
        -	.tabulator-edit-select-list-item{
        -		color:$rowBackgroundColor;
        -
        -		&.active{
        -			color:$editBoxColor;
        -			background:$rowAltBackgroundColor;
        -
        -			&.focused{
        -				outline:1px solid rgba($editBoxColor, .5);
        -			}
        -		}
        -
        -		&.focused{
        -			outline:1px solid $rowAltBackgroundColor;
        -		}
        -
        -		@media (hover:hover) and (pointer:fine){
        -			&:hover{
        -				color:$editBoxColor;
        -				background:$rowBackgroundColor;
        -			}
        -		}
        -	}
        -}
        -
        -.tabulator-print-table{
        -	.tabulator-print-table-group{
        -		color:#333;
        -	}
        -}
        -
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/tabulator_modern.scss b/tmp/tabulator-5.6.1/src/scss/themes/tabulator_modern.scss
        deleted file mode 100644
        index 402298d..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/tabulator_modern.scss
        +++ /dev/null
        @@ -1,248 +0,0 @@
        -
        -$primary: #3759D7 !default; //the base text color from which the rest of the theme derives
        -
        -//Main Theme Variables
        -$backgroundColor: #fff !default; //background color of tabulator
        -$borderColor:#fff !default; //border to tabulator
        -$textSize:16px !default; //table text size
        -
        -//header theming
        -$headerBackgroundColor:#fff !default; //border to tabulator
        -$headerTextColor:$primary !default; //header text color
        -$headerBorderColor:#fff !default;  //header border color
        -$headerSeparatorColor:$primary !default; //header bottom separator color
        -$headerMargin:4px !default; //padding round header
        -
        -//column header arrows
        -$sortArrowActive: $primary !default;
        -$sortArrowInactive: lighten($primary, 30%) !default;
        -
        -//row theming
        -$rowBackgroundColor:#f3f3f3 !default; //table row background color
        -$rowAltBackgroundColor:#fff !default; //table row background color
        -$rowBorderColor:#fff !default; //table border color
        -$rowTextColor:#333 !default; //table text color
        -$rowHoverBackground:#bbb !default; //row background color on hover
        -
        -$rowSelectedBackground: #9ABCEA !default; //row background color when selected
        -$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered
        -
        -$editBoxColor:#1D68CD !default; //border color for edit boxes
        -$errorColor:#dd0000 !default; //error indication
        -
        -//footer theming
        -$footerBackgroundColor:#fff !default; //border to tabulator
        -$footerTextColor:$primary !default; //footer text color
        -$footerBorderColor:#aaa !default; //footer border color
        -$footerSeparatorColor:#999 !default; //footer bottom separator color
        -$footerActiveColor:$primary !default; //footer bottom active text color
        -
        -$handleWidth:10px !default; //width of the row handle
        -$handleColor: $primary !default; //color for odd numbered rows
        -$handleColorAlt: lighten($primary, 10%) !default; //color for even numbered rows
        -
        -//range selection
        -$rangeBorderColor: #{darken($primary, 10%)} !default; //range border color
        -$rangeHandleColor: $rangeBorderColor !default; //range handle color
        -$rangeHeaderSelectedBackground: $rangeBorderColor !default; //header background color when selected
        -$rangeHeaderHighlightBackground: $primary !default; //header background color when highlighted
        -$rangeHeaderTextHighlightBackground: #fff !default; //header text color when highlighted
        -
        -
        -
        -@import "../tabulator.scss";
        -
        -.tabulator{
        -
        -	.tabulator-header{
        -		border-bottom:3px solid $headerSeparatorColor;
        -		margin-bottom:4px;
        -		padding-left:$handleWidth;
        -
        -		font-size: 1.1em;
        -
        -		.tabulator-col{
        -			border-right:2px solid $headerBorderColor;
        -			background-color: $headerBackgroundColor;
        -
        -			&:nth-child(1) {
        -				padding-left: $handleWidth;
        -			}
        -
        -			.tabulator-col-content{
        -				.tabulator-col-title{
        -					.tabulator-title-editor{
        -						border:1px solid $primary;
        -
        -						font-size: 1em;
        -						color: $primary;
        -					}
        -				}
        -			}
        -
        -			&.tabulator-col-group{
        -				.tabulator-col-group-cols{
        -					border-top:2px solid $headerSeparatorColor;
        -				}
        -			}
        -		}
        -
        -		.tabulator-frozen{
        -			&.tabulator-frozen-left{
        -				padding-left: $handleWidth;
        -			}
        -		}
        -
        -		.tabulator-calcs-holder{
        -			border-top:2px solid $headerSeparatorColor !important;
        -
        -			.tabulator-row{
        -				padding-left: 0 !important;
        -
        -				.tabulator-cell{
        -					background:none;
        -				}
        -			}
        -		}
        -	}
        -
        -	.tabulator-tableholder{
        -		.tabulator-placeholder{
        -			span{
        -				color:$primary;
        -			}
        -		}
        -
        -		.tabulator-table{
        -			.tabulator-row{
        -				&.tabulator-calcs{
        -					&.tabulator-calcs-top{
        -						border-bottom:2px solid $headerSeparatorColor;
        -					}
        -
        -					&.tabulator-calcs-bottom{
        -						border-top:2px solid $headerSeparatorColor;
        -					}
        -				}
        -			}
        -		}
        -	}
        -
        -	.tabulator-footer{
        -		.tabulator-calcs-holder{
        -			border-top:3px solid $headerSeparatorColor !important;
        -			border-bottom:2px solid $headerSeparatorColor !important;
        -
        -			.tabulator-row{
        -				background:lighten($footerBackgroundColor, 5%) !important;
        -
        -				.tabulator-cell{
        -					background:none;
        -
        -					&:first-child{
        -						border-left: $handleWidth solid transparent;
        -					}
        -				}
        -			}
        -
        -			&:only-child{
        -				border-bottom:none !important;
        -			}
        -		}
        -	}
        -}
        -
        -
        -.tabulator-row{
        -	margin-bottom: 2px;
        -
        -	.tabulator-cell{
        -		&:first-child{
        -			border-left: $handleWidth solid $handleColor;
        -		}
        -	}
        -
        -
        -	&:nth-child(even){
        -		background-color: $handleColorAlt;
        -
        -		.tabulator-cell{
        -			background-color: $rowAltBackgroundColor;
        -
        -			&:first-child{
        -				border-left: $handleWidth solid $handleColorAlt;
        -			}
        -		}
        -	}
        -
        -	@media (hover:hover) and (pointer:fine){
        -		&.tabulator-selectable:hover{
        -			cursor: pointer;
        -
        -			.tabulator-cell{
        -				background-color:$rowHoverBackground;
        -			}
        -		}
        -	}
        -
        -	&.tabulator-selected{
        -		.tabulator-cell{
        -			background-color:$rowSelectedBackground;
        -		}
        -	}
        -
        -	@media (hover:hover) and (pointer:fine){
        -		&.tabulator-selected:hover{
        -			.tabulator-cell{
        -				background-color:$rowSelectedBackgroundHover;
        -				cursor: pointer;
        -			}
        -		}
        -	}
        -
        -	&.tabulator-moving{
        -		pointer-events: none !important;
        -	}
        -
        -	.tabulator-cell{
        -		padding:6px 4px;
        -		border-right:2px solid $rowBorderColor;
        -
        -		background-color: $rowBackgroundColor;
        -	}
        -
        -	&.tabulator-group{
        -		min-width: 100%;
        -
        -		margin-bottom: 2px;
        -
        -		border-bottom:2px solid $primary;
        -		border-top:2px solid $primary;
        -		border-right:none;
        -
        -		background:lighten($primary, 20%);
        -
        -		span{
        -			color:$primary;
        -		}
        -	}
        -}
        -
        -.tabulator-edit-select-list{
        -	border:1px solid $editBoxColor;
        -}
        -
        -.tabulator-print-table{
        -
        -	.tabulator-print-table-group{
        -		border-bottom:2px solid $primary;
        -		border-top:2px solid $primary;
        -		background:lighten($primary, 20%);
        -		margin-bottom: 2px;
        -
        -		span{
        -			color:$primary;
        -		}
        -	}
        -}
        -
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/tabulator_simple.scss b/tmp/tabulator-5.6.1/src/scss/themes/tabulator_simple.scss
        deleted file mode 100644
        index 7b0bebf..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/tabulator_simple.scss
        +++ /dev/null
        @@ -1,102 +0,0 @@
        -
        -//Main Theme Variables
        -$backgroundColor: #fff !default; //background color of tabulator
        -$borderColor:#999 !default; //border to tabulator
        -$textSize:14px !default; //table text size
        -
        -//header theming
        -$headerBackgroundColor:#fff !default; //border to tabulator
        -$headerTextColor:#555 !default; //header text color
        -$headerBorderColor:#ddd !default;  //header border color
        -$headerSeparatorColor:#999 !default; //header bottom separator color
        -$headerMargin:4px !default; //padding round header
        -
        -//column header arrows
        -$sortArrowActive: #666 !default;
        -$sortArrowInactive: #bbb !default;
        -
        -//row theming
        -$rowBackgroundColor:#fff !default; //table row background color
        -$rowAltBackgroundColor:#fff !default; //table row background color
        -$rowBorderColor:#ddd !default; //table border color
        -$rowTextColor:#333 !default; //table text color
        -$rowHoverBackground:#bbb !default; //row background color on hover
        -
        -$rowSelectedBackground: #9ABCEA !default; //row background color when selected
        -$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered
        -
        -
        -$editBoxColor:#1D68CD !default; //border color for edit boxes
        -$errorColor:#dd0000 !default; //error indication
        -
        -//footer theming
        -$footerBackgroundColor:#fff !default; //border to tabulator
        -$footerTextColor:#555 !default; //footer text color
        -$footerBorderColor:#aaa !default; //footer border color
        -$footerSeparatorColor:#999 !default; //footer bottom separator color
        -$footerActiveColor:#d00 !default; //footer bottom active text color
        -
        -@import "../tabulator.scss";
        -
        -.tabulator{
        -	border:none;
        -	background-color: $backgroundColor;
        -
        -	.tabulator-header{
        -		.tabulator-calcs-holder{
        -			background:darken($headerBackgroundColor, 5%) !important;
        -
        -			.tabulator-row{
        -				background:darken($headerBackgroundColor, 5%) !important;
        -			}
        -
        -			border-bottom:1px solid $headerSeparatorColor;
        -		}
        -	}
        -
        -	.tabulator-tableholder{
        -		.tabulator-placeholder{
        -			span{
        -				color:#000;
        -			}
        -		}
        -	}
        -
        -	.tabulator-footer{
        -		.tabulator-calcs-holder{
        -			background:darken($footerBackgroundColor, 5%) !important;
        -
        -			.tabulator-row{
        -				background:darken($footerBackgroundColor, 5%) !important;
        -			}
        -
        -			border-bottom:1px solid $footerBackgroundColor;
        -		}
        -	}
        -}
        -
        -.tabulator-row{
        -	border-bottom:1px solid $rowBorderColor;
        -
        -	.tabulator-cell{
        -		&:last-of-type{
        -			border-right: none;
        -		}
        -	}
        -
        -	&.tabulator-group{
        -		span{
        -			color:#666;
        -		}
        -	}
        -}
        -
        -.tabulator-print-table{
        -	.tabulator-print-table-group{
        -		span{
        -			margin-left:10px;
        -			color:#666;
        -		}
        -	}
        -}
        -
        diff --git a/tmp/tabulator-5.6.1/src/scss/themes/tabulator_site.scss b/tmp/tabulator-5.6.1/src/scss/themes/tabulator_site.scss
        deleted file mode 100644
        index e3985c5..0000000
        --- a/tmp/tabulator-5.6.1/src/scss/themes/tabulator_site.scss
        +++ /dev/null
        @@ -1,204 +0,0 @@
        -
        -//Main Theme Variables
        -$backgroundColor: #fff !default; //background color of tabulator
        -$borderColor:#222 !default; //border to tabulator
        -$textSize:14px !default; //table text size
        -
        -//header theming
        -$headerBackgroundColor:#222 !default; //border to tabulator
        -$headerTextColor:#fff !default; //header text color
        -$headerBorderColor:#aaa !default;  //header border color
        -$headerSeparatorColor:#3FB449 !default; //header bottom separator color
        -$headerMargin:4px !default; //padding round header
        -
        -//column header arrows
        -$sortArrowActive: #3FB449 !default;
        -$sortArrowInactive: #bbb !default;
        -
        -//row theming
        -$rowBackgroundColor:#fff !default; //table row background color
        -$rowAltBackgroundColor:#EFEFEF !default; //table row background color
        -$rowBorderColor:#aaa !default; //table border color
        -$rowTextColor:#333 !default; //table text color
        -$rowHoverBackground:#bbb !default; //row background color on hover
        -
        -$rowSelectedBackground: #70c28e !default; //row background color when selected
        -$rowSelectedBackgroundHover: #269b51 !default;//row background color when selected and hovered
        -
        -
        -$editBoxColor:#1D68CD !default; //border color for edit boxes
        -$errorColor:#dd0000 !default; //error indication
        -
        -//footer theming
        -$footerBackgroundColor:#222 !default; //border to tabulator
        -$footerTextColor:#222 !default; //footer text color
        -$footerBorderColor:#aaa !default; //footer border color
        -$footerSeparatorColor:#3FB449 !default; //footer bottom separator color
        -$footerActiveColor:$footerSeparatorColor !default; //footer bottom active text color
        -
        -//range selection
        -$rangeBorderColor: $rowSelectedBackgroundHover !default; //range border color
        -$rangeHandleColor: $rangeBorderColor !default; //range handle color
        -$rangeHeaderSelectedBackground: $rangeBorderColor !default; //header background color when selected
        -$rangeHeaderSelectedTextColor: #FFFFFF !default; //header text color when selected
        -$rangeHeaderHighlightBackground: $rowSelectedBackground !default; //header background color when highlighted
        -$rangeHeaderTextHighlightBackground: #000000 !default; //header text color when highlighted
        -
        -@import "../tabulator.scss";
        -
        -.tabulator{
        -	border:none;
        -	border-bottom: 5px solid $borderColor;
        -
        -	&[tabulator-layout="fitColumns"]{
        -		.tabulator-row{
        -			.tabulator-cell{
        -				&:last-of-type{
        -					border-right: none;
        -				}
        -			}
        -		}
        -	}
        -
        -	.tabulator-header{
        -		border-bottom:3px solid $headerSeparatorColor;
        -
        -		.tabulator-col{
        -			background-color: $headerBackgroundColor;
        -			
        -
        -			.tabulator-col-content{
        -				padding:8px;
        -			}
        -			
        -		}
        -
        -		.tabulator-calcs-holder{
        -			background:lighten($headerBackgroundColor, 10%) !important;
        -
        -			.tabulator-row{
        -				background:lighten($headerBackgroundColor, 10%) !important;
        -			}
        -
        -			border-top:1px solid $rowBorderColor;
        -			border-bottom:none;
        -		}
        -	}
        -
        -	.tabulator-tableholder{
        -		.tabulator-placeholder{
        -			span{
        -				color:$headerSeparatorColor;
        -			}
        -		}
        -		.tabulator-table{
        -			.tabulator-row{
        -				&.tabulator-calcs{
        -					font-weight: bold;
        -					background:lighten($headerBackgroundColor, 15%) !important;
        -					color:$headerTextColor;
        -				}
        -
        -				&.tabulator-calcs-top{
        -					border-bottom:none;
        -				}
        -
        -				&.tabulator-calcs-bottom{
        -					border-top:none;
        -				}
        -			}
        -		}
        -	}
        -
        -	.tabulator-footer{
        -		padding:5px 10px;
        -		padding-top:8px;
        -		border-top:3px solid $footerSeparatorColor;
        -
        -		.tabulator-calcs-holder{
        -			margin:-8px -10px 8px -10px;
        -
        -			background:lighten($footerBackgroundColor, 10%) !important;
        -
        -			.tabulator-row{
        -				background:lighten($footerBackgroundColor, 10%) !important;
        -				color:$headerTextColor !important;
        -			}
        -
        -			border-top:none;
        -			border-bottom:1px solid $rowBorderColor;
        -		}
        -
        -		.tabulator-paginator{
        -			label{
        -				color:#fff;
        -			}
        -		}
        -
        -		.tabulator-page-counter{
        -			color:#fff;
        -		}
        -
        -		.tabulator-page{
        -			background-color:#fff;
        -
        -			color: $footerTextColor;
        -			font-family:inherit;
        -			font-weight:inherit;
        -			font-size:inherit;
        -		}
        -	}
        -}
        -
        -.tabulator-row{
        -	.tabulator-cell{
        -		padding:6px;
        -
        -		&.tabulator-row-handle{
        -			.tabulator-row-handle-box{
        -				.tabulator-row-handle-bar{
        -					background:$sortArrowActive;
        -				}
        -			}
        -		}
        -	}
        -
        -	&.tabulator-group{
        -		border-right:1px solid $rowBorderColor;
        -		border-top:1px solid #000;
        -		border-bottom:2px solid $headerSeparatorColor;
        -		background:$headerBackgroundColor;
        -		color:$headerTextColor;
        -
        -		@media (hover:hover) and (pointer:fine){
        -			&:hover{
        -				background-color:darken($headerBackgroundColor, 10%);
        -			}
        -		}
        -
        -		span{
        -			color:$headerSeparatorColor;
        -		}
        -	}
        -}
        -
        -.tabulator-print-table{
        -	border-collapse: collapse;
        -
        -	.tabulator-print-table-group{
        -		border-bottom:2px solid $headerSeparatorColor;
        -		background:$headerBackgroundColor;
        -		color:$headerTextColor;
        -
        -		@media (hover:hover) and (pointer:fine){
        -			&:hover{
        -				background-color:darken($headerBackgroundColor, 10%);
        -			}
        -		}
        -
        -		span{
        -			color:$headerSeparatorColor;
        -		}
        -	}
        -}
        -
        diff --git a/tmp/tabulator-6.0.1.zip b/tmp/tabulator-6.0.1.zip
        deleted file mode 100644
        index f48b7f3d9d81e439436007cd916d87c0bf4b30f0..0000000000000000000000000000000000000000
        GIT binary patch
        literal 0
        HcmV?d00001
        
        literal 2622919
        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๝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�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

        My!XlYG&^S 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

        $Q08XYbYP1S3bTWz}VLZomas@z`_G>aTH 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%0DhCb?C8<{j4Kr&Qr3 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%0Dxj^fl!$8JZ-}4Y+7`ah=nc<8SeJ$ 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г~&sy_)+6>TCqEsy-gnq;gUQR>3dmlid3XC&Te! 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 %YrGh{V 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∨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%0DJ7A2O7^wRZ<+ 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 z zt)9VMmi(3r1JEy-@uvSl@mq90o*_9!U+UAzPfJ*c(NJ{3U;sG=Zl72R9P$o1zvvUc z#ei-jQsW68^lfhh+VS~Odq7Y`sup?C*3@)xXmm;*!wdg7j}B*vbX6!z*Q2?xW$B{9 zn+N-PfP@G8Evfbd!|wpqSLtqW>kRvT6qPO*T}^N9YGJm# zxvLK*sAwoh$^Fx@7o-Hw_f^+ZMUVEsT2S@E9_p_tgFfy=pgoZHP@e)dUY#diuQj_B z7@+@tfdTXXU0}eDSYTl9)z+G!EyW(U>~8N8ZcVsi1h*z!O2ExkegyxQu5#;E`LZ~s zI!a&CVxV*?nY{!$_HIeNF654Kae0C83H3}l$5lkXI6$_Ann*@C=XN)t%(>n34CTLH zK5a9KKbcMx=h}L4P;5erA^BX}+(*c@?HJdWYir&d+VtkojshWRQ;%uAVyjpj%dwlc z{eK5^dfPu{i_4qK{SAH`m%Cj1#l5Hg-zmq&PhNI{TMGI9d-_ty>E1!FYFvGAA3_j&Fa|;h32;62CziK6x!=|X zJ!2bpV3m9IYpIY<@Ix4}x2FLn&vN)+QF9EOYNgu3PPfXO9j^57qre~o)+>oV-RYk@ z`u&Br&wjr);W(ek*m@-zsyYQ<=desWD}X}!YYbO@z2MRREr${5-$>oz&%i3$0+gki z|9L>|y0J}rNqvuhn_kKFZ)dTRLzt*2x-C88uk7>(*dfq178h52aLJz}g(Q+rAR!(E>m^ngxYX6G-RAzz6ko zL=yO(sHA1?EsTYqOI>~24d~NbzkYdU4???y+wU#N18&XAg-|Klm{RyBvyF89Sy{w% zD+X=>15=u0F6!exhmRDluDD+sy3%81RH08M$hGMwY1j( z-4hsV4Wk>lfg8Ai8@Lj{X7HY1M}IUhEVM6kan}bJ{dFdk(;Q-y+S3UOnK+EM79*X} z4X(EF>-|bBxK3q@A+iGb20g8}_++)j>kqMCK)l9QrapgIh%U^y@P9yaIw<)piF>~^ z)GiH%`-IQFM2=jXu+hUJNY8$}$oLVx1WUEz<)+@Xa+82JI99;e*tir=Xn6x8{d0bS zH9PwEiOT>V$Yq>^i@iGV30|Y$(Y;pf3tLa-z*chr1E?#-i zoh9CKmX#(c83ORN&SmsIU;euTOZ`l$^A)b|Rmb}LAVjL?Nc7PABiJk;PgRDot0LeA zqXYUN6Bf8%zse9`Ot;SJcT4P7uOVIB$da+JUpQ8uPaBTQPB!=iY{t15L>FIC_G(rH z03=jSKNntRcWf_GRx^?%};OqQ!2=;y|B@ zXax7go z&8D{BlME4Pfxcq={c$7&{Rw#JECMH}V%fG2UXhk==?bd_2Bx+cw1?QJ$`q@Mc1ZM< zqCPkpJfB+-U_KVlvWkd!P?JQehR(5*UbEx9KY771u~iFa5`AvtOfk-w!P~{R%0`5m zCPjB{`dOr7gyB4BSv7My_rsb0NBR>lavFi&^_iP7BHls73nel}=#FXUUxEg2I6waO zZR<7j@w5?3qHcoUDHxGH=>Gjs=MTV)O#9H>q&34|uShOXX}rpmgorx-AE#X*K+KTv3kk$?yl5L

        SFMsI62Gx zdO)qW!YG|DeXlN4eRQ4*^n1<^Ayv5VS{GXTDbOW&56}g@=2br}p=ZHpuYArS3}r-$ zev;Xqg2|{Dk?`mBOT#^Yz%FwD;0tcb&MH#yoM)4=(T6lx?*M~MEj#^zj|Gg!JmdcHB{5#-U_I%09xBq?u$;V~yx$d`ec$)Lx1p|(76bpu7#CUooLL37s| z(zk9tYFh8Tvm9eWQ)kvIWpYDkr;=zEgE@{pH^ z{9?bFN&JMZB3WnY^LN~p=X`Nw;{+I@oI@j9&p+5o=*3~)+6P(IXGb=@yJCW z{W|kcM*wd91>_+IlwDyNx90AoOS65tG%G)RkctQhokAY;w-3&M%B)9%cEp9B+j)TzZn+^ANV4$HUp`LO8;jXj3X5fB+LZ z2=uPDhVbz;d}OpVut$}H73e@gFlXh;u<273=V=G&@{$Xg16i~&GVygJ{JW>zqrS3C zr`U2(8jb)!K)=8E&d;3XkGMSmm65~zpNoCJLO=V4@Osw*@i=LcQQIGV-^%b_U%Udm z-qs{oc${3+RIQ8X{i4{640QPJ&_S1v&HJtfxFHG`aK^6%HNJg_fqlX+>PHCqCu}Hy zF$L^eq6UUo1Kkx;iaDKosq!`Q1!1RBpzZlY%sCY z=L1iGxq_$f%gA%_RL0Jqs#_(7zOTmTJHyd{oE_1Dw=>Yuy9u2>n!v8 zMT#6Q;fNs~pqp=s{8UI@%6iVy8bwd5XlgmHR91Yyjz3?JJV+9$6*Rvfj*>neK0Zb0 zB33&oI>9x*YJOf|slEmI9`x~#pu{@%jqShrej7g=;ZQGoe&WnFg*<`@D|!!0Fm&6Q zSHo?U{YqeYfPBO=_%n&W-}v=_I)wE$#%hUl`}x^{@6r@I5ew%>lgP2?}+4N$_7~=W$CxBs%KIqixq8x z)l1sOfUy@1jLksvHE3|pXjhU)>O}rB!gF2E2U{%oef_HD{Qg|yteL3t4iApbU&EJ% zH1}zELY=>!2I+8rt0-OMmTy`ICe!kIPKn@*+l%8zQ9-9AV1>P5#n0A8N6=*J>hbap zDDtVNU^{;Tzv+6=KleKlHxZ`;6SX4z>3%wxJmU5~4`IpdQ_xhb3T}rZ>k8eLF}QoB zSyOHm78v$Hd*j$&|1hI55z##L!7dqs?!eBxfMEYCibE(H#8PA}gq00`tNu0mgq9;X*@SFWVZwUF%W8ZjH*iD%%cnWIOeq!j{|I&* zK)1v}j`dG%>OEKy&H&c^r9?%W6uKy_WFrAGv(%X1NMEoBOi z!5aqt_k{YG1pH@7&Mrvu{|SqH5Kf5u@PANh27|ZbWNogK)(Gd^mA}30BCQ8h!CsQx z*i|vmz39TPg++*gIHl+R03#1wj<7P9Q;s`5HOetvvm*jsipzr`vQ7IEN6~sjOt*UR z5F3x&;D3JP_N2D*@u0mmP<5aNw*wW-mx&#wTRV)8{)ZUvUQU~^+E``pNyzH1Y*r9w zlmDeSdvax1H*9@FaoCutIz@%j5uUH%%=n$6%gC)hQn4lEx>0m;my`h z`4rO$vv_6ZmsI?g4!r*g|2NXMNvzV7qbPnOhrQD{*%5u>+^{^n*IRbtJ=n9w$1{lB z$Se-t$ef6Y%*w1VH!_C=-94?_`s@Q<=-PkeDc&jHC>{)4J?&#yfKs;;EDYWRbw8fN z>zbV;$V>|nOU)Hm(1VJu8=~`B8$eFzB;cr^g-PbttHyJdR&~yLuBBDOF$0XhsOl9a zMCzFBFO!n|KrwS?C@|-p-mF!eTEQXQ$+jISEf?X*e*@uN7q5@AOP1z11LvfN%Tu79 zxo%NiVy3ICCt-Mg!n4sQxob#e;fCQ4e@@!&5xI|F^t=?5MKtNYUZ3J&d+VXk6W@}T zWpZTiwHo%Wb0iKgCOnQ-ltCOfI{G*s(YO5Y(%~H#?(fr>9zeamqI{sOZUOOn6};`s zMwf_aRMwvtARVzU|7#NF@hrTO!KEGvA?a@}RfK?Dll*%FQ-@cqH!GiOk^3lzDOvh| zAErwLcBv&H>#z-!F0rMbwpJ1bvLsMZ;VrI)vGf{&9@1&L{d0Lv^2I4HxDZCiL|V5#N&^H(6F*e=Vi z&;jsg{_!%(5G|_Qa_C*yob|14prA98&bQcru7z6x>wvtxDc`O9c=qTIqD|?p-Z7qu zwaUyj?MW3pb(rPXT=N|YF6EyEk=nEtRv4cruh?;O2%*MT?|g%viX-hSQd%0kB3d~Q zW>871N27ldn{g+GO7UIoAWHb~p?}VoW8Ft*ObYi;ln97Z07|;QbUZgY#ha%l-prii zeXrdu#k=)HgIv5-mD1NGkZ#EVkgZ875!C%GJWiZZpVhF&{~BREmCk^0MZ_oCbfhg!s4*iH^5VdO;0aKOQS=xWu3cpD3X_`?a7q~XTIwI z>a#v9ATP5x?34Z+TJ_LL`MhSzHw&o#S}$tGb6zHFcB~}wL%mXUr?r;2<}hZzVk?za zZ#tkTr_8Cx(0c^yBhcPYDoDl_{<`lhS9R`+uST#<43h_9?Obhq>cT=BgMmn$VNAg> z{+`&e7T{b{rk|0#TsB6DH@}?!ymbERoreo}fflmI;7#5O5`H}34)djl`!5EaP!_Wg z`W0C!PWkPSQe=4Wg)5#m2XgoPkx(FaHz;?vS1os!&}zrd4Br!r!5K5Mim1pa zNN4Kl6v-i%%f_elB*r69ZG%b1dN7rYNB?v)Vb1-~J@+}?XGH|M;;t7xR?8?*&PmsI z`~g^wQ(A#XD76S{91slXt7<2VMPxKI=VMlev# zLq;!G(Fj^81T_vn0c~`GU57a)=kNiD4fua9J2HyQSFP-|8NF}9uM>GqW(P?LA_Ag_V4`dD)C0 z?RngY;Ng^$#Yp1MkISl22z(V0 zJ1AF9iXFBWJEyz}M$u;q+Cjz5@7!`ip_~XKy+D3&sc>p9TvBkkAWkVRL6iqmbJ-yu z{K{pDj`%)=j;t{_C0wu<8m>T4J0%w{C>#!$=XV0dL?d}3X#0-3aakwW?odwHJE|t$ zBmob1UB{B`>Idg!Jq80&KVpt)4ujY1jiS`E#u%PhI~`^4pejJSo#jn*(lJ)3WJ`Dh zD#{sn2gV&<$7<5?Fyu3apy@ZbA$;LU2m0r04*F;}mK})>N*qTS&1EpySA{$Pn#Rk> z697ejEzQ^|ZoSRd>?C73R#n(+k}ie)5S+g3Yjm`8;%PS1cgZBrb9j8dVPYV5Blhe@ zj0~Ox$0*0~?CI+frRTwjx*2E}SK_QSh(KB>$z$3r6zV3$C?=Z+Qc#lF@q5X@neXp4 zOAz<&r=2rZ6}s3h_hlVc`@j+^R!Sgbiz`db2c>cI;?OC5!j`4kMT_e|{gvPOT-YP! z{OsGzjy|!2boxEn7p8B;J|LR>#v7YQIKyjF(8u-m1j~o0TlETEA8j?YXq;<|rfFYu z2A3Zkk~~O*5sC3W?UE4+7j;CrM^+lq%bV#n!YP^T5Xbh2Ydk!D?ERWpX5nd~uQj`i zs&R}}t0}$%LWlXj0b1g(eruzu5Knc|R($BVg`!6bVJ|OE8h+{36j(T1Jh{942yDWV zw6jv4f?wQF9j}k;hZiB?HhfDEC=c^F;+gR|MfUC##H4e|rK=X)TL_>Gv65QJ}l zVthxA@O@qr8}JokEuIcNvqJqx;PFCPA3I$>{d)EH7Gh_2Z!J~5JFf92yA%%~+}&*) zyLRZOZB4oE^Kw@y8Z){qsK0He?EiV&eiV2e#{pqwW<)*|2ax`7uli`L=bB;d!Q%WP z)VlBHs8WR2DD2cAR&U-@eBQhyW+tR1)T}qa2{rV%L&L9Y;W+2d#Q?1w?kJhdtp`hS zOgOhH{Nq|0lq={_vyImzbr*p_tr=hN_~q(Y&3PE$V|Al}ZQQk}P<{tgiFSV~Myrgq#6A+Jk3j_(+*cST9#3 zyN(#x!Vy+qi}6X_D-rCWz?6&~<~=a&UnPpS>|GqfBat5@!nVlWq0S24boQ8Kh7mo5x23_KSsj{X2-?U3F;`lW-vh_#pj zD?c=mtCh+Kha%`ac+Vxc#~Gc()GrdvMpf@hE(Pe{JRFbPXJS(uiS2Ez7D`wX8!8D!X+ z57PFv8O2_iO1mo-S4?(YTEL7K;ZwRKyGFWj1 z;WatPj=`JY7=Dy0DddI2`o3BT{OJ?uoh^Ju=-z34iD zA)6!P&2A89ov1!ZqqfyzjIGE`R7(i`5U z4_3Pn6q%)MiNtG!t=R`f!5l8gmsBiC`*EEH#2}Ja_onE&4AWHCo&YZHoi;Vcmayjp zOfBEAun93*bVB%n{{K;v!>7boN9(FDY$b?g+tPPM6vA-^8gSkw8|SG)Q*Hb+;8iHw?dBq88arv{-J|1QNB z40a%XG%;jq2BPHZCt!&Fw`Q+mBqsY-7sjkc=FE4`~aO?1JiF(a>+4b#>;#!SRkb} zS7e2u3o=k}_Ag-?LKW?0ET1!Z2pd@C&_%TLfGk_;;!w(lEVkSc(`pkpUbE=z@; z9*6MXRnJ}Aa2@^nsrZCcG}ikEca)4ktj2$$^#=uGp1Bt9hJwk>7q8>Xup5Qp8=VnD z_&Qzai&c2Ku7b(7+u>DBL9P<#qB9v)d5BK=wbT%`eqG$`R;4ahR>CW>pnhB~h8*NK zAYGJ=e#ZV0_27NF&WuIK7O~dUxGH+mo<#KR0nPM}iyO0Iv85!fTQ+>iH8Z(VG zCED@Sl%NGST3Ni$jSh&fiq{USJ(bi6((PH6~kTRnw*yEUNWJ?*+ z5xGZ?-a%(ID7UdF$(;2rSwaAie?K^5%+)}(Z;M0NCcK7Vts8vPx9%Vu@5Cz20fdQE zUp*XZWfQ*nCaMAERM5k`&Po9rO$YwYSsTlSqN9U~;?GAB)5EHC_f#w{DB{M-i5IP@ z;3ZuhYwiy#4%red6DMjRu)k@1U?+6F@mR^NmKZJg&viLTXQ?&fIBu z?n2}?RJ87&)vO9yGB*5penheRtEDz&wYj`UHcy50RCpjwlR0L}t6rj8V_cL>#*%Qs zGxpj6tppsDDH&bExwfGPA=^?v)}I5>YZK}Gb|{?u*^j&402iz5TmR|&piqZ^i=Lxp zBU3${pYA-^-TtU*Si=~@+};wm{g#y_LudP}_@Kt5egZnefc_kccdUn-;n?9uA#{S8 zK`1sIw*)cs~hwR=IxcqzOEos%^#Z1)lh-c2rbZ)UK5-N_??uP4vw+T(ic6@!-C^9o`f7g5G*BV@Cn|Uq z@JShC7z$M5Zibg7(2B;f<{BpOVL>{Y{zF6*b>P+Y*_;G&wA-)kWf4;Z1%Ku2-)Q>S zCCe)bSsBfin0xae3{wrje1tX`c%pqML>Wd9AwP>aWF%ZF?Nk{IhDfb<1~fEe@v`@R zKW4=_Jow9IVeEN&SJv6_sA7%JQUaM(5XHYz~I?$!?976LN$LpL^T%x*R?wslkP4X5J&W49QwY zm}`h5b#3 zIxqS&eVok{>We1|TUVT9j?W5glGZC;GtEIVJ|+JM?p`UTBQU^eY5x>hG74AS?e=!S zNRirU?vc_3hluKC!Gm&a|6;xddNf#R*;U{~FIGeN(3N}7(cw+EG$qpkNYk=Hm6B&^ z(&6{LhA_`*{H?=+p)sMHJ)1e9VqT7bX{wA7;Ao%0Tj8&G@sPc!%lb5})&gyQ!5qhA zFefdL<~F2tp2;e3$xh_$NgXU-)7%`8t+ItHq_*R%BXs5J+LrKyzA4kevvX#rix+8{=2(KdPqWy(2S=~rN(%KY?A<%@pK zPd)jPMorv|?QNgXz=LMbJUFQip(Oy#((F>4xv-l+Rd|nocvsfB(&pNH*L$L$I&6DJ zuwd^gR`GwvY?!uN~Q&yl# zLU05@L|~`T#Q3PK5=>)-g@1Ic9=CAkjr*mg3{0rRafilfyZ0!q0&z4qUe)`3(Zadg zw@m0dbVB>Cg-AU4UQv2=vHE}tTK%F~gayR;AZ*|huGPxo$!NSJYhPQm#g3j!oWok_EC1>sg$~GCdchea&(D!uvXWG4}??Dw^C#s=ki=+OfMSsBnxONY6L{bdBjq>7EbTA zHYx7szx1a4L1W7~{a%&es}^{Ttmv7rbnT2#(HNyN#{PRl(s?~NLDe2OE$xKY$ZyXf zg=u}po0r9So?6yZ-n}xw?gX{R$$Lc42?Vt4l%cdd5#DagiH;0$FRhkj1lE2Pw?4r7 z0Zy4?1)T^C>|We0MZ4PH)9xLt8I8VhxWAhZilg%^kSB*z6!{<0F!3&*6u zmzKD;rHR7_(wpLQ8~)}4*x(Z!pmN|?;0G;MS6cz@GzSgG;;+B%hmDV8z~$3|Uj zZs9#A&~kwm15?vWW)5R#PN<$;;y6H_HCw;@!H+yV+2{|?(klzB8zNVFa;`1BvDSwG z-=v6ny|Ogl))Z|zw~tOHMu$~(;HZbjh(3x03N$k%WeVD0Uu@66z(3U18{3F={RWA42B# z#|mA2lBR;`Z(@x62{&q+IQ;u;jiMLa8o-K*=?L_LniTDrI+iRmj<%b zRV94yHd1-(JohS*fE_zDvW8o^P$FQc2IU(AiZ~venKnjy*JmP3X3fXkP1n0>ct{-szGe9hC6^x|0H!@(tYWRIqL~kFLDnqb=k_wn>7`4u!58~+ zT(|KJErRa<)4y2o@RMB-roLM|T^sfq1u)8A!dF*8q$#Tz-hkGuX0I%c-ZRKY_I(u( z4XXgz{WfesYq@$aQpDkqILB;2igUjsS;v~PGA(r$WQr|yQsPY~AR%=?rem-6SHPXt zR8>56k8>dYUQ%P8aeF;)=pk|LBetgJDNoDguoOU8%j|x^ip5qIen~s@OlOr7yi?E0 z7jpJO3p4!L!ta^cDge_~ADU5^Vu`~xJXbyr%eJ9qn^Dd*5gj2HRD&I`zdlIhL=En~ zbq1U-yGh|wLnKq+h)Udn^0JI2wcJ>Q@g$bN4Y{TjQZkvNH-o1wejt=8Ex&!xN+G|{ zoChm|^~FH(J&9MoPCqd~hDudFqH2-ed)5`a23PnRT#=;?&D(x}jxX9meU*aW50FWI z!diL6b$Ei3`FMQ7_8fV97`Gwcz#1{XhvGsH%NG0&`p)k0=)|NLCHL%3CHB>rp`=U* z3$IQD>wI`{kJ;K|(wTZB+larrf^)GUd-1v3_d(7ReC!#a(-^a;-X!`1YHo5T5cgt(Ib>ckf; zr-{Pi{Deg#9Wq?VL7(Y=EDfZZy$PjR(%uK1*f5Xt+zX}xN2q%uLSk=3 z{7w*;1N28B*vKXhUCH9w59CJ_rKt*21?^EN@!ut$HbwO;hIk*h0Kh)-%sBdEhB)ik zl47zDl3d*Ot);9IH;vEy9`df}K5;t=VGhTAI#G#>j~wnX&sYHiv8DV0)wi8X@x_|l z4|vGZ3H1X~Tz#t@GWN>r`YvVa1=k+%tP1%y1{jM|Ke3wUK9AE$%bfXIqT!T#f}DS^ zB;>2O^U3@*d$6#_@Ncf?Zv9{Yk%jVp4PBof;7D{`^47NSKa`F3Gx`|2(XL-SmPV zWQZJG_Nf{yk0nsl(xun%qGCikIBqpkvr+nsXPL{yOnop%{7V`<$MW|jM`4yC1uhcb zk4Mx=`we`0IYPqPKQeV2v9Mf|nGt2@EWz#>D(t8a8<=%NlB()u1VbKGlM#7fMuQ+? zwxzVb8A9wc&^iznR#!-)rr(46YT)k4G~>0pUn3pzDheGbIa@u%S)3?n&cIq~q^PnY z$XeNH_5s*w!PzM%&?=a>()pmw135EhnohFPWWm%QYaA&VuiAqs{!w@(i)S49_2TxD z7tea=dEmFOx2}Lj`3|JWQkgR{^Qx#Yi?!d8%qZxi$&!vI;rtAAQxUmR5DUX|tc9UI zVyLD}W8uP8Z7tsFbV~0U#Ufffw9LAT&+X za*xB3^v~Mo=?eX+MIE{JV9vQNo_nIdrqCwLopvsgLyN!tGe(WOkrHtxzye(Z-x+kS zu?c{g3N%Vt_wcb9tt7lSY!h5ZXyXXD&k8IAJy}z&63t<1PPA}Rh^J$7|U_I-T#%no83zisYqcsYQ7k7}+&GDj!3pO?k zT>mwW+@7O(%=#L57s~H<_rBJ*l-dkPWcBFE6G?OiMmC}^{o3#G`=xR(5-8Z@9V=oG zwOwBDJZO7HicP_ubzr@Zy*4aA0FWtuzE^?S0})Xb$NT>tyEZA@ za#vZzC;@eVF3b0bu}X|o9+Cyh4h7bH{d#Z4xjoHANn6c;N&)!bX(`^dDH_yc6LmnB z#98PLt~!=-Z=iT4J)%{cj5OOtPtA=2xgCv7aOE^h^O|E+Ty}=PL<4+{d?XEvG_quk zXsq<5yW3&679~x2)BrXi1D-t?{|PySU9wgn=y_~aUt1H9IN_AMX5K~Y#{Wb+2|#0P zUuSkC`dH#^9B>lU_L#anQeN(!ifmRHpdhmfK1GfFAf!TdNL$f8R>f6Z94j|)0F38H z@T^*Ci6|olPST8HI1Da`Z~*KjuyQ<3L>%Dr16q=6S+#Zcn+tSqZ7zEe2g5lTV9f<9 z@9phur<~kTnhlev9MKWTNwI=tRXeAL68G0hi76SKr9r4NwNah1n$iDoZRj79$yvm& z^&*~r&S9K*wIJXKvN981N^KUl`j9Hc0W>g zo5tX`#INhSUptBYL-=*Ivk7_J;9d_OBKZ!$v*SwiSpcYxb}yjmUzci6{aaOE3800_ zl(!34eOIiU-0L%;w+0>K?6r|@stv7Sh5U8h)qEzv48RYO7g1B-s!D^(n^mS10uy`lEv zr$!pkbcxe!qX@@-uuHZ#7_i>_K8ljkMZB z-&iXik9To7U;XtIFjJ)smbg1GE99fJ6;K96T%hM_4!cgAfkY#;IPx_TPJ>Uon4?9^ zfHk*~Lg0AvrLr1QXzukZF$k3xf1E=53gcgDJ(;-HIPmUNe?{hM4ZLNt>@J|Q-iakC zw7SBUMe$pN8#8vWU73+Ms`yr7T0O7Nrz2^l;_`Vg8?n@vhS`#=CFBJ+3e#_?*v+qY3UObV zstx2ngwB0uq)6hst_d20;fd@qMWD8U@U%2Z_;IP7#ZT%=F=#sPWd9DH%q+k|`tp9b z5h7oO491#^Pk9}#5ez((<%Xxbrw`(6Lx54v(KPD_;AIakzID2=a_OrG8&Y~ixSGt^r|c`MV4d#qON#-7nv_GvKnr)AIG~kZvj@bf8Ni}J)EIc@CO1;$t@|iTOs)ydm1RVFW*7u)1gd3 zz)L}1%jHE!^%-YuN0@YY73hAXnou-H7uZ9tk{0)AS0C{KxWmjB z*~Qn#Sozq#5TCwGIP%o(`DXwiA978`6&kSg|=VU)B22c~nMy8|^Jy znK`W->5_!7yY7P{B6ajVo*sFaZOPoHEc}Vz=u&p*gk%JILtQh}hMS#o8n#DxoRBLn ztW#P79cLC$Ve*zchA%54=4Ib8!?R;uh@4Dqzen*%-^{fV|aOrOmh^raE9-I z4!9N6PzP=WHNpWpvatToi^qXQlcaLzAnv2ly_XyXIs%If_7xW=J&N{$dRrO3noV#E3L%eP$3!-?FPTDt;29@Jf#(6uo7YY9-H%z|`o5XSt_C2!gt_UDK_ ziJ%SojI^(Mdj`4T93RX2*d`rl+M1;v4>&&r8PH11tf-yF_&yw$TsA?Z^$73SCF)Iw zFyfyN5)rphsa~+JSU6y(AXDtyes`r!3|ho)FZOP3UUNcGC~_kO35mhtjFvDOTeix9 z@J_*pV2j760V!x{6f9Z&VD*TYs(3_fP+EG|)zXI3=|2{86Y-ngD~K$uR3sNL#j65f&L0l)wD!u58+uroMSq;5ROqU zY&1B7TF%J7wa{TWEZrSnFAFUEU`JVL&B58%Zg5jeexF>hu!FJ-?ee7-0I)PmVQ{(* z9=TwyI^((O%r1m1BFJkG@-CJ-mPd8bgB#n~$e&7hsqWUQ1qt83Xe zjoTJ;sG~N7J%ndKpJ;1^=?7bBUdC|cEu0f0WD5{+PaToA^AZr>Z&Lk?ibyHJ-~0sF zCHErTz^pNvTI+?bA|`_eUQf`;A=6wa09PlZyY-!;S{@CcK z_uDMQQfhT4Oe@YKxWSVxFWHxpbx0pq!8d<|Y%Iz7v{s4_x0q>8zWBl+tWCLJT3H=Y zzCd^26FY$duST}4@(QNqt*cL7I!*xPS0n3j5>+3aKd}Y%J?ZXKza3*;ZaN`7G(V=q zD*$5S@@7)n#dnDvn<-jQP(yw99;-U_^|6-0RL#qFOSs;q;!*nwt`EAU_fKljSK)zN zv7az^;$EE9I5-v)DCoQ0NK@m=H*u(1UnbBPk@k$Vz;m7()!P~ZysadvmesND9J|^W zOyUbV_@Ri}%N#7dl~gp~KZ^2VeXX=ji8!p^8O~h=v)fyxyJhQgPF0#I64@n-`~qFV z)}|^GN`v9d@H2Kpc5V9^Ih(qFjt2Cc3WQd+d=EYrP0{Ip^B#Sff58n- z(P9AS4Agx(oGLWC@TJ)UpD3LRL7FZNF@o@4+ZoF`+cM~*NOhhH-~3~2_O3s3IEZE^ zq+2Bq$j*iipW}}O?!}6U5ZJCVRVw7fvzqhhP@aWs#|u{kTa#t%ZmL5FIMxzpWhdY! zthj$*v(hU%4l5B4?wOr%{*=Al=n}lm0&X6AwGX=5eZ5O|f8Jmgai1)=p1dUNnPxr& zMx@q~AhoY0=GL6ZngGhhJnYDxDV4U(1spePsMfWu3Qoxgf(hAz2GiT#I%o+M?#5Yj zl^5obY6rcR7{zfse-}ORV;?)2o3XYI&R@1W5JG8<$5+6(2#2JD-N)*amgsMI#E4p@ ztokrU>Ch(yo*uaM(4m&^9!D^%0Sp_V*lT$|jP;7NJtf<8L(IHUpVY~lGIhylazOIR z8W_f$`ovH0-WkR~+--5toqH7f38~_Kj6G9e@f&j<93KMV4q74(-@p{~tr@u*sR1>n zelGg4+$uPkUJSp1Ho0pRDb{|vyqlaaB-XG2yk;-t7pH$OKKa#9{hDH0xLz(Cgck4O z2G@05Z-fg+xY#;6%K(G-w0w<}Mrgmz^|1z5wam>lP~~iPut>MNmau!!0lQ=g$Cj<> z=f8X=*WLmmGcy9nPuQK^}%Pvc4`sRy0ccHAm&$gGC=M*4+SKw0EO?8)38YYCyHlUW6HH!ttVSV;gB3{797U_P68P zW^UxTDsucIn_(q|NoTcB5w}#yI=}h+8n3qX2Xf+m1mX)T8AwEh+Mn;tqS3>2%6f7l zlKIj`v&!Na9YzV3A(&4XK&3BH84r~-L%qX`TIY)`Gk5}rEcQ;zTYP)jn`m(u)e(Ax zo@STTOslWxE~pRml}|r}@G7fd4@YFa6;7%|zQ@#y&AG;VBmV4N-4iFl6}_!7ISKOOx7KS)_<#0=C1L zfWMboERIXar&HZvXZY87aB4vXYqeJ=lAc~p0SdbU!W)Bh36o}!f zJLUSd-J&v0_}_bxnCxl>e_g+C3XngngckQ4)EDUGhk@)`7*&Yfh{8|{|Km44L>HTQ zV4anzRrq#Qpbm>(&hpFvvS*dMW5bCJ1)DMS|F?{pk4Lr(hSew46t_i+d+?h9RO_lh z?%#Q1**27*rcY6Ls>qEi>7mFKtbo?0>~WYxd(vu4R2=LO@kYLQ-2rV`o{Q9_u<4!2 zj<{7GDXwtwFF`tYaHV+*6w;HWgITAN&AlJnv*dfI?UO104CX8^%@?jYF-LPB5%$BZ zxWZYirbR77<~XmpPpPmmvD(vOS;ArwDe>BEgn)aFW=fsOr(VRfGes*SYR(y% zpAFAV7sdB+TGd{Xl8{c@+7WTbv;45oO$UjIEqS4t#nbJP_B9w!k*BRS@qs?)UCYOM z*SfR+-(8DM0(f8&KwsUF{+}g)@L&a8)_I2$cqAJ#yat{Z_PpnhxAW#dZ)dly`KLPO z4H?T~%#2n(17luYP6*&nS2 zqI6y7ozL7{>cro+%*lJ5=NJ~|Nl_LDnYx;W0tNyHeNSR9Tr2^a_pW&^c|DIg*TVnY zSv&bq^{J*l*{PaY_dMI5iv=(NPKI6Q(#$un4)gWyToOMVmKEQew>U43`G9yCk^Z%j zJz77OO0>^D#VG`va_;_PZ`6g|`H|q1BpEgTBShF*lnEdgXMFg?lFJ%VNjWD6mtNaNX`>ziuZsG$q{y?x?p=u$)?d@lWAP zZ_}>49p$fJM?7#xCBy&Ku1BOeW<^Z`n=5fcjg4tqXU7wW!M#cOHq!;q!m!l@cblVtkvakp+`M`ecqU;?epoF}d5Dc>`MkMy?9 zjTu<2?EZBR`0m}4dGc!dbcLoqd@7QW9$vTf(A)T;Iv&N=yH;PgxS>iq(K7M7@mVc< zxu%4dC03WS3ZB=kf^{A{i_;U*F5RwJ{G}4LtvHCfvf+MZ6BR29reCL?k*J z7f;3BKpfTAy3{I;TKA?)elD;nL!~jA^yBER8tFzd#z~?)a6-DExSH=03*#R5!A0@o zhZ~Z+v5z2lhJ8?!oW)I>ZY1A?46niH!S+s(BifSqB5=V$xpQT2=+#55>vU^SZZhx% z`96y*DIC_twsOv@Xz~o_Xgcu5I8MTw+z~4P)?<|D_VXH}9V4eX+;<6Js^PurwRK1` zSY4zA!f)?37pONjha#WZF^cl>J2s*wK!hKerB3mtk)RP=8*&!RL`@3XOl zICrN76Hn=LMgywMBv;cbhtlbecR(#Gw$*Ly6c_s;7`Vfnz#-J9XIM?Rh&qd1_f10h zl?5@uo@PQ0DctbW#iZ{+zqgLAl<%^{ z**MCPc{269c(jjAIIIoFv(5pv-&qjh==XG-*Vb(1Se>&>j7}kpQk8E*zfYgq3`j9& zO%5YQX1UgR^wXyioVx85w=JhtZtC%`Xh5br9J*8Ojw`Nf!k&pi>ot!S6d@d{fWw=@@Ic(+EvTlIx2SYMwmqgi!S5{Nay zZLeZ81$629dd~~JPz?q9rc-mu_I={RAB!o=Iq-g{V<+ua#1op+trUDO)ZGt1m>}uT zx^#psx57=uJq{zS-|3}C=qmN8w)KKL(b}~6@gt@DX@#4ttz%Cqyf5bnlNikTK$+z9 z(g#gDQ|4$Frl+0dJeC4YfTysi@`TzT2ifvbqqPZM6G`%SsXpj|{C&p2ED=CI=yE|^ zPh_nvBNjAg7-ajGdrImc9a5M7dkpxWXGe5PG9cSFLsL(63Y0^qXY`sC=DbzM-dGYB zPm`<1QwaE>{0^O#vEgyjdpoR|Q>mf!l9t-_&I64xGUip->_cqJ^mHLau9$(N>kWUh zSZVUwaP31mHf~nyYWD@7UH{+MRu77&X~Ed5Al_*D@ra56X!a5tmq>MxKa`^hnl~r{ zKO6OGMTa26#RNFyRr{Kjl!*7MlmG$u_EbuPx2IAPl=M^v(A_8C6CJlWsJrFE58dro zyeCVyPGC>PH+ICxgW-#Q@qR`f(@B}4d05guv~N?z68Q*GQ9aStC8lep_2HuHp||)B zEZhZsocAJGKdjmAclwU{+sK7prn8HB((MGwsn&87NgT5BS@?ZVviZQ6I}b0liy1F( za6bOQUPW1WXdY0q$Uy8CSfh~Pburxl2CEAQDlG0jOVoaIQG4<jPGR21ayeAM7KLn0x}^QU99Fi)2O>AQQ!&(rY+GhZZD|bpEsgVRzQ?gG zXA&OW4~irGaR1jRLB@CW{O?Wx`U~c>L;vol;rvsyDxdz;USc%e0&5FoiNbDSDk!8& zIS(xs(3_pYqTRweGQEb+9-Qy$rOq;t3B1kG$+Yl1C2vJ|GMfqQ<0nlR@vWcq@N9bk zfBQ0gZ2$Q984C`gPouzq6$Wd`4Tcnny^vw!bGWFZP1}f6zYwMt`73zn&!s;Sb}vmn z$UCG~&5*X&U8FRGCIy3ch;kow9NTzFcCL{L(t@`A3hV5dYNvZc&AHJwZbv5t>SGOk z9s4Mlx>F48=XHfKut1YWM%@P&3U_*}v(;_BVfg?KU};Z%=@b9qh!G?D>*zOqTG~Kd z#NMh+pSS1~iWZ~63n;X=Nl0YaU83WVo{c+*rMY7cOUq*|u3cIo{nakJORM5`6l;o? zW!a1Bcl8qejZ5bq6M}+hxiAo3ghRj|=vor6<`~bYER2u70un^VhmtMjOvsp8sC214 z-%IsbJA9D};9L8N9(x5xNxz>RnSLL^Mdiq=R}3^K&PF?t?q@zGU<>y#Eb%deoHQu) zsq+~Hve|o0>|b+luov550i*WK7Edg_D?M1*uw^jc`Vh*cCAF5{QV_Pt5@V<46P^X- zAXZkWp_^nWr!s+%^UUKiqOLPy)urf=FRKm^XF`-QW!G*{6iHj8u0K3jV zK4_W#dB$xNvBWM*)QywU|LF?68;Uwa=y2fA2w3%db25sB;cmzrk_)whiif6L>OQ`c zr}%2kLvm1!n(Ki;`1e{&Byod^p_w)cn84AEW~D|53hg~fUEWgd3zh4)$Fl)ea-MMi zkdUUe4n`5aq*X}0O$W5Xm$MWBzn5?j8?VU(A%9v(?mcO-gu1!tEu@*R zv7Tli(2c|js(7u~GW?GgH?yOU_lU)pbjZe`*!fg5Qo+Bwj#Glr zpi|Fpx1Gv;5xcf?35=H zE*7X4XtD9W-Do2*B-LBhi=X!y*dhI2ce;}sjpQJ-YrJtUqtls{R}BFVd*@-v2N;hD ztci0XM?-sspGGk5R*OkyQpyK1ZTh&xDlrS0wPy~Y{tEwonJ1*mT~4=gx+X0SV-^>* zCt#_3>2jz3P&6^qkza?5ePoN|#?C2NB28c1`RPlcz8^s`x!KDAfk1x0S3EGeCuuH;tJG zRI~<6h%K;iZRuMOV${0}BYRm$PWq6%$r&&hUfeKJO(dCB#K(Sd@f8B7;W7;o6J(#x zuU&WpxYJ!4hnQDQg9!0_)iD&Xj?!*<;TM46s9D-x&7#FH^k!hOqQ18|3lEH=!Bk$h zD`ZIu*hNpshSCB}m2S(ajsUH>E~KV1>Ol(G0ZVaaL6@fW1DXhni5R-6;i-3{c2kRu z@JBIrR@-CaYLAU}zcjDMUv&y#Mue~rYZ$u^3u2{>b1o=^FMYJAHdIs_*V4o_4=FFw zg-J<`o{DW0Nf#>T(Jzyhp8+!kE{73Gs%SVa0!=Xc>N&Cq%-!BXI97{>eI`S8nN5o6>2pMPjtUk*_BHDAJ&$=0x`&6XHIysz0Tl;CKz%2Aw zN*Q#J15HTRlW|46+RJj3Y7+O=_RukuEG_S3f>$XBwm%-|`H!U2cjKi;}J>B^#5{wW0)O zdSjqrfn)}XP)|B+RArx}88XiS>3iiZi1DVu%lr&dmvu2-_<6bD;o(NXIhEKQiBXz! z6Xu!-Z@Y1|u;9A6+6Z_SHKq%Gm(2<;B7L|zCw`wY%}gjN2(wab{^DoikWNXG*}2uF zM!@DcF$tWaK=^5*g;lH?(hk#t+*&d9XO;saI-T=BSSDr@hIYEpzeOz4BsZH2QqNzd zA@v`{BeNLXieB^MXa1?6+Az$ zK%Yjd(A_o(70#fr%FKMsc3>Q)?m*8wm)`o%)@%0|R; zG{0sD4>2@58cP%v`m*dE-^iu^f;I$c&UER zzVa>$sS~M69BDw8+W&y^rsx`|h&Xeq1E(efD!u2vy2hsJqm?qARnLLKs;|jfK(lta zYQ3l~*3aw!-lilSScd^h<6=6x7wABj^pXEDG-n_d$;o_Vs>qArap`P>MxZTN17@Hn zLT2MK&M=7HFOg!@mnA|_E?FVrzZGKfW$8KOxDQ1Rj@#UU2hu&S-sK4P1#Oce&$ud} zHLl^g^!OX9IQuJArv>3?Z>&pdEncInxl|eQziBvy)#bJ!90w&)*sEU2`^8vV4|q4y z(NX|#Vdjz~cna(uz%S)4CNEWawC&3k8|nbfbVxtOVnawKdQNukR2As%V^Q5Rz#5=L z$_ORej$HBzLC2L2ny&c`p%xsKHB;6V_azNate?>3-qlW|!ZF7xD5hg+y$E$~)*BM> zlyyn$z&$&zU*P##OYZw+GBhJE4MBs*bt_(`%}y+g5rFoO1aQgY{UlOnyc@874I$+tn(_w#5XXYov|+(PEe+XrpVfJ z;8%~q&r$~+qIMx{A^k(hl*%@beJEC~a#`m%Nw~PE-vxh_It)-Zc?M-equdm3qjVY7 zs-8#nw_eyB(7!nWv;VtA=`;ng0w5>a^R$R_V6S>B9bJE*k8S*QwaXzGnmur|=zp#t z-H1Lqn9YbzmzA~#H zspQuY#Vweszf{MSeCKA?t42qr;-W+UEm@(7z{lPWH7i{0xk7#cY-I#&rB6zuutvLj z8~FmhI^w9p62Yu*h~JmAGT7iG`&GcswR<=Ho)q>r@r&Fii8`s;eq}$v4BDFJ@*Gov z*`LlitpAk}i25Nk2-lR)BQ?4@(BJ4gue4Ap3K;~Xt;-KsMP?FPgvK*F8|8f8cuh&Q zG_p%D;N|i=G0oVCX^U3%GK?MSW_vOS>}aV@}?-95UqtJ|OHJWhIA zxQiE3Cino{YuPC6V{@CsLpgx4aUa&aQ@gXkjBa5L!BF4QEXWR0e8%Tb*XYBS{F=P# ze;ioesC)C;q!-fWNPmu@4u{InoO%vDDD`PY;;=MBM%CR@SE`R4gzHaZZf6z3z2BTI zPsP@`&;w|}?VP?cc$zi8Vn1iDY8%ZkqmX83CLUJvA$?hP0e(;oZCbBoBRNFuobxkd z8;wEJCwzsJ(tjEsdTaVCK<~XStTs7_!K*&kahIAQiBcHGu87mazCl&L6wv0k#l2g_AZ;q3nuEkPf zp~#U5@BTvNY8G2ok}O6}OvlJy%>{pLKh3^7=Ghd3G(gy7Rd_vnFXuiOgYYV(EcR6))nb4%)h&nFdYp5iRh&p zGRQXsw7a0h8}cWhefm&w@%Dk%sKbSI4u(P>6ICQ}o+z*peCKaRM5tc5l4vxPz-DWa z<~Nd{RrQZ+hDrp6nFlN$y3q<8gm3kb{;F%A>@witM!~Pu2EyhYyezYk&$njI;P+%6 z#+DeT8&jPel#`UJ@%;yQB>3KOvjwa76;+ML-DukGNtqzmxBC-rUhBMf`j)H*{DxSZWN_^~^aRk- zq=W0Ow|P>(&ydrQjDpEx35s-W2! z=l5ekR{swch7kI^TpxZrerq_33mJz_-j791g*MByNG9AWHUtd*^f@QvZH{q>vBuPO z_kN#vL)!XVjO3f~H*7Yy8Bk;TG#thazj6sD0i<*S*I-#!1K}L;mg2V=K(#O{A5!h%qWP}0R%&6N zmX0S77yGVyyRVu>h;Vq!kc2nXp}u9Ngmti?KQ!`_WG1%-reg=xzxXV&2@bCo5onp} zsMB;!14nrIjniS2qFv7bcfL5H-s zMD@QHZ2fM5fJM_}IE+zo!qTEeG7B~qw#Xd6kUjTJ9=IPZT4`S`30jI?2%AV$!H&kh z67)%6E!QkVGsZ`OzCQ}e=VOnKxESPxFYxF*=@UQZ2W;j!aG?5jcWBNdnFm&HWI0SQ zI|Two`_tN+{&NfO#UhxEyl&yT&q&@&^3^o{%@&CCZ{oOmp?rFf$5I!TSq)o{$imDK zdmJ`0$MGDT$?x0)$I*=ihHHJ#>uYsUjO7g>HCU8zbM74qh%@Nd8amVqBp;Y@iw~8M zWAw4~%|%nh5l*fjqeP72lE-nBU1E8Zz;D$6+UbZ1NZA%g5(-|f^P*q{T(6I%e%N?P zJBt!p?er$F$mp;08VP-Do`QD8!_iGSuz$Tu?SQOZ}|#g>S~f<0!MS&x5Qd zXUB^2_`)uea_4#IH+_KN5G~S@FVE6GNh0A}6AuG0d)i&CME@ipb^AHI-djz9O7pVrcradB zLxdO&#sDoL&D)+rC}n-MX36)_PgBRR0X?iU%4C%U?=R)&{|zhNUDu75`R47PAdt=?5vSDTSR65d7`K~Zs*e-(!d;;=Y9`Iy+8(Pp>5?<&qc zg;UxnD>exe?aTj%qDJQk=~scd?al9lCGh-&t`F)j#-{)TMuqGbv zUo1xu|E~L;dW-bX^Gdq18qBh1z!VOe*Z#D1M3hIFutBRDkW5H*OdVv!s~2*siXcat zk!*c+J7|TCb80NHhensK{E{(SWRBI?`s5*!k)Q3i z8Rlq3K&>+@qx~KiuCM7VTGA&|wsfwdM;x$>BJm%oC(jM32LG-umq8as153;EBJfKr zHOQw-lRl+W49-+X>Wv2l`5=0MxC!m9gi|W)n5G;+GlmvSVxyawCabWWux)1(&ulCI@qf54dBG z1&r)a$JecivQTa9my3_(Hp(1KZWgGPMZYF&M>5f;Sa&cjsp4IAu`Ng388m3kgohlvs8vIce7zG8KT7)hu&ud@UlOQe#o{FG6)R40%5Sq^5c5^i{0-mbisd$ zZlnlWo`|=@y>8+ep)QufoUIMg!PipQ9q1@yUo6)c;=eOwE~nSAo5EHdU8c-ZFvQ$Q z&F-Hr!RQ3>e1E17(Yi^!Lo3Y!Z`%o#fwxRxH8R2LmG2m3*0Z9A`9MT3{X2V5VBE6r zSL|6|OR5*LCJ$KL)ax8-5s2fVTapWGbs84F6?SK3?NhHi{9U*^WSI^X{vrzKw9JaO zJcNHv+i2(8;c+9C6duS{$+*sSrRm2jaE9OD4c_1l-rx=1;0@m34c_1l-XITbfj-@( z!8OTR1fx|Ggu8e_m^HA`l@(~Zfg8Ai8@PcRxPcqEfg8Ai8@Pc>01Z1`8f}b{DTRYA zGDMxV<{Oyrez9%ge`R(=;ny0Y0?2S z+GRXCTexnN7dH2pR&t2Dkqfmon;>86hQZVK7@go-~9QPIj)5Er+i8GVk(vAw~K z7+R@y)h!0O^7mO_=fk>lv3}5(P^c_xz|V9^HL2@kV50Q#^yd`P+}k7(iIGz*0j@_% zPqm9Mx3v^#d8PG93xjTTNhuxmq|mBtM5JCID>+=1J|!7Xj8^8$J7AxrL9lu8eBQW+ z5A1HFnb->T98G)byG4Ty(0;0UNy8zB`Ax#>Ct|ld#q0B|-WV32W*z zzxESX_O;~whW!icDcGCuGS>wa1bw?2-2e~x`I9c3LZ#K5q=Z@yP|GdO=G-O&W6NtO zi~lZr>Z7^xw<}evyA>#}SLEMDS5klRR)ulp?@tp#uoLTN@BppCS4MNCO;@H3Rc}eB#SXj6Q^Ic%^81d7l;*Ta zM=B*@7FXd+Ytj}$8SY*}3sW{0Eoen$+A<#BmZZ*9xK01WlL-Fa@wY9Gyi`38l_Qc` zh(44_SGedONO?Ak9(|*c>#;5}JgQM;367!4LN3#Lfjnkk zn{;q_V{NEyv4li5yAt4r(J;Y1d~Jj{i?~YwMjLqDpCFZo8mKJMSsaoD(;cbT>%z1; zSBLX1)cBQ|-Bh^G1AaZxmGeZ^3NqEYT45llxb2hDeXON*_wk-dEY*=A`^rP>KxaBl z6K1H8)se>m36i;j+Lnjbh!e?M?WzP_Q zN%DXywUrdj-3QP5s@s-9In3^1B$Wu z7RmC{Vw|f3;3!2jchyS-0L`5WVb*#5 zz}BeoRItPGGMhjO0TD&>Tl+o!xO!#~XQtELNetFfsO~ArWHw|F7%gJK%<5SDA~Z12 z)=ZxcpdAuuxD#B+_6Ba?25#U6Zr}!P;0A8s2I2!F^18xkj7mCer@~;^Xn}^o`ZGCy zvK@8dJL@?n4GwdN2*FgdCDX9@JF&iniuL(HXG*O= z<|6Ap+Qa43249wrfkMlXm8T%JQ}g=iJ6%KwdTu0HT2?n~7v@6<-X4wD!&52UgZf_e zL?eCw*2a!F_L}41-1a$cr+T?0#A2$nuRn`>)0{cr{#S_=v;5TOJ?Iw67%qu#-#T8Tp%3L7uGiD*2v4sBz2cr-JGUX zS}Zg6;%-dBoT=SNhVv57ap+1`+ICVS7RJqn_IyRpX<6(=STFeXB&?igN_0(TE?#_Q zI)dg1oygWKWWw_s+lZA7?x4sG^&!1?)v4bq;)xL63&3q@Pg9)>k~iLm^0 zh?DRk3GiuT0>26^FHfHJDVlVE`GxPxkELGdmTH}yGTS0fiJz83{@RWx4iWHqy!qUqa4%?b}s1JfazxCnxRWFHQT+=t|kH94)eXCWF8Et=*Nicam~Xm}xO9h+F9<3_uZFU~U_Y zHLf9s<0mLJ(g+PTB@t`*C6_9>5i3Z=x8Ms)_V;xw} zyOUP>14&IChxC(c38{@|G19Swf!xb-&c^`fZXs+4DQXfYD9CA1$@1~M_TByViXmMX zcq6GVodRE^578VW_Fb)HKq=YmzdI7{D&{BM1{rqzoQ972aLnQ2aq6TsI}2bbT>gt)x;EY+1B z!|v`Z7U7r1_=>>18Pb}EpBFE47zg_)uzQy~c#Zcm8>sEtio?k8w8-e6?B#?jXbi8!PnpOr3Wo1$p~xQd+)7rElHa5GFD(3v1Wz zsZ0rG^4y8pjTTCU^|7F+{<3FBgV5}#pq?FVq_Lxd7&`(g-0)wV{d|!Mot_x)4lEKO zxX*qCk-Eqs1dsikOd`xG-0}cgj4jEU+bm#XVb4ZNobh;|6W)gRqn16mC)8mmS~+)k zb=+mF6fA>|F?pl8mOFT30pn?N5>$4EJ{n3U$6j;V$#O7&e28*AiY|U0>NK-k%}bZc zu{2bRXA4wnXDS6AgK~*I5DKE_G1D"!D#Uj5R@{S6wXmchn4SK}}2(s?AT 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�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 z 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

        Q;nS(G+jlHuy%pF@_!6uLR+k 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 z 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ƗiX91((u@d1pCdzD@)68bP@zQ#^dz8IA+^+63SvUCtt4wK z7SotlQbu@qYprC7-B2>FISMM2amNrgicrjt8HVY-2ml`h9hA}K+?)2dhR_s#ml=oO zlv%p$5q2ER4$1Vs5+0A3Z_#7MyGquuX#`;7X2Lr1ghL)CV*T$R2t#8czL>Vv+7pp*ty{VPK`YU+bEdKxi^0e;3;(T1)O;LkNLwsY~q_WYRsl1aH7`J#A*5}k~ z9cV$+#0zxY->%bl9E(1K=L3>?qzuy#O+1<^^bO`jDDwJdDd+=p z-afw+LgR-~Js!WynZwiCBx8uVpS99y{@ojP&?QE-U!BZW+lt$&AdBF%TCtf&Tb<87 zKs;bKUWYLwf0sfghwK}M$)HjGA2c!=)m?akMQNiJ1#QFq%&}efo!YJEZ1sRX6Ku%Z zg6SAUAee12Y@l~*NP9px=cdJ?&2jJR-ue2`aC|GKAoO?OR*-KlF`3Tp8;sm!#9h5~ z0}%qaj!AmokSBW*LG8ASK3$QsV)gC%Y;jT*iVYed-8w=N)e9pe?(mEETUZY_t+k^o zcY0o(z=<8Pr;f(!;votSa(u-H>O$z#9>&66m(So7WcTm>)S0&pM7RcuTNe^`aK_&Y z4+HHp4Ji2j2>&Ui{)p%ZUAlKK0?#xAeF7mvVKFeBqllDTXKuC$c}V&7L5#tPXztV4 z_@2ZV%H`fzjEt$xTMo$O1O_+I7ecVOdg>%TptNkYsk3w{N~@rwrBkWD$WM}e4&GV1 z{gAh+IblmOf#18dm)npasDt7dgIW4)1JV7P1xLbdtEZ*csD77w0AHN&3Dq3S2>-*y}W%z{@>D3mc)jldxTO6VS)$Fwv)n$EtcY zXq@3tmW)MvNUM_(4<*A5doL?Z9bBrAvvMe&n-}DrOwlQ$0VYGHM$7wvJu}L`GjQwi z_@~@kJMgUGq*X}s)p?P=qYiv?xm^C;*GH)|KnuQ_fvS9&oTd!YpfM@Z2!O(g=a+az zAwGnhhmJ#-Ec8e+WY24cuYA~+`}Q`9**RJ<<%0TEq5WSkuP{>2(K zRh0Q4J1`JB5>q^;tJV8dItdz&KV0x)vAS%l)#b%|Hx*9cbNj@;*a7>|>KUB(=%#0M z>9#t{Z&|8SY|y}oN29nN;X9)gCxR+iW-$sTsLAzH_DRlTr8HT%pR-d~J}%Az*} z-U@ioubR46VpbEAu4=WVFAZ3Oe<>&Pi}iY&$?tEv<(3iy9vtQ+?&o=kmqLJ-&M7p) zs-UeI@9L(0C*@(u1m#k&m?WReG{&C5r-ICvr%|=HRW-|Y3M6fya3@VkBYUbVXBM?P*ONqEXwzZ+HNc@xY>;WkTC$U;5@e7$s9Z%g4 zeLzLZEM|a`-Ao0f&a7HfAu1_ql7t$6|N5&bWL0U(Hum<))3h0qJCxDBl^acN1h;gDH2oNQAg#d)<|1UD*66&FyiNEG z(6WpOR%L#O&nfYYH8#&gD4#nc*HXmGm{<#j4_t!!#c!J`*-y&KC@I zLh9oL_-m~6wrj_7WA@ia3kbgCRxFGf#|vKAFi3iE!qK0%5do9gPct8*wO`_6_ zn)3u>R%AHk^k*in+sRdw+}6GcPKL}Z*^*G3Z9}8geuoh@M?Yx}K0IDuJfF?KmHF_p zgZDBf%?lQGJzB1wDW$m^pE>V;vP20meOaP3>Q2tHw zTTq2}PS!$$LRaH4Ap_<{d^Vcl&L04}ROwItC;#{~jUB)#`XAg5#Vw#~0B!?8bL`Cb zK1#F?pXrX6{@tPfLD4ju5O8zGM!;4b{uZjh|Mub$wT=Q3!W;i%>c24HBmP$pYGmk8 zE(;rIR?zXGL-#?KgbB=x!u%b=r!*odkMsve?{IYTc;eUX;U#_0ZSdC@b)iyI8ps37nwv1y(_lF(S=%aVvQTFu;(8@<#jro4LVD@AVh`ZOsGwqX5>m{p{;5nTB8VZ7d5oaw z9>xY^gf$?d-HitTif5WbSYa<61xkzCPpA>hH z6Z<&uM=`hRevKyi7SC33o=dI|y2TR_ml=M$7QL482)!Kq6P~2Sd)#4?7GdpaFXv$! zst3Tm0%i2H5=T`TjwS&sAHB&wvjS@4Hs2^@m6KRA(C87i9K?Cwfuq&<7}iZg*c69} zBm^D!<5SYu>Xq%q5>GNuh0Nd4<3H|M4Byhg3i;x zWkSMc*0eRETe`(1?te*qiXS+c%euna-ZF+^iWni2wr^Ymce_s z8YF`QihVcAMI=cC9( zSd<;Zf9}%}wbZ!=_OBz^m%~H6+=I{`V#*h*}%>K)VqR+(wYYcm9s<;c~Y6sk?R@q?7TXjw1dgK){Lal9 z8lQ8I$S}B?ufYJghFc&E>w=M-Be%Jw=uYj8u8G%PcS8MjEh@7;xeFO7EOAs3B@!L# z5)8||UdR}2NoLu|`5~O?tu%;t5-krpo>zOzEyawprWhgdIh#|aE~EhnAp#-I#bKIG z<9L2dsmmjd7y6u?@&+zu9Z?NMJYE?vfxI4P+ikOWf4NmlvTrR;{m#w>lo^f(C|O#3 zc^peJum?>O?=cvl<2LMk^i%z@og}R}J|n+M2BAT-TbUs6*k-g+MAR$uR#E*mp5eFa zZ`W6K^Jvz(%>yaez0FVXdSSbT63491inGXM8} zriQ+optq>0YO(0Z+z6Xu2g0v>jYv0D%rKiu+L24~$WYi5F7w^{`!BtFtQH;$ z+w8fIoxr8j%@+5iBf=U1iPaCeFpXiD{uYiwbpKsrNdt6o2yQ=cPh+#a9ITJ~v(NKbRS~8d! z!o87xM*fx5Gl_#^29RdPfce^eu>j-y%)2A)IOQ&@{?p9?WsJR;H9vtqb1|>0*3q3i z^K+Zkgiv;``tzGF{tR5!&z<`jQAVE~s;femZr?-PABXSa9)O8=<=#0CR294Z(DBPv zbyz)dA`bS!?xgHRB(z)nGjFii-uG^JUgDU51MnJ;x`4KN&uDv!`0)+NZa5(0hWdSd zg(pOIJH|~2bO*8v)#TBOZ@=EFEG)cf{+v(Hn^ji_X(LtYgaot}yw(>hcWzkBu?^VG!U>7n ze(r?pMGFTzI6F?1&c862N{%MPfhR9oaaC~Aeh9{x^vdnGhwiO5-TaSsy)w$dYh931 z-sL6ned*=_`{>#{a{uFI1aObwFMPtfNBH-22LsyFX!WV@RBpB!`rCa+GX830p>IUW zcBP>QQQH#wEB54}S1OtTbl8MayI*4f=t1eWsltnp2ihI99X^CE%QsuPlPQ_ac~p5T z8S0puDOfclQUl8ob(o`KT3(n9nTi#j!I%jzgH%S|yCSt{8CC|U07J^&s!f&QsvKln zjuAMpSLTq+he`~V9lpSvBs%#JWm$C9<|1TXmOK+nX*)&V)d}15ITn40CiLm!E_!uR@^5hN|`PjBc_rdnO=6iXf{mZ6K(|Cun#FZy?)1*G} zo zYL1hua92Wt-!9`MXpW{>lA6P5^dYdO)6Yv66rc2k`j&kKid97u6x`2$O+Gt|H!Ze~^c%+IyD-fUC9l}h}Vl%LO^ zfWH=Kx6PwE;Zf?up= zVCB^X{vnomiM((u{L5z94IEa_4==tQ3zuXs1(>DBuEt)uT3Jh<@|lx!#{kwVlwj`} zbOU8@JxoGl7&23~(McYm3FHNZHj-l&9;v>CF8K{0vI&4!U=rdu6?-O_LwPZsEEmCy zNN)0alR)9dbJ!_%f)(@XI+k^GzF;(&q~(!Rv~~#29D$e|);+s!3uL$Fi_@*Ja}={E zN?pu06Q80e54MY{XJy9{?k)W-KgNU3k}kWNuYaPznjd_o+eE(B$Y_G$Xnv;|5Lv*D zF)bG5@+KIOC1@+;UTy`(VvdtV({8;QZn5=I3t6iPSLkh63k)7|J}TmOFH|sHRTN!u zLI!WR{0rB;We99~m(6w{$E_hKA09e3{Go1WIH;jPt7Niq;9&^3GUgO5=>bH-Ws}gr zg@B8Zfaz)nQIgrK7t>t>rDevwf$sD!X^>yE6lz4=(@qlf$Yja6=iskONiE<`3bA3H z;=ZuB=U2t?{ULqs(VIceD)uWFqdbe%u47Y-u?oJML1fb~=ZD}zU*VTl(Ay)}+>gki z7B_k)Axm<6zmz5B@0Ug)+^&D#dMNbd#QjTM?7Q`4TR(vj9(e~|_o9XuM!|3E*@s#d zT*3>Z;Ij`JAY9#9#V)t16dXdbLKxgdlwud-wAkbI)k+qdyJw@=4;xtsLb=HzuV(x? z!+7C~d;QHCuYSX)Ft=!Qs3#X*`ME>y@pR_krI=sxFwZ9#;e;6`Nahs7CpE`d)|})} z)X#D(noe^l%JUpcCKDYCUT$?cHPxXQ&vh)9Om-;9vmFa2(;W)pe8*yH!r?W|EBwl5 zq4+J%di)rtoj4U+5$O5nv=n}Jv1CRAR7g?*l{4r-q`4qUV2CCyP+?6CRNkZqQ9MwD zD4x=UDDJ63luqbE7QWo3Wfg6RqMkZL*@QksVNW5Va6%)ZFj0vps_29YGBwcUpD|mV z-vz~p0)b{IPBazuZ}FWc0er|P1>Xunp;88&5UfBZ49%nx{HBP6N}Dti3wsg~g;NTN zg_%G^*@Qks(aUX8Qc*`N$iyK^CbSWYGHHmS31!5hNEo7^q6>Ua)6QW*vzh7m8c9Nb z{-ouGaKqEIS~MlOY<+oh{<5edZsb-7$l)hjnn<1G$O zz5b+_=x2e8WBnYEagJ^fusPTMQj(gH1+Iq{Gcel$;e8Nk(G?B^uuOM6~{S7(!t0Y%$lTuVOOOf)edVz%DBU8jG{~} z_KvJGf-03DJhsYEid53^$ST9BQAo_gD-5QqC{d3BuBouc%{IRGu1(?v=Jn<;ojim}gs&Gr*H%QX3?>E6-#-t@0CX6qS8~rD z0S^>ri<5ECWK0xQQn|^(eIZB>Iww>vV2JsE8d0?dk6NV$w%lN*`&0c9oeH6V+=Sh; z*UiHInyCz9_u=(QoSd^MnbZ{HM~WI_?R~&qynp`;&B`4OGqPra(r9PJW zM@@mtdw0i-X3?Vs#`j>kMDQw)a-jx9oyM+U^SQ3u+jagTFH*`Jjt8DD7pZu(tq5qkef;DYJ(!=S3GRkg(?pG3mXu8qjKGu*izmjUeT~$s`S2#NaOS=yh`}6y zca$57rQ>1Hu`>f<(IVCC{bhBjF-@=Zh7vRhJ8rr|( z-Ktab9qe$M9*vS)Y&21*Ps82!!93UjgfR^hQNX6CKF#+2l2F1Ti_d`}>9cD`Gxn>( z)~A!x>!4U2^@0Z_AgK$n#7sFx*tC)XKGhjF1oHrl*~O1Du(&EFGJ2ie0{WdsC2)Rl zLxR!VC?@pu7aL;d^7f;AvGGO9Q`r(T4fMuVg-p%DgwS`+ovJp1^@i_sK3!bECBZ}% z20enNjP$Dm*VbEKcVbxl^}^nE!1jmJLaFrl+S%aa_sep7?xWqDK|W#m2TcpoMM_Id zwBR{%=Z<`pT7>evAsZ312A;{HhcW=<5IppByt~s0Gf2@mY=&CBo{a5j&{{SiQcVo&2QO zo6Xv(;kS~K(V}ZWAV}Ye>QA;?`WE7r;e$@vjbyfDW;0#z^+>q31#u#=?GS5jYsQA< zrBQ3r0vOw=6nn9neR$r~ACBC<0Oo;^rHHRg-4}4oKKd8`^uy-pum9UW;AQVW-|>%- z1NG>y|Brusu{b+-&s3EZq|aw(aP9lozb5Yx&|m*qynVHP30u_BU;meS`D8Ue`s?4& zSJY03w8D%o42FP1JZB*IeN&*8FtBgY-73hB^d z=JMxj4ip!XZ}Rvy)xLb~<9D4b7Z47*28@O^)S-T)+?pQBJZ1-dw7y(zl_Bc$}Cz+S_&4c-PBIl^qo0fpIo-ZNkV%1tkZP6Z<-hi)%b4q zvj(Jb`Z*`|OShHzKK!l|+|h4G^mlij{)_-T>)3VvZ*m^4wGeire`1pVO$R@eNXDYZ z?{GO<)J{5i^F_=Dw(lzK0}@2s1_2NE#nJFqc+YOZ!`*WU{ z*hCYNRE-8E{Myo$2zus_z}l}fRJ~vMauCa$f9lS>*_s2v7>^wxh5es|ir6ht1b+^L zb}tHzeoECerih%lF}sPbJlFD$%&T?P!j%k7JjO!kxil5@7Eb%^$BXytB}Tb47>Kku z=5{KJ=vZqJtY{&$^HKDMbmQ4J%cCURDyj?8myo_#zl)p*I>!A49b4@A!FJ7l_i02^ zNV&A7V5WNq|FK>GGU2Cxe_LLKGQ>y;^g`1DtH$}0(!-#V6-Ju4+%vikFjI39y%WD@ z4*Xux4j3u`BW24NXn@)RFiaXf2$mH-fN%kh>h1Tl?*rEE^Ax!$`C+pOQvz|=9Q9==+o8K*E_a42n0oUHlmc~W4H81^_mK1H<@;+^d2eWTXr?-lIK9#(o@V{ zZYpA>we|9pw`slQrov1n?s{G79E7_X$^%-D+h$1fVcT=O6%xmps4pgv zGfa^*mh>Uli1@;24DySlzP<6V=;UThP;RywBp_jamUkf_#^?eW`HdctT;!rn+1Z_1 z?HRk?l1ocKaEK7#UEZp?4%fJ$fN0=^HMPh5=}(T#af3*{(x!o*f#oM(;Z+>6V!bjF zgXLTA2|qm&1j6^CNly3o?q!7UN1WQ4*xvOH5>}8feCK^;t(a>rG3n%=9nt@@=>9vo z)|Ur(R@dWdUr%l`NqL2P} z>`*?J1ZoLUfTmGjH%T3Ujj=B zM+RRMt=6EB!BgIRu>me7-t7rcNyZp7iX$*|rAEuik0<(X#XGCJl}4;y@zI zqFL;n8y^~>l<75QKIO*dR zt}Dg_n8%5dU;Ho*aWaHAsJH+oXBg7ot~os!Lh>hrDgC6Izze+{M%6NaToJ27=y*PG zrO(H#@pcE#FH+%WUG6%0con>+8DBzr^F$mt()z` z`gGmY6FE{3OBcrg!#GiiuEbvaoSK=sCY&X}4FLi%ywl+^L?&Vo$p;&t?-SzUD>U*~b~<>*q5R~=!cT-oT+ zq#S3aSh%o2jFOn<$UVWLqhEO4p@I;w=k%>fEtxBY!GbB;n`$IqCw2gmez7sHL@ zIK^V;7Icv*g4ujRyJ#1gTp}6I-ow2X=3JyXYij`%-~9S(g+Dknzp(M9fI9Z7x#bb7 zcS7TaO72afLnpxMs82qt_S)@LVz*>);gTu|`Yn5>woEgSMSgA8?FBgGu5IhxJG=Mo z@+kC|gY(54W9+0+iIR;=-r8;WU%J_ahY68by6I`8_-bNJ9N>f`wKERTWrv4So_jlD zfw;vxdtak*lB;-t58=~%(E|UN`>*~v+s;8Yf&y&~NzL3UQbHH@sAt9PhpH-{c0x$Q zKtZV_XNjU|VxTLLk-} z&?lb-FU)!uZUk-kpErvk57k7<01DXm0Mhg|97 z+0Xu-22NJkxkJ~c%ulAo=PWy3iGXa(anxz7gc}$oRc6SOf#ha(TvMSLu_d9-5i>c0 zWZTR4iTEMAkZnd6#t{=6D;$!1`4PC@W%tzGP5OXzbkLr!uO?oA0RgDa1TNko@A1}Z zbiio-+3Ml)vdP7XPGg&NZb==J81EP%SA;7SPT|RN-PWkyW63vPGOAv1E$0jMP~Gf6 zCrz6*@?j)#?GAJ^`oz{c7Qg zbxaRrX?w{I>dn~#G&28;px^_$t^?%~ho~=W zwYOqTnH0H*&#J|oiWE_`dfDi8?GC%d|%0Z!C=x>*zT847G1`2wnc?T zU57cvj-jp%NV8?#Z1+L-2!K!d3vsUwhTQ-_j52<+Ib% zwnhc9lY|eziGQ!UP0bPsQlES*1P(;qK2ec6zQt-^RpOrL-xl-jxf3l9tH11JhqY7R zW7s^vJ(T%9DEHzQ+$i!x5O$T30g3>9bwPeE8IwRIx2pzG4_+?bFB8uo`s0zU=}v?k z6lL`p$Ue&z2l-jYIDA~%%Gw;5B@WZ-2cQPz%fxjJ8f2HfG( z@^DIIETJ_GZKl}9dMGX+%gXLUc+}G>Hb8QieeN8K6Y}sWvV@KSdkRymG#Q*?ym{&4 z-pS5~gHV73WaQfpgO`NsMmj_W3d~Wn{{m>i{X5vN4|asIpd_Oy$b{grgyLll8AB>5 zcw%}~$n%Evflathx)WJbf50F72H9G8%}?^%x3hMuzr&m31R*v(=wP*}cELJBblnPM z0%78j%e{_xLZ+m{64;eAUMNWMh_T=cX4_; zttjn+8>DsDAdYsKIx2|%6TJ;c26QW8DB-sfbGg9Lr?rNzn-!gS5WVm z7?GzF;jqkpwmMxk`6}g@0hy83(+xG<=VO()&F6diaC{{lQ4Fpq6cltEf;u#uPDvRs0yak>8+=V;Wt>?X`5%PPRrsEJ!e>}X-P zF!`~3RV>@Hx4=mv;rw!ci5)9!G3HJnUlq&tY)D4OG6(u=Z2%lxzI5AA690yrxm9O- zHVan#OpH7>$pPNlCzX!I>rl%A9BJtiJ*{;hMV+@glO{0QVL-l7g)M)=pdMBBSz7ft zNrbK)PU4ImI*aGM&~XFG3aR&C0qZ$H}6Y}MoPxCn;=FVJ;hQaZsEs{akOadIsXXJ);sG1HXX zFtZw6H=Rgt>D;M>p>8uX*ai)&rfD{S%8$NVX)XLlXv3h0m>kR#&2z6UVFxCe4(XR{ zk*AtB)crpE_!J^t+%guUCd!?>H3^$MPrB!&UaN&%x#Jb|Y+-Y!VyUawJ7k`@Wp z5P>mMC2iB=VUbHmM)u%jdpTQ5tcP4#q*Ks5sKY?nGE~qbRt5?ACvAOT46-PQq~gJV z?Vu!Qi~v;@HsS`7Z699Z&^mMQc|*F}@jMmp`obPU@Wd@37yX$M7EEs7JR} zoN^&%3K$~vPOzW*l{mzeB~&geu<&JN8jdKr)#Ikfb_%>MAAKB*TU%xaDQ)Nh;%*-ge;=3>r)<2OC2AGq(;y=0WfqD<&$EER^u z4eXHo;j>%(LSlvA!rb@n?_}=l#;247Zo*5pzDCg@hQ5HoE-POR_I%cUL%~x7RGfra zTX9$wa1#JvK%c*JQvz+AUM^`YXj7^|p|tm7W-a{VaC_l`z45>ILr`<@d5m!*OLY_R zxLI%Ta8a3AN=%b0L5l0usz&}^8EH`B*Oz#7TsJLp{B~erUS2)LMX3;4Jt>l843S^! zId-X|iFz(cTfykGWd^R85hLNlx_J*a(_Ga(@6@D6vTk(k zmSiB_8*iNUf-&)8MPhBxMc;1%)&bGEOeB60hse${Z_n+KmHK8fIY* z(He6Lb1B3K>+;oj+j2l?7Vf9Kwz~l(WPIEQR;=%VfPIaC1dChsjKV7(J35qt&q5QG zEbT#qJIK!dygmt9NyqCF>&=WA2ii;O~6@0PrCg)VGXiOGN z&*4;uJ;*J{ilHz%hI|tvrtFbV$YN;W$ik060lOY%QiCiDABN?YX^P!J_cT&@?MU)W zVqdM+IcLBe>sF)J#%EgT4W93Rn{{4cKHQ8<1}=S?RzI1%nI9ADtFzguLs5@u%Flq6Y=(KRQ~POQ*iz(K9w_58x{W&=b<{K0Q% z7Z30Kqxu?M!_+IGC@5w@`|Ul$h*<#(m&rg{@n1t_Z z-1oma;b&MkT*A7(=TstS)ba&W>v$(eFv~QCZql?m{dgFu7(QcyyGpOI7Zg7;O1q*b za;@7T95qf-V^_&$ZbhUTZe$+WnRUpI3HJ*RCHJu(z5CdY-hE8=qSI{*2u!<;X(IVb zzq6f^h_1PyYMxt)#aI+Bcp(i!Nz(F-cp+tQhIxv?5)J@v$W4rAM7oKkQ=(sX%?TI$ zzhX{?&%8@OBnO+)e? zwPkO<*aO~T9n$RAwxd9L3hecm=!V>by8)gO|Glv{z^L{*2+X85aW;r%GULyPoS_s=Sm?yn4VV81a{DA|Ch+IrNQn>C=M7 zsM({UdnWCer*0l!kzFL7K{J)mAH&@V@o}$f( zjMl@cL3bJ6`C?nY+&HqsF09s9&1^HE9=thSqS*1~i}S^NUatn!+N|;Fgftf1;Hr+P zM@qD+89Wl3*nN7Z>N8H3EM4%}3@hO#95%1zt{GR55n&Z@%nK$cdehLVir42(p0L{# zb_%iSkOzb(;embHqXki=d;Tu777Fm~r@Nj*JEb|dA z$``KEBqPOOP3J)nCGInZZdX^1o~bk0WeYdqQYJ5noo-jV7uskt`INcZnZm_2+~}_BM3)|= z%gbj3k#q`*al*KlQE*Pr)u!=vjCa4R2#A zi)jo^Z*bL6_Z9gaTD7e1VR7xv2v>}TD`R83Qz;k0S17Xt0MRIeOMM*fx+u0)a9xZr zyLO4-yy%+rGhUG9rH~ao&OW9ti$6{aD9~mnAv{OkPDg}}bS}iS#~JC7B`0!&zdbfa zj(tKc;z>022F2TUS!~~J5Z~qA5-bx#Cc^`xaCjfEviH05wPRHwX-u$2MWD?u{0n`%4R+f zLfm`MG_#Kfix&UwZzS8#x=pZO_mz38wko^(S*56b{Ljm}`Iufx$DB&|nU#(0wxKOl zT|ksERrmt0PG;K);ce5bw`*wZpj|Fbcqa^D*^O1H;mu`x&JfJ| z0E0?17y)r!ot2;t?{tNakCg+6gr71ale&M|QFUF`aaSSatk4w+$X5-5lHi5D-=U(} z=n&l;`4J{US00!IS!fi($Z;}doVJkme;4bdedzOX&WOV}A%SJ=M(!hpaFZfDjNT(d zFV%{}NDbb{{WUxmk_~-!a#C-$)nWy>rW7b1F=7{=aIQG9iKnN3_PMcLd7>vA0x}iY z-WRS>cjY@O%Tx6CsWXS(S9$CG{K9I7Td6Er=g>PnB9bn+!+5^ssF{68oIK0(GC&cU zH8_%iyztW+q%S;}CQjIi|GjZ81efJCXx?WHIOU;;4zu;7Y1WN9s}QxG%vR{aOiLs# zjA_WlD%}sM7e^vjyjmB>N#CUQLT?b5qKsB#z91uK)86R7`)P^YyJxoFvn~x~N~e$N zbrcjgyEuQRwb{$VZ)kZQ4Bj+udWF#@t)~cva*NqOXBJgeWvU9KyFFc|^(~y7+@=dsstOJ6o-2YO=9MwEJ%v zpOBKpt|U|zv3fVD@+%2U5SIIR2 zZgroq0HGAAsT!4M>xloITE}H<+M~dWBQrh|%xBwKhz&*DBh9DHi!-Pu)Y_yIix`q` z000Mk?_?IX6M2@p!{f!QDmPQ}@?s5yK3M2T~1%K&@ zJw~NQg&w0S1457aF2tx}zPrbskVXd;b1Zay<*3|kNT@4+^92*Q!#w?R+u4>c4wj3} z`}M4G3-m3-(pkFm0tUZ=UcikFY-=(;5JeA~3zw|;tq{m2U_)62b{Bp=Yi1Yis49SpAg58Ztuk(CuX!Wah(cd0FqDoX=KgY?DU2 zVKZB`?ihYih&Iy;Ov;g=lY;)@1%U1&kkKRR z>nLy;vU*_gl;~0%>7c&Yz{_bxK{e-(#SSA`bC?gb?FqFaZ;eqdGV;QE`3r^f*(jHVCT@ zbqEXaCqIP_9r3?Y{dI$!;ixiuhUNvHcf19&zYtf2&!wfq>Q*VHU`WvWEFnWsbm4N= z;RduuN8=Hhf+DDZb$w_%JZ$T&L8IwOO#$pWh`FI~Cl35}{TeGLSqox^3dJSnvg_IO z^ufUV+2i{)D6-DOsPWh_trlmiHFWr>g4IhyvLIdUPG7n6hC=qe8*@?ix1UwIWRHn_p$ z(@eVX&1F#{EVD2%0k=}kubv2@K<+7C<~@w5N+!YjdQmUu|A5zi5sBGC&(t?xgoB!! zqWkLm5gmMz_Q|u074cyw!UX4%6u|yitlPY?+#xogT#Z2-E05C}G+DrKsVPRxfq#!} z#ueknr%Mo%qBD-C=gc&``pV`VVZzlXqIBNl#yEIgxjAvI}Z^S=g)k z3gb}F1gSM1LbFUY*G(d{l-7Xe_T?HLIUsQ3dgv_~7Dd?NyilZtlF~8}rJue34|j4t zfY=FVDo~0sHZ(b$hf-Zw<$?TvCbd#G~G=@fSRI(wLt=LEAS?lK_FLQ zcVM=b?q!?Im59F+Yf46pm2|2EZAC@}B>sInuknXz^o3ud3<-}G!-n@jroPi&2?dmk zbyB|VD`>vs-@;_lJcc)C{>>i69_R{CW_xO&m9aX9<)`s*9kyt@ipNV_TkR5p@qpFo zODESmnxWX+X#LN>pSzC`?0!32g36D7!dsrl{!p~-X6864ZO-la`pU^NPX<>&k{n)q zeLB1>j%0Z825n~tlx8v#!iDEd%k>GKpbnPqWcLsbe{a5U*ylLozn(aO&z;%>je%q`Rt{Z(e=(trFrsUBCVHsogXn_w%*da2V^nUBY}{%b3)G$uu%5q#jk( zZR#jmMq~$?{ zm`uIMejlc|6;o1X2}pW3*j=Fh-PtK6P3&CCT?@I$h`QKN$J)1+J>LL9v2g7JgMLH^ zXdxv>lB))BVi(3w;gTr3Ci=y%6SyU$>p-k=gnv(W$kdZwVLcbU$*-|wU%Riekm^U= zV*%s=msqj`@ghrhI!x5y>#Vq6k`2k6dV~a?gaT>SXHAVE>%N5!CKif9`VD^LtIOq5 zfrwpwGNh3HD$2AV2EsNHQJTZT|@Q$BPH%3D#_aRd#cKT zqK0B+%ZThrXY~LjZv2KSjuEgNao2Ri$rOVy@prWbJ0QTSfIk8>3^DKO>hj{fBaHQF z$T>2@buj|)Q<}Tyxacq?UKOrg5EeiMMhkhBU@eY-&4era?SNMal6ij^50_WXje~!9 z={84d1YrM7z@;VR@Qs*xj|E50qW2BavpJj3Wv6jTw_MVQhtt=PfttfZ&x+iHLMQ>* z9uX2>xx29rY6SE>-URTMPuPS2iL1Hg_8?qrTQ?v4Jd9~V+8h;{VY{d~ZBuDugIaok z8TM%P(hd~n1=kjE1GGh7H)4tPH=y?kJt5*FE-es4M*@6YFJ~VC>YY7GJ?0)A1KnQL z^~#~;KQHTc+n;GE0V=bIM%WklT+v-LJ8Qcq_pa?m#@GJ*8QZHfx&guyAQBKJy+I5X1^ zbi#{PEx^%!pnI<2Ig}hLybcI7KXHr(Oz;F8Av=2Wye}aObK0 zqG*S~I$b-#tl4ksc{7VVfZo2qmnoc8P|0`B3+*a&$H=>iyvQk_+3f@SK3tPT_yhdp z!)BR7%QD0F_3%49edixUM`GTQQzvya~kfC~82?&~(f8PI&L@3UVk^vn`1qn1*L@Q7eb* zwAYG{uooGnh-fDKt=&Fby+D5r3PUB(F|GdjPD0aNupIA0YkmpfZvub6#p~G#e4WL(rdr8#HS^Oa%&wJsgD!?K^RO zyTDVk-z@R{KlpVQ9|#wgTULr`M#<)iYn8Dtx^R|aCGqY2JbHJM_jk$jlgqnq);}we z0W*0eJy_POv+cP=5rP1nRxI`Uj<{#e9n3_xz^I=ccXG%PwprtK7o7dO+WC(H z3u(t(!#YoOcBi4|HQ>@qc80oQl>4%Z8nXM;*Xl^;^^i2=XN)zwzhG~WbUtYjEnm_q z1jg3!?I+6@WF-qf;VwR-iLPxKV5Y2()O@|wjxEH89(7%+#0;&v&d@}yvI+&C`mksh z?-$F(_M;sHR@Y-wh;jWxGly~qF-eVGN#A^+ni>%F%9SW~5r(Gj3j(+Td@uX4+ zPU~AKfMX)SOX1VydfiNlt;7Z>>Mut+JB-w+Bb@Ere-&6V?Z0-8GQ79E0{2m3c@HBs zl=5fbSS}VGsncNUC-yN)?vvUuMXRlqaSHDwi7>%dab!C@t=h#BV+4^1k_8?S;1%zm zm=_3OdPo5Gz&?y&Sfw(hdLGBhRjIcVZRun2xx+&m%Vkr0Wf6~tzSD1inGp2t$$^;_ zt~F^bL6Ohqk&4r`ilZ@P$Djja1#yTa`1NV++k`}U7gn}RPVcw z%UQdX>ixnABRiI(ZNSv=P>jD668h8`u`Syb8Sjj*Xt z9pG~`6ec6lH($)6*c7GSL@OZZny$jSuD^$w@~B!JV%^5;6ohOS>!S_ClbxEDRlD1- z+q7*$LRW))V;Jhub5A>2aYq9Wwp(|6zTBeD0dA>L-CO{lly@s~RQXx6nC&lT@9QPi z>g~^B>l-j<=XBAu+lQErF^s>M$HNy+8)4FD6-GOvGrCIxr6!q`vp z;KuToE6f!u%9|RY)cx@0dZ4B(0sdy|cIay2&VSVcO`Y67Usiu}|J=Tv`ftS!V1U|q z5>q5YaZl^Pp_{M-{Wn{%^TvhT;1uiWXowuqD%C?3xDD(icmYob^`6VW2Nf~(77 zTVGhNF7UqFq?gEBrv;!|2i_?V9!n$)-zd6ZbD6j@G8eRrQ&G$jX`mDTT-6KPJT=VC zUg!K8Fp|-HvIb`TvSvx@kf(i?WuTe5e_u z;xbPvt@@5e-v!BiNYkCCgv@=kvuOBtTzN_g{mWP2C<+~DFupFOk=^R}VI znM;{`<IBhL`rZcwHfxM^1zV3ojOTj~b`j5gtU^o5BJ4@r*#a2iA1if-ZLQ8a9pfVnK!m+oz|I6JF>Epvcxs6y5O zr|afKCDxWyl3Alk%Y$fmfFa5xoV4qAkCXSBBnIg5(B48$eVk^Lx+K={Z<;H#%75x4 zeR-%^B@+sNyAj+yzNx7RgG8)P_6jqGF2WS+gQklJnMa1hg4anHcKIrX$RsUbA=-H= zn(Dfw2rE=AoO2Tpq!%iHFix;ZbyAV^bUr|evq$}NnAs@UTJIs1c16s5dtao6A&^r9M>q=3W z7EkdIqy@zSg{4l@zLa<~qd}oNZ^-u{FnI6supdrFc*7Sx3*!B4G(YrnM#a8Tce!3c zU*g4@6*Gw2)!n`7&@dJ@r$w#5YflYWZn~KP&o4A_Un)nh9q?{hRU#H{WjC5^GaFV$ zx)-VHZf)3Z1mc2klx_B)ozGI@c$fdetz+JwUQ6$!1Eqx;Q2mZ^?Jq4wtgSYQ%9Z3Z z-3s+pHdy0CYFPAH&Xoo0XC%fL>n$W*#}xwM-l~5RR1fPwZpI;++db(Km&S5Y8+2R% zTcOSqW0M(jQdCW2X&t^S(>w+ORuQqeRU>`b8iSiADa7z5nEENs*WU}FSU2X0?_^m6 zli|&eV#YF{R+mjoDUt)YX-<)pF-NJiAyXNy4IFv4 z3S?0+T@VCS&9`>MX?}D3rKe)~pmWg$aus2r6~*p^_OuN?T8;*sFt6@=b;gt5_Q8<0)=}Wm*~ESGQF!Bj)z1qV}}0UkMTJpbiw?pBmEr!+zz!3 zF1a#TP}|9T+D^7()h!>3+*Wlrkr%?f9S8SKLVP9nZgwH#kxb;&9ygI~XlG`a!crJlZCfiy%{fg(skeI{sKE_qM1anga$W{fXz z+;L;sX%sNTo}UEp+adO+K0@|b_;*$QWX@NY5xT6+#kX$3JPLBDJfO=`o%iDjPRgf2 z-Cvd|gky`?FM}NE6<1oT63=i_ZH_-J z%UW=QVmFapt%Ux%eXv7RAVhKtLpGIC}1`YmwStfa#lNGi6k%pubk0{;5ioBN<$(b2}=` z42_|Et(cv9vf)Y@4cj5-64!9%UV_ISiof9o`g-v;%s=BT@#yxGLY^o|e$`kdqXENc z;g%-6{K&4qlMXjK4sUhyzLp?=$&?jRI~-ROqP=D=t_CKEX};Fd<>U@}vYuB!CqpN# z@lj<2zT$O7ST76uWuh21lw!k_qZSi~-LZLg*s%l;f+MS1?Owa)SA2G}#Ebt(lICgI zg`C{OzZK1-*Y?tVI5Qb5!24$1EdI;Mb+hFJTF;Tvt(5*&$Lb23l?5l;72RI_q2un# zYif_uuIM<{>ddJ3o2CXweZ&W<$mF7czz(zJ^5Z14+blJdMp!aUIK$0fyxqrO&2bb) z2_K%Ta8H*EBTF5`|K_TxetBpW{XzUEpj9E{0OjWB9VFVMk=wF;TSZ-ndnD(>driDj~W4c;UZmDDF%qokO*6zm7`CWII5Cn zlcET z?%SrJn%%|>qm{OTP`Y&D9RstDZULwD_SNE|cH6AY0z>yKD+AvT+W^i8jom$hOwF!G zHH>8<52SQ_aw^2Ny<6G;bApe030Zs zm8G*_4lr6iOls;ZxjmJW(?_RaP%~wvgu>I^QHW=-m{X!&Im5hJVab;S3)bkE`l?w#+9M+AIwfgHFSG+e(^LjK1WC(niI%6-XL4s*oPMN! z?+qYX-5Lh+`+2iy;CP8?vFfV|eoo?S#qTVY)f4gRj9;NX>W=#_R!kOxMgD%8+`ra< z@bfYEu%&XM?d|%9SC3v|m3Uu!?QC%`YKTy1B#LY3gU)-$U;hm#!>V*eA9@nY35pt% zUoKV)Y35W(@DzF0kQ>wf-8)>QoQaM{Slvr-aV*O4fMOXQIs+e^p>7p+n&8o)6Vol` z`eiV?q)|V20tQA)0t@qcIj6OL1sfXu4CbtFB~;hxe*;OcZXUX&_EVyjV#^nZBwP6m z=G&ktn9U*Hs#OJ%l75s`&0Ixt`a(9PG1Z|0jOj#Do?l^mCZ0k*N; z)p_ki)kaAoXvFtnwpgN<9F)3j>w~Zna47)cn5W>!7}fe;QCx6S`!4L#@3tYFHx0Y_ z7|&=|ZmV5i9hkd^2RQXV;#O)^BjYPov&t^Xr3q0*aZ2mG>}Jo5YP*u*Z`?7W-g3US z;n{-XS7MNEU}GVd+_^zl?6qFK}*YE(X_ zx<_t2ICXe`Eqrmr=P!d;?hE%Oh&n|3YbIfJcQUTP)M>fwTx-?tj8&Dh&Y@tXLLd)8 zb~+JT<^gY8uZO~Zo9aK(PF@SRzThyFmg%K}U^M_HoX!_3vJ<8rK-R{RzpOc{{Wq9- z_Ko7efh6B{&un+y&iT9njHK5r>YjG!nuvSEE^8vz9#Pa{bFF0|Cic3^LXEt%EC!+NTI<5b3Bez|Fv#CC?2)rGwN0@g9_>*{JLp~~ zN^-BAKGT+w3%F|}9ijWNm+pd5+>V`W-5KeqdrG5Mop+8b7CiuP(+Hgml5P+_0TeBq z6C1wib|hHQ+F7%{+}vO@2v5KVRp1SRM+YmZ^Z~t8JGg=SaO4w_xy>V=zNE5x!Oez_ zd^(ov0Z+){PM@@9r`4*i=RO}u+)#*w6HDww_={d_^b)VPVus!~E5&hC)xDI@^LC^P zCBc-9tLi`fsmi*W&zty2re)^7&=toStgbqGmNDQ_V-vwIZe)l!XQPHFdr%&!6{MrM z<7AYFD{vUmVbQTvhm~%I>=4w$j{_!y23493{OX|%nGxS`ItTo|g!P`0pncu5O})Cw z0R^Cg#}&I_4ljJ(ag^VX>~w=eB#48@#~m;SN8iS*nq)~ZYtOEvWz}te} z7DP%9IlVuYSs%2Oqbw*j$eo7m1S7%xk%{U&OV4VnbS)2c@VJk#k{^TV4y0R zkAx;BE(2?29mRJK;gw4HdMA@4b3jQRWPI6~204R6qFs#s!;orl(s`K;mrASAUK64e z`MTkPkUJDAlce;8-T=fX39<)F7es!n2651TsjI*9J(M$9=Xb z-ldm1<6uX2cw#EwVuR9@SiT>dbiOTsZF|6Sr^6s8@}gWb>euk;ZDKIdhB}7gII;p| z=>g>IMEhw)Ys>wR%cc$MJJ~0onutb1K$87{SBloG-U?;!@qJIvUc>zV2|{3lFlbJ#|_~dQQ5Vc zk%Tdvl+@U&C=Eo0&mb#xN*$4$<>EH4Lq?|gyMg47D|7~vE4knx*R(9Nv{Kchjnx9A zcA~jJ!Yn4l6IGl&)A%jIBOO-VoYjv(NToE`Wyx&H7e0J_>9L*OTJ4JX8_2J?k{4Yx z$_aH|SvJ+D)9R=CW07~+)Ry0F`yq2FR{-s0PzVLvjfhma_Mm0IP<4Y+5AzITmK;Fg zi37anl`gtQ0yZYtaZh{qz7k6rgJr)ChMTa2YRA^wD8p1l_JgO$E`syEcWNqpR^}?4@y@>41nlsBbx092^ zKcCE2aKx~r%uuraV;qnPRz6Pkvzwx$g2ixX{j96?GnELk&}vx2dA_1F!i}x%&ZPWq zOAyVUQ7HoxFsGEji;w~Zw=puTVrN^!KrvUrXoEyBz0;M0X&alUnQV~jut}F&ef%O7 zABDA>=6=3Q)C$@zUDOxr<|BO0`)lkE;r{QwexC5n0ozHY7IoA-j;C5L=V+t|rf1$p zQR6rrx2xe8r{ndm3jM$m50=aCYZdS;aR$csT!$7X{`&P-<9lRN)F+4trimO)i~(gl zzwaOlGBfnhL+0#Z$tadivV;SX+%_7ciM1ndM83-nq}NE5y>>zf6(uy0t5t!EQK41y&TDYpW)8|luyAJspvgfv8bNP zbgBTrQb`f$R1KBVx-8?#$x=fp6iI(;Jx5;LjlE=2&FOtHoZQ1Y6x0|fymDs{=tHH6 zocl5W@W@Yy#{)2PbnPij?!$iO(jQqzP92@>B}kjwy!5tIaCF9l(lHsk#e z9@|ubAvX12;*Ft+VeVRBK%#Hj$!@n37X1m%Q>z5Cbe=A>NiC3#aLf7yXo3&NlL0O0 zbNk44eFgoXf|q zdtj+uBVC0vpDX>iL+#daHslJ6_V1~Yhi}QtXB9OLjWQ7@_Zfqr)nTj_@Tpc(UZceNVzPhZTVOp4XEL~Ay>I{kKIFR+BX7_#NLY&{9~aR zR%J_ZvOk#&Sg<0ZBHxsb!l{^Itm1j&r_s)ewgcgM*v^Ac#XHxnMmX+m z-^hTjL<=wdy*J+P1;05_&i2p3Ttvu%pHp{+yTL(KVAi`-eEfd7Tir7jE_doNRo=bb z?p_-(h?@r>YENV!X4`f>(e&_INuP&T+^xdX6B&27tJ2A6G@Oha$J`jYRmrXXRlV8@ z(+f!HK;p>8Pc^CBPJCg6`DnIW_E~k9;IW^dv4MuH)jkt+KAP_e-wUNlVmh7tExv!T zzT#V=sHjMapm3HI5=F0V9mv~`F~CW971BSn(`vJBahp+Nf}1L=hXJN1u{4Fm6M#bX z;{vi2Qhw2=Cw+8F7<_6RArRwA?(?F&U~$~&wltX<&|G4k#f6zhU(Gg7WY7{g8BX~peFR_V@<1v_9QP3TiAmRT)bpWhe?Dr}&j+k`d-&El{2CaT z7ZX{g%GOlV0|wT>)QRBj*7-1{oU zlb?PViM}x-#V(DoBP0f+0RB;z5qu(@*v@0zqRgHNxdM5d622ay%ov7UF5Y$MdNLa! z)XVO`RPA!zH(&hegQK*?<~Zg#DbC}lj8OGKyIpUl24Kh19K#xgtY@`ja z)dU@6Ij!o{E-T5{!qxFwDrR+T>t_3~K3zBUL=83=xT*4KzQ3@}3d?^&5*WhwtRh zaDmdGcN}l`P;&t$A8e|ns%;gOV5E&()pb+PK`-`xb`r0kf(6TZ^@7VxPPkAUM_L_F zBp{i{;r<-FON>Xt7sRtJ<$-xKUGZHd&MCl%32jt&JfdReg7_x6O1mFE#caqV8)+;j zJa}3O{GqiuL&+7MVG<{L*5YiY$Sx`!uLVjF$94@_I__1sCbir!zFS|mHImxiR3j3& z5$<)z*{m~O`}Um(sk)aUD+|~iOBT27`Qn2VUt%RIPj1^qB%S;GCcUo^wfZ-s0ejIW zB{bZ^nb{Nd3j35A$wrES8L41R-7BMR^3l9Z&^de3I6;#NRrF0e<_FcpK=q+^PmbW*RPkED`>B1R6tx&PVf;qtOcqxd7HtT^|0m9Sj5s8sHFpSH>qF8T0bws@tIOH47-IH43P0EZTu2Pd73KsO2kj+9zn`m^xEAs%h>|}jDlOD{vA%i% z(GZfzRS3PQArSV-mf>&Ll{db@%#M&lepn-9_Xth=@+r*X zrOw9wl;Oor25@%2JJcBz0%Z=gwEh^t@Uw9o%)z*?vLnpucXQ?+-R#Y{vda}GXZKdR3nmLWZk|Ci&vP=X|Hpl?ax2Y$1IAejU43qE?%(~s%rAC=~J z$Qh9=tvov-f3d@Hs^vqF5O)?J`cQ`BmzkH83UNqFD^B6~ z5s8OW78m(ZOWRt)S7A1G;&7w*TUTT(q<#Nf96q2ICsk?1M4b@#C zRZi`7On!6@;x5L6f6`g#1ZA1gR}cXqQkSCY_S_OA7YnMYd3{mbkUTtFE;F|QBXCa-t|2-*x@nPMZw7HdHCdx z0{E)p<`>(K)s-U&OsfJ~9Z>OHZomUrKv_47GdRPr|AzxookL_7cn^8P$=7ezG)|&A z4QHM0x^hcY$%hk?+ z(d5^SX=ryrTQw5sfWD4{3X_&Vy#j@`69UaBycr~fvT4>QH6};ZP%vuoATYKz=5o~q zMqiDFl35z~wqBmH(9Uw~2U;5WvPhQB?c1uzhp?iI!Z|R}d&}=Zgs@T{4-eg$tZ5dI zoe~)W_|FBdU@;Z+uwzj8TfwsfxP>mDnD6SK8r08Ey>k0r19QTmsf4>O97rzt8wmE{ z6RxSF(9?+&8ekq~%^C2&2Qa7u*eWLO4eqb)o`{;()UDebgc!v^Mcph0ZtM=dVKN|i z34GJj;Tl(2repO$v^Z$(kNai|os2H2?#YVXhQNraWogwPoNV2O2{ls}G!knP$5Zi} z243-S^z4H0vHZvhza!d;un+|E2V=m#Gop&XKe}VaX^=$|1D1?dFIVmP;&j_huD%dc zEI*DVTCVm7q}vRoyU}ka^@h=xY2ZdlneKM3Ny*&ln;>R${MV-E0#y&7X+_aH(erOa z&2E;bDKb7Yt@cu?YZGfB@+cx!>aOm(?dd6_*0UOvR$sf7341M}Is$xs=WXWfubv>Y z$NDO55Su)pU^~1JQZSiI{D37u3jmMoA>dFCsecYa&xMTjrbotDZ-R)i-i#$~SLJsi z?axWrII7=^tW(g{es%YcMClGW37wn0G9{H1ud2zLVCWb+v4^8m8PC%3X*5sAT7MW3 zrG>avt{fD1Y_a;Xx>Mb+Bn{mT-;Vq*QJ>P+oS&0L%)?99jUNG%$ZLFtp^sS3qM{B1+_8jxyZJii zjz*yme26jnu@!%MknqP4NC1S(J3ni=K&Y3We_Zs zXe!-;cdd2r8r))r=qw1X?B?i=&Cg!%yq7jHV;fr_8h!ucHfhXeGMC9wr(=irr2Olz zRdL>IG&D8Yi$7gGXH(Wm-s}*O5;@vU9I7nd*e_~Ug*`Z^=9D5VQ4OOO>{gz-#1Y#B z=m=s}FF2ff7_!7~?=GBYDUe&R+GgR8+J&>P5IxlX!drAAL_p&LmwOqi6r#N9RT8*} z#t8Hc;qh{XVuCHH0rg=|0rbDtA15dz2h5BJiU4(9HFauMf`H*YUW~bo7&~89(aNG# zI?!BIdjdtj=3sgX0akWp-^WLxmKRf!8<=Fcu@ymD{BNdajfIu6HB_)EGS)IRu3ds* zr)U@`&&V>7iccnA@*Kb|>e|o|rhLPD6EQC`)s%9qC069`p&*;x9Og{YjoomLBtPGJU((H$V$od`&`xB z<((@mmFp=QU8lP41pvWhBBl-__=n#6fXqfuNzFmUaK`E9;DdhFH}imB&WzWc6ECiz zz@h96czH`%7CbxuU6(#WXTR&#M%?%@dpMPPo}I3UBIlvG6H7Gs5M`V_FIXqeJ=gj-a_YM`ILur{+;bRU4vVvR97hF~mspK-ImEoP1q+Ew!eNFLv z2L~b7wf}yJR@th4Z;)a$Av#4Vh%wD@rn+d>jryXFV4=R&nK-k>fON3(InulM-oAd@*n?z8`*qh z-w5hCQ;0ESGiG!bEQmTWx`QQPoS;HML)LJe(e6COMf8oFTm?^am5@a`-E!dnjIJkE z2rAfsDJ>vgU}3=YWE(PvJdshN3ZWuJ0D1VA{^oh%hmvEb9D!gNNzghgEYv|@XvIL5 z2~#;9GTJ1CV`;qSA$UX>ruw&gz{UbF!t_B@niw?;p165qUv27Al;Bh?4{#EU8I`eA zN8jagD^6BO!`H0;t4`wd&`&apk&ooD;zwz^AF#jS2_Rm+yfqyPSh50U^0R#i)K zCbM@pJC;-=K@bE%5CnnH(5$z2Hf>LuB^}qQxAJ|RT|dMxA}I%RuOHfRfA@{#Mb&Qg zk9uZBJ4hdkP4#h#!RD>*Xb8VAa{H*;q0n6gW}h zg{Ld>KzR<8bYPO;%N)U4umLFE@_ULWK5cE7pf&%@3iz|dwkD^bcQF-zx&q5B}# zfJnZ#tfvr5DI6N3nE8I{KPMab{yr>Kj*`hU4HyJw5PDm993SR08%U0I2#iG!kRh71 zLvrfG%wPX%RM!v><4pRo>Iw(?&uck*f}`KcI)zc8Iz0i__L-?_Uz3n?XB*zM=xHhB}tv0}HgZLlRvSDZ?Q)`{fKmS^{nmF;lhM zVZ_DwHXtLyojbTd%1D815{;%9;t`3V+wN4K&fSbRANbD4AU6g>gEh!2(rFWpsV?BD zF3sy;=Q3=68ZbFH9C}-prn8+(aTMnyvPUU?1T%BGRO*dK3DlAjQigrrhhvl`As`>x zBlOBWEH)Og90|zF0*qpm?*41XVMR2|CxzmPiX=vCaFcl@C4j0tVy_&jg<0Dt=KS>jDGNY>N01{2Mr=f+?$=iLPQCJTDs>hM_emDH9A@$|Mv?)Ypm9C^ zhw18F@8Ql;!y}GR@gO$xakXIQdDv;yB^a1Fi{qL67j761A5 z@mho(N-jSx<;h##Zm$JRC2qUnk1+27v0eYWpl6O+R5>{>a6HU6WG518W>#f-iB$sP z{JryAPI~!szX~YFcYcyKcZ-grV<5;^(g{7k9U+)h8lu#5zxdwgH(r;5J^v_pe6jBYUnEb zFkPR5#F==q+^<4=KR56(5nqbQ61gSA!N)F|<;4AIf%MH%DaD3L*XmI4ka0BETPZi| zv72aJOP?GQZtOMRoB%67OTv-&pC&kxPBh4*=LkAx)AtT0o)k0tiOKUoYkv~bsC{R;z4Q@vb1;18Y3{gy*f8v1XePzEys?- zy=>PtaZ60bkqP-!kYRp+0I#*Ob#6RopJC|9l>vgvlulE>_PV_u=AX`QKgac%mhmd{4k*awr= z1m|nM?1?Y}+b}atE4KBo;j|xBXG}EosmS8)2T^etc{^r)c|@X z7A1y`u&;)Zm#0HzNfl3SKyH6<2SMZx^|WhDvTfvkHJJoOhhnh*d05f$6%S&gZDqXr zvre#N9+Ksv%dClimI~Ny@KV;qKMz|IuQszLUP)`>pEt86Ud27*&%9*}HF4|Mn-Tw9 zG9&(3&qQQ2GPos{#6N3GBH*H?t}G}wvbmK`FAktIxbe1m6Kk7SEBL?ovCe& zkKN1WCbg3OF3fECWZm(Y`|WG$m2-NFa|^?oHLSj_2TW?gm{#4DJ^pV^do8Otr zk(qSDk)7v-m9aRler;&C9B-np!1p@*U~sPvFWVe%6C;@NC0LwOf%?Fhqs_F zj=H-2fUYOT`(MDOuLfiWo;pTs3zbCGwQ}@+aF`Z(JL3ZrzTGesr;SCO>BV~W();)o zaPwL4iWLSPN^|kcdfrYymZ8|@sEDA-nGB!3*rNoU%l=o+ws9&#*C%GIrOpQ-=m7qO z2?Dc=31cSHZ3IpSiT8az$yTG_yrg=BQK`ySKFcDv6jOSdc$T>aDjXb`tAqyh76d6MX1khRC^zV@};ErX%9m)j%-}TT)d5yp}LK$PzSuF*X zzV2C`dd=;v=od}WLi4Z_R3XbQ>+u)sdX6Py;OMQ%_Vt%8heDbiH<$IC=MWZjLX5I)q?|(G~Jns$0Sv#2#rf82_Sz%_=RFII!w*7{n zS<#S653nuG_S4YG7{t7#ypynR>dtt*70;Ah2jpGTMKH?~>#)-oGio5bPFf=zN4F$G zMVqu2tj23QLn`DQX_gs27t6`FV+j-{q(_7#@8KlE$E$W$r)OnJOaEvk8~^6dDAH!U zs0am0vkCZR7skX3*0vt^uURuSfYvdy7(Ge>y;u%SV4;(o z6}F8vr+MYZon<>$(pSE-^>t*xmPCJd%u7&SojN{ua;m`r9e+?ovr)w-p4lZ0AMja@9N$4 z>f~e*Bk>XlnJ51LeARt8A)D!=dt+ejIt_k#ulmr`ACFd-kKTUqpn6b!`M=!%zy0Fz z+htXKwQ!SCT|RV0|NQog>I!~&_@(>p@=N#)zkTVy9XE@G`+d1uIwULDVcypiqRoB% z$M^|g&Zg&&;9}zf49C^J=~ODf9OQ;c}FQ3hgFM_u{-(Ph>qo_|Y;xOXr0d?j86uu$QYuFhU`{ zR$>_2pWaH>A<%$GNskkm)MM1FYE(|q(62A^!ZmHd2!y7Kuman-~c=8Itm?ae!R zZ*$tr=OH>>R?3l--hL4rIap_$*O&QC6wTJRF$4|+-^>UkK@BaP?$lEEV1q^+8E?ziT`cOOUpst43^3QlZ}7P{X7D(k0@_D4dx$-n{+dxbd-8p$q&Qau~b29swc~{oyKs zM0;QyAm!lxKEA)uY*;@@%oGW}nVF(MhO8iR-JbF&3a)98s@ByzgR|nI{!lNf)p6XP z+`3|AMO^OMR=BWS= z3yoJu$?1WA%NF6leAzn>Z#xrXoq<2&$ueq{ayh{on{a?6Sb!s!*LJdwdSa~RXHa9e zEgV(cXTf+!Z9RQ&?F*&|lc4f|>zdOkck?K$_CNuZ+mm(EXEp>)vwvR$k$8;qkd%~W zNwjoS)!W_^D|jF-f%;fIu6`P(Mfl?urH^a+3D?4bcNuf=RJq|V{IEJms_j%Pfezq% zxVaKBzUe1>*vg|y?|amGA(u)><3N6F@Qgw-)))i!VXVBFC0cu}_nEqZq>(w;N_bE& zM20=EEgjgKe$3n?x(nBOS@pzVxVe>1=Y|ucAAI=B6H+2W#4LaC*Vit01RB!2&HT`~ zwm2smaeoyrcc9ch_yye|qV*b0gEA{mTGp!$WD(2C8be&i=~ZjbDa#Ca27;$3G2E9Y ztBYj_kZ%dbRC1ssOA`QYyoKqWIJK^wcBFr|OGLZ5mw@ksAL`BId`?%WQKT#C04d=R zW|lcIiF;0w7}u-Hzg7X!2C@h)CKfBmljwfASjyYx_*P||2ab%}fe-Yu>3n&u)R;Ga z=*zWI2b8_efw}6=`6ZA)<_eDa zxN6^%dyqHeViCS7nsA}KECQ|Vql{^(eS1ij!>k9-?Mk2G-9}tg_gu4Y7xm>g)2{Y0 zA`g0N=OHu!KUT>tlMKc0|Cxnd4=RQqn#RSb0PnRws_>=A74s~3DNGeTUV!IXs};1W zW8oq$%XrWQ>b;4^`*)%bab7e$UUETvnAM>rbN{|5NmWe86M8 zI`ZTA;kv~Ag`kG(geEQOPOaiFN zYfMbc3vpuXea&$80Y8stXXopySF_fMwtgvA7PeY7?6d^ZuSa5_3>ha3T16WThIGh$ z-o|Qq>at^~kvdO6I58|zhwyQVZ0+^oA>CCh7Lw&oH9v0JZjI{iwnIb3AJ?U#u}8IN za+?&XhRJ4O^l`e$)c^q|#|EjJhbk$X(5VMB6CZm+s58AhB+-#4S0g(vAAcMz&+#Pn z=3R&iL2(7c6JTv((K~x$3C!(AK5=uDMVMHe-1;#Kuiizto-lc=o3&E>k1;KMuN9F_ z_Q6Is&aA60E~PGD5=EaqX|#|SIL-eK|G_X1K3ykY9VvdMCbq*e@`05cnRz7#2NOF2 z+B}-Wdw{)m$Nv$)d``w;fPAhUgWyQZLa{5i3`TU5KXo65Ong5Ac;xqu;NxYtk#k#u zjy&B9PntF0zuMG0gG|{809>R8YRM*p#bq68r0adh zT3cE6K3uNRCJG{RVJ1n$8t{TVS;adAkmtGgrlNy-^pL3_zd2p-M;XCX3lW+EX9`4w zI`uYlIfZP6VN60|9`R&}R*f1xVe*B~6M7j>4@ECE$$*Kd~Hdb*r}tvh`H zD(Sd^Em=2I#ESjO>S3ByT?wRo+YsAIQpA2NI|}S6*%UtYYK~bYbQ7yA&{VF?xW<(i zuih6&zrv%u_w`jrYn1IR?%a<{^dS1h>8Kf~y?cE|IwcC%MA!4atXFb3yonz?hOj%zT*LKhx8A6?0NhzRIovc3cWKL~>z&;dKE` zX0CUc28&Was$>%_0T}2tdjKwvFLy(h8?jqD_B1BMTA4fiW)rxcBL@SoEb2?(8t4d5 z`M+SCwdCz$rkLb>g})#!0Hx`Oob>8Te^Dgv#nO9qy5Fhs6Ygz-Ncz6Zdw~#D!pS(Q zRG6VV)W7K(u~U4+vzd)r}FtH<;I zHj%KXPierd_V>a0y^1BxvN~^9CvDwHkN5>7J_hN7>q9n&5=yG-q==iSth=Au`UCmw zx!R|z#T>5(o7F|PxT^f3^9i5Pb#C4|jOK2W_Gqn^8B|)Q8g2mA>hR}uVdED9t3MTo zTz8EtY)!Qoh{q=*q3t-YHxyEKPQ9`Zx(=WiPA_P9c5CT$^EfL7i=nbZ`7pkAf8%=C4WI4;5PjN5k zs8+_;0$tD-ji4mO0DrOLdF}R*87y#G$h2^^XV;+a&nmx=)rE@<(F_$eec{*Ng*x*L zWD!l;Zh7CsfqWVpKEyC#;AadoiZ5jBpfMJZZuetz9$(a8G={L1l-6DWl9RP< zQ-7!>J}>#(4PMeDlubfy*|o$5)cei`-`KSEvD2DPB?Sl8rg?W=;_FXdMpcUaT@9)r z_c1Aeq*kI`w?+W6w1M#&!zLYRy{1R$*%)-9MT}B1HUJ;=g`y%6LB@zIk(JTdM2Rx+ z%F<7?S2fV)_9z}1*n2tGg%2W(tTSH6^6nY|{31`Xcw9G-%~$cHYZkRmqz-)tYr>-( zz0@PKa3C2zbMzcAdQS;*qvuQ~()vLoLV=4U(DL>dc?5kzkLhxk)nvyq+>!H)3_@A< zarH4ntMAWeX$3&sqz)&T*6?Z;+Kd}Xb8_Oe8FwhfM@o*2$&m`(NtScA%-R9I_@_vW zU|!KuVC}+;!UbyePY-foyHL^Jd1fF7f_Qfu{qMXBJ*hj&i(X6B z_?Jgu6p)Lh2D6pJ@skD)wQ8cs$`BZLfJfYnq?@6U8X?~dhbwI*no{B>G6-Oloz+vb z&&*1PddoH%_gFfw^C4Kr6o$Md#w_nGAUYif-b|{*;C0}<5aZWb?t`M`FIoim z$0Ce#pCB66W~nc)>&q)Kvx}Z^hdo49dAWKCTkoMy{lC>$w<1eQ2}4F1Ci&i0>1I=I zv`O^;OsZ`F=6!uN2xRl=&fBm)GJJn?bKa#Gy@txSx^Khd2>)qFk=Z&LalkMYUs#OO;q&a@kY)btmi;2I=gm}C9bBj4E{jnV@y zRLHGYJ@6iH1}_=(c=zqS4xi~f*iKM`HR;a?0MNhZiDcM`1K5?+xi2642xY6@o2}c0 zV>4g}x98XEX|j!pUZcZS{J8z-adxvG3h8`e@I$&x(^Wmr)C9X>w2UYdomVb%Sy(#i zRbLGl(o~w*_@A~rO3Dn1Nz?aWG`vwkC5HL0L*C5d{!*6Oc8wjcJOR2J@%)s#3OeI^Aj?%8Wb&HnyJLpP^=q(RKi_SsNqqrWT9J`*_!|0*Cym$J#ZKqdm zd&i%XFoJZQ;8(*HDioEU!6D(1>pTVYG9U?1Ti^>_c=`+ruzH<%SK#& z)XuQ;<*Ammpi3?m)Bt(q8BgZL%3l}O{t_PHHy@h$#dP6)YBc!g%j4A!+pN(cI9^cg z?{o6^v*{&@&>1|j40FHLbU#ji99Av1hc7}ituYCV)~6djHlu=-wUJSdoXJI$;l8J2 zcZOVY6wlSkf(^txp!y{nJ%k5^49u!F2NS~$kkm&qpjG%N30lx5cLY5FW8wvqBm+yi zWPi-$ond#swgsEUt+4IpwmEb2-kSxtt|5#>RpAGlbTXurGRaW{waF1;fLY;^_;p*e zhlO`Sw-QXu;9bH?A*|A?xglKbOti1U^!90J1~^l2dg0@#5GOUf02~yiTlyXm{sY&> zm806nX$vkSq1)G*C(9M4!42Bt0lv&hmz1q@<;UDl zN<|%5a9gu{rvmusMfu-crQ_!=6nJd{9cQCAb*|q`t^04K?suisneGF> z2er;iCt%?_(Cw0O@*?z|j8yNUOfVI^qz|d$^}7&|b|LKYJ=z5~;dn)L4D=AVF;h7> zgpx4jd*h`mB6D)MP!Q#cxk!?VQob&UL^F-4Nf@R8Z`cDOUDDjbzHIJI`fe*l=HB}^ z)09$$^z*1nMYUJm^LPVcDKOUC&#x$Pi29prN>A(V2D%awp;sCS3*hHfoBRMitKyWn zRjc4S92F(;yUJB5zuN=}qGS&~YWKQ!46mXeZ3gIR2o4KT+@FmoK(|D+m4||o>C?nE z?Ct^EUJeqA9=5i5tv;kSQS;@?xC1(vg&$-ap$V`@MD#QQ$v|PWA-HAcEmnDpec8$= zQ7w&Q;}KYi1aC2baowk&#v@T8y=958BnN!cnq#ngC%%1w%lz-}RAn(gCXCQ7Pu{9`;?gGcJPPD@WtCfoK47x?ZGlB?NvEiJyZt=Qjz z7kCxL0O}(ur(LR)6e>uqL~&7}zEBz9&7x2&GxV+JsnsM!zRdI`_yui1515YDu40>} zCh+6&>IZTJ*EA0|a$%)Zb=w6+CkFs<_V<1E*^RMI={TX3fDORQV?}QVOiLpVBd5Cp z4v#S{up{{pwZ)U0n!aCJJ}tK1S|PVSNGI#GyUQ!~*bJyU!XE@DCCCWex-UD`a(V`L zi}kE-AP=Q}++BIY2i1N9mEUoQZDID<*2h_I;t_46+L+1kqy-N!ME^{lKtUc-w^xxp z9t4JeovvEbz-))79i=*i$aL|%wWRI$_3?VJ<-%1;CkmX!2OG8_#k&tt9fppH z)X=*%)o!^hr^K%3|9UZP=lC{<+q&hRz2m?p3H0iZ75?1&1%kL#2UYCT6}f*y0br4C z&4ew+vPYl{csE$0HfjdJ2O;)#on_pCTmbmi1uk_;yFwHeiYvr)t7CGM>T zfSy434l2(8UBX_pDPphS8vU~IXl$2Mz1SPqH{+9v=p0X0ZT)RM1yPyDyby&t@I|th zW5c&!?CtCC6q=%t{1SI|AMiqSl<5WDCrC`TfXmOw zWc*4x7^BE=qjKBd!2=A;cASDdWYp{q)Ye8Rqr^FzIoJ=V!*l3|d-Co2NU zpbM_E0mGzare9*F_*iXXL}-SF`Tn8}HR?rQ=;f2iY~y0=$wqy7TS!ebuqbYcBseJG z#ShK$hw0@cKcdKODVVr&nBWk2hx%*J%)rO$SO_sw- ztrqf}E4Zm;H|dsK@)JIT5@`F$;KMfa<;|E>C3Z?V%FBxtvb%6RqduJO4g}mfmp=1 zhU3yXH;2ZdEwM|GW#P!9`^tDp62Rwc@YdVH?vj~MwH%P+u}!YI+$fno7Uf~HSRr&TWOZH%iD>Q6jYo`>WRu!I!QE+WSc32*A8j=8RT)ZfP5>i3fn@nCqTN> zjg@`(e-w)vmT`4+WuNr0I84}ifBEoqb@m#UUExxgqF}dsT#@%+Z1;^{b|acnUD^73 zT6x7u49#JQx_OjsU-IG`Zj8$mTSqn4jiMrvu~Px?oeFEgv($6I>IsGfryAH3eGsM3 z^73b~#!EYYzToto-Z*i#8odWVh9`3_u6V>17NPOA$XPSw&!Dn{&_?ZA9{wVt2^h!PdaLpsv|<1+ z3ke${$5)ol#kW%v9N9wknXHc9=6c73mr!-|U8R-6kCsogvfJ zZS+-kq?CL8NaNKmC3urAlRlPO4#5bQq=C?WTu`Msm0a)|P810i^y@{YCU`_B*|29j zN!`8G@v+ZE>NHF>#axC<-7cbL_nlNczf>uljNU^w%u*Nkd%D=orMqsLU|_yd)%fs| zHHguJjon-Ccn1(K6%WoxKIUF-CZtFV8e@jNC4*=HIIWq9(&eV$6bdODT^!T^0$Tf= zLKSF*8A4LsaOT&yJnhEi1mlJba8Rps*p0Q-6)$)GO&roq5a3N^JP!J{7?D`bW*6s8 z-I@KaDSE{G&|H1{N)f^CE9MV1yTjG` z6&i01s!?)3qu{F^YI>D|wrSilc?%{yg-yDe#2vkQOx3{9%74c$FdkaaE?g1MJD9KW zZ$SrfCu+R8)c$B9B)1ww=Io;UlB0btM3D(DBV6WFAU_i4K|b86BXZlH5|oXGPs@2C zVGtc$t?HKm{Bt%Y9i#{GMrJ>INBu!x`g@d%`93dvt`Xu5oUO@arwcATJ29NLnhaQF z-CfTHaAfRSsJXs3oG#@QB&Y~zP1`mL@fOL<4n*XYBqjyrPM(&hn)vx^mb1mhoJEuu zE{V<4Nz=CFmr&t${*NKIkg!Ko2l#d1rBseSO`Gc_=YiB@Ho(`PpB6Y{cTJ5rT!Wpl z$Bdsx`K~GNH#3fIzuQ`Ji$DQ(;#o}Ylp*$%T6DdBYq=priT}ieL7AMJBjEO1f4ua)SWw> z)JC_4W8X}r`06E>k3kVyr1^sb?&OUECIjV+B0lJNxbWx_>5;yM;53^4q8cl`c@RY& zm(xuzl}bRMK={h~Jdr#^`f=s9d7wwdF1V1FL^(Lv3o*%>8JRpTd7*(&ys~_g@z2CW zVqtJP)?Q8&lU?H?*G_1yvGM*{%audnO5Y7gA0TOfjy1w16#I;&v&K;MIJ7Yh{&3aRV3b)Eh2T*)FlnpH~;vY`Sz5s35SE>m8nYS57DaJUj?h zBHwN`ts=QcaMqSa!%wQ=_Ri_35a$1Tad!Tv^Mf~Uzkv8*4vByKe<~K`In^4v&-}8a_$E6_6rP&=?9Zl zLG)uKL_e#92n$I6Y*iu@MXi6aYGpK5=*1Dq&&J3M%BvydfU=p0fRg!8!!$5T=O+S6 zXGxL5fD~r!8uO_Qb0=b|L%Yh{PkxzG#9)Y%-7HUbm(vg4-E60-0T0jxeA0sWl9p1f z*_?O#K3fVXKCV;8A-C_5A|{XN4ms)e9s01>LtTnRb$4^AqfnJPz4O@|*X%RVCi9C%Cxmp zHEbo&tUo+?RuY^=~7I{?;;Rf8SwE^MbFn!o*e0a=ikB?(_;D zg0q?2?S`~gB#_wXQ3QaYdf=_f+qX+RIu{moY*2`WqPSd#Zi!t$Vw{B0%UwEh2mzON z5xAkxxvI~-PC@ewMXw+TupzC(rC=hk#oRd<9I`5rCA~tOMm!>cA0_2uFG4DV6I%f6;Ci$yx-qW=Y22*qGg}tRV5*<4GgPS< zng^8y{!k>e2*&7VTupBK);ys&ge$dp&jvl=#t{2|XJDA`4GGH!@G8h?R^{5JWWFE7 zc{DoPWRKws*qdxJdT&WC@~l0>hd~iHd}6R6;=A^u6z>tksQi7C&pXrG?og9J51%0= zXMoKqAT7&%L#Jz?ygPot%LkX3w>}j!tKTUlGB(?AS=!`$+O6xalXhVz z*q6m-)1RhoSGUEcT%0x~Vt>C{y}vk*ZHdzRsxWQoX0y;NmV`F&KYRKFWe&pBg)jb> zptLaY4)~{>G_h|+NRn&^@{b)=gQ;^M|In}r`v_Rk=0N==H921){<@PcY^LWA$fDta zczjw;1&);Hk|dv%C$GtqD)?f&Q|uH!iC_7>`rFd`^H*`rgjeW{EL|)taZ6t}vx=74 zkJB^IRzs$BI_)23^`0-A^^2As^E}LppGEv1iNPHDKC_qaBj2}+$1mYQ)S)O3$@8qo z>nLqh7(3w^d}Ta_Z^etHw2WNu>GcM`p*CtI@6JrDL?|Y!{A_yp(j%^(xQio$)eg^$ z|5jfa)DX4Y5(ZNc=0OWj^(Yk2zfqCM$edC7Pv=&{AE+pAC`T=m(^CrPJkxP79Bv<0 z`}_40AMVFGe2=vuP~I&+3+$JiLHh2I4)^^U{B*H^+yzhyi^833h%0W}3tsg@S0N}A zcJ~1t6r2i3UDk7>yHckj<2|@|AWMU>Kwh23uSOp5aUgSWn}V9o=YjiZq49@rog@yI zyH=v|9QKnm*ww^KEwG;ENJH7bjz!!8j?a^9*skbSp#4L`0_Lk8#BcFZ>bbv?$Hd|{ zekm1i_O(w0?EvItV+kO1x01n@x5_PW@v8`onE)T`&U8mhd=rpiRS@T-!oP#*-f2Oi zPU_BXCJbB z{3TIN=jr*mQ~xnk=fog@IX77w8^^LMV7vhGu3UC*=5UXg>ZIo0+WC!UvQf|JV0e^j z&zHNsUTO5bNQ*Fe_shIuU-K9;L#6) zH#g%%c5&3r98Kz=A?yPFVKU=j2#b>DVZc$D(6N%wVvMr`rO5$h6hw+ASAzJ1E8PI1 zV@B{6G~vCZvJIf&i?0An9x*onLJzEN3nd-c&A@cKi`7(y3!qCvI#m}Lq688o-EBt) zF!(8X#EL%P&Ba(4Mdoyco3UnqW-+FRHkvH~+6;1_8jvtI>S!oVUsz+_AO+_ceJ#+c z0PlPX8&wkNqQ(2%@j%=!D~Fa7+UsUEUEG)j7|v;UmOmC!0Uq4T?6Rk90ELqCsdt|p zgBF50Z&$Or>lBr`o;Ve!jH99W5?eNoepg_|_?G8&Ep&j&fS|2dT&W==5yJ$`S!a-?TDv3D9MIxgG|} zerKbh1_!yjM734I`Oa`<=eAy$P-is2RNu5gQmyfWS5_kd^`$9L3Wu!tj1|v|$-{tD z^`m#Iu#KXf4v)B;58%~G!~=?oT`a`yfaL+ikD|y`%?uCmrFRE^g1dQt!WJEgb7-n} zZgeEA+=--Xz~+8|J=y3URQCYSdwYdf4Dl6RxITmxFV5Nf`_(sKA+JcL&^60?`X2hE z3#zJHRUd0GfK(7~10w1|-RkH{z?iQt0DatXA=Hv6GWsW@eEQ%;AGvc4Nj)W_*$G6xc}i^_Z64t^?NsvStm~fO)s%l%-CGHtv7{$n*JPL2 zLPb!Bzh$V|i$kZ%x&@!Z;b;>kAD1MpJOpCd@#r&)e@4`W@n}ix4|qTXyJq>piM4rR znseA5HzyY@8FeA852g`Q?5v&T0^g%V(OH+xI&7;D$wtD;vEA`>YquD_l^-Ta+>{6{ zBx|l7;@kba1f1V6#6T=^D~hs0>m}5atc+$fvHq=3r|W9k))m-j;RzVI8xp^gvG(i; z@+Ae!Csewjxp2^0xUqE~4T_b&W9V*d-9L#2Ats=7AR#jgKW0a#N6c~Iog91fPsAH3 z`^oSCY?+BIh61tflZ(9I+Af~w~$F~ye(HgCvLyv&w8IlB{~MV$;({BQoFs`McX>m&^1_w!oc{@ zaOUC|i_ey8ysD8GYi=f*u41!RHN^+}f0Qa$FG^!DvXWp8X?i8N@DGLJg9?r#zearq zKNV7|)_Y)oaL7C*C$LGjUrY79nkb5WGo8Kf&ZjeXf`!?UMNgf+u!h?u<2c#lsG>ua zc(qQ3qEqBbOU+C&C9TuCJwa2By?tn-PJ5;JC@h(9sqF^hR&DkCSwzCW>j;&PR`V;q z<$GOUk|a}TlW2iO_l?2MCf*{`~kzZuE4%)9D`l&!l1ONEf7WoG`qW zs^RmE$QiV{*z=Jaz5VJVzX&nJU(gqmo!Y!6o#4)}lj49I=LZyE7wh$k)aEa7^G;Yq zhntT{W0DHYL!QN?KrisY=*gBkP8KjG$T!2oU|7ph{VZ#d9aWQUfY5MFH>ph`7f&TX z$*p93HgWGc+TI&aE=l^BP$q;?0(8s>TpI~J5PNXiybGZhuVHn7N?5`5fq-G>h29Mv; zxTb&jgA$HZC5t|qjTtT=9h>ZVg~1QXWO;eZ9hQikvmv=+$pywA&IY#dp{yFWkUaVX z|Mwz#Ld?F>ECjKW&cHaivdP9jLb6b3{amgjjtBu^skWKgy9Gwv_fC>w_nb3&u$Pe$ zwXT_6FemO<$x92t9-C{T0~z^x9(7#rR1Y8A+TFV1J4^DlzOg}8Tz*dGO}kTtIq=i7 z^u^3I{KHiiM)2Z+R!>lR)jAZ>b@2`Y z34nJhxbDYz4e$#-5%zg_+=i`~#ZB4M)$-oD^8HsIPn$*UO&rN-;4aJ>Lt%#DkbDex z3~i0q5@+s=2A32|w{h`EohZUf2>EgZ-{G^T2o|mYM3)Re?}plKT2vUc6DE2(?{{7= zlX4@m=Xi;Mxsm9Pn2$()n5~i^tLXtV(d0dBA1zTG%X5+!!?W_vosQ!$s|1{eFY|y= zt3NXGaD#9l2f_`RBfU-ljbY59lp+Ge(pi?$50^$&@U(lS*JwqtkXZ8Pt+6)uw9`? z@@pB}C#rZi@72sP=lDTOWxp6Lz3-mu@*ZlAj$P;raL7H-X2KVoy?fgte0lt?j`bux>~a<3HU8$lk0xBJD z?zf*(i*lFgnn>SIXZ}-20=f4`@jx-Uzq!KQ<)>9Q3Hyi4#^)c}XTj*rhFXjSIpIXY z@TwPXaMC)kcRmFj28`KQJxL0^I#UydO(LR(EQ)~i zpy&Q6cS$y~DdlQYatnYiOdQ>r?jCfq?@exwX&Ez+bUCFe6;4~yW0HF|4<~Lu+?SRb zL(LT-#Pe62+L6Qd&Uq^j?iRu2IX7(j6cF7_vpfB?a4@US&evD3*i{67Z|1eUS3^Nm zFEYK4Aqa<3j_yv8(z$qIioD}hJ6Y80N*qQodKa{e07VTSL0>cghNK|&mUx-Oamjh| zgVCVG9s(ibMVI;}Gu_m#OY;}{7qlFSKpey%Iypk>=#e5d2yFyzIm{s>`dF96fZ{Nd zYw0Mk`sj8Rlt=Dol9alSz1AFc|PTbW7E_uKxKhk<@WrOxmoxD^qbB(^gv9j}- zj<3O<#TT%BW8OYY+9ng289pp)7xPMXN{+Ui5VB*$3j(7DbWb=`P;YL2Bj*VW$og;f zRoZdy4ScP`vd94530n&z*+`CD(?`f+9kZDrNJg0Cm!0z+iYLPu(%}wXu%ty!dV=eMlM~C=S7enW#jTz6BXFiLlPAC)cU5;12MlUPgC zkv#(Y3Rg7!4vuc|udk>U<>vguAM!T7gd5SHvejXZi4+SS4@_K5ASo+21ElX*B_``m zTZ9sB#DA-H8GW}bvLvrxGD5)bN>wQ^-=j!TW#F`@wFl5{|2!*2KXz!Nt)2UOqV zH3I)}Ll-d_Y-ge_ZG7~(ZhhsX5n8<(^eP6W>9m>8>!`)y8zJv8C$2bDU}hD-!w%dm z{O&|8(rHBGj-Beu2dR@CMZ}pLuiBY@6Q{ozD&RfP0Ph{Da{CC;b6cjTRM%mPA)M3o z`3f^1B&)!xJdo8XMvTAbEVJjZ>e0o>yc&?_MhJD zxsUx&*m#{}&zeBRcb^|2MPWr%oy_e2^qREOX{G6XZ`J z^4s>EIGnqj#-UeRz0ZXHdp^TTYidX`?O>qpfxWAzyK{n(2* zG0K<4d2g{vUk?fNX8=F`X&ny55Ov*DG#$Q80v+-Gv0fzJO@#=$q(_jF_()P#DydG1 zlGw}hrddLbAU@IgWi;X_BiS%c3sPcpl=xIw!YJ+56KJ?c&|x1b+N-0m0y_-tBPY=s zOP^tg6yDQ;G>F1y)fA`zU49KpB8^t!#0u)yt8}tz#9iJ>fBvpsoY(DbV%~(Vy|vY? zm*?|KG@ZGhsiK!HXsYH;G7q#BNxYvcx`p27PJ;eZ1Q@+GL=c+d35sR?hCv3Qj7zj{n4vU=*ZyBt*G{nySjfvw0b9l^C)&oq_Gup z$WME22aaCog|gsdsX`nnOXaz^RZMynC>TNrFb7HFp@<))#H#jnl%tclP!2y7)>&x`(JuqIvrXHI zKQH6^q$hQ8w$APw{mVsOtGL8B-(mte^N|=atMrSV%#qX5ddy4s)YDXsp(q1mdw3$e zfdf(y=QGkHWp8gXZ?cC@*irn*uxF^CEP)P%$C!bL<+q`wt)a^ zMq(ELcm%J%*!g0Azk}$V%Zsxkd{~%d%L^$er#sb=JAL8PildkDLXsbpo=@B984FZA zz`3*E61_MmPLW#-RAnzMIrL5D^{hFYE@Dmo@T!Kt-N`c4T%S7jnqq7}uIj(!bgmIge-popmvldyKC?ksvF z2fV+3++5P+bA1Tk>HUIu6qB4wQ3G;kL5cv^0UVXp%Shr86@RWpsJRwp|g22!k9&V2ueANH@@|5e|8cW`!g&_O~$l;oqA zEmk+TKiJr4F*uaBfT+QNCI+~N<@faUUekHRg}A3c&x}6>$M04$Ha_h*t~o@HfBx#l zBrv4VOB2UA(c)VK9UJX1u}r15fbG#H*dCeK9`#^*RKoUXB(_tB?9U*pL{JSmSzAZG zf)B zfpM<_`2k_XJ0~;X=sk5xyHk|_Qb4W0Xrccq6PI1bT-d&ONL=kdgk04^Fx`nz0v1ui z#Zya5oJUIF2wQHHp#fF5FDy6>$T&m}Z$<<7b~n1t21Gzn`+3IC!(#Q~?zFgi@eoc6 zxeK5*F`8rV zkXvyQ$*!6%uYlOoJ0lPoHp4j){=yxW3`2Lgsd@w}$0D=I2l+k}EoqoTAQ*duPMYbU z9yOs1at4A&By`!TW$A*6T6uBS2d1s(7qfa2NIP>h)XJ?lO;q=*x#;eCd${kj>80Jb z4}Sq>%f;0M%>6rr&~`NfY_seG+bnMecKYGuGf}GAADlE}n~Llb6>xDVpSJBZJzRYa z-<(2#KTBuxq*n2ap4Bs<<>xR@23P|}@HP;CoBkI+O8h30j6^*v?jXOl-p&*GFcIZk z|ERbAps1cM&QGVo6f|s#aNFZiw}~-=Nb%79aQ|zZRNbk*->F)-HY2f6ZaV`fBWw1ei-bXSThFA7nomX+QB{3gOVu&>l{&?qFF;$8fD_}nsw8C3)X&j z80#>AO8EPz+up9c>JD#4kNh2tGTz|%3PMoN$<}#>vCP{`ZQ4w~evfrSl)EGU>mTE<2cZJD!MJ~uruwS- zKFaIqLkH+h6T^obxerHgn)~;Nq$`Q^>f<) z7ZvM#TA@pka8{vHU$;-6`NYCiNhD@f>9ej1XNjyLeALy{G09gGN2St|^r>bQU2JG%9B?KW--WcuUu ztVSsUKJxkZ- zPUQr=Yq;bwxXxVtF~DQm$dF|fX#Ul_`9Q4v=w9?Ec586;@!sRF_Fd^?o)OODhrP1q zy+Nlszbo|Yvt}Z2ugW{!VRq_MoOaY1hKIwXramj9(Jx)JD^k`XN#JnZpHOubX$1${ z#lb~B*rb&YzVNgeiD+#4x@|yE)EeF3{}7#1^kXKKRvlrddAZZnzvFXjA6+zywa%>l z4SXs=@MDCmgq)3R5=2z;%Bg2gkl(xmE2e;2hZ%u-7oDRReH+3g1$9z;sT-i3+zb*v z3{z-@FU9QM+S7`2THP*#ILdpKY<4J>J2Q7kFAmM1d*XTn3H_2QPG?{!8$Tg< zvuK}4x}ip9_bI*;7}O3YZryRxc7f45xTya6YFH+l>`bJuLOu$ zg9qraDLmXpI=rlp+qyfQBr66#idhNd2unoEF#J6EOnu&H3ZDB7`TNz0Q{4*HhNmEC zCrzzKl2du|6mgns(ButXBSluiBxT?Afr)Y40$KdFBP=S0b4%$B3CvhY-UA%2hQ6>zr z)KibOI&?A9>D*b~gy9pQ1Nwn$^x*9m%hj^xyO$`c4oX;%pany~r|ZzBiyDj3(9~?` z<_FCKF?n6Zqd`9!)G^DZDWsq`Q|&Ut%n;?;hWhijdi{WR=fUSpfa-; zBdhx(z=2-3{WRaaH$Fmt)?P}%_j@O!JP)Sm*x#S8Ai4T!JP4cP&7iH0eywL|OnyJF z@+HG4YdG7odbop$ zx&jaIomjw%#iKXx#7DgPs2(NBZ6rs>O-HgscKu+njo3eQH`_u>hZH%o>t|Fl4|v@T$s z57WCa0L}+x>}Yryc2@jx&1$L_g3{BCO}eqYSc3W%T&75^%G5HcEU{o(Susma9ik6X zLU128Fo^~g)^_p8ZxX?;{a^}+$vRp6&%`AB$A@{U;u_V9If}5TT7C=Pvd*vjv2jb1 z5PA%;G_zj)u?XwDqg4fRZg8U0QNlZxSxtRGgv~b(-eoZ0sf_Djt4|n36AHeaM0nW< zvn5%QMw@o`iKu-boE;9_|8g4l3Wbzf`}=OMsn#pHXM?MPcs1hx%S<8;C*7+xNFHLZ zcsDE^{dDubj#u7r0Et{ps2*QIuB?kPVTucSq#GG+?*W4%- z7QkEZc9ZYbf+(}ixxEyHsM+ccS)!CXF?z_tNk?8mdy-WO0~FuytQ9kM#$pKi!l4eM z>^T;&;wQl7&vsQg?bb;x=Lpdvs7^wD3GxxsAl{+^VkH)nOwyT(e#^r7@9uZlt#-*X zfpn7js_wvWK${t|Leo`8HB@X)maDdA>!&&1?Xpj|jC_fem0A&g`{1)uX*iUj zAc;jN*izjLC{KIlMNYvOon4djgh8G}?J!O&c?Z^G(FA;`vJrgy6a*5D-cGYyJ4De% z3T{0jvqDKfr_(7qO=XxAbzkyYCnwDP$>e{(d9eF0@9w{u?*8Q+c;o(W`i;JBZ{PnP z`^|P)Kc=Ihca+-fjNF$u%#h3e39P)ek#{s=Wqw?>@7=0uR~ILzVteA-Eq33gA@DUX z{QAPFv%_0Gi=cwGCtYi*KUP`=po|*ZF$G+8plc-Ed_7xVVBmycLvm{;Z1sl5;kD3k zH$Q)NN%w|)N&kxP_v8aRB{WO*cL>p-5fuWdPqqRfRrJDRI%r69Wg+{-W<#hVU0^+~e~Pbm9U1Glxw zh2n2WUmX2fvh)=+KI+J|b2BW}IB6Xz$`}WhTW70Q{k6aEbn@lOZ(87TcU0HQD&*Q+ zPv6(ov^u${yG}O^^L+Gcc3qo{U@wRXv_C6dme9bGKOXAr(O{~fs`-fzH4 zR5d1j`m@)Lae1m{y%rU{YHiJ{*IH#R9_2u!P1YOYJ7)QHT3YWhknX5d-+#6R|mw+Z_EXk3N*+ z7N=-PN{5)PLP%qVk=U;t@GLxpotD*Ox+LlF)`fx%1#LMI=~8tr#EpAdPZuLYL=Rtv z6t4g*v%PT}4_xy#I13zItih9Q>NI)0lO_Mr>;mnkH*flQEr{$up=Ct-;?QzzTFT^v zx=O;`(zM3(DAOVuZZ{=C^7;brQ`~R$a*k>NUaG*=f&ZW#I0wiS)}sijHQYjKXn1>D zxIWMsax7P*AqNi#H%R--nET^w*NJ>euayW}w+FV}8gGTSc>o+Fjc$tbTA3_}ULRxd zif`L}7{kK8r+1II1pU)Q-zyH&U-ze$s^qdiyZ26yCEP|{)~A==W-15XvT7$gP`JaJ zq@d|Th2pN1d$2uOT`avXr7#(bEOYcPig`RV;2TdZtMp@VMMKEy48={j7r`D6tL8Dh zP^_BWT}ehr@9dEmSjmTNZ-wd*o;2eWJRj`3q=E9-g4EJb_8!7 z6(ZA;A;onRZ8-9YWuf+$dF|Lkcz?WQJSd)`oDX~Hk$it_)j!hp>0hR{Ys-iW;dAJ# zd>N{IX;)ENi+O8I7o}N1k94y8#Gs7w5yHKgPqY5DZRSs=iy3)zeR_*mDDvGD>r1GL z0rRzDf21-meYobKs)7m}l~WEAD9mBdBVRTMfS(r<_-}^T8nXnc}*aWgLa)wc84)_k*l19yg>KVg4o02oL$06 zp$sGyuL+!@On-G+i!Grtgn9=xwkzG;FZdM{Hu$O7(q{&!KUP1rtII3im;@o+CUg)L zn~78L-ItweIX$Z}rDyH5oOZkVq}d`Q&7}Hop!&OfM^4(s)hJr&srR|8%B^^~;gHYN z@{feRY2bzK9tGWin>eV9Z^LA38ep02b^-@&=NtgB>%r-E5~p2C8IK=SF&qC|ebwLe zeSKv%d>Rgm{q2*gHY`-fsv$6ZO=m0uEW+)f7l^8v0}2} z?o`n*Blw%b59HPNd_;mo`5vv3rV=z<=01AX|AYMOc*RJHAm8n>^NX zBF1R&o*Yn3IK|^ZT3cvY=6;ygH;*46E{wYP*0xe^Ej{6;~NgozG1h(A4E*aS|t*Z_aHVTDPUZI4Vp@E=WJm%n-t}~IdHRl4A z%T^U@W)Z;!3KN@Og&^I&p3mtj#CvAz3zmHQ8S{8nSFE0U?C|MIRjfD!(I0$dAO)KW z;`N|iAzY}GD)_Zk5gJv&XD6wl7710sZ5zG&kwGle}V}fSj`c3I5a`#E+C<*34zP?;+%YX`^7H}c;2~+*M~_BsV%tQgLNh$ zGrUev1}&T)b%*|8y4b0HP0{cj`5Dd_>&>tFAp3T${}OJCx)!j<8!Q5IjO#rCb1nb8 zmK=9oWF)5gXfC=~f;h-Ta7k~%+p6GC)#w~-7Ap}N zB}*?f$vkGow(cD5>I^gg({Z_^htHZ9c?B#)pnPS<++rH9oLvm=7zac!YtEaQ;rM1d zea1&`$7zq>I}ZEI>SLY|^>*r`#xb=sz(Go%*p;Snoj~d{ZAo5%ee@t|N;|R0om~(7 z(N=thL&Jf-pNNHg);P$Hcw+Z<3*$gZob6~FEDZ*#9V<2mQL(yMpI^|!lAS7yarF@s z_;vv*Rl|=v+=lY;W*oJ@e>Od*&2PQ(!8I}afVBxLKe4B1xXbria?*ceZ=XHt6m4$V zt_i+o-sudwa*uo?o)@^gfv=Xvt3+4c%&{p}l`vMz%dx441)$SaA z+uxtDHK2xfVsl67dI~hiZM)H$V0N=^O&T4he3xLn|3Y%A<@(3fJjXV#qTC{7ogT^5OW~IYZzJ~4E~hrL z|oQealG9i0cnJfW-96c($*XzK+F7GxMN6` zp&9yEVj80!Z`Kl|8MOYV2OBqK>2j;q@uJkTI zh+xqvq%y=L5^xxfR{-dXj(0l-m^;(H3T_fm(SO(+)JcZd$<6WdO(XB+U`5&H9eA2~ zzEXsQk2l9TL-ZEIm)M=$3OfortMH4THU}p*XBB>#zd_9#a3k(~2}8zj1)#UFjriTs zyk6T7qWssq-twA>c^aiNXnN$%@3y+^5lMUoyv+NkLq{9gK)(B`<6A$vur7@#ob=HJdIWMua=RS4k)MI5&e?P3d`5 z2kHhU_Ml)A7%VBnQXB2X?*?Vk?lZT99?L$aSzR|r&7xUfJ%Io>6MIH_Nh>z8gmB3T z3hLBr)kXBkv`(f5dOeIkC*nyIl9_voAwhB0U^4IsPwgpj0=&0}8Tr_(Pvx|9JJ_an zpW#tkLh)5=%=da#or6w_eKbq=C-fKt;Fc8sd|2nxlV&;fz7yray*^dE$oee=FM%<8 zTDmVdI>07E=E@slcG9jc&cC_3YqY?igP>t5ZiHA{ckaZ{IT`P?&BgQ_(u3SFj-dxQ zKw}qWRIgL{?H7VRjr~^c1Dymx$?2R{j%fkw;GN#T(u2Nf9_JN2u$SsDjXO?FmoqR^ z!b>?HDp$@=f>EHye_qt>)hjn*JdDX&MY*-5YW2zWKP@pofLp2<5ywvlMi@!tbV>+# zu#7kzggtL80sEw3k*XzH7Q>{rk!YQ z;L2|vyep%-$(~f$kV2>3C;)PP{7e5qJ)_WVycg|lJh(yLL@g!V^y^=zm(@?x7P2ng z*y9T;Yo(4Kr^3Gv>BpCm27aL}RwrSfrbV^BL|$@H}i>WOX*#WV9=~ZX=Y!BNrp{)y)H?H8^b zMt)Gi|0T3tD{cJX;qQeDV;$D%MNc-f1T2;;Twe2Ex@ zuyFVnINS7DsF_Jpt1gM$aGA=leDq~1x$Fl^ci(+zza3MYrL`?Hb9rHG36eaQ8le!W z&UT7$f1&i2d#0`xkrf^=r)=MbqNbpDUB0!EcDeBc=$?V;Kn2>#CH)yK6=v-dzF<8rc zI_>=G@m?obM+uN9X&t1Dltc{XjYG_hskQ8&NxbVx=y$;2l>XTJ5}-uwInh1g0PqHBWnq# z4aF!mQQi>lyVb*Y;XO@|FNb{q9WDW8?kk$etynXGX}!N4lK!Es{Bz7x+~T2(n2E@^ z1NJnh;z4k{C4Z~VE;u78wkI=D;}04-hS5u+bheP$3!@Kz2!I*Mhy(64Tu);Zm5z~KV2NT z6?SJngW-}YDi!9I9LkkaFR2r*m8`d!{{AYJVG=;t->6O&^dqOCaphEaJjzoC&Q8h9 zC9aOW{oDxpkY9lZu9r~Q%Do&*7h5L9Cq-WdT9Su{zeh#Bt_wfvm^K+1#pK|x&5pVfE3l{8>);HtHz2I%p zXpYmx9j+Bq6{c4(CO3S}UlJnL1#rbpIqjfp`>r+bD zo*Rtizrr&+yms;F+=G+u_F?6=#Ch#hu^BqiEd?X?fP7jnrdI&zA0MDcPCBGQlI%eL z?Ze^9M8DU%$zU4oI2Hobg=@wXMt=fm3%iU3{Egb=3)haur;=QzuPagVo1K!F5hUPN|?n zD))qW^lL9Tr>D%GgvmD6g36wtDjO4niSa-%hS>>Ukd$$5V)pvTIbrhq;mcg>{=){) z({S85?ba#PGBJ{n%@Q*s>E^`ehE!XRqE~=Bl3F=b9gk9DG?~umfj>sujAxOsop};I zs;DMM)eOD3O)Iq9E6>1zs8wR_EJ8eePNoP|ho3-BPZF|4v5wyB_{SvdsN9JpmK^hr zAL+Jqj|ol~QVeHw^;Go}(o0l0edc@3@F4XpiVA(5VKqexCX(6@%>6J%?l$}fUq;M}-O*2Vy{(2Wtzk}&fC3wPr*s6+SlQ8?A0wJIQ zKB5)TRZ;kQ-)@01=#)ANYot>oj!FfS;hn;l;v>)O;(2m0U7kQ_udw5Ee|56zzAc3~ zC5_K&VkI|>)YIvD!*D1M%3uF#_rOnJ6wo9mpOps1qE;_dGmL&Znf+rK;72e|3Ql;C zen|3+i@wV4D_TpLkzgb+glS#TZO1JGSFV5@bI1KzwWdvKq0q^fO z5bJqebM`_0HO4}mfTqTItvD=ijX5ymzR%gFI9C#^ocIL>ifc(EmEx*0K%&^o$iNqs z)4(l0snw5|Z;7Q^SXtaKOXSpa--2AJ#V33*dc0Vz+8`PqJrbF_u6GD1(#F-B;E-WibZBnH>Y+8uzoVf&?im{98}GLVyYkX?=vsCWPF#xvn+0$p7< zX#^u{i0bI21ICEIMpHz99|fkb?H!7|;H-8ZTKheE`A1s1eX+iTV*KTIM#<7%FVNX+ zpC>%L-gB{R{?q;0kbi(k0ZawIPhv3A(HpEo*W1W=+5TK$E+4nc@7aa%nAh#l^5-zR0Q#bH zxaZ}Yb`fV@!1XL-05d6=q^#guL7If7Lum1NzAJf7--dAQ2aLoq2$OujT_+iNW|7*r zArI|ng)XqLr;|bOEnM!Kuw6+JaJU8|<<0h{$gY0p^`e%@kE6bEXL0ZxJ+XzrSHvrXh8<0rmH|&%ut5s-d zufBtvG07{t@zC&~DhQTrr)~YASzUCv=gVtRdb4FF)YLMX_tCTI@?yHcdwOj0L3Wqs z>-L2^l|Tmk&!i6o{_BV^T`X1~G1LL(JftZDKkhTg$4$2ykPmBlQg`sAdg;zlota<;w;v1Fv-Au~ztPv8SCD;?>Po^*(t=TCVGxt!l9atHJtQkk*LY^0X-th6?AXHd&3= zvP(U)y3fs*zGnbBblh5E(k5dNcT?J`%{%d*qbEn6GZN*N$2&tsF(&f{TBWJH3yZ}N zQ?QX^fAm7j5EA(k(>trbtza;05&B~ohc(-qQh&dC=_Iwm*qc&cs5kQ9+e>#i2>;(m z^a_sxcOXvSe}&Tsj$K+~w$ulb3o#ReJ}phmZ7P4NOCWQYZ}69Q7LdXDwscvV$Y_oU z=q0j8o}e@VlAzg%!h+pl?3pBIjH{X~(}_7$6)X|CCRwXJttChG)QgM{ z*^hH?xJczkIMTge>dSRIokc4ZH9VA!I_Zh59chR%NoG%Q|br-L5lHy`AO^dt%E$mb7tKUbY%Man5Zk(ODp z1x&kI+~^#{;W;qg88TeV+&j3J3p{$d>}vCaZ9zkfMdE?LF`w?t9_+a4nimLpqpquY z|Dhs#=3Oa!vF0a!QkgK1E*iANGgT!K^FcD5qG#a2IH=+d#{jp&Y*U*7+apBj_v9KW zXP&-6ev({*IgZ@uU~RFhG?G>OLxSxAJ|6_*d0b%K8z_30ioq>tt=vfEoAH2J^~w$W zJjA{EaTSAk#dUwYay!9+k6jbVs>9JNb2bV2L;{@wz(M~=)t?8n$|3+L!y6RwjR29ib83PL5ecY`HNE@LF`6^PEr{5WSoeJ{LpI3kg0P&G;lR&VL`U9+g&URLJq4y4 zzV88D_P`^50;u=fT(AMNq!u6PAW0Y}8x2k*!bm14ObD)z1JRAzglv&s)TnP_I~pYvCU%@JEsh>k?R)vp=`hpFjg;kl_PRVh+; zV~fmoos@hIfg$>Z!?0=93$TOKGa1MUuuMo;hlK1bIpPSGqug^sl=*ymPWXMNoy0_D zoHh*u29i5d%FXrphd z^_1p#$DKEi7t<5CcwjA|TC7egdyOpR3ElxYg}_ta z2OM^~iYv(gsT;*H@Z!@d1Eh>V-UI8r1%DqEt~|V%gB>>q{WLzF?tv?wSW6HN$SLM_ zij=0mp-o_LsCL#Yze{R*SH@C{>1Eb}9RlqZOMkZd4qu!8T(|45Ieqqebq;!=JL0>K zjUz-gg%XS<7;FrjTARm(FH}N2R>nd0(j7RR3Y>ITE!~XaX9nUX;dmA6@>`|u0CL9q zHr%UU0q5=N9H*sSeWVenPB8{ypoDLP9Z0m9rrx)uL$102UQPcM+g2*Wb-IKt^ zMGhtxZJo3h@oW?(%eq_Fb97aDRfEn%;d1wg!kzzwG@-fzI|@+Cf>ChI%ArSPK3*@? zM@i+Nlk0<9$gpW4Xh0oHsp8t5gr7ETjlAv}z(8CRrpbK%a`o}2Rp$zhR_pcZjG(#m zBSo;oIGLSej_PPJUB1WsQSe;#{I6V{c^w(6=^%!5SS|2!il?2b(Vghe%xbR74^6v9 zm0~9rf46FzzW{qdg`;WL%v7;&{msSkvEzgX&=I_Mt{7JJ^u-U=5f)Zm^Ou@>_W3Jm zunm)fxIZa>eyql!+Y<)}5R3YFoxq?vCKyM(Z!zECS~9Wv{F6JsuMa}p4q5bM(VQQx zrtRD={%(D?prkRO+%FoG7UJXiVmhmVwT!hy@nr+n;u}X<6^O?&Jb{)=_%8e4A0Iq; zAo_acrt~K|{e8L?-#Ox{EP|6jzB`gj8gEUYMvwxPd57&(XWhwbJjQ#UGasBWs%BUd z)B^Zr9xSD;~5@eiz(5~|T6Yy(lbrB;PO6iyaS zFi_Yz*{$***kVolblSc6xctd&HcrA^VYH&eFBL|bSv#d!h6hsNOKZhB_u(7S1r0G2 z3rU@z!ykmt8&?G;SW*ikcv(lAo?#O-HR3*k^mLD(V*iOjF*C&rIEjHm_n>DMQoYKS zsR^@+7a$4@9#Fku5KbntRAf;ei3aff02);p5A)&${v&5L*`miXZk<~7!A=Chdg2tP zZ|f;&E72!deAHpED6?@FYr+fkZl6E*`~Py_hBo;Bie7BtTXM~fB91j1zqflCY^0_> z%v(i;A+#fXuBRzhdlu4Bh;XdFQcD1>o31XTnR-X2|{7IsF!K#7`z zIn62dP9ee*1nMT7XagO^Fh}l$AyvDT``K0DWqZZxRr~|}9qbdlNUDPMJiGTjHIsvEX=yG z4tMVYAk2Rn~O0*5qejGKF3PUt}Pr}uSz zUimY^+h8Ti0?zm^c|07^tw;XiocyoQt^Q>_Z>JySc=U)e5;)|^5-0p}0vT{^pxcJq z_waCM4?jTIfs<4W^dtK31w}^yKOi_8I31;FBbZZgnFSdTL>4vSC*=wZPKP_9*dW4z z-2yhw_4>Q#uc~kV^y8D)&tLqwonemWC_NEWfN9sO?!2Bg$IZ+n9=83_ElGDke!V)^ zP@)w5=r){Fo(??lb`E`PL}{p2=a99E&ZuY)@wurWm{NFUh393ii)R=75Kgupvk!EV z!wG4Yv&98SKsta*4&f_EH#bxt*NfV|*&uv<6A`@6yY}ros^~-*C55~=%{D=Jztwc^ zuz2NDLyOr0UuK@>9kMsb^Mw0~ftJ`yC>VUhUK#?H|3meqcmW5^dae*$`7W3zr71XV zV;GX5*=jx)&nfji=ZIca^Ui^d9Dc>7^F42M^{g-trQM{PZQf2hAQKX`urFU1cf!VS&reM55o zMl(G;(PNO?VB%4v9q8(V!$>H0C>q=ST8OEgXK9l)v8lfznd&_p;UN#CtmPw?e$Pni z%SMg#qXBJG4VKPeCiP$XEu`PTrKPY+dPAviy_uC%-WBC$ie~w3J3YaWxL##L$S_|} zlE=Dz%76NHK@Ax7P>I2+WLlY5Pv)Eipsh4q3@!7f+!Di*T@T~OoqT`oZBLqIc<#+UE8g;RR3C#OyIF%_3WCf+WNt9k)%7wTMl>&3A;^;# zJE?aY6?fm#a8lPdaSRWs{Dc*%Hx`4HonCfI1^}Y~Y?Cy96tQ@c2r@hEy%YclCT1J- zu^YD8-<-z!nsd#IWv8|du^N6B&LM@Q=MpH}HXw{motSURNXCrm-+OfL2sNFHJtSKk zh17a+3p_5|S!B6hTxA%&eEod|jzwUau6@*JQ?@E5`BY%p(sawfi1&Dc?j_8WGn?#1 zM#&(#wCgSBNlcNZgPqlh^--Za;2LMQt&iQ*oYwR4pb~f7SW}~25DA;SQA|yKJ*nwN z8wdBrQ)p%O%CAf)wgd=RjDV4f0Qld)ZAr*`8Ml+IM-@~{UNfrw2FjyKm{-Go!Z9J= zir8^OivB_(5x6D!cTr9GfFJoyqer_(l^_??))h7{`){t$4kr{KQanEzk z_7VE6WOy~LoJh)%;|n%;%!AU0wlL6-ax_9P72f4q8!W^6pVgPC;ydQ1Fn~sXrUmSi zQX%UO)urY_7&|_P+90MkVCi>{b9S z)luhn%91xMs0#Wozng`#RQjNa{!7kVQe^Q9rOaq=9EA+VNNJUzmmcVbI<|~qPREEO zIc?_ix?ouJ)XU!wQ5Lyo)IZYX`u_V9jv z?|eE3Ujr$8G@^2k{E!Z&F zL8~Pts!)IGuGMym9N5wFt!Bucma3lShMkni3!Q9X+|(8~+S;{|Jx;yb9b=Q*43`^O z-UfZIEXI)4(m5Sx%5!beOSar3lwT3J$!-Eo!803jIJ5Eh>M$|5hov)C{6jk8%>r zUgH0DM*+1PQD zC4F9Urh-8g>3xq5VwTsn z`6xDeLzUm@zS*O0tw0!C8c?o^FsOUux8+rA{aAG!9M>WxRYg>A~Zi+T@$ zarBf$7?FYKq{1^fIQ@ZRw5(^zFP7EE%>o`DqO5#eZHZ3y$kDkby*O%vvPwBbU|DIC zTqe>n1f(;daYCH{(He{bqhfO?x&)=Z;>^Qh49NyeKTM;%p<*?6O@ui#9yoz9=-+iJ)v01MuVa!mwp zI9!>D1ajw52NZF(#1l%~6>0?X2$7f^LJ#-`+v*?zkit*d${VYobUeK@#ZJIasN9NG8 zm9jf)wL5Ur=td)u&S6G5Q%>)cG%7W*jELcgo9Y60U`VyZD{V@5D_s%k0om$R=-oRI ztzkELY{}N|)fGL;hyNC>aRw5}`q`x^ce}fb!f;*`hF|^Ogkf?G<}I|h6NMhA8?Dn< zD|`V4LE5JDrVS%_!^_^N3YFzs>f%@sU`C@6GO;iYSmmg1GgWS}SF+}A%Kc3|2S(Jm zua(rCDq*Y0>J=#Q_pnclytYeiEc$rz+wT-X1-vT_+`4)HucLscf3MrCv~&0`+f1Zo zaoE(kzOH6yW}4KOnX?5_PkVMgSzRpV=*6iS3Jl-%<=$D{b<>mD=;jtXO?qYDFXFUj z>b9rf!IpDt{rm4hEZtCjP3$r^kW07MUhhtGwH$puzv5aD8viYvkg0wH+2oC>BSe$e z6z|{vJxHcoD#L#da_L6u(y;z31l6+s|Ji#R_BM`NVf3%8{oI~VH7UtS)3kD&Tt{&} z-o|#0?KbbdvajD2xstXfxh$8o?3(`X7r=Z0GnnO4meV9BaZ8cA^MS!&FaQPvT+;iY z@z45Nv6c65MBL$?S0F^!b*JC8hpM>iVFiUf15?&7)i=XQtA}AYK}x=w^AmMY#zywU zY%a}CKF+pva=2C89%=`IY@#}X#rJU@RWc>I2JB&t9KCWo>ah%J)MG&_3z>VRZ}C3g z;(z|kq{s-<&W@|3)A6zNeUeL2FYAC2_Z>4nDelb09Npt?L??aemh?`}q5b+Eu2`9# zFqYe9NkTTBC};JuT@iNo>=pdPA%&L_l1jIu zYC=-)D8O<)o@hRts3Ch_&d|<*d8(E4836Pu{&i>2QZ;6&Ey@Ez%i`>fzf>JvzmBi( zy9Sod2h)CoUJs(O5(?L#dOy3XRjon{t-S(nFy=xhN9c4hrw?2_oz83I$J{MZi|%S! z*j(HrFLt>|POjpxa*W1hvWP3UnQgv-5TBLZiMG7mgh9=hSh`#R%DYO`D$p!$<0GPQ z8=~wpStdBT7U7mdaKJ2Vk9Eli^>Wj>eW_5T&ls-H)^A-|*)B87QPp-)Zbj2X09FQ%2ru`ny= z^}@%Qv{&YFChGax# zldP#1XQhMncK2$>6SUiU3E3OEpqm2UiFZ+ey<{~c6^~^RS-;BHOSY$Mukvh68IKps zWVLAXieOS&jT#t=vj=rAjHbXapPw$OYWfozEizXp(~ILFYOBBRZNmx$F5TnmxT$km zF4LRnpa{FulP9i}dWC$BN!rq~M)Qkru~-kb)ilz?<@{J(+{Cr8Oy$ygTuc31SOvDV zaNZa#CNQLQIJn{>z8xOi_LV}ONj0-`f z)ik~4<+$jxo0Iw#i#|o4RafL$mwCz8fzoZYy0-%AIbE+Ry3}B9Gtl*hxN&RRsHU8A zbZiVCek>!$zk83#sdrljmdwx3Hl+6(3Et>YXi}t93d^n!hV9i`Jw!|faXx;vE(vo@ z^{r@#uWe3bT7z!tqm~olMCl>g^(FA4KbvPPJC0bAQaY2{S&S&_bsVGt5HeRb@vez6 zUYs@)ib5NU2Lm3xL=}hBSSA^fpNBe01>5~Jyo!(?x&@*x7=i3abu;mHD&)MESQ+Vj zP^B>y#4w29tNlqeU6ucvn@Oh3`rm<-TZOBf+By=dyp+|}}vu`ZJ+Tkh#Y`&hI z;`ZHZKqkre8uc0^oP)vO|2sJx{q^~+lXCR$=ePDY@SDDwr+a(1{;z{t!KcLNba7Dv z7zqqHDEc6_`=DG8(VCzf*5cW zFyXOQO{#USsNi5?w}We4WPD61X^i9hh?*Y({^Qpz`G8RE8DJ;5ieAovGW%!7(0G?l zq|L8{l2XTt1Ods4Rx+CiM@y&X+WVpXfLIT1`VRJc=(*bc)_JE}`7d3Lto(`*)B z0+<+EtD~^7n#5Pcg}(-E0TP&~WHbT%;8@nn93e-AOvn0hvO~CJ0kBGw3*OY|3*+sN zC_~=qT2ct(#j>KQcLb{x$;@vxi4}jVt!=-H&r9R+#vr`)i%1T^GNYkAR2dd{d(UMi zj`RuRamlEL*C(@ch;v9M*TH=$PB&BARl$1$@*>c2Ycfv=fdc^%kRSi;S3x*RG9F@> z$qR#cpgwW7Y)q1J)IxlgX|r_fS(1xc5{Monz1;WsRj(BVR5K=znHFhFb;YD3h8lZ0nA?$-_o~nJ$vu|_4~28 z;2v8rw4S#Y_1Q{s>eU!&3{)%{V~|GH6^37of$wJQMW9w>}wV}%TRH=o|L=(q)U zATo)n4Xx5fOtRlwzs^uVW3iJ+R@0+<*^T@}tMS}$LRF%XF!?v$dAO}bc5ynQcPFCvFddS$)C&9kte)GXC`!ED8?mzh4?U1SsJx&C@1nUNVP`4= zGj4s3aw)PmABYwQ?`mBj3NGCE!_qP+$p>(@RlW%5ld28J>P4JhCW;T%6P?gfXq6xP zULCQ5IPz+SAsd_kDmY|=-Z~A51-T^WWl9S0L>xp$%iusY{eE4o%6gh{7zq;5pk0$r znM!7@Pza1<|@%JbAX3l&^R*dbQse2kTkqa{xV8m?ID7NqcjVhq=olp99T)sy$- z%XYaiVd-tpV^==c_x=l@_b1i#Y_Ny2TXYd2N)i9v(+5AeW5646B07|@6u4O(&OUth z7tdt%ZE~yY@0R_P_v4C=oB6n0v8~jr+NcPm4#PU4OB$M+TbC49Fz!$j?dZYCDNv!UfcOV2q+yu z8nGnPm@DPcdlh<| z5kcW|9-Zx2R2le-gL$O5cy%6r25%Y!E|!>;c4eK|Mj_?nPO$o5)|nTW+K`CTwlwk( zw-2l?N)Vnw#>V@SK~%;depNZ`F-Qw#+|_DXfqdPO ztK2Zn<33<}QtsAp4r4m!oBh53Sks2p6=xdKFm#4a?1m?DmvpFDCHQ#?4+pyb%cnUQl7UgW+%Ia`ny~n^k%t{)>K4Z35LfIhQ zRZAsY_KwsW(J3QS>z&(mH?@;G!&Ov27JIK7Hz>T8GAvfjuqe+~;qYSBc(?7GjSXuu z&rx3?aiJ3p_i8#685X=7^&o+;9Y$oX8YkoOvNsjiZ5in#COYRb4RWerH3LJibJ3v8 z==baPTiiGzGuMmI+V^vFK+P*z>N4nw$C*grxfVI0=9@~evZW2B~vUp zy%`}Kl;AA`y2rP4^q<^+ZDRNPmL8af;wY=G$6R?!oszW(H)dNrgr{YEGn2ba!ESDf zhW0iMkCqE;38W<`=gf|dVY!XM-)B96xE0-isHZGNl+B@Q#uq;fz7>Y?NIM?yM)_z-*h7K!kXbhSU!t9 z!kvFD$_Fm~H|6LS_F?p#eMFD_S*4=0J^&WCl}C$9VsvD(uCClu#^#@Q@metE|=*rHJvf^0f&aKZ9Mtq-WJR zcO~5P#nffXa%2n-b-w>TPW@X;vF*k1t&ULhQTQrzVWPN?*Un&|_OJ)dGcFO}P2Q7X zhr8B`&D~vB4d}=Tw>5(!vb?KjPBM24+d7IINvRiyZbLqaRZg3v2DS~? zAaDDCSKmyl*IxkxN;T_Mv$6rBBzIS6bO_CxyFKn?gH&GA)>-|!n*5}y>A=Vhd&3g} zrx6zZ3NUO##RBNhA9zJ~c5`d&J9nVlXOYDxzHHc|T#^gd0%vDCEa|LTm!YGqOM*9m z&@rx^3MlkbF7{QQ-8D+Mnk3Q!VfIkv6b=Na3p#RJeLwf7a_&|34Bp5c_J($mxdUv= zQX#LkJiGY^O#JhOk}K0;qQJQBVOkH0+lPmH#UBHdwp+QkC~niN!KiL_TS{7CZDiA6 za^$e(V=PcV*?g@Y-Cu^MNB(JtP_1&6(2Zm*yL(RVEc^;rOU321yVq2~?Q}(z#ZrR? z^lU?X?AWajp-t(f9yAl!GBG84J{#58ITYpNT-A*dS-D%&nt7?X?(PfQ$fGLp(?cEEeZJEPf;Yu6rB(_iL%+#MkCw||E9N8wo zmRHrblj7tIn|ESP`B*0%hl^1}zt}jYIkRfbSlzmgj5{4b+9~LU@_oVU1=mhiUrXT; zVdXO2xAm0y&}3cRIHlWLz*|~WO}Qa;J?h4!l+cM6dq_72ynl5Xp69L!tD~j(O+)#Z zc9W9^ff<%%Sh_&U7(^^gZ??NM-VdyLj3TtX`6N_T=X7_^gbp7k6~S*Pun{}=v;-8# z#&hw|s;O092V4h@jnAFn#}4YEt2`S9dC@33jJ@u_vg2NF*mXERtCuqq?qFJt%;-sa za`6Ep$Yc^kmMd6WwQQH^4U#-_+A7?)`p`2H5hbRhgAwH!3xz9hX!*EO^Gq(Yx3)6nOIc5L#fKivC4NU zo_rA#Whtm6%z-&6_0cG5sA&0}1n(;| zNs?l%e@(H6ytMG~A%<9mygj0`1;X7ou^{xTr9O(H5-rYRkZqHYXc=P`);Fe2g9=(CS~Q zSsc-<1VUNQ3KLrg8=63ScClM$=5aa4`x$ zBybk)4Z{^QMLPop?ZTp8BT>`GgL?iH&F7De*l5TeHrHq>5Y=tFuG#{fa&bks#bv$1P;r}UyYj}UREhSaJOl6K$lLa#9{UVi zA6)L{mdqEHB^b_)@≷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

        OgB`b(yD=O3kn~&t47b%WU&B* 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

        >Wd7_k_q99mB@zxVIL* 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

        4(szPzdD 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%0Db~oeo`|&PzS+#{2A9p#elJX-yjYPl}f~ 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


        nhKb#| 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 z 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 IiHHgP5Bw(Wwg3PC diff --git a/tmp/tabulator-6.2.1.zip b/tmp/tabulator-6.2.1.zip deleted file mode 100644 index d65769919f96ddc6a089f3b4b9ad023cea671b67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2670397 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

        a#u*(uX+DTo(g9eErO-2BxrcZ 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

        #lM$XqV~ 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Ǧ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

        pC^!|6x~%6$cco56 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¬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

        8}tX4y`xdAm|Lm4O^{!r?!n)Z#Zq(l}%j zyY(bdu4QlArX1f)msC0BxUIp)zO2^q!6;|mWhpwMm5clp35kyS^zDhemuMi2@2mRy zhst?Y`J{Jmt8_Ol4baqJYLbrtNv$`+-CmaYxrRK;_-0l!q30PNR(AxOSYHrF(al4< zl9nPNnY`J{7}uk1(^i(e%3;I9-H?_rq{(}=rSoFgc(Caqw#TMWxD$01$ZF&hZBy(B zAGvoa$RYZsegDc~Pw| z&`*0V1ac@`kKyBGi%J-gQ)AkY77*8Wl!!bZ5Bf5ezTlLY!D&YO*B4!db2S(y2xQRROzfwn4-R2mrM0b%oThac&wg$&JH(FPp>`{hV9!vUSxJZh}{+3k~akrj8Zo5 zdyS|r1@nbrsDcP#T|d}wHX`FG(VhOOOC0%2vORaIZrdT^8g`Z7#95B$yFE2K5b4rW ztetMaYCp^RLk~?Go>uM%o#u<_BZ4onmq}Z|Zh5N_U1#KGbvhO3_s6l{e9F!@4r9wq zOt%4waW=slMFjhOC3(UflzB8K8>mx?Pk&+&nHiT1d^-B@*OC&;^x@qGA{-{^3JV67 z3?^}h$z+Vc_M@Rg5i5P~)Gyeezu8qW#TnIHi_Ks1xvHUYFdLi)jtr1^OU|L_@$gQvEuK1vvZ@fT79Ke@Yb<*tfD;y-JYraQcU3(2iWUilj-8q0SX`ig)$~^ z9A!m+AWUisbTl7MsKHCDrm-1OaDY+ZivPwk=zMyV4F0reMYbT+oPir*q6|_+u9rbo z(O6O7_4;A1i&jGINiFQ~_UpN#0f^%8F=Fd>Y`-XU$cAVg4`}%tKsk(lv{jcX+g#Hq ztZ(}eOse&)XJeunSs#q2Q_9ymfIx|$X*8_BZc_$tQmin4@Mfv6OhzlTFjs-?7 z$xqbhBGtW0LK?SYVsh`~PgqnhH2r~lfG&W3CIHW{YX*)=xm4y8yVq#HWZc=tabhJI zLQQeHgyfuq9S3jGXQ2^U9sJO$u)by~M6}!TJg1XDjV8f+E`;06VWoDG<`^AH{r0SY?=vf(mYR|AE)TWpfRcBX$rU z)mAVL67&QuU$VW$P>>8OKoep`hSSEKMy`Mhh2bOn$+foz5@5-ci^;NrR>W67RMo5I zzD(b|K*;L^*CTm2z5Pm8Fjku?M0VoBo2yNgPB6f3FVD$5C69^Cux3;{92U`YtE*|U zhnT5QzvNd^d`*54qL6}*MI>`@mI zwdYd~{kSHv_CPd>FsUQEaN;ades+p07ws8%hWDt?@t$Gk=D7$g`DNCOq!tJj1s_KI_53+76yZBHlqYU|pBmDroB8ZNC!kIWloM{{zY0`)VJAe8Sagvm?Y89&B zB+XW&>s(Me{#&gxXri)4W6K#9B5J&Emf#DE^Pt)OMh~eBm<=1{jEA>-O;;ZeZmwWV zy*zm&E!nOtfNs7D@%}C1$w^Q%W&WVGa$lb-p}15-aeX@$WEy-U@x7~W(5;9qUc85RO{A8+*RBeFDN5!J9RaGwG;WL2PL zjcv)Wm&l1Kfr8<$_sp0YFV$YGyZzpwf!?SC^+j+W^lkZ}6%PYLV%3#Xb-h!o4UCf` zudaFYkx!<6^LhpP=SG44F(<~`uARkv#I6l zJ?bK-z@f5bZBunJz|+aRh+k7WA+Iv~+BP#O)6Zl$y{btZD56ya2Y8**U}Ghr=qc=r zp!(!7^MXml}4nR(int{Aw9*;kirCMRI!cXyfcLxl(wCO zcM{gb25&2|_yv4|@+`r9*P~}s=Gyc*WMMH1C#~7&N`?l@1*1ho4!&y1O4BoAG-j~B zzs0m53E5d&VnK2m|3Rl7WX{|a+pm6x(pZADq8B4rKf6c6`^sig`0T9=5LVh?U+k3e z!5^3SX@o?b$e1253u-_GK2c46s!d1Ip=P-aKe=k1l|^FNcjqo$WiUDz)9%);!G_iW;S_OY25 zjK?N*!5o`wHWO`$nu&v8i@}WLQan8WrM;J9Gb?`qlMuWj%w(?+B#l}J6H!NTrc3p5C+bE^M=8v7Y z3Bz#IqeCCtNOq1oE&&iUzW6FI)qT=M;4O(k7ey}^oZ4pR`BJW#CPLjwy*KmCgiDxp z_A9l+y>A(kTPCqP$jT+TmYbo?)lkqLnP1=wCU#@(Wr=Yhlf>q8*sTux{CBHED=FLR z$cxk5ou0Nnm!i4+#5uFhj|F-)XO53!3VsArkM`C{x!{C2{*TCuEDwNFLJz5vAZHxq zFlB5hbi|lZ<$>Jc_vv{XeZlc~MA)=Kyo3jT z^i#`^)B23S8$$vpN7R5whTr^bqT~Y}SP5loUXeLjafy|?{6iAvCm|=x4RvMJzXhdo zUc|z2o%y>JEttOrZa2oK2p0Vm4US~;lG0Unym`5@M7cpOIUf)Ie#zlS+b{t^oB5Y= za4alA4WoIO=_P5Sf_#Q;SIBrpKP1_IA{LTa%X8*9L0beKy0x2o@0_SB0@&s62RW5W z_tApM=}vJwxYbvAkjIjmTSRvXa&g)5-bRHWgVN7pCJ0LgXsF0Ix!xHkrg6-398lz6 z!y}>^XZ4rX*lL^(f4*7XR>QY;1`A0#&9Vh?-izQpKBTrgMaWJfAfI7VTMBl?)SW73 zTB1+ZoeMpd7hg|PH`EZQRix^?w18O(f~@6MUG0t95+{e)OZ_)}tu@1}!TpHt`c-eb zeqs5uNV>#xtcD{#<%M4qz|KhmL1dNj7SJcX;EMXK-t0vhDJDq;H0#m8dmK3vi4I(B zb%mm(wyD4;Yo77vhE1|Ndq{AhS7BoGM#XErSy@zPtkXtwP^{1aYhmX#dH>N6XtDo& zL;p5~D@;dBPMF|X{A-|1*=}F>8iKERglMj3GeNl0xwaYrYQ?PZK;g_^KVj$shvr)7f9h(=dA~F5* z7hdM*k@O_QJvJ9BIgM$aELeW0M_Emug19@;b!9xy#jH(j7vxR^ za(8apj2gvYaqT9ZkkG9X`i1HDmuC^zU*^pSe4YLSuZPR){ZsUeIjhDoKshk!$tFYu zN!Z4f1i-Q=_s&0a)dGX)zEW;ZAx-swc7hi1w*Wc92UVXDm+gruC*A*dF6qX^e#5-S zq&K%jM9JR?H+vPzn*4Wf?EU!`#L?aA)=M4%ZUTZGB?z39O|e8(DL7bF^OxPn&RL{kej5}>X)47PGiJ&wu=}L#OF~7(*eCn(z zdt(Q!XCPqK7zdWk+La^ST60~qId8@#o$87|)FjBr_(6H6{kh=S>TYbw7S}SAcve#O zQi)RT)GoTbjH&P&#_h3=MP%u;f~u>}2u36|B0yxARMX*<%5|xqmVRe5rdD^nysvUZ z)*DA;V#Q&io}(0vzql9V6lXWjW%p|+ZHSvvRY7JC$X+IKp)G(ogQp=v;mNav$|FkL zpkduTz(2NB>n4svL4qvGK8L$pSs^=)oGKV<#W>;@!5aITxW*P>0Bq;t$tuvS=k}&x zOreEtzbq+nRUT@FN6xEStD4B=b`mb4nim z`LLz+r+rX|NYTN6_Znw<9UPd^yT__>kHeZp}3Tn@NA~b;l=)@P!>3=8f<{C~_-K(Qn>%8AS#Qap}g| zN3_e|&(7wUH?{B136Lct@RfB15fiyd(W$mYc5LxRH`$~9k-QZ)YOVR+JLjSxt8>T) zZLwtH`(KP-4@&(>o0@3Uez-|Z5n^Pg4C5yuab!qypPUs5&$AXB6s9z)B8gm@gN~b) zyzO7H8x3%<@Hq`r*TMoFrSSZlk-`-q>9ITQT1V_?>L+8|KJtVeA{AB}q{2Mi?tE@GS+gFD0^J9!e60Gf z`$WuP7z6W1z9Jsw_PR{Wbd7Y|g7qh#cE7}5fG+jPDRm<#`Zi{fh=d&jP5t~sRek

        *?@T_b@2x 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 z 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Ν$GIy?gAas-3+xGn;SZ;=m)~UM)68uCYnwB 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�gux_uoPU`}cR31p-wK7T*`MU9-!Bn^M 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�LT2mid#^^qmP^aeFo6H2p8uwv|E8Y* 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

        Q;nS(G+jl zHuy%p zF@_!6uLR+kAUW}YZv37Ptf%P_#MS#{S$_D)z9~2vvjJl(g&U!NX$l6}d~yYpKR?Th z_xVzsDpX=Ms(1qR-bVi6p&Ov8iyP$Ita-I~dSsCyODil~AaQ>SJ8GCY3S>hjG{ARi zKr|Kowyo5$c)R?c{9~*@;!(WIKe~!|q1RSL$=g-7NL^E%r9#)hF_?+k@?Bn5xXtV9 zQvgIjyT7sbsc+~i1+D1;48PU3r^6<%XI^2za;ZF;#CY(FP%UU?Hn=_r9{mu>hg8Z{ zK&*(XP$^eojcHVg%5g-+tXO@t4anU0O=&|snUj0|C#9@Qt!a#!nhY?+S7IS1c$n&e zNAW9cQ$9PdTPwF`9H*-D$Q=2hXHchZQ>5op=p~}z4A^)DvTwZ4XM@a~i9v?gKFBzE z0OaT}!r32vLZzVyx#B-9)nfcQ=1y$6>BJP$@so$A_n1x!f7(*gcO7SP`l$4BQdz8* zCfU=>n->l5`|p0hXcJM&8G5swPG4aNu^6hH2&(d?q~#rZr4el=3I$p)2jx9+p6?tkutky*@!KitaiCs=5BS z?)%AX^C2_x-(FR zSS<&HB83E7CR{VZ?DBwu73-DV_}Pybmaq9b)A~eed+1i3sN1>?cJQ3+SPKOFGX~=4 zxiD8OCd@MhTesEFjoOB6qrfH`YiS%m$lx$u5cnFD@A0i?iH7<9A@lhP(eH5! zQ~&}2LR7QHA&G{{vK&ODSFn>x8=h`~r-rL5GK>U-!@Z#1*2+&7&pkpTs4h3Qy1wsc zpqNU}cru%nH~ADnRq45TRhYom%_>#b5fx7JWyuO%+cX*Ch&eN+^uSFRSq(Af4AosUMd6+z%{a5UYXjs#hhOu5 zz#;U(+JQQ7LsVJJr-1>SXR)VmeKkyvapm`Ow4(fhvOfVF#}%}QduPD%ii-gJK8(kd zxFJcoiReZrm5uCawrFmI2h7~xR}hz-$Rb?Yq_ct$D-|lR^ufdPrB?tiHX5CKx5dJ@ za_Cs!RQq-UfU{@R5A-jOD9Ue&QqzV`L;9%K9nmnj7mqnlJagr>Z(LRqQ4kXAhpr{B(6-1^)U=VyAU?rg zkz{@WqN!eYHWYEuTj>C=p}BdZ=U#$H(ad=Lo8tI?KR1 z*R{|PA!u1^kdVNVSdEuFI~@*BBJ@OuEBV{4^*^852l%D<$d)~-1( zH5<^=fk^C?Fa2(WWVM4@AWa%N>bE)*q7*4HqTQR4Ljm~S)OO<=^e!ogLS^4zgbHW4 zAu5azf5UJITH>kMi4f-JFY{kxoxerou3u`Kk@POBO~BV#a2-}ckt9#LNmI?wzU=OL z%gUlPH|>Vwowaq(W@VL6Utg9t2*I}heNRb;b0Q~2e%y6!0=(Q%z`p1r{a*Op4a0-g z3V9_ZFDR=;x|>nB;M-=98F_17f!NV-MvFr0*N6iwDF@w4(;40kAs*!A2#Xovh?bk)|}v|&V@4T5@Kcu%iqJz6b_ zUb{yCCI85zto!@5H7gQ>7_F+-BC*Fpkg8LxX>`x{#hT(+wk@#7anJ1f1-{_~Eq&{G zjD!r~!a(6}NapFJD$aUNFsQh;e{W|Y`L-P&1oTH= z=I>qbBD#}&r1+9Y<_jN|4hX#g6VwRpIoV<30WLz|KIcwjWL?idsn6%Lzvl7$oXOP8 zC7#M>9PPj7W9{kGEe|8i0Bd0_r{gkd`Nux?VM;SKv2O}0dSkZ6<6#^yMQ7BXebHvS zIXdoQfRjkhKB1QPUrk{NNTaQ8`8zR0N!0_Qc3xf2R+-Njxl#BMFI5(HTSi8uTCxkV z&hw}^2ZuyEo??|tP(pF4G9_rHuq2aC1CA?5hw?U+@Y=^JiobN$*e<6^3nSg_#YOYO z&X(}&j2>blTWxBI%VHlW>sewoT8NE+E^v6+FY|fB@KJN=RrY1)J9E!%Dyp_2*Ra@~ z&S%|1FC#BRv&`;wvxD%_pq{UzKkBAbC%qC+B1=0rgF7;wR}kD4tgm!Cy_ z%>Qo8E-?ucp5?q)Rx8}SZO>rI<2&nGq)Bx&i{oRPB|{;jz{5PtkYGio8?;YhQl2mf zOtp<}H`l4UxABX9uN`C!GnT{q%VY&19?>28}#)BOxaT0sdv6S__V0blrLpJ zo={}eNY8g+vFng#O_7z+$6!hypLAVd8Xqd)2k?Yedyw6~U!qTpN$ustiaPA$Ixq$GC zIlP-2k;|<`#0tb5EDKPfFhA&vMQ6pMn@vBnDW6C{)J_zC`Ag<%P)A9x-<11Bm@9Ib zhk;%ajhZ|~Xpk@S*#h$89$y-uYhrW5%14Q{w{Xb_donxoODc+I7gU?& zlVw~yO~Zu_IZ>N6$qC5%&*;UPv7ILb6$`8Ea_CNb$$MDpv%m>I7_oD80H98SmGYY& zc~P>gDA_eg)`c{;%2f!lPgP2a!N4cb&crz%J9&EfS-xxI{ z1yq;3w>Y#E8cSIiQgP}90t%R06+y;Dd{8zo!5x055L;}cF2h$ z>fm3OWACkgL0I66kdOMzM@q79m|@3^Q_ zAigjopV`&A6$+b^h5F8Axh#G&@~BJqrcKv7g#+{v5q|I1%8Men&d_1zMmqJ^?ME!= z8otm}-9e*K1>qYkrmSuqH?Z2NCRYm=@X-{##)57DP|VnQUo2PGliAKW1U|QsBe9I$ zLm?u1J;0_Il0G{*$oBVw#{VCC@7ml}jwFbFmLmE;95W`msIeY)b@$yJsay`*@RrQRGPHMCrTG~(r zkKFW5(A1VHXxl6@pUf7NIfXCO^^WF&3K9(4>wR6B3jRsj`*)B(2l}Le1Wv~q$BNvw zK){WEgdQBLz&TLv3j9^kk6#BR9=h2T>;^A@aR{?;5P*7(Ma$LS;e88ydEvuf*y}m` znR-X(KAmAa;wFt&N2J@QcJV&Ixed%+AU>@PTeD{0hg8{|9~+`g4!&BQjpknu!91Vs zr>X%)3Wxaq=j=>;cPBK|xrFxcH(x#XVXiBLwe!^hLZe{yoOnEaUd=A^FJD>ubo;Mo zHoYY2Tu&3|_R4P->l5!u(dImX8ci~HMZb&@8KLO*n-Q3n#b4k8sZ9Q}x-W z_AUm3kf@$uky9pA8*2!z+^MHOULB?A(NB?r$$vbOueG(xk5v8J?+an?ELJohgaJg0 zG;-gG4Tro7>1W)DMT008$}3l(8Ua=1ZH$sjwq3YB8_SMH)yifnq-YAKy)LLiH{lk% z;lYjsxAIDQZ752FOuUbV4lyc2W+1sXnT?LNa~p_~MWszomA>P);Dy1mnGhzYO3d-% z>kmbF!|-5qvgV3>Sv)drE#b^tWvXIN>L+vB_2tQ8@B~Hot&;bOJ44(+Gwkf$ z?KSjLyWeOs`GNj9`tvf7jeTzEe!U!x-;uSa4c(s@hN@=Fs5U$QXDU^w$}JhS^n`?u zwXAcuIhmU`q%8I-GP3N|zx;%rnPn6e4x;6}#m7ySCi|+_0T4^@p(_rq?V=I~ZmuhK z^fq?3dxZ5%e-!Nn%zMPpC>>f6u8NC9OVNhF>kUvfFLb?bAKr5#%e?P7xD8l-HidXQ z&L+_uIpfdrTuRE#YOflP!hM~ASCDLAx0>_g>8d&zy@wE8VNL-hCKkED5eF6Nfgn{{ z{Wrjldx5gZv33$sxO2wtftQ6Z)JZ+zmqau;W$UFC*hheC-Dr(*OvFaicS|o-xyehJ zmEHG4lE%@RZ>_k+LH1&*DT|J=)vwB?g;kqZF*ThvBA^dibiW`0wFJ%H{OEZyCzprn z`^DSoxGGlaoDaPiK#r5sG`3a0m#$mb0NMW{kV?2u&Bt&RMJ&n1Y0)U1!>xdo_MrEG zaqM7JxrM)wQIM=Z%Pl4E3TSBogtI7wfaNSYr_vt&EBn8p{?nC-Ry36NciFehv}1vL~j$)f4n z`eC|0@ox=ZX%GJc?66Yh|8K974xjRNOb?HJ(i@b@M2*DYGMzszpHmN`6OL)jhlA14$8NL!BgZ zqP}u2S;n!tfDnW0hee7~z6l%XM+SKi^x}(Cf6d?7`HZsJLlcyg6aaZ|=(0-%yXb|5 zq`|s0*KPx0f4^#TC9+ku|cxN2^+%x^e{gAd6nAr(v`#90G! zB95(IxHKWEt{Ep9=cYZ!EE4HX5pRniwV_DO6;G%0^HoI&_~5xVaMC?J1Um2~EJNI` z=r{UZmBz`XEOSK0V&^Z2GMZghWFO^~WC+@b_pD+g;o9j|-2~a2&fNycXr6e(aw;#T z1I5JI*aTN*zjq~vEJCzycrK2KOJh*tX9DLaIo|BeEV-QJTg7uD>r(ctmshaiothjG zX7Tf~u0~SS#I_@G zCwoie@Lf6NdF3q?#lOR4+lvHM8e*R9&GWGGg5(fN#5E4lV~h$Of6P3YBnJ(yVPud`Cc6DmJa5)3 zJTf1vqJCf}xq?Qk$#(MpnrMq7fon zVi6%+Zf|3xp89wcu8Y6SCkqb>FvewYqGxgvHmbSYs#$Y`MKs)Wh7}yh=g_MZ}Y5(bLG_Jv?JMaqIAHE~i zu-m$hh20zd&~)1wwz(2jUA*S;Blmq%{f2EpaCZQHQOH@a>A z?;g6zJ;dDVH{_4ayY{!;c45Q&m5;^&zv&iy!?Bu^!RAFp;nMIs-cqm;RqXg(BlU-p^`4Y6@;6Q%FE#THgmJ9fEt46DuQ0W_DX92~( zi$bl3$>ZAxL`c0$_%HnDau<6*^!{HYUF-uQibxXj!Vp6%q_96Qg@p@_kn|yTt-m6r z0}V5OSsf~g8rT%d=sU(^&p<|k)uZJ5V;y9uWk(Dw?BD?6n#e)8(x&Gs$$HT?0$LU|tXK?~B9ktJ?g7fE_&YgVr$H)O$=4iS*N)UsghJSQV;IyvfLv3{!TOQ(nZ8yAA^8ARq>{r!8|HrzIRaE2}qb@aV3xB?bfY9~qIQ+R3 z&nV$@%RCRG)l`X>l&MYHcJcK|+zL&_CfP7%;Oy$EAk~%o-!3f7H^Q9E+BkhTEz&K< zdTE`C2Ai&*aSUk&e};ZUS#pThneq#-3#J_TcS{G4y)77RMBtc~!b zyp4=oO{9j|6eH5pW3OPC=`_3o9Adc>9Tx(+n|SUv%;dd$ag~lDZklqM>PnRq!rJJo zdj?ZhqfDD*kN1c|?V7bJ80p61rImD?VT18KC&AClSe>40wnVI8>Fy=p|A3laK_00Y zzyI^C^eB#4C!!^}W$#HOq=DWoX=7xU=`<08xruVOLQN8$r@@^D$D%ez@n&(q8i@Q1 z1JdlhKQ4k;ysSkq1SbNNCcwp38j##vL6%>VB`0hs?SinxHKKchT_aEadw0WfIRf!` zh240?m1HS=gOzMtw`cV~*}B1i+SUyvx$CSOSm}cxM3(shB0NmXiw!AIDOecT+^Xsrf zmw^fV#OHyUAaOmF(HMhy8X18g<{KKvZ7DuXY1Eb1nr(A7n!jslN0SM1BvcM78?JM2 zPneDnDPY9}(J?1PXsdd?ZE`a(>LEV^$%=$RaS>nvAX=s&qcvB&SG%GBHCN0M_9sL% zTa>{F?SkQFSO+xE|9i>qxK=5F41;q2t7_HaK>6`Pl*&JQlVpmkJTp>RG z3M|V$V&M^2V=xbv%c#X=P+_ODx%0dFVl_#MoK1PeIJ88Io!C z60dFR#rKO3_43hZ6__#7TPQV`HowOL8OJHc{X}ITpXf(xsfh2XVFRfagzLk}Nn|Jh z0_81m(io_ZO822@@>BIVCWp&l2M^ghOt5p3IBcV3eFiUvuF-Ba7>Ljmw}nL$G;Q1! zT=8Yr;FX+EuW1An^o&RIUSF%Nge7zfF#{-mqhcmtG?1!=^xj6JGSMF4PB3t{^B8L*++{a8;VFXVJ*f z=6NfIH{m355_C@K*GH5?pcDiJ{xW21T}UurixCPVXW&Vo*rHBi?Z@1w_H)M{o`s|5 zMBM(kragf0s8Gu+);;N)oT8Fi?yti**?)@;r4L{{rF#rQI1-U6SfPYOUW6V#Ap#F` z(EEYpPKP^}<^;lLzr~Esft?6uUv4RlP&~Jh{rDiU<)&uq__QW*83e zqwL%;BB~7eTwx^mYiBDCO<*yO%-PgSf+~wpG%$?b=!^us5u9NS`i4+X_=$97)du!p zmE&LWY8O^8UEDyKg3Jh~kpgrji8}IF3+aAj2kV(xA;Ymq%&XpjoM*OD5BcwNZYW3F z19(iq(2fvh3Cv|l2foQ7|L}V7B<4q;%j*)7e<2ZL_|NcD44UPq zDhc?8k%1r-r%+yo;uI8?8PilZGzx@X{YOA6C2BbxE#HCWXF91X%7M5|-qwVQd({_% zFMwOgQiMMvGVp7_UR4;t?R$vLBmAbCO}h7o3uV~eRX)6jf$hwzgX(cOxUs){Fw$M5 zja&Suhn@rfF^pSI(jmCkEbzJmxTts1j&^a@0$Mr^t$WPk$NB@_BG`QgSv1@WZHLwH z(X;Qr-Ko-k|M&8X49EX_-ZU5@Zj?6`AHv8Sva6dKXB9S-8LJ;`kXgoNpgV0NjRP$V zjfRBj>8eMvn|CWRHiyfYZh;0$6aBl!**$XX=Wi=`5)%HiUS3q@o$7x*|LI3kS8)}9 zR*f-QU`_nN>#Lwa#VSQnOMg2JTWc&yDyNY9F9@X52|^D{og``Q@oA9drYn&3;Tkbi zt)-3^L&^Wk-71b*!yTfdimm%`w)#l*!qG8XK>W+!5s&?_SiXC+SiJi(EWoedKmQe? z)=XrMTxWGs*Kj%0y8F+eWc4yB0Nnz(625|lztiy`*z@%?T-FL_A{&40hC3hh zTsKfA^-YBRO&G-`93tevK2Xz6I> z1nQ#+He0RPWQjWa79*>5<%6QS&m@J>0K`_-B2Yg?C31r`2qQvXn`sz1vlVDeYFPuneHw0XxO%;v7xM^S5{$ zbBx(Q5xs?2CF3%BMeeUpYJO)U!aZNsX<8|)M=WnxFPFw8OjutHjBYrvZ0`{G+Hwh4 zF*Sxm~ABdZkgd%TQjBo}C;_whZUYyS-utE+m*(Bv$QLILe;`oAF zjNNEHD)67hfa!LX1nq4ro35mvvWr(T9lyiDGEX6QZcl1S{kI=G#ze(U~l73+1m zN^uXRA&6-Jd$@|UhvY@GL3vCK9=rO~;Hum6cq%!hyZ5K{{G?^d7h+W)1O^N8C4(M9 zjFrXgeI4%A*olwTf}#l=y^HZVy)fd7g*X@v@H>y1Zgb?;Ukz|NrhGIW*Jo>I=N!q5 zNlmIwCXc}$9CRO`2^bE@r5uvu)JZxF=tk~=5E>puqFv^3e8q?90&WNq`q*720ezc< zjT)g^ck?D{c+%LkO8$qiRv)I&v0WsLx7oxL%{l^^jRMmeyg5HU4)Vt#mGP8Os(e5P z-9xM}gnx~2GUL`paJM!k6z;$$&ODJiI;+g%w9q zE7~{_6(_CIvxNg2tFa67C3n=&^|2I65?kLle3Dj^WWdAHwN7MGcd!icvN=(?&gsL_ z5qm+>v;-+L{%jOIV-<+%)E1{;biQ72-X-4l6BAZXXMkXTUeLRr9Z;sVZ)+|Ip0f7a zy;dSNDdSn)cDtEsWPdvVjt4b2YCnS4pCvyU= zoskX-X+5kmmace}AHi95h|WrQYz=m0`QOaUx5=BC|BQ#v$2GU4A3=US*9t#`OMU$q z27kz|P~mqCzkQYO>(Tq#RGGnVU*)Iw4hX!7Bo)rr_B-S}x1Z4qIesUnEL#CGo|_7j z@Y7fL<;;ABMAH26=MjCdSj);n!FLOI?4m+i2($)@D*-$wH|v5f}3s5o6%j^%a+mp`;5( z)!foi&2;fhMOi*m(JY{;$V+JI#YME$&eusTSx8ffm(tXVi)pIya++#!K}|JWQd3D5 zm8#GJ;^ze84PWB&$|qW2iY!NUpag&Os^Q;uS+O9lDt-5hO6_G$8A7_GSZr66>ZJ=B ztMPi8YGyfOHCjzmD=wy~biVd=WGQ16T1itUE@Z4k>u4&)WsH?z6-^acL@dIUqPR#7 zyTx){zxd%Yo^q;5U#_AAL+A10e0=h}@iS3F^LK3iSC9qt9S0fuA)9D~q0Y}|vt9WW zhVKh-&{}e-?B;p^aMafVfoQxc1dn`qeIcP*9n~X;EIj&@>dMCIS)Dgo&)RXfZPEbu z-6joS2X0jVe4`1V8}bJAVUKQ7|Ch6#wZnGozpDK!^DZCkbWxWIOPzqN?9{7rU%K)F zRsZV!Xvzs$8`SPWPfqsgU%MAA8Hub{-9DrdWwyQ`BMmkB9mPVqk9g$cGwkXY?84FaZWU!lOUil3t39pD*! z7o|B?#^78(FZi7b-wM#(BoB_s^{Ho3T~+LsSq(n~IwHrO=Vol>QPF@3gCXGHm)AIo zLO*Eg4D)y}n>{n>3!5rKa5?N7J2gr;F`W8znX;Lbqrk*c0=BxD+^_`M8D&>g9TX~8 z8!Aogvu~&bm);0$H?l#EK9FeL~g}v6FZEqAI5N@_e8T?VKP;)6fEB~=zFYC zNHc~jY3Fc0zdA--WZ|@q#eu>K$XqIUkC7dKIsb@s#-4tvz&$TiX%fmWE^!uh2HzY#3@A| zz{YL7R9B=HDv`CHFYpVu+vPLAl^QxWRqLKP8re>nOTXb9ZQ2g|OE}I}DuvsZCbq@ZXQ};( zzQCzFW&4>7FX{EMJ^PvtU_PEHnyb)G8|Qa?z2R`s^l%aZqNTDrroik|ED=-UAQ!up zjog&KkKxWO*FCb}kXnZ}Zb|_%+Gj`oSuXtJBFFu%=}TBo%PgMFpGZqEP`<>*J~rG4 z*}D*pk%^0RA7u1143M@0FUl1`Dc5j zX@MRt$0gvQIDuVQX4ztLYsMw?D-NUtw#RqacG=n&5w>Ax9tzRhA#miMwpq20scAgh zrQQG!T`O@DxMF2Q!_chYnRn4dI=x2RIOHu}q(A5yUG}5!R)REZt(>F>laOt%CE@;G znJ8pwOr>ogquK1uX#CC{`#GPZ?p`rfp;||&y3Y;+fqN9i-$vNhj-d#>39Js8 z8znG?7KH&}mW5{wT4bFP`nm08;*9c;gYnWE#(ebt>9T%*I6%`9h%^l^Dxnno#}5CE z{{H3c@DKl!{=~PQKi;7qkdfu^5C4OHJe$5f3BRBTsga(J-omTTAO7G<5WpY)sAWGd zo&$$I{KNlaiXP7=hky7}7OnolSfb2)!f?Y6A@`1p*Npm*)p~LEbh$Viy&cij{is1r zLZQjsXcJ&;48u;tRYTl)&MfwH!Es77w+K(?tlG215|&~-n?ek{8W4BXqROEZBGP&i z6P{oqPnA!21YgHs3xz)8kkD>7G%&QDwUXM;C_hS5+7+->Do`n*NqRnBjL%mktRqEy zCcNM7!aIPV>OYJ=dMF-cH@!?>g%d#f{jHa)Wtf3d?{2b~ZZ%~uUuiL~i`uJ`?M4(! z%;~?%4129~&-u$yk<2}@sEbkH_d)NbZTt` zW(iGFIQh}h4&?kSg-~LH?J&s9LZL)2(SMJT`1@KGn&ADd{-ST9^pMCCM_Om3$Fx7U zH?>$qaWu?jW#mx&5Qu8EswbsSVIJpaJS3}Wk&l40?6Z6?I-*+4kb7@+aDdje7@ov@ zZUqx27Z}Hn7~9ds?B^I|b9PVva8hGXGO*kQS8#|1Mj^^dFPJuuNZH}fj1SJb(|Y-~ zo>&?1vW#$(T-l>LCP37VAqo>s2>BGh@==P(q3?0m66e1BK?hEIJ5zUCZe^zM?P7X7%2r4#c_e0plOq!TKjp+r192@W$i50p=_Yc()|aD)QNBh@yX{ z`%F==I6{}I8-10qZm!^!svo!W+VSm`i{1Uy&>Y7(^Zpmw=6)shAT}cZDIIV5VfrkM zK02CS!Xv)f!9c>(;Y@apEZ|G`n$sAG6S6i6KM)6^`J!5ZqLx+$oC*ss9A@$L_O-e= zeY2QhOrdmlip3bitV$HXw?wq8g6MLG?7Of9>3$AP_$j=r*#bxbWPV?&M+c7x)D3ZL z`|AaJo28+jAlCO9qCV~H|7|f1=ox6)ZGNp_IB~70Ag&f`;<#AuwxAq>X^86?PktXW z8JP%3-e-+fcre|xA>CIyS^{3uhL|p?v7L8`qe+1C)#}I5k2=-+jLm?(U(U`Hdk~l7 z(PC0RSP$=jcNDr?JejYh-H{&%EHUY7^}BBKTb>`kq#E%pq5RpXiFIR_Yf`_mQzK~$ zXR|z0D0x-Sj`@sM;p`n(5&Exe$3XiLYtgvwo=O z=Y4NaXwZLz*^ztPZ(^Q7Xb0wKqv@PH>Frf!9)!_)0>eN(r$vWU5yLVYJ>G&?E*9&j zi?eh4(xPn}4BoNE!GWZSDqLmUr~?&i{8hZqOzN=YW5`)!IxE77o?}0tLxfz4IvauA z@K}ag1rx78`hM+tX@Z``XMXe}g6)R(%pSPq$(31`{3k9`7WZ z9A`T(nhZx0=a{20UqNb99B%v39JcTsQ)KxXh1==oM#nh#rg46v9jf%Fxs#Rx}+=g^kf?{3Y`D4q&_2 z8*@Tt2IaEYJrG_Xz|Oi?LAIAb8d2@shC0XGgaAwM-8g92hkdGF0Ta2b*@TSDjjGT1 zn^2NWF5UUxX(el2d6{l>7tDd-kNa)#anG$i?%LFl7Bs_cCOVfr(|T>?amOaM{&&SK z+&#j=GL8EX?6?=5j@!wzJiIQNG|@U55!XV6lb&00(swgXI=5kQp80L4rw?QMNXv3s z)7}y#*L1v?mk!u{e{qai#_-q|RfjEViLWhHCBMO=s`T z`FbrkS6WOMa|}GjAysi6nBRp}#qw6iGlYMJF&L6DjEoxSEry9rj5Q);c;d-0P&W?> zEB*+w*U{Jrpm`N@)ir4pk18s_V~fTHgWtaov@tz98W;liqsik>G8NfCe+_ngWkWs_ zzRyX1!#1*EbIHibWd+A3kBy}M3&^gQ>xcF6Vp$LEbOeO2jse6F;d&b{Z#+&RMPm_r zRj>{PN5jarYMSEGMbnV+asH+loXgE4^yVV{y5 z0ucQ9_rF*8hfB=JUfqtCZwZ3p!BEihGxs+AV$M6V1U2Fj&9jW5ac= zFoJbUol3$3U7XS^&CNv7AmM0?UwLm3NZdI?i4@{}=^a>!(=JmtHH{_vTP zHy=mKK-!NY9l+P#F(F@J}2_;<8 z;&ErJIIzFd!hHZCdjVLg^+L^Nj9#x2(ig7b{_14$VJIgg9ICZBu9=}rV!foJLO(yv zAI{E~Lwk%hzK0v0a8h_uciy?t6dUn9o-I}w1C}KqOO3963?B(+Q!VON6 z#WP{i(f&01ZeDIrAdq5gMnX_^aBv)$7G_*e;)GI7X^jRwEM(c%xUDM6dAa7#Gy>Q1 zX}z2-;57R3Pj@h65dB^+st=>-8dAY)_(e(~hMDe`IJs(6VPtDbc{ZxBQ-L48S(A7e z6H(6WqT+8fGiiX4(`|jQou1Aq&t9SGgJVjLqV>-ftEq%Hay?YbI`FjVdko=^8M_-H zqjUGK73PIIIKW>3M?rs>hH6cV0ny)|vkTS|GV$H3{)lkk13PB{PV33rn#}SU+$mPi z!8~8rz*zp2!U%f>MH?^$Kbw9Ghg06RKok}P6Gg;mxW2%~DH#R9GJl7;BAKkUz}N^V zL5Kaufb7qtrc^GQ11;W1O~A_eHq?}gfon)iaK248?>4zK)}4Yk53X)G8AGR3ucOkQ z;R_0w&BIWJEZT#VpDsO0%I}s}2qc%m7|rVCdJoP{0fE=XWCiVOrhcd4JFoDJMeXFX zF2~j|roj|!AM$#kJsHQ|e>~HuKCGdU0BOg|#easa#VLZ}%XEcL_rB=a;=^|)KMR74 z$|D=_OHVZ##lD8EEg0z<9TUkOC}g00EU_dmHVzo!fA~Fa!TVKBzc4pWXz{lGwK@!i z_}5OgSAAE{&OjSp&we^S4%h4<4u5AK9MX2G+tgtxNwK6?eC*sozsF`@S4LUKX&4kRH#sv+1 zKb%ZKrxvi{O}i5*!{~Li55*QXz=IQ+g4dC5p=u|>B>BT#EPBont({A|uQ&@?cE^ik z#Exa<)sFHNiDSg-us$|0RsNQnu&77{$Z>$H2xDx3C48}kO`+pCiZ6C`cR`E+b8Hlc zYKSLWSwRVtkkqr;HfL#u6z8D6#6P$Md4U%5FZ=EL(Q56#L&=fOy||1n)|9>el?2-c zRbnQ)L?;{`U&Iv`z}DMwRsPDEx~0W^`OEOZgD(RErVPAWJkJQ33k+n73eX#Ji~I6d z1LPE^)xD(8!k2u>%^ft#w582>DHq0MD~9qdW!5a7hf_S8bp?4x zXxoP4nbs#!6v~DP*xh6FW;@{P%9R!I%N71>;Yu{zT5(QZAPn?+SwcNaW(P>^L23GG{}51FGnwP@Pl zwN}GKAiBa$k_m+Fl2%pYy$~A}A8+6_caP>bi0jEgDGc}9Zq%NJ`CNcMJ@4ZDQhK`@ zoP8V|bwW775K9gOMO|_*wn39a%{J!Tf~})65c1WeXAxV~q68JdsVXti3P-Fj<~4>T z*RwRM-twe_>UB+sU*v+{jfqE#cY)7{)N0AWKq?&LW)&d0sl`eOe= zYbH=Uw3BnSlbM!|=H4*M$8(Iv#9UX-XQO@v*8-%EtK5y^bBl6c0%jg!px#G{Ksvku zdEWM79*A6b96FU^fp&{|Lmb|oWF?2YM=qFg9W&#vs^TlT9=^BAFW8pGOV8U)R;D_s zQ0Iry`egrf^l^A+Hx6j;PtFu34X)|WcDHg4Uu|PcOj;e0F`f+I+nyvyEGAvXUWNGl zhof*hA2y9~*R1vJe=KU#2-VNSCg*r0zuV@#5HT|5@p5tcZ1ExRg9ZQdGnxE^x?B8l zpBjY&Efikg`k0< z?fz~%{1c$uWan*Nou5rcZP-kDgX0TFkH5C??|p*N)Nk4`;NOgg2q6w=S>qvogTnIgSe)j*C6ih zKf)j`Oe@~S!g@AY!=?55n8E?d+U(#A%#+dTJ90fXAQ9!GRmD!pU|k;;06I86pV1W1 zB+I}-(cnd9O!uOvIbDM--mhKFGX=}dnXN_U5U~Eua&d;TWtGMKEf`rSnJwmX)?261 zgySdDJuj9k+V)iqTps$=rq1mm?|>Isgb32;5Jl-eHpn27{fTbo&5prQ8I z#|F+LH%Je5P1u8|$`&+`{~ItKtAVCEW>-!%%7a4@d)bQ-+n>?G}@v+itT;2=$YgRc@z7l^fbr0-Bu9d-Eo22a-_Y zQ5#6J6?+1e7A9D=V) z-I|Ds#G<~XF!+iq=BBq?VRHjaYF4mPQBzD1@3B{BoRaysw#@0OQ=;@7kIB|y8dg_^ z$N;W2XSD|@P1IS8xMYz9x}@>j2MapvjnQHfU2iDf=-p=Ak!Wvvr@j`#k<>DPCslo^>x{%7tuq zh}@?qH0o%s;W2Sgm1QQLxjqsJ&y?0I0_HZM1?-`tSzXI4g+Hg~+ z0>-IzDoBy)3yWCg8vmuR+KtIpSAy+yp4N?kuoC-C_-2t)xw2BdE(TlhBS^=QaM~hU zbY-P_T`alDkzl9KN%jx+8)$LF5KR;J75jG-|W7HkSTO}x}%;&Zft55ER*5A>y| zfEet+rY(u@<>Jg*GrbdZ*rv9FEMTY0DD}S_embqMHbqe;Sj3kDdFCzNrAaEO*O&+R zDT|>|IPua30clDL)!SuZ`D0(_kG*(+)5)Zsx7R;gp!S!psnp559yAk~=cY(2 zhO>7pz|F3JRx5d%AlY8i+vLj5CPL|XTrEJKIF&G~@d35Ai!Dz#8T=< z5R_~-i=haO7g8R4UZ>yeTkyVIi0k9?~3kQ4zo*&44$J^yuSpHb%bb|q(|tZXjYcz&rBJZw)&ZzDYE*>NU)mm z%YcWEf>Xw_Y;hi49)8A?TwBLSSEzE)-wDHR}p&u&hQh%x=V=+}>3uw=T7vS-nn zKt&9ZbQ-vzd0yjD0t9m1wJ^efa=EKIj0(6*G~=#Uu$Md z)+8GvwiKhZ;s#Ev#l+9kw~a<-r>84R3mw4BLD!12=fvus^W#q1y@i8AfchPM??%&j zN(Kbg!k?=3I0Wv9j5A8?E$9(bIko~wswMWdBL6&CE=L#p(-r>P4ceXoE}Lqg8ka&9R>xn9Br8p7IhtEqrF&5xHwl~QJ&78!lXL&sQ zn$WB;j*^G=%Wb8N3J`|<$oRBP(oYXf4f%ycDdf_g$p;5f96{HbggcdmmH*QG33>X> zv!{ruL1adoQ|4y!WxBS~x1rl328iTZHK*TTu#@R8b zSPtD5Xz9mpw*I2ux>cvSIf_yhSZDv=j;39j)hmobWlVVj5GkzWQlaWL_9|49QBbJS z4s;un5;HwHJ*_8Ga3J&dES zToFrGPOh8WGs89<^HD3hFslmV#W>`DckSH_yOC+iIXz;5b~0LzC?o`JYnva9wvpU# zWfzfTZ3ZkL0o1;l_;71;LCyhWBCcy`r(9@T5I$rC{FhLuiYz|D%n#>lkY88gJj!7_ zsI+$!531f8#p5(~lytpmgpR;j79RqE1m26v!~xPqm@E7n81{NV3ChpjEJn-8;1xKy z&w|*AF(sf+P)7sjR#$!U;-9ENy_A>T%w@LGD5tgF)6sHty6RgS0<~;XcQfdZ0XrMi z-3F5^vltF6>eRpC3o;H zI7Xn+L3P3)kMeNkTb%dyDNljG6%&XZ{mS>=ppAjR3g3Vx9?<}MLrM|T3I>qwE3oTi zeR>9kyA=gRntUTn)iNx_Ilks=6WPADsVdbXh9u_=lTW+X8^#xf6VD2Jsi%C#P~tTl zID}6K@vgqG+zub?K=mK+w|uZ3-htQAU(N!{dK7p!nm@*uf#Ka9%8kpd^_3-ahI<*h zk$9P0S){euV)5?$jQM6$%jllLt>u0q$WR`)CHTOGfD|f}ZV&n2T`oSuU3yp*JBGJN z-o~%M;)Xn>>3zUlTU1W~t9qT$O(MTX zFeULkjFkJ^mqY9&w$P}ivEzn{h4-FBRAmSvsQ$PB{lSS&31!sXYWjA*fRPaIUDSwQ_nyJ@<9;U?bkyReXT#xkX4P$lQH+4T~08jGrK13AbJmtU7}SD zK^$)iM^clJ4xEVq^PKmk+-0N=Gw|Pu36Qia^rwBpb;MUcisQpEtsDjk$f@7Or5-Xu ziGE6jOlUjl{sK_Vn`>TwKu=XdvDs(pPrYk+R^nD&B2dpAn`_IALH0v(?X0OZi`-sL z^mxGLG;Hep^yY8j+OrRim~ZDs91!PV8&HuHkY+r7;bLRU7Ckph*VD)!d~NWgva9~% z1tUPep2APj>_`Q|==u%|FbgHC1pUSbJ~k5uhYezgRBw(!9~q|t`X&BhttYS`3N`RE z;eAj9bR{E`D?N}JR*x)Ds>&vp->??63|jJ5N_NQ8u@GCs+wr1dTomEcD;eq9Df4@= znmp{_1y{HQMlVC#;^#p|4C_gO3(;hh|9%=iLNLtrXa<@P{u4?O^_?-oR%fI601hX} zJsOVY$Gs{ez4WWPIPO;u$K9{$5)HjNYr?{t6IB?%Y%xZWdw&+h|A%ln7z7M+IL5z^ zgQOBJZhvQVfRiBYNTE8#Q@Hxf>*aSp|M0yLNG`9}>*6@?5D@q|`dU&jz@#_AZA*U` zww0-kc>~gdYci-nK#JrF()At`sVU{qeH0Q8qT}5iL(XU-SV?qiCXqr<+Q8MXXU;1{ zR}Ob>@{wmz`UDG5D(B&pJ`oo24yZzN8Bcerfkf!LiLsiFA(pxc&}Z2Sp!-^U<-a>) z+4{$DmaXmX-3CjfyWqEEMO)il8x*PMCdP*JyD{&A92+gWta+0)@PlS{(6}kn9ceV# zfSgA(zZK~+pcy<4z)Jwm_z?fQYvNVoV)xW?L*rHz_n99-VO%(aKDut3ZE1qNPj|0pUq;+IG)FyHOwc~Ai^=jQCYNlD7dQyNM)hqPg-(1 z`bagRe)n{-hIbw8=kaPiJtc)t+8b;5c#dMrM2{b$f=r@QAJ0Z;$w4u*r^k5Nf?RuV zYBVn*t!4G*f`VVuBAYISt;cY~saDzrt&Q8uh13PLQ~ZRt#-3mT8G=TaR~&)ipVa~$ zumNuda8H;ppKN&Z^V2tBiNlS1$w7WcNW(p0KB1)n`W|2+gGzO^2nGNGgMi@Uuwituh$Gefc=vJNt+us=DVsPsgZ8VwKq2f+l zamCcHyrYjC7Y7HzFv7Zl-=OV^NM(fz)v6DCxL33B$)`(%ZlK|YTya+rmTOfn-y_a9 zfNtK>8+zau{s|d!xqkX|@&L0az)nQYuPcC?1-3Mr6fTysXWGGfe(msXzTrj*Txt_o z-_*0wMF4nbhr;cLUxC%FKh%(MwEmCtdbMs3N}j;830f5FDgLbJy@}nw!mm)aYMT1D z5_WD7_QMaOkIX3O5Ydw2D^)X`1jrR3V3ZvJa~`PTxhcN_JZ7&cI4Ir(+S?r3+p9s6 z;Jg-Hwrmqv;ErtJ$nPu6ESc36AOxyOfP|714l)vf6IHYt2r=6Zs^5$KE#ubzd67_D ziA?ai*e`y2WHH8WD1Dek2Lyd&2A=Z^Y2kYX9S?l!YK`$hI4}gT8Ho^#6ei{-ose+O zdvDICGkxn0Ld+QKrE4MSRVS3=MUZ!vd&_#V9O;gw!e?0KA+WBr73sv+@ri>NJL{#( zXbjAFPhuPxgg(G85=|nT25LC_4CV(E@6oUuMZ2ca(7Mq3s*C~~04nL-H5)`32%Io+ zWnTxFtNIy&f>U+lnfS9q%#rzVvxeu);ozw`;82p6XU?bb#D?TE=|Lzy2yf~NVzO4F zHJ#!Z343~450W9eJPxEJJPD|k#%zSsNKi)A!*aj!C9<@wLt+5uB&#kw!sAne^0 zM+frAx7qm=yKz99PARVp8hY-MdMs4oY>9ZkyH7)^4r8!ilZTPDVV|&XT#u>TtaDh@ z^MW}JLD~V+3vOSkmFY-bfQC@Jw#mE=PdPZCA)kkfKI;#7(A#3GBRXHzm+GyHwP`ge zr$G5ihCzn0tdxN;Fv~(#!YUkpQ_~$p^g;LkOeJ<_m7CqFDphKOw7r#T2sBbjzx&-1 zxmyq%7#Vx{)w^a2&gE4$$oUZ#;j0QUv|4)t8PWadclX zIxH^{h0t(^B&i_DgK;fqE+E}3+z8L%+I9l(ZQxRluOcT)NJ#qOq@JTjHGG_nR%_9y zdf7I+yWzXwZs1W+^kgnFud>$S2NPpjZr=RRl5xkT-38qqMTuKaIbvbaEy)%7Hr?@oDt&roGu#tzFhD?T#kd(g#(b z`t)}@Xjd~V+=KNxT&T|1aLv3p!?&~oNMA8*h<+7E%W1g$j^5O8KO3}lJzWz>kLTm* za z>!g{WCB0T94^>VBEu3Yn)<3NqoZCql?4r#Odd^^Z6u-#LLpyQ)9frw7cw9A85Bgg8 zq-c$>UUEAzh>tAL)N)~+9X#{vsIWwt5mmR$)Y!V?eBgP=dxyb*cOx_JDXAwJUdjdK z6!M_LXmErCE9&wkJDjcOXU^29^ejR8G=C=1Sp_oEZk16B1(=Q0amzpmy~2}#Gd+oR zEn8e8?Awa%97pn;+p?`mM#_vGQz@&wv(ru1+{0@T_&WM&5htzdN?Rl8$<*&PP88>w z1}Ng-HSho+I?zxSI@_^OZgW*6pw!tkJds+jfdl~2frPSb+>V5Do2w!Lh2y5-iEw=l zBmjsGB$P$?b|jSBv?BrH%T34cDqtJa`P;}WbaUlV`mhCzJRP)GZRJNWQ|bl~tyRvj z3{{qX1E^6Y)39b&o;m4GMjtc4T~{ngA7Ee>6=aPqvqQY`p0kylLM>-Ak=jmrzL(is zfcknx##tFn7iF-XwB4g^fyT3GHVLPf+4M9%r4cO?V0PP;s+W*ol9H?-n^POU*CdJL z3VP-i`8LRoAl-vsF#HSeq)n9_wv(MKNK*Pjx7;vWFj4*HrysUEaUtx)=m47WMtq`I zRik0+Q=gedpQ_9S+!nsI!5;3~@ln9$>rlV?zLQOxRnz%u4e30>4Fk493T@E41ZbhXIIY+V1yHh=c6ZtIN?>t~ zGOt^&!B_5-dJ_36b(B(v@-2+4Fn&i?11s}>BNhf^S)dW0^!+Btlww^IsPN`PE?Vu^&bs(OzoF9#8R&$`)*ia3$_kS-Khg6!nIp+X{zYbvGP+Xu>hBr!(#7 zz-vM;_1Ycj=<7;lx=%$43tz162u!Pi6mUB(`Lz!7dqDE?z{K9Zt$~wqcs+c%tJlNh z#c~|eblD|#W)JplPM+p4$b>fcBfM+m6u+8fl?FaC+BK8)L1{pcunq62A5jOiT-8s4 zq$ncqwp$ALZy4O&qif(*#*TQC1blYH?3hY;CgQ?D8gSq1bhR!gFo(uTIl{OBzLGfEg>>3^neCHh|bJAaVuOP}^GtT6d!Nf#ZCD9XXdX+U_`IE``OGR$X z;oT@ore%RvV(1J_lZGS<(KD)lHDm~c$p?%^$hc?C=2I7DK6IEO*G9Wx25+MyrzqHs zwSD*qr*}d6axv_=|>T|;#B}NW;N_$X8IJ1ircQZQu2P7 zT%3w;h)JE|J7P1OBR9sT2KFK%C=uy97v2j1oSE*xcWN+riypabxU+=+)Rnv>8E=mo zcgdbW*}WTkjduf)fOO>dW89z!+VGU>(0>O2x3zV`e73XAziQp~tJV!)YFm<~A(O8; zC{=mSF~Mwf2(ODTR7kH?C16RSm;y9w##$O~LHZZHd*h%*)!$>#1z5?L3&7Gbhg+4} ztc2A^s};P}7{e8i@xDgMdg{dLqRGPiEG6e0%;naICMe{i0+G#|H0tCJ2M8nCR zHig@pm=&_IfG%jfUzK5yhta^wMmKMnxUDqM^i0w8_SS9FNMhh^jyn`D8m&f-4UH}n zd^elxX%nuw4z&A71t__e#qTXIS7x>iw+0y%pP*`W%Lj|fJ)|D+ci&IxPXF5RCFIU~ z*SkV)ZFsYJYR6lBSe(x$;4(XdlpO2OEtTIrq+kv`FFFSYz&;oS@hYE9|Ene~$L-rU ziUm~~wR;>l+rh|eB7)u`i&zqloEk3(QKehA`F%ICuYTC%N=01`M=}^@;nJDzJqQ>; zsre5W~7B?W{@7OtTaYvYRYGC6gIDZHG%ios)}M-wBG zj9_D~6seW0k9`Nc;f4FB&g^qq(BJQ}0QCm@=5wgLqmm64tws%g*(f3`%oJ?87ACnMGh z=4mX}7sA*3c~A#cVLHz-oLCibcotgJ;RY3u8P?!ccJV4<10>Yu3)ywsTyG(#19!x>!YM-N&$@^LE@EeuZZVbPeAqkjyo1KOIC>I! z!-q1|5r!vPnN?1dbfw{@QaB=`UjIBjt;6Y&Fp;v2Aofr;lPJWSO9y3@d|OROcT6Vm z4$1;xkrl8d8F#x+9<4%#MBzm&`yDdjCoAzHSV_2!9lf&Xwgd$C`tnQYPN~& zku>r-X@g{pbd=c&mSh2W)VZu9Le zukDkQo7=c0r7}SsJPM4$VI(gGk}+c#_4Cw#iTtnA2^=MR44P5TrC+%hSf|RQ05beE z9tQNqd@--TC`sb&&Azbb*YyUu(J14K$>sKTphd{rUWJuhP5HHGI)}6}L_uh~v|2Bg za9=lpwV%}x+JIwfqfCFOK629uCB)ISW1f!Ho)awCNl(`GX{fAe46w~nk`O0w{{Qv- zryuuGiXmYx8~_?)WfwwcFWyb-mhP#7(*t7(=oBacRWb-l3I|o5E-*O@{;hX3PHc7$ zquXzx8iGiD8}|0}SURjf28^!4$9fE!gAsZtK>#~SJVp_y=Me2yRLtA_oG4vK0}7o3 zkA<#eT9a?fbh}T6J2;Z0^8q&0h)^5A-a+MxaGmXVDs!!69f&H_Q$(mkdz#LuWA!lT z`oY16WqMpM ze);*)b8NuRDkccNS&hE2@M9AUiSH_b<>^mLvQ*x?d#5dA{!)31XEsM#l_?=05-%hCjq&=#|0=H06RO(}M>SqP0O-M7V)Z+JUb2M4ghL2Ij@*SZyZLgTpgq#uBg z(SUIP32@L%yS(fB!Y9%I+_>o3nv?~)LdhfTi-Upp2&^3&5tUuFGgw9Jj1s(Ils9bh z;iL{y(bAodXuNE%j2GT_Ivgz(A^@W^;8<&Y08=`9yo&C*SPyT$j`OJ!MKX>K5)#%}>Q- z8w(CuDlaVeeKmkSgcRg(CYbZReMoV)7;l|s&y-TbvS)tA!1{vYi=7LQa6B}J&pw|9 zFZ)8&1gzPZt_4+esZLvy=r+xchn9N%n$F2!i#ml&5Dl&;#g!_&M)+W;jq?IhdeyW- z?X3#ya_z|)Meb!3Ejx)ea@`GyHa2V{T6?(mh1X5BETMGJSA>{QtsT_0z-~yk*z!7b zYZhxGx^)xF>9!X>HYeQjbO~rT<&qCo)s!@a}UGMl5@S`u*>#Y-IUTn2%)g z;8|~5;4-iwXc>@lyuPzA?wB_)8C-~dld&B)&nfj5O-v#Tz2NrfCKasKpH{H?m5Bvg zKfLHfERDShv-nkDwPIKLOYzC&4ukE3M)QxK&g%Kija@-@Pa*bRoQZzkU_#%K0C8ip zA$Z+W;eLzrpl?ldoe(Z_N~>-6-Ejq>W7rhK0T-5qCIM-lpiJ5a`nm_V-z0+tcz98s z@XpjO3g&P)Wx=E`kjp6fv}XvxqK8o8GOygRvQq}Z zrw+ohrp!Sp01{`^{hLA5V0ZjHofFj^G^H`x0Fsq(n&5#9*AE)hY=VNDqaPUN&t*7h z^xO*!i3DXROghUNPU;Rg2?aHP5<%(efJlk7$98C&jq0+jxpgVcXnTK;y%-ZTTfAX9 zx)Q`yD?}Kl&S$94X`U^MvJ(TCeQI-`jjBnAK4CUa~uf#B*XWlA`TMghN`3dil2g281n2 z`_wFi?6P8Z zpFYf=vdPUiHJn9f@Wd%dV9^VjiqC%d^fG)g=Jp6wq-KUp(zrlYc)O}C3}kg!4d?ZT zzogOapgZbHzKYSlam`84ZY;%`b~8)l1`>`N=-Wn}lCn57)0qF=_muNu6gmU9dIfN}TY_c+7&zaPyCcidEGa9fZ zF|EXkgAFr^Jc8@9Q9~eKE+`pyC|i*32{M`toz|y|<;C_^KC+ZY>XXEM|9i-qR5s>u zW+Tukj=X}D)L>WxmKI`HV-c9nFVqjrBrv?tfd0T54`#C;>lkUmIrW4xu1tiEe}%iL z{}y*L4FlpdM1n&LHoyxn*lUPc##~K@#O!TXn1i0o&@#S#qyvu3$#NeCX4T@IbByk%QT-TW+go-* ziq>#R`pF)@aie1xn4@c`#$ch8?TQax$;YtJIJr*iv#t@-wag0uERhHZBD#9Mf`o)}*JlfG@F-K8EF#GiWooiXzQN2$ zqirXoA;BTRUrc8eCF+np1GC0_>`AF-W=2j*v0C07%`YaUFFl_vKItNvSBmB*45NU( zYNzqNA?@2fFLXXZ+`vfqtsotSJ`J?L9e6cRaZxR?_gd5VU|RUlMC3~JM@Paco zw^u*^oo1}|d}J(+z`rSW48%p^EMXR7ZUEnx6Bmsj5wC0z4pBJl!C-|lRu9NM03~@e z*8e!3olok?zmw?slKD3V75TXSp`M=)RM{@S#{MIQ6u}=P|EoaYr7FUqs5mn%d98nQi`g!E5Bm!yycZDO=N^%N`gjjQ5Qj0l|NA2FRzA!tuuzSWcR)=OTR^O;HitD)Oa+j7TnT<>9C*U+t zk6{?G?h(5*vH!y2ESwLi=fYN#>jKmUtN(uf12NbVVf?u~4v|C3rL9pkD#u97$X0Ni zJ+1Vi6>y&o+kEq8wsEt!EU9cdL~3`X-kOJ*wj~}VjU5Z8#(8(eCb74E4g3iEwb{7t zlksBSS%19AY{&h_JV|GmS3f;l%X{JQvhEEN&dqtR^E`es>zizE9S zke6r=apPd=I&}rWSpfVzw|ppkw)nt$WWF&b-%&2`HKfwD3`>A17bY>(B8?on+O5uP zT4jB6#6}pJZ5XRkv4d#P&^R2&F`Gve*v_>E<-2k5U>f&F zGZkfLUwPncD059p$~!C45>~qoH8u3pN>9mQ-in4RFJIb87ggo5Lfg2mMOlTethqst z_vt8;M?sYtvqnTEs@Aj@HXe4e4Gija)q5bmM2y{)uY~kOnrlS4CHo%ZX0iliI5ar=@5V&a z&g@nHD)=Y}Dkf1?BrxXy&`?r`>XZh3{2ZbZ%1Oxhvg8yJ2d}>RG}tn zXZgz7LOQ!u?TjBZYB0A#O?=E@v8tErhxPGdSr6Te)Fi~!_vsIi@*DQwkYrXGP0cw- z;ME}fz5iNEw(zvMSH)t_EU`SB?@I!1Exl6|wYH0+vU|Akkau&5n>oILyf&p<`Z()9 zCiA+&l-g(G4s<`CRMAnFwH(5rmSJnv%X$Jzl{cd?DeCq8dNF^---lzaKx0mu0R|L; zpF8)x|JuAJYbj#R*ErIh>YHn{=7z=`U-?ot03jeo5RE17ZQ;Ith&hl*DDb#Tc-n4d zkb|a*48>}`bWw(W72@iocr56lt_4JvdA)!jxA&@B!`iam9~S4U8YyOH*B}iz0-g*< zW*r%OZHzm%ukJa7_^5%gPSbHVnZDnzl))_@$*YPHE$u3 zcRn>Uc}X2;MVd1f8)PsFP8}N4omM!55y(DOm5Rf(rIXrf+Yo&8hFShP^Udu7S*4vw zXBaVHT+i93gS(Nb?t}l{PxFVf^W|`uq{1i!zC<1GY_US$rl$R8ao+|A>^M3B*_XTJ zG%%LFF~^|tVAHr?F~__Qv~@a~pO0qch+S{+)W-ghQoqCN8(5HlB3rACj>F`eYe}_o zs3~anVD;Vlbmjs~)s*TOKUbqwbrLFc1Ns(YX#qW0Son$aBV%AGs?!aQL~IWWK#&+? zGr@I^Ymp6##)1((`vZCoAucC2x>yNO6-2`94Dtmno-IB+ts6R-2nE=mF5^N}9Myw0j)mto`#ML&-t~ru668~@>NS`rrEgY;J$L3>LQ@VmmLCgdIC61p8X*m$5mFqO04fi)e19cB z;t5d3;z9uM&-8t-)9KTVf;LIu7NM)UF1^NaHyf=bqk%%Uc}!GSMrs*aU&L1bNZ-8; z`@6O?o82e6aJSM^$Lza!Ms7hW>n!etQuWZ`~IXs7rD}zq&Y6tlFEP^{NWz@~t$<1(%mY zD>=d^IEbbk3>7y+k?kRJMnf2>@=l2eY@(5keWlT zty+3&D-rU<_^81~L!$xE1N_L;q66vY#ZXQyKF?n4G_gz*$zIeK&uYr{ieb%qYB83k z%~hFo&+?caYxeW=(N zohX5a_!4mE^UVRGT^%IT?KM15Wb_8sIkvvgU@<(j51>E{B25e(@inIM0?CqlMFoRB!BnT%CcBjT!A0A_H*()MTP zDY7mJcYx(`3Ta1hcY+^{7z`*yxBYhZ3@Nij?UsSkEug+)d=xuZhu&)d+ z+?*7r;Is_iJXUu;;bSkvHj#EhQ7|9zW7>j|M5mwd%Y_iZ#>6+WRBaD1vnDjLjttS$ zMG|f}Lwr-@?D=c|+H@w$a* zqz2Os|LjdVT>l?OJ&KwuQBVT`$*lY`-3%ecEStUQh=+4UQc5P%pPEVp)kRK@m^LG& z&q7FHDR!&RN-HHw3GlI=O?N4DLP?a%)IzDWzYX*b=L4ZELV9`Ul{y#lKR)|10^cWx zb|yJ(pq_f|q(+2>_a=7LZ=|a$QdNGcEza5wwZ)m9X^XSo#1!g&Zc@5&N`f)}CUlg- zgw*1npR~gC9AUL{ErSdOd=+km!EM^u6;%*^g}?eUEUf<9AAOQ19%=@j02u@|b1$vu zZT)sAe^FD)Er&&SxoBR0fULAq{N<|v3r{*qBlo2S?J}J|`}|y$a4TeTa1ahsj1LC4 z65Sj;b|unPOcPIp4!>bS8*CHP(8eoEw#F(;RL^6H0s^=+Vf;0hKDCFKzzs=M042R( z+=>oHcu2Dk#}$<^(Nga0gDnl@@QXk``{*Taa?{Ya?LV^E9Fv7!K_-69frP=Y{f?p@ zgT2irJZIX;IAO$`YVn!s)5PFR?(pT1a1HtOBy(a!5%-W`$VKdu;cU#D1>M=gq-;3n z!&5|u3@>tYgKj~#%ALs}BNX%ZzgIbW%d=S4WVQEX{*;ZEh7o#)jDdUmiqfoS3{7H3 z<VWCT?n_G)pp|N7@Px!$ec6Q;NW82Jrux+9g&} zSL z`WtFH2^&+BJkU2xn&Tk5Q$=y9Ae=SGOT8o0D8l}3eIg|{ z2C2^@)R*Y=iu#7of1-8+e9;@a3WDK(R3g#P{7~>#Mip?S=+CyxjOo=}VoG818)M`X z_2NEGL*sj3Z&P3afcF#Bb z^Eu^D)27Vrk$cs!vBH$@t9p5t_0S6py?z6y0w^9to3u@6erC}7|6Pfd`IxQ{` z4C$Yu!^9Kg$uI6@8? zh^p2I#b)d4GoS`AF3lO0;eNfsysoljO(^QWU<$==a?VGjOn7@MBgA3m01qb&dO%UI?gnbSZVsoA(TSVhTAeP8)VG0;r1vyZywWU?!y%eQK1HH4K4~zutq*UOZ{cEYncA! z;y-H>eIpmhsm3GCz;G;KlLJOENUr8zVc}^b7&el$yEdfFAR zj%N0gpa_?&c@20^@*L3|)vP|SPhEcD!-7I${Fvk>S$oT?BkfYo zYkx?{)Z52vIdw*$ochd$+@RyAHbE~+=C`Be6gbv*C~pXVfG=SfCQ^Foq~$Oi;N~UK z`seise8BY{68H7@BPrIS?BD>l4~M1UWrJS%hNxnQcq-xAWCP9zsJ{B>O9BDU!k|V2 zczMk$dw55*I5H>y@zDRgKsc>0XlGDe@=B3AZ}dqCbLaHHdsK0t;v+X~jxC}_G?LPyDPojS!p6~m zv-p4)<`f8OYy71;#w6m;rF$=a@b_JdLGwv8FxcYtDTI)L!9aK#*JPJR%9H3u41$^j zP=j4FNw*AnBMiEN^L4Fut50WP#is9BYiw|cAr)X>@Gc3bXdr}h@Y=woY3I>h&9TtB+J3(~sfBgbRDFP?lppGr;>1|Fkp6U7^ik$$qr5 z%iZ}TTZBQyWW_PeReB2FV?SUKt@7Kx6|MT+$a;!WeXgug@!HfY|E0&LVAhHs<+-yr zZd{3`iu)F(ERwbhOQUiJtymI&u=vqAw->}Gm2{(C!G@_P?L)lvHLNa@O~<5?IB4xM z)&7Z`>L+>}`>_svs5@AakI}Og&c12r<=27%TD_0#w+2H^t#%ljpyxgC=5MCQAR&DW zR}iDwC6VZToqlC4E_`OCHAP9-t@!7I<25@nCtBZ+1sBidTGAt$k?iRYTtG95J^A}c zt~_oGQ99y8I`K9)rE9*CiLxrAk66XzZh{9A=Ie=W`*x*cBy)B<`I{RCBz2Y9e^hgdxcD8(W%}BJBLpFiqj#=LFIG4| zJpA?M7!$$&RnK$4^ut8}Go8PEgw>vbh3n3~@+BX-q_Mij{`l30{^-?^X8&v4-(9Uh z`2z#Q4vC|JL{7|%ah7r2APj}CKaAEVzzl|hirbYomUV!_gtP3VsxD?H5>haNp3aBi zX9<)vQ3k?#rBMAyvc6<@I&(<5gt*0+leh_A6z`~5moK(vM5Qnd3|8u{f1aM!i}Ur+zSc|E zBxfKYiuFRDjZK7)UYSFr3uh$WTlWgD7M4UxBF_7Ixt@j%`CvAE%MY6? z08>D$zfA_(rR#9pp{I_ciP8HFTvG2~;7tq*EUH=DR8t7=cU(hw9t=wYQXU2op`KRT ztl7QxcI>ws`))?_7{0Y_o86F%b|gUK_0IHhy;rz%36WH}NjwF@2NxieMRM84RiQti|yZzJEgzLZkILixAv4lOqWpe{FoP;_tg= zpynX&#*A4QKh>0c+tr+=S8>b=VCL}&xNXfUTmiN zxnKtUg86e-{jl#u=kubd^LgQMZnKsrTAvqQ>jQ(31!`tmJ@h6G(sY1glqP%@ZK^Sm z1Nn2POU#k-S=A+L^kHjOC%BF9&!sBy=)b9XHS0*!he{RRS5%KA18?f4NijlNk?JNC zBLPgm+gPZ01@%a1MZ?`(EfMtt*HBFSmRgA$P)R6=W`2cN|026$%DBl3|IJ+Y`_kAZ zBqo=BA+Xr)hK^@{uh&Z=W1b}yTC(5vQvXkKtEb!(8(r(M$yFlz!i5tED!rqlK?^>~ z{Pbp3FW=*Hbm{;FJvV-aJUgR663bGJZTq096maLrm5avbP7brsM8COa@^y5+UOW@y znrs*n2EXvB%>|6VJ*y|n(T7swqRt@>#ika5QsE#t`;FoWN0{->g*BXvie8HN7smfr zJ#AqrQbr4csj>CU7pc^MEfAtMxG7PFeK610xG}v(Hmn9p=l~FhX`dXJ(P3hiRgL^u zDfw2y^T6VPsz39aqExXIbO~SZ!%nY3n1nX(r%Q;SBqslHa*-bXl5J6Ee3+BHFm_uZ z+r$va%uixC3^-a|q;B}`HRgxKn<=G{7?#Szw55SPbWD9$jM;^=V)2)T7n+?NwRL0{ zW+eG}z@U;1UV@Hii@*nQ0;q$gDE4s0VxuXse$@6tG+oU<=;O8-gxj4wl3VxexLl?U zc@v2p$7ouGO&P%)<+ao1 z+c0MlR}cXj*iXA0aK(Ks1#JWyw{_d*v*vq-Lu7ILmnxtsG`=Hdj>KE3Y9ke_lSr!n zTsvk1lS12omdnId#Qz#D*q9d4W0ujBSXz|VB*~=!DOQ#bseKk4AoutxiA$eauRFm1 zO5z`J!D+optmfk_g1-Zgn64s-`CBUtHv~v%b4qWxcighwXPP!)LEc9p-*q`?S>5)_ zj&&b(cgq~9Eqhd53ha=M7t3+&u00knVrT3owyB-0Z^C3v{aQM*9Kg^`Au^Kg3-S%O zMCxyFLi#xDmV}orJ0=Nj>E#^f#qI>4^LhI^q;T_v+)1e3ukxnwGhS}M=X|~mddle~ z`i&}+118SGg?aiO?C55rvsFE$2n*`{_;j=!ovwCm?)NYn5C`f$DFM|B5^@lf$kM{<5syo$}e+>UO_M_{*j?yF!YbtgZ|Y)K*ZPE z+Z*F!49Ur_hmh-y`TwAe4wI1DakP-g;)7UXpdwQVo+boMhSL?KO4o-ynKOG?p$8mq zBX(ZFA|Q=Wff^gLaBjQvDTXo7`sxRl4j4X4Y_SLobE0gXLQm5AaP^k!4#So&0a-EBf#pHGFVv;QASW9^SUR z@z%2=;B3g4KvfJel{FSG85X=SdAZ80+g4pR8xC0olG>Ki2uY6`;?WIWsFJvG0`m( zPQHyU@)m@Aeh%*$Khb^>kgYmL;BZd*_3vW1#QTw>|QA1ksgtBz-*x1A<$4&bA7 z@K!5LLFXZ46x?NG8WW6{ccor_F-Tn5p7Nh+Q*Ai?gqDMA_Y)421!MS8}O-czU;G~zaY@5xk4=Pw{Yy<;?Hh%+sIXIq5AgTZn zenC*t=j(7Jk52}#=;Zi`u}Xc>qYl05?A=upmRk`pkDE5iFdI#oCWcmwGlyDos`Xgj z)Jo^x-WvXQS6M<<>#;|-m!a#*h*A$itaN~%P9qxOozH&rLP zCS_*`ktl)=bZTN}cy*2s2$ayA+)_u-wKh^~rErOw+A%Y53m0cMW^r~svfja@u^EZd zVgNQAPDaI9SPcw1OeUIV?X!JQOj-+1h(AXTA0dH~Hw%kqy9E{&YE$iqHRiv}5ow+G zJRN5uKGbIbY+)`IftB)G9X9`veftZWOTBCB@2frD9;zypUCbrb!hE~Wv|Y|t<>VJd zbu&~$H??sa?Orr_@LC}p0;eT}K7KdIHUNeyy%~V!oFl=Zd%9ZCykI)HO|ke~Q{zna z)Xy%PUbUWckT7wtj>YJ~!7}BEMc9L4990?>eC)^Y-D}QOtU>yh?W#^TIl`24*~>l_ zE81RweJbyU&FZ_8-K^50Q)48ygqwNE7BPz3%=$j3ok+wiw6M2ng2{kMGB>}t_!j21sVbb0Mx1T z8j@4EKdu-0DN3w*(~v)b!iuwVzv&ldDzgkCWf+#q0i-66yqJ+&LdrryRY#JD?{@d| zt>oQr#kNb1#9A-sxP@_YSJ5od0$QXdS?~At>KA%;Ck34Qj7HQ$E?{*vup;kuj3N7A zPGk}m&D-P^TK03-Q!5AK8ht%4KYTT5N(t&S?yPMB8UbR=LFQz0is|_i6POMxG6onH zjZ6h_;(G6cM!{0gOvEU+7GzTjcIb5tbS?LxC5`SNQl>o zDd+wVfT8{A4IX2dGal^WS`^x{QC<-4hJU{E2f1b%P&^Hrs=Wt&(j+M7h` z95;Agt(rA5V*9RV6V}j{QaeGcRq-)wofyoj0|TX{qjx|A7I;(57y44a(#Sf)9Vo?>?NfBPWdruIK?VT0rT&##MIiJGG#$;h+YN>M5 zXEQFWtF_@T&qMOgT%c530k0eBryVnoEPUf-#_q)uNoS;zvhD1^IK~v78vf@7`4d%& z&Dk>9nP6pALs*WEb~9EC#?4+iDXya#Wyr`iWC5nD%Z*}S1k&xf4sfZ{SPlm5tqw3@ zKW%`74__v$Rsa(AN!;>QlyBZRAlSGJAr0Z#WcrIoN`cd^5Id6g{Zy`f6XD|KT+TQ65Q8b z-Gl|-I~nEr&}T6NB87U+c7+GdA1f~~FS)09)w;a0^ln9I>)Rl$_{gBs5sdID5#!bd zGt~fxzfA)$UVh8B2yJNJ?>FxLn6veAtDpFKRWB|Wp2yZ)Q5IHsE)#)`M1*>ZvL8JO z$b04A2F3jXCXhEoup@zZ`oatu_{MSzYJtiZL0~<)CY6u}C3FE*i)KApOhE&ud^q&{ z^ip`47G@$sUtH5KmZ_%Or&`U>Mh`TARuU+X(PSY)?)kXbL#E<6D(tKZN~^&66mf#T zU&@sNDT<{;uO+SouE;4oVn-O2RHJ@9S*E{ zN_GIih7t4Ndug|q(vkAJgT@5cI%OdV0`@(b?R)zX5L7jqwlc6B<ivRa4Om=Wz%$0_{L~P&1Bw6EFv0T*`PAc>kfOAM61P2K>hi(fclnlk4 z5H~HhqaP@r-s?9|^|GGNP#Ip;*UkKV*YK+tUK|kX9;C zAL%${Z}3f7a7;kgvcRTPiy;UmyBl2ZEzN_w@lx2Z0h$H+pQKiDH~(e*ZiC@r3n2yQ zFew1|^FVgIzFTI$e~tB|D+?3vpij%jI;QZAff-H&FVDSK#P##+0oKmSdt`s?!*Z z^vvfwLIhSk0}*-u2;wf~Xd;Lq8;W1##Dv+icA@7L&IK>nmaEkcPF88_Rci;S7jV1P zYlj(_8E+fecupm8Qq4pXk*;Q?qwG^SlXU#(yoI;_jhrJVoAY$EMOUdBA^#B6?cKn2 zCiA`+`IMFIp;-G{mF8Nb)vhwMb>E(%A@An&$v}7y-d9U+^NSvWo~Y*zOCE-!eXFW` zS1KG%`O_B0zR}D@p$YP})D6&L42*`rtMc5jBA05Ky3Ue*^l96ZACYVnX5YGEDpl7; zAPefMSC9RhA!P2_zPEAT9yFiO&O&Sj(_YOz?(Lp%VXfNe*waFZ?%AfGMYgwJ!iwFnwKg`8T90Z#)l~~+P0>J zDc`_%w=vo6obs;DORXhZ!W~H+4l_`?w_3<~Le}`ow8-29u_ag(>{Bs}67LZ+wnzt( zwFN*x{n9h*sVNy>`VQOb;=*0}PPRfDX*WGuVn7jZF=L%o5e317HsJO}Tn*jOtQ)YvG zYJa7<2pD_o*^W~c9)9_zZdHndKK$cu_8ckxJ&#{i5P*p_Zy5F{Abp@`ls+cL1k?zSn{lR$@6N5Lu}eB6Kd zNIjPM&%}ym7FbSAI9B~6c+3ay1yZBlV1`6dls0C)_;Q0X!Y6FO|5@FP9&}18-sAeB=6^z(@)@|Ehf-zQ4NfD^QZ?f`-mCF6zTUg zuF9Bj6ZN}AcG}JAhEou&rzbU?3#Qhq=W@k^>e&xx*Jx$d`D$2Ej=Yt)L?O2f8btQm zi7m!jmIMX;*!HSBRC>g$;AM7nMDrQTe0G)@b<&M>NFz+iGC~-S*naiIL947{l|hS7 z-rHOybxVU_g*{KyW6KJkwCvJ0!HEauauV`K1qqYiLRk6{7qQINyssdw9a~Iz5IfU} zLs2=|jS*V`(t67P06Jg6>oI^MFzT12m?r(m!Nca*J z!l8=;d6bQ8ki9{BS?WZJXJhGM2wH+s5Sk40k_whu4%yk&rdS&fEi95KoM@AD%#e7p z(J=@CGImyx`mo(4*Q<|tWK1X`>aR#fMrC)aX~S;5o=4p18L}79;ndqMwD+qjDa)k* zInVg;yy4;YS5X(s2QM+NRwchaicOvk0y+h2$y06NxYFA53^LgqD#Dz%CsENLvV=#@ z_R8mfQx^6uWN1%m@zIl|sonVBPgaZJz;{qQTdit{yzpIJG}n&0!)`u@n0uq5x>(eh zr^T}*W3b}Yd)eIfsU-4o*YZ;BdwdT!d0>d-xMny9!#lz!A$@;89)e9}DXPN|I!T6S zFaBSJmH7WTiBIPwvQJ}w7hXb+H0++cFccByyuSr%D^C#)R)(vHU~0ai?Imp0k-Rd# z{h&TOSeN3Rm)?i$->tNSqH=LXq~G#NNmVWzfXIz1U=1owhEetyzi@2b{Z1DS3fGHY zR=Vrnv9@{IqQP-q1L*&f~0<8K3L2 z7W_W*bsbrv1;=4_8TF6s>D4X7)t^IudeLJ_xUk@H>irz(eb~4+#>n7(5_>V<37M5< z39}lR2qV6Z5TnjjRtF2{_pCG@jH)JUwYyn30*%zMCiq!6`BT_YA5I{JV}n33#tfhk z?O(fwL?hRR`8GI5;rs81^2QEh2)(+^&8(9A;xh}sEz9EdYQY4UVxa6fNx3*QA3ea?*8POC>s z!7qY*=n6iUc-fl3^ZLeZDfE{vZ-AC+>WT#C2G8agM036##n7PHzB5y>Ef=906iG#{ z)+!DtDcH+}i|flZGaRw(eLZ2008RPi;`dlRR`+mEzRx-K&}MMhag)p!6t0#0Nt4S6>lNhj@~JErVgW!e(@ z=KXynS0+WD2+VO23;Nu>-lw}eo*QVZ?kj`_VAs=hwxAkzlXByixV+b^a<&;vQa6Ah zI@HmYDj=cs;%1)XkWq1}mCkWV9fGUEZDgY%cymrko8Apwssx-~)yrqIi?Y4dx?YCb zU)Ae%ebwFI4C{n8FUs?EcZ<2Jq2?W|-?|&DIO`V1I`gB#;OuBtWH>Qy!`YI`*&nYb zs~MQ{a=XF4F&4$j5zyif1^#>Z7F=(OaS^(L{Jx8sFM!Vd9finYY(fM^uzKPanzi8f zY%x<%^BAh9Q<*um6lC6x!g?85H{k8z_n%K`vI*n%X}b%q_^OQ-(NRL77DQG39HIuC z>P8Zy_vnGD=74j}D5j6St-PbQ-{q@y`>f z6BHuoWhkF}B>$z%+#E>ZABLJ0^~6+^11T7=V+n*Xm?v!fpRZID1wx&yZi<)gB3il+MO>*HQn&@!Q@);i zkwh*2icQ8=WM>#{3n+nxAEPa^GWJo)UXq~BW*^8Y^?Tn7#%(h$Ge<%dCD}sGT`+7ShEXJnEWx5G@!Po>H5jQ0Y{;WqHyjnaI0*4ljUY!$Ds6xxUUDO7 zf-PuyJ*n`Vt%dH_UXM>AQ;IICg#Z`1q2RO$(uo!+J*HNu+==+2bWIu)i1@8UCSyT? z6lMH+f*p(sd^{zTf1R~Nu`{XbZMbvL&6Xa9VYwCAxD|pvu}`-UurAx_<~^ruGJdU{ zr`9HEvT6UBt-Em|R$zh{ZADLL?OqDnly&209IQ z)LFinx@nUfxovt_RDLB2*yK6HJV~{&31SZxU%~p$=*-gFg5TrWtP?xCJ^@mmNy@Y+qOF7ig0CNqp#$Q^k_$QebX0oOj?)7w}tcMR>?O!mGtWy zTjH65ro@&xybC(iqXK|Bc^N8zOUM$id4gfG7o_wIyo9OC-<#b2$VT2ElKXW(W@Xx$1P-C(?)*9pD!?K z=S{9Tt!>))g_6tTHoUB9BU$g34snJcQV_)X4Be0XuI9f^X|2^D_PG~*I|$)j`*scj zk)7y15Xvq)N(09F<{l8Z^MD#)Ni{9)7r-lp@M#oiGi=Es$91qee2Al%`+lOW+u2lx zwF*6(gMjWU{]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[cF(O(tMpuHv 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≦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

        %?0_z~UQC|*gV z_fdG&ZYQ?awVOADWB+s22L71R`*!47bM#Dt7P=>F3*E`>zZ~FY!7H9drloC#{dL&Q z{IS2XiIqcu_TeTo&AZp;GeHGPoe3=SdM2fHKOz($?G$+`zJV_FzH@M3yZZ(uQQ#WX zwV?Khea4xy5Vw`)-W7XEH;=G%DI#J4kq&5ulUQ_tK)jKtPXf)*pR0k#Vt`V+NpCXiPFhfCD?M@ zZ!#hG8al{~5_qexSZ9wtbAWP1f6&IfbvQ3LKTA1zxiX$CNB!c^Iu#?*SRgcB9Tyoi zB4;9gb@qg6g?mW93iergcN#x)NzrP9SRPC+O+@*$G6% zWlS!r!n;(ZqPZ)Iw*rJINE;ihYom$6%XqhL*1^K00D;5W%_-hd6yrePH}e}c0QO=I zBZgyuNb^BDB~aiX)fSXO=;pl+@@ZvP>&H65^D_TkrvGveS$+N3Lv zWg`2TIuj=tW{T96Z5(y3*>Q$>vX4xlqsP+xF0~^xm3G`RH$38uFBNJ*S~xBXj>VzS zp{yyGGK-K^iU^sb38TK5WK7A>r{6y}@E^M*cKWSE)sGJ{4w6Kj#d}R_>P-RH_EZ|uN(L;`>}I1&aq?Vfq9d5UsIG{T+BPQns;h7tVeCQ8N)y*QnD~zX9JOqb zVSD?nNRBx5ITJ$9CX7%3P-mtfYCpu%D3&Wx1f_*UsuLW<+uZ|zo4<_Qg(Vum4?BL$ zf!Pk|*?=v=+;I`+sSxWru%CgVZM?U>$pgDybah%k*SLG?Ftz8{mm{HR*g0l zT)25u;YT)8+A0NV9`bNzyR29*YL59;IF~=(z>f+a2Z=|}b6F$fq>^qZwG7q6c?H80 z080F7!w$6CJtd2KwRF)|q+RyW#l1+NNEseN7UnIsV3=Z|^gLZ@BX?;bCaHgT*zbw{ z<`&p)!Uqp-&bl9V$rg`m1a9!U4`kC?qwHW=W4K}I#c&Y0vM;@RB*K?Rom$TwS$1(- zPB$?nAqRXZ6Ikd4GL>A)(v4y|u>c_Fr(Z@G%f1Ra9{WoQ7iU`Qg)HeKH^ETXSL!b+@ym5x5%gT<1PTBE00;nB z8k|_NrllKpg#iG5u?7Gv00{teVPbV`VRUbDEjBJPE-^1;X>)WhYI84iVPbV`VRUbD zUuAP`E^TRUE^2dCR0RM5i6Sm$?7eGu+eWe|`u+Y23TIsf7(tBWB$I>+%;h-FICtl@ zY-eW9(r9@>WJ^R$0o(xS$4L0^x2pP8-DrT6?aa)%cW3Xhh<-n->s_DzY4Re!+^+Ms zswc1iJbf@doy3b|^2@q-E$Yel)%umFmy-u44?ds#>C^vfvCf-jB5oH|*|ha`0kvY0 z+_tNtnYQ`mT4bWD#k$Iu-{ox{i?mIP0J)*}ylr506)HAoiO9FYk_HSu~rxU985NF{QknU*$zPUQ-tF4@`Mg)HgdSszTx6 zK6%@Uy3E(%HdN*lY-@1vc419p;hk_>+qEC}8QIR=sW$S$1qY@w&&5U8i1ruyLU3ow zN(gq4W$oc%9ITkNNg8f(DK@oO+fUR+ICfmPltIe#P z!oNpv;2o&mOgH(p_}{Xb<7Ks=^D)&wo~#9ZFQ}y#)h1nws}>r-KfHy%@7KbQP_5IW zhY{5U+{&Lt(+cNF#kn+Tm5F&fZ8qxyCpbHAFVZrrpzHFwU7cOQcL0I)(i#uFLpQUFYwnMMHmKu=Dea*=?7KB!U0k;xOwpPuH0^ zFE7r@?RuSM>$|(CqDG>FtbMl;)zt*j*0x)?Ud`d5n@~aLbyiHTVCjD-m*Q<4i|nDm z`;JXz&@S{@KRiC2x6l`?M|}YRZ}V;z=c8j@>oKpBw7}P8Ra~|4t!j6+PN|W+gIkU5 z()qTFxrW&lNs@H>_;(#ny2#{-FD3|{%4H9^lH1*EHv%y&2{42_F#Zt(wPMm2@X@!0)8rYZRGLBk}uO4r3 zu*YWlQR0myGwn*04nNa_Q@x7Kf|Ys+pZP`*l(eN)(Iwo!x_XBgBmj-fg0AmmhFA_& z5x5kcTQ*h*Gb?gpmmod>=+)mtx`QI?KNwS51yfSp=LnjHp+=d$IARXhz`&mW-irF& zb68-7!6$cjc_Dx=warBcYx05Gz4OGGLq^u@pktb?bCRe!6lN)^8p`%Ho8k}1YbZs72RlRKVyIN%ME(7d`N2FZfdHbo_ zHi8N!DLgxK0WaznhSZ#&T*&uuCgfjuN&?ycTV?<6v*Idt!5jd2cL8tZE7wlVYwuP_ z&YEL*_whweEBpnIyMn{FZ)Z*VZdP@jTH9Z%rXX}lO%Gncs79KeB zL~_T+Ne}SwAk&&gc$_tIq%{r`zu-@TkH8{tgc{4N%4F#y2N{CbU)DN3yR1e2>Wr#f zR&86|*gCq@k&8C*Dp;&v!EF{2`bBtw1xy^E^1xU>eK0VNPaoL5sbFu)ROZfVz>8MZ z8;QWup-a_noN=7efYrM@2QxLP?m>O};-?=K3O0`cp@LDx>LndI5^a*G5yR=Ir*Gka z*VA{&EGoA*moQ@vbjyqo$`gqeo^(({K>0SA#f9l;;ASPd>Hd@LVgl2qeYd7#oi#_% z=4}+p#Q|gm%Qn4E^UVgX`(s1^VqP;zqpNL6j0ZcZAb3zf$4}O{$IGh%aO3BTT8J{% z+otIsg9xZs(30&D?cK53yD0P+dkX;=0<9sU3j!a`=mr51AmL?{A|iMTm>{gvuXP2` zg$R{6=>RXIW;$n_gnQvwQ$g?q0Pt`h#}XdV!SN@+iwSnL*ik)6&Ir5De#+a`^d^5B2iuT$ zKP~-%$R(1wGiVE6gV0jR5)bPH3KaN{279ngRWfi{;2mtl4`mx#GlaUwgB=|g?&m2@ z{!FYJG5P479l4zy?dWVprLvkzbw#5|XqWU>x2{8+^Oy2lz?psG+~WQx&PBy{OtdeG z8-X0XI8NYJdHD?R*43Mz@)BP1dgPMIU5-5bJ?X)Ng;=kT#j-#It6$o=j)7i)!d|?3 zk7{rjfjWaC+xu5$;K#43m;?PfwP=ceiu?EVO1xt|Y5K;eiZq1=WJZ#no}93Ji|lE5 z$fzPb9uK|*w0sKvJhq4?5iLn~xvmzkp3?7IkDfb)2OWTJEyCF+bOs4s4<1q0PtJ~) zKAtMun;(>Nm#Y>x)oZcmitSN#ufr6sx&L_z*57@kg4Kpj)%aZvHZ^)(Ip2N9g&klW zBtAnzZLv*IhmJEg^s$g%J~zWd6MEEAKSRwtgcJqY7ySMJdCHHaj}191vGTW>PQ^or;t(E^NWBJCn?*W|%qUv!-6I@^ZNb4|7R0zm!rC-@E-vQI zSB9d30^U9T(BWkNvd!xyEru+S%v}D%ZzUE*)&TO0BxhlwQS5Y5<~L%JuYrVGzC%VT z-18_EeC{`!s)RGhha8p+Ec~K)m|#taPo<;-x>;l_Kb8B|TTuoQc=2D0jaUPM#;bWJ zK-l(+X0y)U-KPs#W3OJ8vh1_!jp0ThT^8 zZV?EKhsUSTZjnj$Ra_ip{+&tGE*8X_4t9Sn+V9wOi$o&iIqdLjK}ku+KLQ7XwPs7g zR*@)Iix^;kh==cvFKrc!3G5qHe?$#ZBW((R5svOvRl$BfA_6lk{gEZim~=^1^VeGJ zTXkcKs=Chzg6~tc)+IaQ=s7a75V(X@h6QPdWNDOXW@Jisi?zt>NA$h38kL3Z?C?NW z*)6PgxxJZPIX7QY(srnLKs37o>nZ?V8UWsC$(oe8{R{vni}J-nG)+}UXDU-CG+A}# zsd~8J9v-&pjaa^Tw-HTt4isjDnjQEDMvIyq@DmWF&1D5}5q@v#qHN*ss=ZnNvTZlp zHoDLhV*tF{ktO?-`Zcffn`XbVcu4mzd9RlB)bCaLK0Q1(D|)};_vzzT+Nu4E-ly%S zcK7dDUiac+7CkDFS~->~Ckmyq6=WYwVACfv;jSIyK|a<3Sk3&e^Rl_B>KlNWyn)Vd z-HMw53KrRIchNfz4fJrtm;UgF< zP#+>bO_DQYZC+9TRe4@sz|&Gmuq{PMk5qfHS1ut|5t8-=N-J-5zq2ac&?3*=3P+Jz z`-{7~+pa^N89oQGRrJv;{^=((fu*wyORI#;{xN26KW*Wk}GB?3Pr*sEKr1Nt% zX|{`%0bo)}l}?K5vce8#6U3)DliKh%XDwkYN;u1R8ifE_2F~}V7~G%2?hnf7r3#nA z#{eNOvzAGQr8XR{YH}9B<2XhO!y?979NTw5qdX)(KkM%YY!aYJz2x%-cCw#re%##w zA$E8e!TRAb5XwihhNrUghiWSf_Vyz1GMhG;OdjEmC1ewR99` z&KPRV)Np#f(2XQEH< zPV?XMw?+-(AGA;#I=;0Il*C9?|A}ckPShR-eln&t)@R2~@{zl2-qsHCMmk z1xr#(8SCWp`hxb*er65(NX{f13lfQ&WtLDaUPtHL1L-hM1I~Xa;j}@g-ry(lG6W^^ zUQxJ9^SD27KI(zFP4RKrw7jHBf=6Jp0r*bRqfdWt0Kf$oC;I#GGx6VB(%m}#ThXo} zceMifS@idxetg=t8f*X6ovFyAOfd{mZy9GZ ztti>)by15YtR|p0a@p8-7BxUX9Lq{klFat4rtU3_{z@P=fbes;cJpbkAiM;#po~6{-EY`IJmJU_7>en&}u!tiR zBj)Xv9xM8RTIcW<#S%91A-+%hFg9unMU!@fL-PZ)=eK7+PM!-qFjahhL1VDcZ}HI{ zz{N*>02d$j0Ai!t>=uv7>{cD@*=?k*|1sWwco2G*wM!8id6cwyukegaB|2JMy@Q9O z>rzAnSq}pZNDOfSRRHP3rv)K0QjbQ*GW-@-hUtOtW2&E6d||83(C{}qXm~gjhJIIC zNRLsC`#P(=WH>73S<6;lrnJgXk7BmexxsfP+m3Sw7P5a>Fa4YvAvAwl4GUeOf97-T z48>{`_PNM3dze;awfn}3nV$D4ugIPhUy1ROa=D|F5R^R%>ji}xc))g6QEvh=boUv! zDo%nId)|`UF4e``yD$x5~oGYzLZe28rnozSi{c>5QzX$SrN~p@-g%T z6%Sp7Zubk|QUztOT<5Qr9iO&3hy_r@`t%`TtXLKY_Mzjg^t6Z6Bn~R0D&_Z>%wyr6 zJ3+hxc?Rgr3U#~+bMDHex;3#L8}tiA`K;=Chf*M_d&@y{Z$ZpG(I+*aNX#10G?|#W zEwLhqWqG5QT|)ia#7-^s{DvPw1?%x|;K7h=W{ zkv{hcj}RT^q)WFOxaqqp$U?u=kCsbQv4Bz5?T(7MtjQQEgd% zeDi=ftC$dMUQVMS$sx;WIm4u7tk-E;v;v|%-vQTGU{X~?!omX-yZ89rR z3kMGcQ1!Hav^XC+$}8m2xkIC*`;DjCxs~6(BN;1}$3CRx4P5iFvEO!QB9xDpyE-q3 z6hFrwa>y5%#JEd6MEbzPc$pyuaw&B&0Q&emN&tC#g2LLLU zzc0Epm)5)eI?lUtMangY}99r*? zRm?ad%W`FBf!xKmX{#G)>VhQ<8Bx7?hDM)Ef2Uf!VzxLz?3gd}C<1N@K8Ce^j%t~5 zXZEe4X^DIEV({;K)q1AZ0S>HG2N)$o7FLvKwghU@LAysqxm!?CJ`Lkiz{P&jP6C8X zG8!O4=uicoQ`3WYG{%bZwS$e-Xo6(XMR>y^p61-!VLe!?C-u~o9!uJs@#Bfs3#jOT z)f94PG`!rCKG*6SUV4b=37;ch4Q9M_905X6piUyOtep4RK(n`-s%{N3`-DDm_8~+l za36M#UEVZz8&mfLWiCoJFf_CZp#vNPeK2=W@LzG7ihPIMSrp_$f8-@igLvRjHB_&N z2m#a@p{67vS%-(ARE_M-$1>vx`J6bSneZDG1MS5F8E|Kztxwq;2is6Z&Agy<$#hoc z{A2>o6T;1qyn2sv;gRiM(Tr26bNY@G91vXK(?GH$1>Mj#OktcpT%ot_eE^HBC?Sh| zH6?@DurL@@`QT?Z@5pHb^FOA-9DMt9vQ#(N_Vhy2j8UPBGF zIsquDjxb7Ymv`oF$LSz4w$IZUyU((F=Eq-VHCp!zSdvyy-FeI{ zby)^%)>N81qn@}rLQUMihe--=O`v0Jpsk+MUJ=!#b=Up%DOfQSw@Wp}N9#3>qlqyM z?z$Y6F!DD(p=NBhQYuR`L$FTmz*yk%9xa07$AP@4l!Y64Tnf#V4&E+9wpuGaOIS9q}RUpJB<7wpc<&+-XXVNGmU#go7y}qrk;;DT+rlVQAvyi3eqUC z1hU5(<0yq`!0|R!p#WnLa2KKOm#4}|=#J^aUY1_N=m|nyp93_N@Y?BKN+jSaFb%!A zZ$>v4t?53-?qWN8ZZ8(4{ly=4gQa3-V0crTiRFILI-CPVZ9bO%L9%RyYZR=&$N|!= zJ0}Q1VyK+nK(et|Uu={W7h1o3>X=d><3}9!cAFw*e<(5DM7SJb1&fh`wTv z_poME5@d#FWGYQlp|~NLFq|gsi%YxaVs5U8N2HLYsw0#cipJYD3g9$;0?N5 z;1!DUZ(fqQ*({C3k(M62+!l2D)Zbf&&t)!;A@QjP&}U2aw%j}I@}TI2 zBjtC^gWzkE+12ZML%MYq+auC+sc2ce);wd!mzWf2SU+MC#yRC+9*V+~ zkYCrulFBCh6ac~opyeqkhk4e-gPzOKz(lH(0rBjwBzN_tTGDQydVu2$<&@He1f1$e z>*Bg}O0KGZQlc~9*P@n1i617bE5k-q%|ye-Koo$I?Hv;--=AY$D7)ZUD<` zqf|QDP-$?nqV%R%F41L{@&MGG2YbID1;o&3*|>fOlDN2fr>N}gmfYw#-IE6s-n;B| zpm*H`buMjKgtyyvn@BPk8KYCx1e3lln&vU?v6i?Em(bGWNtC#ZBjKHrR?12_VWG_E zvB}6W)m95CEzuQMM7d*l$#gCxe?pxr*8oSWx=UBFvY#trB+H(NE0vOu59eeTCA5xA za&}D<_|N4^p(;K1wL~7rNb&s4X$^>srX@@JGuKtikPSYok+@B9S4Kib8#Vr$?1DHs0XOJl@_wIUwS3$Db*$O~x^yd+xMTCw2BX-sK@k@_Eq=JN?+4 zr21@1i#!9xUD!N?R_Z5U2$$5)r-Kh63hX>cfG?u~5%Zy{nQq=}sk>vT$Fg*?zEBjM!7AXmaP6OGghxLPKaJ?Zm!8EMefZ=aXq92d_X9al6- zEIQg>X~i5rIMs?cc3+V)xx1syXozcXeLixKBsXP&gCPw^0_mx^kl;xqNf`YA46gB} z*Kg47a?|zd-?|u@9XLnsL^|9>lfM?nmjbS}2*K`V7%56cva8+vip2e_S$XHwoW1MT zdEW}t?mra4Zn-rrZMMP&Zy7$yXGSR=QbjNNKv5~Wl_v6mro-OLbRL2SU5UenH_S;| zz_l7q<0pkV8zljaN%Ilv#LyTr+xS`2(`b5Qdzh zm3GSp{fOz6@6jOM0g?F%Z2;V=GY-p)%O}}_8J7GG%{5$-OZUe*4_2dh%Z!H~5?LyE zN@RKIb~3m|8f^|DxN`@Yp20C)F$Y-ThN2R{choH*w-o~qvdq-?{vZsR;gPEIH{YTJ zZqUckdpkeUl$R0g={F7sMpO)gNd(Y>Iq>=|kjRz1AM~Q)?hNCt$!vpwuy@XNhosXr z62hop@n-VIQDQfFnl)KyjSQiN=)cCvJbd?UVeDJ$pxzcf_; zUr@k5cSqu@25|LGpfjnRP7987EtSlH!-w>uC_uj#mE2a>*Xv$CYNm5WLdx1|Yz7{M zmPu#ghCSb2$~&=p*VHVG4)uOh+=ovuU0n|_RLybIrFJvuWt~pDYwf%J@oz2HVb-h$&+o=hP?XD)jTd-X#YmG2 zn%vLgt=$X8+tPz6S-z2OuQ zf=*=6qiT@5EgVmi^$t#aSYcaCcW!Adly`S^BS|PAO+emdx1=$vR7O%_b?Fav`}C&* z4*FBG&`h?*cXR?_-TFgg!n4oex58FUUj9}|51eGpGcz6Jb%C=}UV!y5h=2N5=)3?t z!cBeZ4N<24t*V!QtMknaU6TRfjBUPPi=Z{(pD_u6YaJ_xd65 z;jd8#6^Wzeh=hL089LRFiH7Dp*e~@a803rbpLKK(6Cs3ZJ6v(sp!11`$kCa23iPh1 zgIRteDY-rA_x2Z-uDjId#!wXI;FuITh3?mLTH-mk2d&&}nF4#k|BhJ8*=W`yr=ka8ypyN`YO^iAvBFoQW<$hGT$ZA_Cs6cpO)l*e83rr@Q ztymW=s!h&X&mO?;kOq+45TNregL*?oB}kfM?sMw71gS!ykS|D3Vk5Z-THMnsg~08& zsZf+5iNB{YoP$SO; z8nVOTm}?WxJW@lj$m)QTZp2Zk-VKn`3t-mHXw zQ$MDpQA}N=(~q_>3Z`DGO6aobYF#MP0KdWew|7j9C1Jcy9vIT^c+B1bZTH|uPx0fx zxUHFoiSs0=ZAy?$YsNvp(|}+>I_hMC?JiX9HoUPt@m=5TXJQQi1Pf0gTz&`fI1Htw zgRtRC&E)%HT$FDNYr=acq?06VG3}Jxp?x46^pZ;~OhgeYgrHG-NTNQaKJLh?yIHyw zRo!%~MHp^PT}544pM>?XfB#i*Ra7iZ;FmKweR3qM0>k@osKUS@GZ*3`;w9?x7_6*M zTJ52@)UP$(DV0B7Q3XOadw06uV$xsHA;3Z8ay&e?aBrp`5mMEae+0O0^x1fo8)E4X!B3yYX2u+=Xl&TP6S2#c;ryp}190=L-67V&#qV zeS=?x`(8=2a2el6$c@YjF8vOuB+$On3b~pC0Zy%ZSc*ggI^{S;M{HMZHh1WAj|!xu zH&tk3I`m>ogS)$n4$I4Ca~2^2q4WEhq!YA%XN89BFQsly|LnHt#-i5`GB?AJ0J z!fvpd&j!|-67v1i>RVDrqBU9)Qi&@`JP*u;ue0SVY|VwYQ8RM9%Cx9Pm8WRPOs(nP zq(W6BLpoGqOmT{57F`#>c5d&10!oum59u1=8SGJ>xCau%^|&vR-s&@DJf+2bwH5b5 zaX$2I-hq&EexsDvXiA7N@Wr_$tS&m2FykRYgtiBBNwBoans5y5id5?{hISK*p$%8I z;R7;pP88M`I|Ivb0*yO1d$I37HW~^!FV3pt(?pFiYsrWhy&4~=qy#@KV+F#^eT|n;8!pMFDFJ6=j26>V)$4J9^m79c;;?BU1!BXkfb zaePXh^5#vSTJ9Ng?=ZlfVs^F&#>iI#`6^ZtWFtsb_O!eeY2B(-Rvfh?OruSyHo-+0 z2RE#inVT!R_NV9GdJ{8o^mH4?cW&!yu0yh&tnFoW1Hu|b;vJlx?FBk4yG919gm*%{ zHc}~NoCvWUk5MA%DvR@d5*A`w@*}iyMa(~qtZP7tFG>Tus?M?rP#9bzCh*;v%Tgai@}z*Y~}Ama{4qFpK3VKEN$I5d3Kn;vS z2=50&ota=qQEI;aD6ZOHXq|#~#A*$()Y&llsd{s9P~Ngqv-Pbh=+-Snv36NvP?91$ z11&#bRXD|)2Y1pM^Rz~uSWk$1eLFL02bGX$gR5%O33Y) zltzV-)(OwD3D)!*FTt#-hN^)zWlM3dHEnM4_1alfwmX68I*V!^&!AS^u0?e$rrf%F zE~+uw!bSC!;N9?HO0&(Sy!PQKm`8UIS91)0&N%0v#vkMd7Q_#zk8 z4Rva`F3Jf!bFzfAg4N`hjrP46FdX=xd19kpU&lDlK>A0Y=Rn_mVn2kzpQb~Kjhb_y z2||Oa2Fr~iqQ_T78!~-{Ixp6EOW<>| zm4Z;AwNFvc*9&a&@jBDI+zFyDTx8T>fWvqwVvT1XiLB#LV49)ZpD(qsR-39fkOe-B zRa}jXi3IhLk{O2aqMvwG8D;*y?UVekVhf`<@<=&qFcJm=nxeNZp;#I&j2hUzeb0c`DsL za#K+nna;8DKp#xbgf=)0H?h$3p#iH(hMO)|9GnrxJM^r915cU^$!3*c7aHcr*^pqmP32wno6)f_3H_{`)~^4)Zne9DOR1_gfG)&;WxCPe?6XcVkQ%W6;49csP}m zw|6FG**TxVSizYN7l8fzq;YQgK=W7Km|-OwpN>3Z_PJsNl1q#?-guQQf9JUkdXUz&LKyHCyOGHn^u#t|yo z8PdDQujT>8!%3`>7suO9+@l&eZ#@x;*Y!OP+_1#iEX0Vs*_H`Pn}^-Ev9S$#W(hFu zJ{J4KBB8eyLziWxRR)4H3XzRa&!7Xwfu(X#(&vP_^_;iTA;5IRC1+od7#3^o+{!`e z(h5VP1|?V+I2zu`ez;}2pA=wJpV){527g+)SgpfHqGrkd~DdjAH2XGx=?l<4QBcicT&4lbMR0#_U;aFeZzVhZvu-A zHQ}=RxaCW)8C)bPh;HQKa2ae4%CN8xX#v!DGH~W=aRoRh3ZRPDLh)hcKrwhR4svgo zbI>Y_UKVDgdLV*pQ*fz?8a)>-!3bUp+|QuWNsF}DH{z@vR66P26ci>$Gi`#a7g!aIxcsqk z13rvR7TgfagYAk&-9yo{#0fnI=FT=G#Zpn#;D^-?a4>FO2ILMrQ zO+Oe8t@c&tacDi3id%`K<$du-xFKz0(`!T9KzS>rW8Ga#2{eUreP7Yz+aW)|c+7vw zZu8gIJ?WfuVt)dds1eW=2x1q2Wmn~#{hmFr9wLm6d6VG*T5f@GhKC0*jGF+RZOeP~H8kPF z!{+FylTB{R;=i|INJx(E8P-Tr#KcO=9>xMNGO}mJ=8fn-futfyRL`Au@%hTg;~MSa zQ^FS+8%iRhkI_AObf)r=O@s0sq-wIC&ODL73LK`9fNDdPjXdkJYTX1t5G8(Xl_RT= zBTY}n0`2TB1TDeaVWWIiE&qhv5IO;+g2`S8XE?+#k4H!alW%#J!J>FemvXVQj@Gct z)ydRl)tW{76#6x<^P6U`qK5dqU+H~%kggDS589TyU#oi#Jy1dS^In3@J-i#?hB7BZ zU0;}C&$o2)c`F?ZN92?x>Vll1;n*yMO%fYJ5z{;be7_antr)|s<)9v;>B?vuJscWw zv_|m?Mr%sF3s{}H_-9qNxehHS)1R8;o!!Ht-@9`)b;MImRe58H)IyYUpZd`C`_xuU z38L)=`+p|$M;jun_*jOp;Cz#3l(K8(nq#FbtNjeiubsn}J9L@X)>oe_lP}TBDcr8- zy2SVpXq3kabVdx2?lXQ_Sq0a$i%6e))aOfQs5vR&QNFr}|Gm#Ckd>An(uB1Te!u$G zN_C(5&Ksn)!4R}!t@f@Rb zK6$&zOB;|ZT#^s<5e7irdyx0uXCI9qvQXbH$90xO2hputKhq*yM(i5i0|kwvgJJK} zgc~0oA`-XSS~H6?R9ofOw)g@c$)-~lqj<38;)r5w%dU`)x*q>=wy%}irwL#vW% z+SM@VBIz+}&$DGW@&$o4IzPD7>>Tt~o9B%$xGjlmu6DY==B(JqTy{3jp_SJ|;)Oet zyle3_pWuTR|6A%@t$)zVcXF$pN?-#$?>sJ>z`(gM^MK(nWBhVk3>`Yyx3g*kT@5fK zuBwXcBuR(e?abX>>^kTiBJMBiC;uLal>%<-!Uug{aW@ESC6bX8aX)O@3|T7jp@uRn+WMX7I*or?;VgW@=`G{XWk z5GQT>D!6OSPWesi_~KbrBs~%TJYb2lzWxM*X*b(8Cy)BU`>1kJ^+j3_rZNiIi* zO``=9=e%d*qSS4>4y?xIDN)*!utY}!8?m|zfCLwgieiQa-f`jRI~1O>!|S+6oMz;} zn1UL$Vtt4X;&BVd!rJa^qam1)`q)@`Hj?o5)Y;;z4jE9sjkk2q$P6^~Li1jf0*h7pq>%1t@#d>6h z1O51`9dPuX1>L`s!;6Y}k+F@S&-2PT)@h}6HyikAUE8IOvzZEgwCP{Wt!l*_RTkPN zuuF?Bbn`WAARYF!%m`+iD5@G?m^pYtTH9hq#ypEuc4Rc+!x{o^bc8}GqxUczBc9&pGi(A zton>C$DA(>FWX6%3r>fO2W!ptQ{}DZ`Sw!dvT4JXuW+%8=3MNWmsDetv$DwCoc#{Z z%E3J6?x$NrI&hgaUDp@oa)O`H_KK)#*Jj0BDV_38FDZU$LN!|OnKZ$YzVo$PfFH-z zkTl{IjcXgBvJ<@Zr%D*-2GNB(yv{d`c(P`u^n&CvPSRzamuOPXOUZeBuRP2s87<0n zegQl%Gf*wjUIv0XKxPuwJMd^ZiAV<2g@UD@Q{dG7%Bp>l581xM`Btq9Ro%BILV$mu zZHdya_pb51jQAG4Tqp$ESNsWAH9M@wxYxvsZ3OFbmDt73y{z>YgB7&()-Q7XzXb=$|@8*S*P(vT~#&BKMYgX8a0p*F+il7 zP+Au3w$uKNcA&IZKmrL_LbZxv+g@vH?5G!s7k!$s0w(@$LmtblFEbe0YNGp^NSbt+ zVpTMo!FV{>KibbUlSQ?~pY$H1E#tP_02Wp(Xtt9}vC3Z;6s69N-hqqr15&*m$c)_w zW{;?cy6iB?OsZyhkB((obk5c@Tpb)xyh8^vVPU@p8u4CD!FjqfH*cVY*}r04j>XNU zeMb&;rvnehd}Q7HqVKtKUNb$+B(Qoccd(sV>=)f*4Q=UtRuMhf))d{{uMDM$4Wg}6 zSr!W@_YL$sp?x-qr+RF=+=B19SxzG!z8KgjlQ+?bDQog{l!H3f!FSxN*!KaXWJ~*0?kQ$}M+vN6dNNS6XC6+~t(7)!<229+ z(@@_!hU53rP{*jR#|!i^xn6&ej=Ox#(cxHQ(Ol%%Qu-c>!Whu9zk^R0<@X-i#!UY- zI0}u^DRafAHn49m=?XI6K&9Sf$e_ZCcSo z=DMZ&p2cBjy^tbg=MTs*!3``6k?||l@zvx%J$qLxO;_y(1)wOT6^^$dV z(1fIHp)`Z|jb;w%UX4^q(t8X-J%>xhqHv}8rB;zZS>Se!g3%Xt^mlo!?=a$Lxspcmk z2Xq($-VOm1y5B<%vK*Pa4Aj^0i>q!=+`E3tT`D@~=;fin!usGiKe#UTLWNb(_q**$0IICc+tDG)v{y z8eq;AkVlV|CEexUh%h1orM4Nc>9!tn#5 zy)G87qLfe}T+3>s8PX*B=<$}7=GLq~07lh*qkd`(Wcg=$mHrD|YNvE;(P>^2x<`9*tlvJ8C8=+TlZ~ZT% z>YMfkOdbvVBc{RvpaT(f{a}ucaop67ynM=ytntarw3&=L6R*#_AOsG3h00&0oi82c zh9BmJ4zu#_=wg|+Tyl5EzFfU2u89TxF{s2`Ijk-1rf{ncoXG8EFEm1vGG)ytd#IU12?171mqO?Z_46UvV{l%UDLo$YE(DE6y zY6hntZ3dc6e$OcwDdc-iU>X`?pXMIr+DcLhuy)88Eo($0&W!!%K>7v57^KH{xA-}9Hn}9({r4fP)mh!KCAqz$>tAElUZTCqapXczZc9QtIZ2V zWTM{COrZz&dZ$}WuGg3L5r+5g7|u_jhnbN2vCjqDjmvAWOoY=QWPT6CytmsC7KLncWN&cLezJeqo+_ zA-y#|&u$mZYsXC-Du5ual)p7PXFuypevm$#1QWE69bsWPkFZjjOnY+$i4dMOx%W zGc74;97>x48N&rdpo;DnHsl|$JZ~>D6E{>$NeXJ5D5~#y6wN+~KG7ZmRcb;&yNw|y znf_iCCH#V)NB9k=i;oPIxp;La_1y8v?A#7dtJ@~lFf85F6(fZD# zKX$U|G-BfQU+r(@#zp>7qzCA9NdS5rotKsJg9whZD zL23=JSFMbsi7}6^Yp$wN#y~(LCe)*)1i)8krw>w;hW{#A^s_&wKy>tJ$P`^ zrMYYlb+Gqo?Zj#AbKcr#54sc;zJ70h{qB2WS*_6346f;1{Y98+BJD0YKFs;M!3~o< z-hV5wZ?anz!(OMRFx2Opyqu{J(kZN@`j$T0JJMTdq__p}4kQ^hkBg2+x1LrtMpL3A z0l1&@4eRIRM(ey>Hj8{C;4H1-g(zC8f!mE>uSebKg)a|cKc3LNa z`^)n4z;j)()^V<6Ke!;4=I;$0cX>|YHHIk3w{1n*{)kb84BS|eIr|+i5a z@DQQWONH^kjbC8+q0P39qa2a@%k9+_xkPm?Kdb=W`?u?c`Qmm+`C{6vglN&~2X_8B z{yvQW2K@cU=YOAW+hUD&Mb)d9u%bX+*R--iX-DPR0jh)DY=9hXB8q8qcPFiVF$L~v zF?~}5&MVC;@X}*jFJQH25soQJ@%#Dn7qbJn@~RrTG0!`DgI7$0hAJnG0#=>hEj-m?UYe;K9RFd_yECczAr8kSI!h zQkE)}7=9M6Ts>=208K!$zgRI^Irx2~s~n$V@{y`_e2TY9U$ZEZs#e;Z7C+cQp_B9y zp!UnW%88AVHs{enEv}*qexO9TsFvbojapM^lv^-Q;86ZX)YqbcDg}Du24K9F0cWGj zqRi`ea5|^Y^_it-OMTO^Q0MuVa{Vr8V)V{e})YSD`J819b9Z_xBHU9~ss9!^UO%Gl20?M9pS!HtP^HgR2Kp5c`s zZ%aaObeKlu5O#rmDR=MR?Xa`dr$PIAx0q;?Js&r|3|p|N`cLSN)lnLDsE-@)?Yg>* z&&7p0d~IiA7>+jmxGJxTYdEvrKBb>kZ=T^rMIyILS@#;DG{+unXo$C+Q^zvjo%VDxDctrFEA2qw z;1to>kTw6j%*5=wDLZg*79i128X}>57lyjl1UpcHktP@!DJ|t-YM0OWgsu|mhTxSh z(S~}>1VL$?N|CfVzqAIGH2A8Nz^5**uSIRBDV#bk0j$ZaigirXfl^85Y)2Oum>Zwb z6)$<9fYk~~tDL)oY5+p1eT2*DTa)q&5%ktWc=S_3w)F&!J^bO}fv*cdoMzGmXag*n zGliBDR}J@(ggS;;0?Z0|xy89q3RlwGgrr?qs!mHeY5S6z)~1{owS&Ypp#oC1foB>m z7k@8%2Y$%NCyx+)9a(Y(F_ohqWO&V$k{Sx0w8GkN&wf-b%czj>9oL8jG#TKx(F?5t zIgO4&x2~8+?OPxm0ktXf*Tppz1vDXlEqPiylQh=#I>n@o`uMn=p&MM#{>o@HbecMP4si6`nMU{=~Q$wGL&R z!*y#f&P-eR;b9JcO8KXee=4E`&K9Uh8CFcWA#QS+`l8sUYJzagA9C>e^^W9 z%(aHYk)tjV&gQ=DcAX@^g8K%5J0-oY!r2vhs2*)GNYi?Kcv#2oerlQyH7aFf6_U!c zZ=}R_w}Qd=e$5E&y>$>*4WbbdkixWOVPZlPFvi!09(`kumMQyB=~GI=?UxqKla7jr zZ$f|o9t;!UNP(~)T5)5e9xb*ts${r{R{*vevBX5?e55EhTlM0Gd@?d(NAB>ujZwdnnkz4g8&Sc4Y~?GZxnrFmzuN#c zWb4)p6u7@{~WBj+M?nQlLk}lWVn)XYFU&yHnP~Lz7 zB2kD;1u`z2RZ5xgEgW^l84;TtGfG~`rdE@nt`Ij6wdqro{-0K4Dfyq~1F{%Mq$DC+V&$##`z zT0ED30Tc!o&n{|sam@L(k4~#%-S;%LojGV{$Z`%6nNUHLqtla<|2txrOJ2PARslWf z5D9r41F%i0q9dCC;+R|qYU`Gv8bG6-iq8_>`KVgDJbG$izv9jL7S6nT00X!E zBZapj>s-8_QFtMS2I`M-=!M`_X))k=MpW9Z+r5Nk#(Fwh3_B-!yXSU6X9EX_fk{8U zjOay7otV8##@&^!d=J$_P z^$PGkEzpF=NfLWgfGovz8Q*rO#W>aB#D10(B|h&WkO-73f}X05Ttx6kAg*v@neI(L zcOE^bLxl45>2!+H%zh!a-6!Z8W}sEdn@2xa6Xm6E@;&mByk@CXs$+3}Cy-`k?Xl$f zXD25!Ck3jJZyI_-^|}Fc#MQS!k0VY%8dls4?Vu`|#BF zsf2K2BG-PhAm-3SD8^bEr32~-kX34Fkz za+BW()lcL{I3F2!jj0HRRrL==#-}f2~tM}f+ z>7NtJ?es<23OpPh9_R#s9v}Z;H7oKZNAm#agP5|Mh3u22jgvrnc#Y&ET-@qrl22;c zOjB*^g@_~u>_68;0`+lfB4iwl`g=^-iHmFc#MXO^DLd;S0q#`$xR`&Su0jxbRr%ca zrD6eO56vhBc~$Oce%rWImR(I2;sc!qX|kVWEl^NBysC^E1V142m=In~IQDrfL4He* z)EpjyJAa00=+Jg*jC#a&!-q&~ySdg$u;RUFW&yEv=Juy@XRbP|1ze=piVZ?Oa`@iq z#d=8#^LSMOX55%=)zM%|a6&T_75nwGuT(d$aNnRH=XZX7Vl!1cJo~dRXY%jYw%BtV zx?Ak@Gn@USqz&fT558pC&BD$6?9Zx;FKnTw)s1*kF1=pZ7)aEbgglqg2no-S+hY0Mvf~ANO;#id%~Q3Oi;EK@=Q>qmZx+u`n;2YIx2kXQ{^2W zoso5%(GYtF5&?I(ZN@It?U;qW9R?YZdU6(PlF8*y1c|HFyUV&*?kowzmfBkg5PrD1fezrEa%BJkXo0j< zPkiw3L@xr3+O7eg-g$d`dXdO=&{zIHWhK7p4?)sVTE*=nEYe6H&;^=iDf8OVMLfAM zV18_=k8r8wS}S-rcn3%T^TG3zeM#W?@4s+rG|j?{<)suA#4^VM=#i0*tx6Yw)8i}L zI}iqZKg>S+3VTzZ-(+8#>m=jty{P13Sb#74?}6)EjsO_p5tFv4wRa^sC!OC9JSaPm zm@|2ErHK$mPrG@nwC0dK;Ydc$JOR%Ug=^&nlvuoXJ*1hW$R1h)Ihf6*AkS>{!)-{~ z>NbBX+Ewgz3YX!m=mV+Z9@v;8qJk&ps}lt3wk^HWa~LCEN+A?M zAdLDNmoSQy4zOu87J+t1AYdD@MdWe#p=_(a7UE5Ot6gKyqUNT;5Y8#R^|PpiQvxq| zlosW>C8|xyYDoNS#xy&ZH1rGB6I|yaUDIoUPC^qr521Z8-gBxAzX(oM@L3TU?i_+t`(~%($z1clKf@;#92QH$ZB2mW&V5q_L=x^ zNL91&OLCEzwoeJzMD(gkVm>$|nH3v(P@s#UN;X8_%WYY}u%*JM6mte9AZtmFeXt)~ zuO1$So1y`#PpjCWO8T#sb?mg(=TxJ7fDWKKhj`5TyN9~s>Tx7@2TEOVraA|BfXrdE z@J@IlJ)^N-5AC@8L7D?JE>jF?c9N`G*lqBABrt(hLK2mj5rgtTr^6=vnV7{rh!qfF z9-hUFdc)nH6k>69`f(a}Hf#Ek{EwQ|`kh z5CR$#zI`XHBQ+qgr(3!`X09rddC0aevnG}ruR4>)dkvt$k<^`w$?!lr6rFh|VM`p) zNn1@26Pn!MTBG1g*@;5ByrvT+m{?262%hvAttwhDB`KF36-Zt)7}9e_=Xp^frzu+c z1Xr>yXb+}0`37*KbGRQD7@F~xu(4U2N;4vXz7%?vdwuI80v@Wauys=pW=ZraZBtsM zRJu^$N>*+>a(y+eti^vC0tzo4N<4@X@Lj0|X+She6*27K%|c4{tNNUGnE8$bY1JFp`xH}?}1UqEs7(4(NX7U6E@ zExN42SEKBn^l(fPZH4kWh=z#hk`kVHwH<}}tM%>+^_MJrY2k1M)KAjLc0H}P(u}~6 zxV&4vauQn(%)|?jnU-mt<{4~b_G$c&dT->@}s2>R7NTb^2T*|Xg*q_t}BjP>?tlX?Ki`tgV8xV zTyvG%`nkFt8t=hs+9LjeMy~pIV~P|HoB8SN`1A}_QBd22UWRy$mTiswsEro%Lk%J4 z`o~OXo#o%uX9*6x%8K*+B0*nOW!9YMM@JX7M?K$)Prgj%add*qT3P)U>Aho0jyq&# z>139aSte<9Tqd*XVJW9#!YXIpeuD?`_29v6LBG}1HL zxhnJmZ>j`*S(D7{2fBVM%;naX+T37Ut?RFvH5fBk^1$&=CF+AWZr}>omjvICyE|2^ z7%hexZkCiFlTb$)&^qBgOL#iB8wr73S?r$F`K5j=6u9@=TEEhW%)AkALj810Co#G(zwE=`WFv5C|?AIypMn=Xve zmVGo5{o*GBQbym9Le_-}kOpGQH4riWp3y)oT%E#}GfEs)#5Oq!G*8NjEh;DW8VZ$$l4o`! zb|@oIF;5u*(UIBCnz$o@ifO3gJrtR>m%pM@$O&qQs+%>)Mko?<^hWVS4+zZqKtOw= z>ljDEdChwA)1pzqcw(uJYq!>VFt-69!vYzD7qO=gZK_xerp2RC0_4fZ1EV7C0L1st z)G|6M-po=&EAmUT5&DTYNq%#6*B0Lv!do{+{=Qhb0%%*f-`4KE{mJn#^8I` zAFo9&5W7%_pHo6RW<__o&V-U#ptSMe&r0gm?QtZWn#5uuwxN6!6KjAISh`T>85;jM z9rydy4{`|JX>7!i$Qp?Rmwa_@8H5Jn~(6i$No<*ZLsNMa^1H}WSGNK~$Qqyx&h7ly0HkVyizThPob zQ1b4MCRWS~M^<9B&(GwzOK%2|~g_yNLFo2#;@LYY5 zF|*JZ$n~zmE%OC4z5_yd4@;IhXvtDdrA}hsc%=>+uhb#qm3rKGrP>QM43sjcAqr4} z1qd}195uunZ%{*T&LXW{j8G&;fmR746o?V_>W4~0No(Jilg}VJ%B5n0*V@IZ`hlk9 z^CDJXl4YPjW~ex*ZkUKbz$}rNze6RQzJ5H5Nl^pwfq{ zwkxXPE~Rys;%Ns=GT;BMRinySX|5Rrk{=*9ElGzX=IRkZp_Sz3Y1233KZ3LoqIB(F z$p?5P*TL;vhc4=R{GysVD?rPhZ-5TZA~-+CZ|ZzwbKxZ{{wcImi+|tcUi+7GeZR}y ztH1MdBTepI?zO($Yj(NgB3|>`tv?*iPIiZda^w;x(-JueXu|fCc9V2QKRW>ookIrI zUY73%3)UmBVDRuz894~Qkee$lPRFJY04-}5v;;$DDbTVEXG_pBkg5GQu(k0g8YvAg zcQR*QF*UpPAVd4vm1M#UPIPcC_XTxu%F&TD`TnTnZ_+$`zP-FD0I68+1chJCm?CM- zbwz8t`Y;ZP5B)wWpuU#+J-V~kMjP{eX#e+u{A+~#>n@c>%pVN*wXJ8q4-%FKkuYsf z&BAKnaNiyt`sE=pqN%)f%NAvzY*A9#qIAl_ncVaXV=CbQ@Ha{GAnuoko|ODQ75B@1 z@SflAdFa(2dLDA^x0oQx+VNexg3}lBzN+e+NuM}E6Dp)hn@Kf13K^l1MfH%l2;yGA zKM(tKkl=HT%QXBry&U+}ov1N>>Y#K6+O6w2fXW%4d1$E^PX zLN20?0wBaMJ_bU1Wye5>U)Tj9|3f~$ANi;uM7=+R7z7ZSf-L_ansJaUl;FU*&3Qan z`lAqnbp3#yTf(gwxo#9+@+NQhdCyDjvk;w2Bi;^J{`PHEns4G+0cGdh;nmJN%>C(W zxiY}%qS5U_@?6ZKqNzx|V4jl!!Vk}XiH+;1sq zY6R@9f*4RA$yvEb&T2oH7$Y-e2xLK6Pb8Wa z@nCQFg{g}VW3K%%$QQx%RhPC1YX@OEfpP`a^IcGVoz?q6^_2_Nm-}F5O9fqVyivLg zLf2&ox-S1yF`%Un!It-ffW7+nf`CgO0yH8aY6JXM zdXRnKx3a)*HD4j{!%MK96GMGUAmBU`Nu=nrG>1a-u}}dYyRGlbt$ps|I?tW9`o_Kf^qy0 zoc(vgSq7#s^zQ$+fh$L%kD?dR(SH);{U6Z#e;DW`E4C2WWl?2*Rf?Y`Q!3hYDVm{= za5<<}EsuoN9L!yy3&5J?H{ZT{kzZpVoj7Vqc^v!3}s=og8!O6+Vr`U5U`?pY!)Ebw8 z2xBrd!Z%_LPmYMtrbF6JUe?u{hGGu8yb4lkg!Zk5G;YbUQGayR9!aM?_6x(&m&FI0 zaSVMw`DRnC-(ABjFoa_k{jblz`s(qMucJxR*3~O`82{JF>F19gJ<$or>goIJ%jus_ zzj$Dh(UHL--(*ouu0VM*D&YC)6la;jEhD6eCL1WzHd*xGi?62-PXC-f_jyB>2b0s&FQ=y`pX=37i=5<{1yJ+|7;`L$eEkV97_#>ie{5z#MUO; z!md@NK;3Xuz&u-Oqs(;BVYxu@I)7M(l#$24y;1QU>IDUH-s=_iJ~ZN(XP|v$J@8=@ zKsiEMldCb)6Eg&W1zdP0Dt3deiOZh}xe8KF)zc;_E2&GQ^I$#dt9A7zi&n*QDN37z zT2a54T)=UPO;f;SU8sCbhdf#r*KpWxp!!5v%cG-Y6JHv?;5Tue{gk&Wln2CQjr;@L_dKB>g^PP! zwwqWQ3Wn#*Bo%*gGA@TUsckEceLJWw*7G1ijt7{Ad zJ4WDZ#L!}jYwP}-L^kt$0KFsZ4A46i^N*MC5I~d+C3kl~dPt#Ax^lWK%0HmXqQovw zq+AK`&Uk&iNV<o_HJp3u40TR|1mJ6B}MFxbFv&wkPiP7 zopO4(;~O4#;nO(IF+dpfK;Osa7SO;EiUT~98tZYSV94=WT(v+u?pL@b$d)9uB1v+z zIzuYlSEGsYy2y`-6a`pLVMKx@$mjy#ExiN=wpC3bolWGIKqGHa2C4IENsFG?6nLhb zZ)x}BBq`MB3kk#rjTiMLI9}x?z7nu~ zlrZruyqYGSM&{t(z#z&)gEHlb&E;Q{^c*HzwPz;3uKIxm0g z<*iJfyhiZ?FZt4LxjZwAqev>R4IFNgMX$z=KgqV&*e=J2w)m2dnrJ!?0P6oV06;|f zcc9muD~|wtuqniwT>VykC3F}N@#a`6YDYs_S3{2^ifG-%s*lVlk4w^s9aQC_MqS-o z)#QB<-4x@k!lJ-Gn~$YC1`lh%QKdWC8xCiW9H@(sk*4px%lB*Zcz2s$8;8c5L0y+& zH9USS6iRY~Le#~p$8|M^3fxl}jpPAvGth~aaB&8-GDK%#Km)hZW^Rs;+$@v>Pe1JO z(g^`l@z^14y%j2S2;A+#VpsXP(d9<;4W^u){N;HfXj$yK1tgtEP58;H1pOd^KOs+L>tuO0MRy`J~J4 zo({C2Xeng{A5(;|q%Xvxn#;zpA>O$EXCPnJ^3;X*N|BTvXd6dj{#EdII z%U}g*8Gavv=JYdM0R?n1;5+u3KKRl})nt;1>;7~+t~>JEO-y&md~dSv$K$yx%gVbAcvq^Qrzd z65bt4ypXY&X_Wy=NyoZlG2vyiPgq=~dlW|3Hp*LsHFc%XkHhiV-Kg={BK9yITV4lA z+FeGvI@_n@@RY|()0{_Z;2p+2XMXU;3tHdA3dS^sGH*YJ=Rw;r;R2 zl8y}QK-GzLQ}=F7MbQQnO}ti3@uYjV^D`P5yX|1oz1#T_NnE!bOuBbF&m>>ZX^7J9 z-O_IxuNgNM%U*4KXPvq5q_MlHJkqlL#|J5mipJf4Nd2MNwfV!%(fR40sP}J>fV%~m zcr@Q@Ty(>p*v2sZu}OTNCg1zW?{4zmr+;^o_r3_bn|zNuvAfZGU60+(?Qv5&8y8YL zbZNGiK+hJJLbi8|C3I9~s3>(d`or?8Ed_et*ykSjH3@Y+mYABpNZSqShTsKwj9Afl zBlOH1uk&}+R*&3HQ$9ii&w0NUcN&!T9VP8<0gz!?-9}x2r2Eu%rT_^~6kf5rHaZqO z2K>Di&B}Ja7`gL&>g!^2S>^Tec#}6~^7NZfK{3AlfXiYw@=f8`9dCAl2xUFByQR`X z2AlKqD2y0xY&&+>_8!u5*A=rZaoU{GOxo!wj|bXA<+KNt5KeuPbbM=K=JJan`pR7m zP*>rl^8)g)nyK=Xqy|d7<0s|vXYuA)^(IQrjE`jwt;w_O-Ccosj`)Q6SX83a9#sKU zX^|0$S8z|=KxUz7`E3^r9}p^9K;N~MDk!h?+WDGOv=`GB{pl<3?c_VG?@Y{V)}21d z=gE&bM=GpI)4_q5N-|D9?dVL5e=CZrb6;wbiEC#>Y>W8ZomT9HkNsGzvek*Fg7*R% znqa3o!l~+oA|0apaXGF@lyn|QHV!eR>m)haxhp#xccCaLrrBT>?IA5xtMhPoS}8II z99kNeazIKv=>7bh90LbD`h`~8zH+hP9^&yZaM%}%{w=efjgdbmv{q@`XP>J3$T68X zG54GN5Ie5%;R9j?ug|Fu1r$CDN!}m0FL*g?|kM z9X4oG@uCh+JLhJ6%&9+9t|j)GJH8%!%pC{m&HecF{pL$MGd^Dp4Ppw8F)(Mk5#)On zgX@iKlbjQRF7*66I8u8U07sL=`fH^Kn|a4ocUN|hByr)QN{;H)}2N^X&-k28_us4l1}g-UyGAUu0( z?b5Vxo`J+7HTHdhQ*_&8g_Hqxoo0SFUHEeJ=JW7`Pv96P@Gv_$tB#NVErSk{D1?^T z0BB2bMa8O8aZcT!45lt>ne~Vj^Fp%|sp_*7HA&>w>r943bS?$6XOmEAq&%3{@jjG4=$hP{{ZjG?ZCy zOK~C6jgE8C+i%GUzPkeqwNDGo0O|Gy5NgBb_KG7bVY~{K=+2Y~*{pT1f|Myo4H=9? zGsD8F>gGI9{9<0HU)j#09vImX1iEvBa$oBbD%IofiZF;9CLzZW+Z_syvAh( zgUF!*kt)Hv83#j^vw~Ny*Yx1DO_{wG$(Ei4OG_h(@ihd}08xMRqN>9RndPh}InV@6 zTir}dSH1N$Ie4M$YPjffRwNzXa|_7uNL;;zlN3=zGI|Oqs~~W28I;5G z54C>UY0(@TLVt9L72`oUQrD4lkR3c){=St#WiVjX>!L>R7i9w!A9~p&DEJdv@gxrC zwpUogd>!U_qhH0rl2QXtc`)6#(IykU*XgWLN}EvNn|8iuQ^#3*%qq^T0hgM7B;^?zM(ePjc@@eXG%j0|0B~5f&832Git9(UtB$S$t>C>t%{)vERjbjb> z=LX`G_29?r@2Z<$^Cd3N;86Fdih5dd$MN%h1OUg`=<0r>&>--RpAA0nKAAR15-W1e5<&7VTVi-gdW$11NL0-cvv6X`5P~!b zY#Sw%=OYbX1Zl0&F&N*UodUBqmYR$fC{dlJcHssMJ&u_L@sf zH3KSjB=K4&sqBE5M*}fk`1Zp~PhHmz>jX6<8KELroD}a(Nvq7?9bf5BpImp$LkO*^ zGMe4TbJHprN2TF}j3d!dpx12GL!U{BK;txfAkS2+LY?}(`ACvMGat*0D->l7=hK53 z%9b>XoM#Q^*7X#bVTfGEkX0TGb`prwcCgX`RZ)>PFO<&Tv5L_Vr4;!x1>^`(eJwyi znJYS|1}MKK1s8M-;(>G`o9V0~_A%EQ#GIDHZRT@ANt#RhW035i#1k7kKE+;zmCmui zJg7I!b99IuRKafRyljy7z<6RLh-QQ(d?Q6Crz%yarT#PH24F$}zr=cZ>^iC^Q7{4w z86=9(Q)h#cTW50)$V=%8<6SsxP;@+)_5jY^-2tjHHx5{FVaP$;@Br!*@=F)*GkFY) zM{#_bRkd9&C)(PmG)+xZTPgG@H1|gb9-l?2jwQ7T+wjgky1Zlq}B|7kk>whFl{j_WE^u zKObFRX`;uvqNCR5xO+OyRwqIG(3NhEL>IhHJOnSs9Soo&%4uszTSbqjmm!6)noH@j zn^h%;w(RRJBY`PB{faEq!@S@4Y`oowLL<|f8!<;!!m+tguvA(GpoRbvk;*ZEuUDX0 zWH!jUp#wDta{?p_3DJD*5+b%m=V%z{P||y8lJwZG2Hu_y@-xL!^E1(zvW@~3hRZDS zH!q;#rL`%-MQPCR^42j<&>>{yla5Zz1Xs3eG93;|F9yC)))rxjDR8b%bo0N2nnx=x zs-WVY`AxRANokZ;$PZ=5s_YY%Vgp%K*WtQ9f;TMvHoMi~#5u%g8|_l2E!deg+v zAIt`K%IBkngT0YGYb52G=s148AHoPT6G!oSYK9RmdN<)4p{S-uyqz%klfN=(`H~v zy;N)WH*Krm;I&o}p^yA>#vm}xv%gNALvmhRkT3TP{y+CAi6l`ml1bFeKoB&nUrLN< zUjfL}>{&T6RqmFlkM5gbobNf z_`xJ3p+gZG0QAxl{`+^A+EG|2JL#VDO)nNv`*Q2nt-F>c56Wg?iK}nkSK#?a(hX`T zDDuOPYF`&QzW0nl!)O;7=^No{W$enR_LdW~lD(spXbNQC4dES2PvDesQQ)3NKFeoF z9~tj?DjRX5^E9G+bv~x-& z!r8b1VF2O+EP0Xh!K z8nJh|{Ii*|FwbImIzN>eiwxdyW_L%K=n#HTm;94kgqxfBt+b7vMk$@z)Wg6^#&B`5 zH0U+`Ey8Nik{q$DOJWp%$<%^a@x{-D_NJ%8ftlwN!Nxe)gmrRxj%uA!KE%radByZ| zAutO1=KOh_X-=QRc@#^eHYQ5dDdXt4q8ar2!{<&l`v#qiA#|abn=|Xi6^KrIVb=r_ z)EJp|S6~+z6u1|)dKAAK$5r9d#)+xv%y_SW7s+N-TEj2|JVp_1`(cY^j3Vd^=zEh> zpH6mLii|bQarf=`1}*nTC8^*k*Y?Nk74$TL`C#QziKC zUqj8YgUFGTLz*w1F1nTlLv^R`(oM8A4;lFlXdvoHLODFTEg=jqn_d&={5ws*(Z}~& z#O%yI&EWt?vq*^ldsg$HZ8gU@p~iv|Hvu)qj04ZB0Z)y_EDIh&R(lE2UWb^{KtF3Q zfw+czX110<1 z*-Cp2PifhvD9J7f|97a%R)%6nQaaU{NB(Kn7%k zdT zMjH_Q?-LAdi~2`UWvPD6^GQzTihvG31#hsTYnK)uUlHpS;~Y#h5<#N$*BPwH^GoVHC$iTk*J`&$w+&gmwY<;UXMMr*k!=hZb~Afs83T1q%3K9mIKR?@CjNU z1;|!ikg)RAb%LJ!_ytPV;UY!6MNMb)DNBpI!U3{t?{b8P$k6-zb_tAB6VeS-Xin6& zKmde@s_(}Mdid@|h@XK{=pUfmi5164`NqKA(v2=7Z_5L3rMcGQ&AP813Q7eqwJkwA667 zfBwO+V2e?@ICxQR;BVREz@-4aW5q<#VjRVMF=o)3%w({@ADhkK5a!W5*f^WalaC z+@_2YsRA+wI?MAY6ThO;S`1N?^^~}(rL^{vq_pEpFJbOYwaM_%PZhh0qp8bYHqBp% zw~6e>2K$n;=#dlde4I!wApWq>i22%At`l3XAIH0J9++;+130$0Ht8B`1wp-Y)pnN~$65Y-V_astD2YD}u||I&sxsatXVIl8 zgkFw|ICEaZQNkSmCWb?|+_E_BDr$Kcui6#b#9QCDsZU4!?Yu1j(l75c1X;Cf1TM`$p(pG!e|YGoNK3Ib5EUB) zy#Yl;e1Xc6u^b)}yO*WnfGBzp(~YfNWRkSTn#QtOVUg?O-wWooai+{L>Y6!dm@G2AafZa&BB&k?$18d$ywhv@hE4!YM|74piq;I z)#u{lbpyl8oF6>sUgo{@B7d3tT;2ud9W<9;ubUT=%KO20J*nK6{@Y6Bi++jhXko@n zKx+#kg$i$N%s4{zr>Gxzc6&RvzJa!EM1)G&nP1I1;NJtJ#6crwh}Nn`Gm0p9+EwH! zmFR5cDYf#ftH?7d(b>u~YUQA_%mJ1u(u?#%YawaMsns{hwL_Jku2 zSSi|MzcoXs>qx$AY_hBnd(N4f0$i=)W>2d8hy1-%_SFUlb~;)g)X{J0$M*oM%^)tJ z(!#J?W6D(NG@;%+8t1{=X9?u$-1tVeju;bg*`{Lj`CHrCQlwr%gl z^~$+CNLBRZRKY`q5HKIx66|kD=SbPSu?o_N-iy+`X|f$9*zlYTMag>Hihyh}jCp$LU@Zoj(qky=j_Z^kq zn4V}KWttSLOH}9-u&NUVM~vVq$R@Gcz=S>8s3a^4RGX z!l=>GS2AsID;IJWMl2PPu+Qq4=jB`W=3_2YBYU6mnU&cjQ@8zZp6t7h+im;Rr?l;i z+gM#Ic@Nk@t7Q-9=;Zz4-ZYwep;Py3$;Op-duHB#K`aP)z?E{@0$DzwyIT)My2+EZ zXBN$jyLHe3!@jJ$bm83SQo+ zhvKu8kUPq?8iVcZJUpelyL68uG*?bppnr;ZH?i)*In8OEak|n&@tUMT#IE<1 zNUEy9A{fcmbY$#rXc@q@k24A80fA%?70B>O;2+Cmw$T7`gI@6*kZIPQi&87$<*vO@ zTt$s+aw>$hDJ)IMG1EqweMOv>XCzYB=6_BbLYXb{IZAi=4vv5MpF|suGjzAs*>dc- zb$3fdxt6;r6`IZ(hDZL~fFpqcwC0h|xm>wK|71A;{=AHa&Vg&d?NqxVo%pc02<%6R zy#)VLnO!6Q)9)X@vD$u5`9=JXTdmGs^b*yG@AD9y>dM1|v7tl%z}tqyyzNr)w#zoL zL<{em#S?H?Q5F)gVu?KhrLp4<0cKA%V>sfC^Az8_V?S0Awl&Y`=*)|{ZarH`?C7aD zjiTCm2k#j0LxOhZo&4nl-OU%t>NieAE6B{fP7JHrNMb>ZiXl)P{!}OhK5F|_<$2j5 zqVLRZI0Hp3wdgWhM=QPsc1^q~@P2eOYqacNprn0Caze4)wx6TSRWN0r|4 zUpKg&FuDp`QLb9!_EW3*$hWtq=v3?n6F>mvFL5moZ`$$Opr4sd9f7t1{MrqBJ6NDdE&Z?zF|WiJrX^;+P=7)=Lo zs8W9rWOPrF1IE;>-iy9w?C%=>fX7Ww$D=>mk6TLfm?cmVB)aqvE91*{nAbE=xV&VyJ7NQ(BAj1F2jeZON89drti6HD z%Ti-mlULxK<#rYlj4+L~FGElOU}i}uR{1D6x;hHPvo~_xz>X3jO9xbao&Zh53gs~T zR*$rwa~OB_UAqkztH}mPljq3vw8RYMtBA9Sju$kY@DN=v|K_b%_~<~v0di? z)n__sw0PSrAW7jEfFvo+7(0*{giG?q(nz)+8-RA34GX#&+J#@J!Qv<`@omrsq}CrgB}!A{F2Y(#SG*gSKp4!Ss1>@K#ujAB)_ zm%6?6EkRoxD8E|O(U;@MW9BuOv zT?`{w`ME<8lTWm;ZWC=v{;O}aEq>nYrS5x5S`MGRZ$!3o5H5S;U<+hZK-#Ts!qb1g zF^loG2xIo`e%aHxxH#QF>fNFm3wjVxM)_925P^*5E0FJSuUy8%aOj&$sEA@8qhhE` zW}m@(MIgj#Pd)qEyB9u>KTVbnN9XgiZIA%y+^f4y6j@iUb_hY+U1m98lKvgUng33c z^N3Mh*)(3*12q_yhC&UAf{>Yt0niR+(la>sNSPS6y0)2zLQW-BRj01IdhY626ab6> zn3*fDm6sp03ESU~)__gxrnLFS(2KaT%S={*?*p{i@;R#Hz+-ICBftEJ~s1H;;o+Gpm6>+Y zD7)C^$TDU29r;{CU_nMv7GYp6{0TU#ZtPamzx6N}s|=sq(1YQBwKh~$41uiC1G`}M z=}uxW*a}TSy;O%6lGrX!c$za9Hta((&ZLWU<4lyVa|UJSoRIHXr-*+BO~s_Lajch_ z;Z4=kYB(R4u{`yH4?$;Nc*cAu!hF-;I`T(DFXjBp#{47Ef2rMRx{Iwtn8=Vg)hH9^ z+Lj&(&#+>+l|WLBa;MdqIe32oo{)AgReO{rZuUZw9^A-aeLPzLj*wQ}4gBNcNd$6s zL4YA!QoI2}ahJ81;d?+6Z=|}s*0@&CB7DY8YzB*m|+Gjoi7vGZ^@VQQ&sRhWZi`pqN`Iag4=FWARf0b zuF!;WNB~&Vt$|EzNUspmD+TG|q-6rqnc5hJp|>W6_Os!T!(c}#5_k7>vGq8}=B0T_ zadPPepq*7vgyEQD_(mBzxn#qC(gBLem`oMsM2rIM@v5B*1Z*Q-_A75G8A-+2wT}CT z?eYpxm@omi&G>+JIoC#lNL8iBd(f-L+n~0j5!*n;%4OQV)D!{334np_^f(mC)Kysa zt_70LB-*!nDLXuy_bwZSBX6!+RMI_Tj9u^H!BlEvF~F!BCs#L)iDG+Uue2b}v%H?W zCqE-PXsqi>kWz!zu&o9@^B>f-bK{J5h}vPgoA&OUm8oE%$kh1H@y+!n$+iGfK&-#W zd~=K?ZM8a*{k_g#T_<=&(7q@5aQi#i$Ma4yiHfhi2(9Yd+B3@n8WwE7&eA%hpYWM? znN=x`B@O^r9=|V=YXKB{4)h8@?_;BHN1ubk1Ahy+x3U|EC`8kmB6_T{t7LO~8%zRJ z{g_mj`3`zsLrN4xJ4o54$cB8EzJd!9Qjde^3R26DS8sEy7ev=FlCqre69W_*l(k~RsvhuJe{JSlK97@x|}3$OZ0bf8Sl_lIWh7t zmYYeHf17=PC-6l$-@uCwh)AuxBs}s=f{^@)ZsSt7t15 zjsJ6f6v96@_v`T9qF_VsJY0l%oWs3GVz6-$1^+S&j#fv(zno}y4N06IZ8`Sl<#L?F z!8kZdj)D+YbeSAo&99D+! zDS;H^H{)Flz_EozYEw~3Sa_LDHp$y`BYdokO~?JAAw(J>^`#WYvQq#CinkEz+ef{0 z8f0a;#M)&D*R<82*cQ({vV|p1*Hq}0wn)#(<1*EEB0bAgTTNyYi*&!1hRPC9tf7BUpySr=6HA6X}Oy6&!Bgme-4*jsTZkxb7ADT)$;k7l8^2El!Vg#a`(nL>q2=AK4g{a$fDuMaiSs zNI=<*J@>L$QIKUBbVxYd6`L!BYUpu+t_>05N0uUgs=jdIE#+$)j6}evmcH1nYh`$D z?dr)Ytz7PSgk8MRrX)EPjxOPHbW}>lB9=|0#G5TUYT>)w4P1@~lH-OWBw@I7{(N2R zs>_dn4J}eL)D9_vs@SC><|$w~<0``eDPFbtHUHvi`R-zrZrNr|`NoL@^aL`6|DHU6 z{{+?zfQh>ae~!X zo9z0yfR|Vtpo8;#y$(ju_m3yD$)krS(f!HEY_>X{PEMZOr+**9zmFe_pR>vI(JY$& z@MQ8}7R??^?mrlfMBxbkeN2UC;y0E)fztOU4<0;;o=omPoV~a|xj%gXzfY$3p|9Bt zf6wkmCzB^9_wnb+lNTqG$Nck4NPc*qOV8l<{VyMLE2Gio_+&DB^e~!Do;-N;Vmg^V z{xX`)pr41)6n{Lr&wsx>xxbpiaAr>)L|ke*x&P!b4)6qr{P4kp%>!s7dN`SV`Cx_P zKB3V+isVclKYkSPOyJ+g&^7dY@&JZ2doVL9U~7*bJrTdf)Hk?Bj~*Sin#yprzXAfZ!?$2}>e~Ld?mR4`JU<9*dSAsFuGx`BMDGqPTH1j2Ztc#-aX&(&9Ik1{gtjRKtE`jr+dQ zx+>3OIiY{u#$}a91QueFUt;r*p2$g3v6HA-_=nl#@$?A-^8-0Yqu~cs_OWajdw+mq zc>LuHfX^wMAUM{KVV}M{nTg-f(tSK-kMEC0Ki~nIK8(Ix>BV~x>FGU)#PlZ9>5PW` z=$O|-Z{P{l~gw zSt&;jq}p;b53({RW0Pe*IWO|7?_d2a?L#)GbxVmnWSt&u!w_9a<2aV+DH59dJG^|6 zbx;1Os{adLMh2o!3eUX00nThS+-EAn{b}YH%bK{MP~6h;1(3?_zSsxUyPJK zGCECKr>Jq0Y)OX98}_%--0pRDe*XJ!`Q5hC0)bMHuJV^n`0Rl4Uhv=sR16$S>cuIKmey?_6H^8WrLFD~w#Os7-4XHe4*{)M@VhswLO0CGLqum@W} z&Fl3hg(Ki#aOtZOsHCuwc`4mhdUFL$1=&bcJ)E83|2^dtorPW=C80&dXrRK+Ba&t_ zczi`A-c1M0D1&=W!(=!|<}mTRu96SqX~aJ>I5G(8idDRcXN%3#c)Qpf9r0FOVzh75 zd+fq|d_&oC`Nh-geDm=FKu(Z;-+ueeSJP=Qf(Ky!TZ**c?5pRGRKl^KF7H2{JeoZ` zQOTQZo34`UI3W7eO8#4(ZQb;%44{6K!5<)0q48@dQJa|qx+8^0NwvEx<7p~nSMEXFr7{A-;W+VdJN>r zNVatU$q9_~WHg&Sp3LC!BC=->9!ySDRp{>I@dMTH?8`6teIoh=qUMWvW2L@6!T%a7 z_2^6d@Bi;tDk?1f)Jw&a%00|+xF3i$F7t9Yzvu9FkAq7%x#?EtARqo`m78whC0u4D z4uCNW+t}$k5`&hJ_ABuGW z&_is8sN4`EY{REiF@1GqB3w+a^`1+nNZx>S+DLRja^ z)1Ah)yJ#Aoao4qkV|mp$o{{4<09zeh7dh;i!^%Q=zDH~`0PZf``xS*bHjtq-$AqvQ z#e2Sh6G)ff()yYQD`MFvn2sX?7)5<-Nz5{y@| z>>4~--V0~`h1#+ zW^n1Qcmmfw6M&7r?pUI0YXV|K*WPg!j2tg|I=pD~mb`_>4U9gBWL}kD$5Zu%KG}^= z9o%B4(yZahL^|1V0^gcqF60f6S*CJi{F$1@pYOwAfd{IN=~Tvaf(HnVI`SgAhIbNa zo_12f3;ci~*$xSZWJql%UWc$ZX2Mm7kwomY3%1w_Y7qutAEgKvW_xZw>IDF^%D1nx z)o(3b{f|86f8;TrDvyz1<`+T!BjN0S1Tp_3i1}1O3_O7Ii;GRGK%%Kn1Q!Tk(t79FWFg$73%dS9wTeC`6m7FbylP+LCoauj|)H;@Y=zP6>tPz zU1U+5{DYuC%m`G)TAaeFM+VM}|=?+RoZ*yLQI5_mTH+nIzX*kuHZz1>~ysnsLcFMO|73uk&A$3o@2DinmJP{Tk9J9uE9{MgF4yb?na_ zhwuo&-6Vn$y;+c-8JyT9xgH)!EVV8@#Y3l-P}cYqc4|ar<1c(=FdX+6&-zOx1(do6 z#eToC^lzX-jQp)9#0bYZR3S#BkfeiVX?vpbKND(0$78)%pvd zF5l)!vEH}*UcG#01Q^@1!jOK*A;7o8Ho-0{TkrAKo&sSfU`9lnp^p~N@@`ET=}v}* zfwY$*X^0zkc(&)eHaGD@8t{yq&1YKt)hqw5rkOugwm9 zz&1zKQ6M1r4DDCz$o3Ixmpxn9oVwEC&izeK5j|ioGyNSqd5v&TO3K_Yl~p;)yB&GL z^fx_Gh8QjW?#zm%!;I{2RPk17^9=d`-SRHb7Si&dwTurin(;29)-q(RVxClwQHC~! zbzP&V-2lo|`>r=4Teempjx$kocDh_D_L$n`rLO96G?#S+br$~OK9esx^n>ehALqDC z^xX&SKrSDL^BiN=OLuWmfh&)ccWvN*ZNlx2EXsV^?9xoWfd{GUWq03ymW!2W&22+MW>kDnK`Qy+CfeZFPZshAw8B0i!hrBz)$b$0?vQ46z>GD8rHb z4;{ILXRkYDxta1u)5>oyv!c?wB~4h0awX+h{@gTv(NdJ#~} z%;0cS;m>FI^8$Z<5qtqZ|7(|1`WKk~zwST5-}mVEhm&vdV-ddE~loy7X+B#!kv7-EZjmVZU3=zQ@`s>-DMmk@IgokDMa^d%6|2+Clfb23h-V zFht_*yNQZQByVD9e;WrJ=$u`!tnituf*X>Q$#5;xLiN)?0|bCFRbg>@dKx@pHKYMF zzC~*D2L_fNLS%P@avB_K$?CYX7QTYHm=&9elV0ZU2LxmC%yqy(%VV^@(N^2EWkV*I ztk4q(rMHg`=nwnW zSA*Yehc>`2MBgUGvDBWF7-RjnU5Uv1l`LVsN{#mAq18yGw)$`6&uV>ym1_-7Qa-?> z&(uiL8Hj}%JECJA5rS&>lq$CP`A2e3;;~NmMNyHMsMN7DhcksnuD_S=G3BSx%oTmI6;xY8TKyn%KBB-mb8-YgRR zPEB%(Mi^J3z7NxLD083=t;y&&0DIw=Q^)6;`BbM$hlkE3PN^f|%S~S7zfeQc^(3;+ zuSZt^k)yZih}(%MoCm;U_AXoRl8q=^j?h!`?yXf78CCA!md#xeCBnI9*b-=y&5A+- zSyAF(1;6pW9k9Lb<;D%Piv}4qOuYFYusdFk?k_&}KU1BL%r$0sFo|mXG6C;m2vC8pR z`BiIK&c@<2C}ig2DNrBU9hi4=MoDt?DS(dFPf0Hf=Vb7fMHTVsqJaw3EXO50QDCO{ zEOUFzATV=uQgv(DXd4kIprv_B z#w;qGbIgmeRU8%Qg3=j-$Qz|Zl^bRLyA35)w(p%Sg}`Gpx+QPnS|r2bFHhwsynWo&B&6V9%^eTg?=filmE3dY7KN(!HvU%Ixc=HoWCn zmym`@T3W830+Lp}q-_nE*&@YziV9jZ27Z$(Tiz_hzw|sT(@c z%e%OBooe>hKsmC%y5rVVVr%NwfwbS{%kCMNcc(ezdSelROm-X|9+)Jdyd}NJE^N}{ zeE(XnL3JzJbfUPa4VS15S6|39Wl*8QXe!fMked^(jL0w8L8_5T1y_!HxvW$3b&IFM zxqtAW{Z8j~wXt}&-%md}E;Rhtk*45wB+Oc@cjZt3` zXtdx+ckm;fK=f?WWL@|?sWBrBUjS9O$gFwG&NDCgcA=He(0uJ2A;t4txW^x^b&@Bz zdYmQtjQAKtR)Ef;+AP&o&_E=z@=~DjITvkW99b|D-JWJ=ZO9M_mNs<)$=R{W^xSV= z>}T9>tz#Y7i@4v~x>5IAdq3!0*nPCB_hs)X@Hok}LVailU%rDt*ABowaXd{1-`Mt5 zW}XVu|Ef8>uzrJ$3pT43J5I^o4;AQ<;47b2i}L6wOi#-*oBE;@3&^ zMUIYH6(i85gnC)m0091~gIS*z2O7m*1UH0{H z!!uvQwQ(DmQdBiJ88SDe;JETCQ3S%lfx8T~fm4_eXtZhXrsdeUmV0g}LP+k1AFAoBH?GYHkabYG*Pi2#IZIabj+ea*y#lpUN+7bQ=W8lv#PK_FL=u3 z!_*)>yldo{?##KAH0d>P06p_CfK5QOIbzqsn7mJpwF9rz0hiU^5b*s7<91B?{vCFEHQV^ll&@V;)fuk%$sI}Fm9m-3!!Ak;CMzE3!C=;-EP>oK%Z9u${+= z)MvKIs*mU;pI))A^Cs?Zhk-^c$=A6O%7|?zfPRDPmu}9zv#YfQ#jtMW;rNq%IM}^E z>qUy$nswzl;SGo@{sNdo)-S)7-=&*46OTZOCXox5=1Hk`KhB;CvB~#e|3F&1nwzU4 z5WynEjhf8Ue8btVb4r|>Y34Z=r-w-c7)jxI*0QkC{*>V&1hG$nugGkh62!?+s9t=_ z_m4^!MmFO9%Xg^oY$fTNZmlYjNJ<5i@Rbl3jw+J?a)1AgGbRD+aj`7q@42Cjjeef0 zpWzlh%>YSRpL6qbD%L=ush9#|ahmylRLou21Vmx*s8C5dN+& z?m)BI_Og6*_9}f$Xa88RnCZi*Z#ysmREIuuU{qFT*0K+nwpqS!gv!*gS<@m)MXcEd z`g0yqK++_F*cbPcr?4R^M-u2IZbD~if=yA>zyNf1gbq8sXKT;FGUX<;14pw(vnz7A zoN^E_@5rqJr|H>{GB!`2Q8JH^Z}%$VcdCUUnm3HI#FX`#woS+14ETujZ&0)Lva$1X z6GX!f15J|s$e!=ewGchHv93Ao`z!P_2#aN9hLIWYd8|p_Cgs6WLTkkhMs#%)ya|rd zsEm=8{nNNHdO8sp#4T!0%)Y2G?3IY{)hNlVkAIUlCKSEB?Jotlj3D{)jnrX*U*c+p zJ1I0^7{4X4p|1xK9jvwq1LrX#4+K79T)ILn)R5U@)Dt7f0EV>S1W#`Y_&G@?Gs*m9#iDb9KctOI!R3I$?|Y){sdn zb5r9*x4TA1nv_tor<&aJxU9lOj&a1YW#es_AI+j^l$v+E%;9vij;&9JDTW@MZ$ch0 z?$Z!s{%LT~iv)~%{V3m5xhhg51O?(mWbYXzuj{`_MJjqxiTLuu(n(724Qwab(AM22 zIGZGd#8~%n>YlGA`30z@nmFAdEhQd|98?ZQP&+W;Jij@3U3#iN&SLqdaF`ibee{A` zL#L=t6l~GY2m@)Df!3qkHiNV84(7JXAL6i*!XtA8vPl|NPoR7 zlc>QZshA(<%hH@(h< z_G{SKq}Gx8nvxjiHK{v~6-Fc7ZxwM?>-3^QSZb?bQ0aftWqM8ko^RUP&j#`+@Pk<@~3mZ{bE zU{p-T`9jTDw~076HRw3u<20?CFYcS>J;1^OK5ib7f@I2~RPSw4W~&Z-xis4I zjKlU5C?V!L0Xm*I2=a<=GVu8JZgR+^hD;01(7K$=YxP`XP4!yqx@Epa8~4`m24K+7 zZDcJ8{RR?ft%o)hF=B}cq(jFFQJe+K$zpI= zd^))C9cgkMDs^Iau%P=kE?q!D%`$89vVSxVs6(QBV)4$g#p8xKSj(Wj!;{)V%gkAm zdFCn*c`xV28?k3;O1zX|IRw3}6d$Siwqs*1h`iC4uB?7usT;k6#h~F5)u;^sDN!>9 zKzM%`bmey@@{)b*1&s>}b)IKMSr`fLab11ewu@L(R&CVyXw+XNn{^r4n=~oxq_wvl=_Lw(+i2Gsr_xT5`(>!B zr0++6vDC*^o>YMPuWr+t3rUmpSk~BLLbcaQmnJ@KIAA-N)n^hSEQzS6Y!K9~8cLP` zQT5EMW2Gjvw(J;`>9uReK^?I>{ilI7v?t7cY8fsq_o?=^3fn%YlBJjsM1iGq)LzYDL$xiR zw!ta|+CUhQm{}zBm|r#9kRV~T!-;#hWdNhqoJ!xjMF~(=b4};4ooy*s7}D~sM5G|n z_HHFzBk}8LiZkwDOD9{F#y0Ro5-BbIZ#~|@*z^eKi>k;aP`oh^4$xrzc3i0T_bGMd zqxek$;{fvZP0?Q8!;O9Z(KbZ2GF^1!G5jJAX%x%zm>>S8Lu0Pr?avr3zsP!QWxer> z6fU&vVyiV^Ow>MYH3WOR%Qn(~8Opk|i(SEF9uUCx=K6rCPA;R{1v6L zTddv@m&w(&GI)fPSM=RokEkwqgA~;+*&JhV6J;<-Nz9N$X9oM3P1+<#bRww$myULh zwB?OVQYF*6d3L=8XSD~S4Zf`RczgU$I3*&lWt~mv*!~2pG7O?h6V0aJ+A48&WLv|b zJjG7Q$Xt(~gwHZ%D`YFvu<{IPilHtItH%h-#b{)Vag<=As4i2&aYOf<72q7DMnk!h zaM*{89Yz>$0KMVMT+kooZC0gML1Y^OHT4POF&QyHiLr{WoGpW3o`pxjQw&1!Y#bbw zM;I@9OhN0H>AVso^91`Sp4(9gQJ`R2GGlMmuknNOg~< zwCoevgA4aqp}*r8nINYB7YTR5r}Dz@ml}X+Y#n2du{aEpf$IS2n_&!swV!@_|*9{<( zgNghuDH{t%OsHNC#8wnfa>ZBl?w#Z+8swS~M_V$^wpRoS9a9%Qx7UU#*7}s!GVJ}%*ZT^NE~}=^-vv%+7Hlcn;BX6Pf7yb z#A(+>`c6C&S%)5QiM#~tMwXS~RgF5s_;GfTbneV$Q33|ZmxJ(WsWE64&d2%TVLman z`zcDCZS)cneIdCV-FUOH&dr54d#eq`LSMs_=hGcA7)gWLXmXCmv|^#@lB5?pP5lDb zuzRU_0C)|3Ba~R!3z9r`O6|-PHI_=oqL>tGPj$S@!~i-vG4)~eX%y|dD~Za0$^lD# zVIJ(?O?`u;obCOj^ekb9Uh3;mDB?9#JmShyn{M=kQ7|oEG;CVk2|BLncAt@Un*d7@ z?O}br+pw=vEFcYr8jH}>63pToGOUH##TUVkVX9ur>l1eVx=1N(?bv#INpveq zklR%F%kD>B=6OX{U2X832`KB<4TIUPa52T1a&CVIF6su3GmXgjL@eynF-ZRFeXUQ= zmL5hUBzt^|*%ri8;lefblr*jkqT>O9%WABOJMXDwm5zRX`?qveO_&n_PdOK-5gNhE zEtID3s=g7>O`19{vN*fFg(Wggo+FfITQ<(xuy<;iHG6E7v(x;{wx!KGERj1GN1&`= z`bKz5@QlSZGHw`(+27i#xAv}Z!@jw@H(0gKYr1T6%2J0qTr+ zp8rT&+K!dA3pAVd6Y996AV!wg;yU~0!!>|Ux)z#a3(5J8W9=_1n_zV4kBX0%BI_49 zRm8KhiN01~)${Xt>_XeWx;Y%v{lBr!P4Yq0O@2&EJC#Z7>QXFil!?!{(@#4Xw~bey zpRs`=8||6Hh%6CYAMH5~1m~>9D>jRwzEfg8MC-@xj8&m8R7~D|onQTutkISk2745< zgZY+Ov+B9el=+{@h7)ieMm%|rrUPgTU_7Ix!^%B4jtA3rm+AUdX5IHFQW@ZT4NFC~ z8(GV3H){PlifxhRP-eoX`WP>Haq+mU%4O^RI}A!B_-b5~e~)igLK;7}NmHc_rUI}3 z!v0tV`G@oZ`l6sLa*M4hSb3l&v+F3yi|L_JHR=lX4tUmfeu*ZH$H;1}3mt(-Baw!`w0{D)rYKrdFeVf$=~ zR1$#Dgsfh+LPn7?tbK2US*Yviub&3lKpEW)vi}GCI?m?jI`$37{sW-)bsoyip>T-5 zFZljTd;{0#TcLVCztO*T+jTxa4OUgL86AzDOoJ%6N~?r_pG5$fM)sFabT<4xtD}V0 zOt#aqh7#5w1xWl>SQFVzNRtIpR61=59EN$5)vmy2CTfIH6kX(f!uQu4rqo_ESyA*l z!3mJj6VLg-^HgvGG!^*If|alTPq*^59Ph%)L$=nDEzb zwQbRZ5tS7%QheN{^ehL}bnf4^A)j9fkQ!k8B5RUjy*&QkiDe(Ag6HV&^((bm>T}fd zUe4T@ms*;0cAairSOg0dMq-^0)}ck{QA(A2)WZi8FZ-|19lCYa>}Dt94sF5% z&fliY7~Cf9*LM<-{aaYe<(3>4ei3Vp;2&vc(&$D|J9EcLd_?!jymC@2NQ&rknP+ua zOF)pmXPfRcgkOjGbv|nuncJa2bEZWs`d+eWLqm` z6ah`ihYU0)e@2o7gfv1%*d9WHL}zUXvQ8}b*H&5cL&{H#+D9`R`3gNHeEH4ONRcnF z)iiei60`DA-8@SUuT}I?HxGzYP!2$F@5j~{YcD!=s9)Iv8Uyo&do6+ulO(nc7GA){ z_EMQHo1VscG|C18U+Kz#UQfu6&x`bjF{hx`rOi!5+ccz0j zM5(zIawJW0+oj$fbY70FST7967@Y}DG)k8$RhCqqI#Eo1MZ+uuG3gQZW5$!e%8PU) z%Ap%Lx&`K{I8zZ6i#FZjp~QGT2eX>#6SZy*aLk_RnJeQy0?5VCbrm#8$GWyI<;(Ps zSxW4uYbohs>|aXrafQrh`>gncqp<3ko|Y-ye;sD_@xho`MoOg>Tw7Xrft+8xWPo3> z8Ex)wJbgLLymp{Z@*S%;6{ZfaNF&O?|Lq}VtE&xN!rwznMb%?XNRkM`CkpXiCM74p z^0rW&g2%?8k;B@PW|62xhOR<3$}?o}`m5(ZeB-iW?NX3>ffI5JV4Ok?(`4mcu1skW z#;)ScuLL~^VN{4cIGzJhF-otlD*!#tPA;O+YiTTv8tJ>u8skeFI%%VPJ4#0D>>ZYd zqYp2Ta+J}cqhgP4I1!CXqgWJMnj`es0NB&?+5kBI9?Rz+U-OEMgX%IsfkkWf+k6dY z5k*Zo^6%YUZ^aM*S>Ma~Q4i&^Z0n;4!nuT~Hvq5&T;o3re1Io4%B&reMI=8T=`-PO zU%8OlB-`K2d}Xt~ji-z4Q)QjLJv!nwE#mTYd)78W#2`t0Q`_^0$7XUW_~mEuR(G<2 zPBu>q*~vzBav2w=o3n*-dhZ-7$O8~gPMgVR@ul{v5Y{SXl+405(r8 z`SvuyMXpZqhj8oqhUd)+?HeXJLv}=LWGH1L0N7nhGQr#1;5-2|AF%RmTE9V(>qWll z)=XN-fTQHBrHY>c2Ft2VN*6$Qdy99K1LJgI$;HMPju@;$fLA8L3wI4;c}5iSN7z%V zA?1?_8Wjo|;i6b#9He;>-%#IkD|-Udz9Nnv!y!O=AtPsa%Guj2ci}6zkAe}b{~L_r zH!h*-h2?CYLSP2?7C9(59wzLJ_!TQhoDRt5QDO3PY+;L7Vd2MuUzzDzFoMd)J%(<( z#k}N9y&^wB?~WbpH-$qWw2l26OsBL!K=LA{VVlZZn#+9(f=C!oKrg{jCUBBHshqzT zjPXkUx-YgcrCcoc)~mT{O(aJq8Qni=e6uRwd6@4yk~|FfV5TCCGS*Ektc&RdOm2Gy zs1^Pk&ER^0!J{k~=WvQoQ20Sk#K+=SjEDJ);EOme4iEFgL;9I4W%f~AMA-No(huTd z3BU(`Zg2Bt@Sg?$4E__XO%fvw&<~|iIo%MN%Stn^5#wt`@P3;CJ+Kl^P0;2o+X99HbcTfkq|$!@ z${{Ne`ymn~CN`PC%{}%zX&rsolpm~6QBn`%FF(Bc3u;|bunD9=UtOkYRi26;co(8# zhI%|u`CXN5(6b;EcvIzXa3#iNglcn=pNjEKx~R}h5T7E8KaowErriXomlMj>zeVpT zRj2a+F8ETI$Onkk0w3?Rg*Tz}2tvq?hv<^WBmx9ZEql(>O|IagWJL=tkwI*g* zH4&8$OKa^E4lmIbHYnSoUzKo?ivVHNXOvHp)hfM4w@JA#{tFq4hyXBr%j2EDAp{Mi zAC3bD$LMWQzRz&!{0phxq1Y?6(X*uA`zm+|Arr@jH!C0ygSWf$b3nNBf^M3x7$rQX z#4$Xf-a_hc3oZ%I+Tx=w`JBFA(P43l?uv~rhoJQ9%O7-+HPe5pz-vJDkXr-2Nd9SJ za`ZdK>=Mcm*_&?(Oeo8VUy1ke4^T~=Jq5vr4A@A zSLMPcdud|}s`xtRH>Zl7;$};GZpcsT*19@wEjjxOwaWfga&4*W*GfUr&@rp{6lbRu zJYaz~WG9hf*yvD?#w3T0X)7b^QV$}7wSkp`f9VH)l3Ya@lH>DAz7Az6H5FF}n$bGU zqs2ZvM=8hctPY8rd8C*4aP5vnuEB%(_4CDl-oqaLFvv#L;;yl9rk1ddtXM z!>7*t_1efn&q?s{I^jgQ8rC;_U>I_dfZ{u`SS0QjONGDnGO{9oT1ToQ7m{n4D~T!Q zQc?+XEmZ-rn7V*iO;v!GQ|I$~>g-)*<>HE}OkPr*%WJB#c~NyXud2$%W!0IuuJ}a@ zi9gf|IVoy!Iq6dRX`@x-VDe%SIm=jM&ef}I*xb-Mi`wQ&a}jH;xsTu*L>sA=v6C7D~nWz3z>MZ`uJMZ`YnBD@Vo3El;xz^=0M zaSwDhZ-J4|JD>~j1{ei+{dECcej^)KpFU}sS)p33S|d#@JSW!9!?w`oMpeFBUB2>U z@Rs>N}M!>OS6C9BGO{2h%nhxl&g4FY%qBOlBC2N~|!K8!I_|ka7 zWpnrnN-!N#R>16#q8fS!mnJ|STpD3|c;VgfL6f4;(837#gA4z9J)|f=`@nr0SW+CH z?xO1M?k_eBVvLKuzu-`4v2Xi%5=Qg7DO?&O;lYe>eYc4xv`3jNBV>V9O5E#U`xd<9n;k@MeXAABB42RK_K1*F#| zt{>72Kn^@E1~yVRvtcP6L(#^S<5-SL!3e5^jM6a0w0caMzQc7sSm?{tz|BU9t zqJT?D)=O(+>2}@Q6qacMh&`OXe#D^Lo54;74Yq;a8L$tgb?Z(^*9}w2rZcxis$AOb z9UdOELtA*$4mFEDRAKauovh zZrVh^Ol4RWm5NcSRygylFq=TPVcc=1{r@*nOm?P&I5hKEQK2nY`mYIVK1P;qy5f=I zFhx#n95-!#U_>al$O;53A>5Jt3ZadP>YXgxMuSh5z3}Rzs!wu_P|uW1c7=?9F{L7v zh|&h}GcMCg=8wn7MDDLb?^y1Fel}|W)ha5$FD~R;j-x=5t+WPp7|qiAme>d3gJ(mU zEUL@a*0?3z`EvXTqZ7n8H#t`|1}s^#3z*#fDL~+`<*jQUoNji{W)K7N)98xMX(8TkyaTwr-s+rbgtRgp(7 z>NO5ucTMKdr&=3t+apyqY~Phio=kwdO(qFr_Bij+(R+`h`uFr>Y22i+du5rfomA*} zcP%2`Da!&##2L8BUWGn$h$>|dpyw#14dx6_ z&!7Y0omp^+*n<(lCNiHs`L{}cN9+HE_h6Cdjo|3w$|@WeJ|D!qr3zvUT>Fi>enfiq1(wx@zN$Nqvj5MS^YT_G7{E)4{-i;aXN;A90GeR+LFc`j5q`v1Iohr``8n4Y!Zq++5?h!`V=JUwFu1@niHW z2S1fUl}MxCy872uTLZW!$k_xDwL!kC02x9Ce>ck${d-sj3utUj33^@64xlyO`a3+iE4M zA4%__JHDY*(HdA*iYbQ_H#IVbm*1=Pp5b(e+o{Ho;;Q*Q#QsCe?^Eu30Kp#7%SWS^GZxtZi}!_B_46tr#|(@otn9-qq|`v`fA zMjFbAQ~zq_lX>6QgJZbDM@_NgKDBMHRg8J=UFP@LRM)&q@3P_6uFZqu@7)nx z?>7Lmc`F*F18l9HNxOI7qg=M{Al+V?5MU~4eUA3MTVbQz=1y1&cy}8^H!L);c-t86 z4iAkkEQsh7aa5DWogpPsjZ4{Av_*{3EE-#rqI-@9=FYGE5^JK&CV&nYNdpdTb*Jc4 z21*L=&b8XRp1NSqYRZCpucdn%dREd@q3P@2n57Na-4nITcF)x;yYF;;G)i;EuHMjq zff(~P4zhdFzEcH=e4ea^9Ie%mL$&HYPUr>8T@eq((2cA_I%y_);$NnH<@)0;QQ3&Iy?5ZE#b^*Z5vMe!HtGdLd-Xu_q#BM(^Tm?E1XJ zSF$N5oG@_<}P8WCj^?3&oEGyw?pSYeDNS}VhOX5g{X*Bu&g<_H4)-Q~+c(>j)` zhX}g^Uvk`=2EG)bb*|`=n(H@(nPD z#UC=jpGCRmNvS0RKIvn?V;FN*w(DlYUu*aI0&(%iF)sV1kt+fJ5)Joc4aK8JwxPhv zcH%E-k>%_7-eFY>W+;R714l3rQpJShjWYVPt!9E<-pogMf0Ok$jgL>HZ|Q+vTVP7xrG?A``*@4 zqc((qp13GnMMr^S0~oMyua|avCO&8FpJt7dY=9I!M!X_wCvWqja#k8ng-V8DTIz`n zsBGtAWg;dPx-moF1kxVmyvYBaZjt24O5%j_&zJdoez)A-j&0YKV^oDywy9b=o0Am_ z1gzY6tpKXz;T)LZw@vGmrnYZdCq@B(!l%q{2T}%z~K|r_c`*rnv)*6zOhu! zP@m{oY6Shcce0cxkW@g-1BkN|LqsybejWI*2VBgkz4R)3yCE4WA0fHaC__YFW!%F7 z`6o2HBSGYz{WbfTAxtoYlzvLVune~RPCFQ3hS%8S{bja7w|@?PGYL@DMtCD|6+t6E zu_6lx@{Qg)D3lpnaX@Dj*-ebW9>U?F1?(=QBOOPp;MlfA8o2ek#d+NO9{i5$9fD3ip5vGEgz% zgti~x=4};OFl3S%9BZ%EAe?HKX_<2ywMYIV`qH{2Xn6oqK&`*J$_vk+s<;_3LZTJ6 zeHDT~bM`moTbxG>!T#Z%LWxaCm(^iIdCDwS7ya3OO z0QuPPY9SL?WwvCN=y_#ba4Ic+F^ z8cVDoLPF0QyegIPJscU^;JD>#HzM+=dthKyrAa1EzlrepK5>0ojkS*%T22|gmp=h> zxO2E^J@oulKL1F*d)uOwH%SUj1S99d!uFjj)ZG@Ly*InAHOz~ki^i%MEw~VFQ9;95Mkdy_k!;`b?MBh1T{Ep@}_LE-WspIEdDX6E+<#Xhw(JZ zj~`l~Xh#Rr7+9}|q~Ux_K9v2CeBr1RS3S{B$J^h3HraM;^$BD69cIR6s+%+xR{fUG z^oR@zIDh-maBx68ei4M$ ztxPdJ3H^0fA2^pvEfH(D3nR4k01i8vW=U(ak^;4s@g~)wG*>A+4qFB$lPKR{Z7PGmc!C8%wEM`;PpT`Os|fn|4nXN&tGcwlp~eB&H- zk5+j;Y8`-IbIdOnf}Cz2ZJ#Do!mabxg_W?yN{$LVbG{TE$I>G5WL-`K{b$+YWfsz6 zVE}g^WEKq(k@TWM@1TqHuO{`T$Z|C3ygtgBWJJTW084o!@8{mhG7~tS*s_^{;(@>! z=MHbbohO_5SVXz~q{(D_btUu>{jt!;>^vkzkw)i5`YwYd5-pPVl>G+e3}O}<%WuEX zaZO6w*2OOt%)J|3wr+IUA`8r$ftIq$cJZ0z6f(%kRT-tYF+^l|`mpIFb_ z-qPIO(%s%YJ99dinesfF6hX*!<*%*$C6C1KzrBc$mZKrMi<}klL459&ge4+t zBnJV*ZZ(5WoLT~R4F8#uwx4|X-n}!^RfrQjl2}QD#l9JDK&F788UzHD0R&k@2a`mI zpA8VIPEpZNK)`XK0&7#ctGJF@y368RpDMB?&aLh$&dr247mu|erPUZ~K8=KF`a3SO zl|ebJGAPDPT12_kP*JXj`2>Bsj~}mMwkh$g+9kd%>e-qlR7oLl<#KTTNqwluWzj~iNZI8ywZ3GpujlqJ!10B>yoUJ`Hpz!!=b zB)_|~cWl0g6|2B}?XoDOLl9!~m@Fqqj@J_kn?cwIwRdlCg@b#QLXmTv3&fN3c|<-| zLj&YJ|4h@|Pc+n=sVUGm{CQYZB4fO?BF|pGk-FSNAA@^Lk{i@jzMy-}dH^Ljj%+K0??GYij+UNOGHd??26KrcsG zt3)5~A1#nJB>R7Dkwx1~MWGqjY~9q9V;ZjZEw0*$w!70n%13*sHFQ%LIB8?1{SE7d z=BbE9kPKa~KXh%erFl|f7+8rE?xKSOGK+Oh`dq?P1!nFRvyd*cC~|dGn(N$MvEACt zmfrzvy%K);)oF*0FsrABNXf&=69X0sA_`%aYAd;R@laD9W(rtsmz;fVh1wH-yFBc) zuf$pZpzXJ%FGP0Blv>g;X_ZvM1L<{dR>I;LFDd@@|PniB2gT=r7 z$0+^%j}f7OPdG(-g2B*jO9x)Q##%;c4+YS%bt<4nN10kI3)9NxS?$B1LaXaxTsYq8mPRz*Xe!|}lKqN19e!SITC>r^kTdsEuCTnkq_

      1. C7%p+jWp1Y6wd#_T;pNmhbVp=^jCn3wSyEs#h( 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 BVpE3~I+->&$(#np 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%0AJ|HB=|YGu>R;}?qZvww&Z~=M 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

        IVHod#x)Y*4~GX|9D%V6c02 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

        RbR@-CbU`wTLe3IQ5C_p!b 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∈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 Qor=8zMtQA@lfCNy0M~(<;{X5v -- 2.39.5

        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%0DTVN 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

      2. 4VfXXc>4ibJ&y)?^491&SJRHlYHkoA_la8*aho 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 z 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%0A*iEXBl!CHrI#>?is!aZ$+yPOQRK;-ECq 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

        M#H*fI~2;+N*lnoHbJu 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

        ;FsB2%#k0AWrgfj7fKKFez#fj{uEn=!w# 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

        eeRWe7N@}* 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Ⓢ*l)T4Q=&aFmse0e6S^~uR7C}w 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%0AUVof&8wHmomYEBA6~p^i1M>Ila8 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

        R- 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%0D~od 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